我正在尝试从集成摄像头的输出引脚检索IAMStreamConfig
接口,但未能E_NOINTERFACE
。
我正在使用IntCam作为测试设备,实际上我将有一个带有两个输出引脚的源滤波器,每个引脚都支持不同的配置。
这就是为什么我不确定使用ICaptureGraphBuilder2::FindInterface
是一个选项,因为我仍然没有弄清楚如何从特定的输出引脚获取接口。
CComPtr<IEnumPins> pEnum = NULL;
IPin* pPin = NULL;
HRESULT hr = pFilter->EnumPins(&pEnum);
if (FAILED(hr))
return hr;
while (S_OK == pEnum->Next(1, &pPin, NULL))
{
IAMStreamConfig* pAMStreamConfig;
hr = pPin->QueryInterface(IID_PPV_ARGS(&pAMStreamConfig));
if (FAILED(hr))
return hr;
// ...
}
答案 0 :(得分:3)
IAMStreamConfig
不是强制性接口,可能会遗漏,但在相机过滤器上它几乎总是可用的(许多应用程序会拒绝使用没有此接口的设备)。也就是说,你应该仔细检查你是否正在查询正确的过滤器和引脚,代码片段看起来不错。
真正的相机通常是通过WDM Video Capture Filter
实现的IAMStreamConfig
,但由于您使用的是虚拟设备,因此可能会有所不同。