这两天在C++Builder下测试dspack,想设置采集图象的分辨率,在网上查找了一下,没找到C++Builder如何使用,只有delphi下的代码如下:
{ PinList := TPinList.Create(Filter1 as IBaseFilter);
if cbFormats.ItemIndex <> -1 then
with (PinList.First as IAMStreamConfig) do
SetFormat(VideoMediaTypes.Items[cbFormats.ItemIndex].AMMediaType^);
PinList.Free; }
关键是with (PinList.First as IAMStreamConfig) do不知道如何改写,于是看directX的文档,自己实现:
TPinList *pinList = new TPinList(SourceFilter);
TEnumMediaType *VideoMediaType = new TEnumMediaType(pinList->First());
IAMStreamConfig *Config = NULL;
pinList->First()->QueryInterface(IID_IAMStreamConfig, (void**)&Config);
Config->SetFormat(VideoMediaType->Items[nIndex]->AMMediaType);
Config->Release();
delete VideoMediaType;
delete pinList;