2,543
社区成员
发帖
与我相关
我的任务
分享
int _tmain(int argc, _TCHAR* argv[])
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CLSID clsid;
//安装ac3filter之后可以看到clsid
::CLSIDFromString(_T("{A753A1EC-973E-4718-AF8E-A3F554D45C44}"), &clsid);
IBaseFilter* pFilter = NULL;
HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,__uuidof(IBaseFilter), (void **)&pFilter);
IEnumPins* pEnumPins = NULL;
hr = pFilter->EnumPins(&pEnumPins);
if (SUCCEEDED(hr))
{
IPin* pPin = NULL;
while (pEnumPins->Next(1, &pPin, NULL) == S_OK)
{
PIN_DIRECTION pinDir;
//pin的direction可以成功获取,ac3filter上有2个pin,一个in,一个out
pPin->QueryDirection(&pinDir);
IEnumMediaTypes* pEnumMediaTypes = NULL;
HRESULT hr = pPin->EnumMediaTypes(&pEnumMediaTypes);
if (SUCCEEDED(hr))
{
AM_MEDIA_TYPE* pMediaType = NULL;
//试图枚举类型的时候,hr总是返回S_FALSE,pMediaType依然指向NULL
hr = pEnumMediaTypes->Next(1, &pMediaType, NULL);
pEnumMediaTypes->Release();
}
pPin->Release();
}
pEnumPins->Release();
}
return 0;
}