WM6中directshow调用摄像头无响应
HRESULT hr;
CComPtr<IGraphBuilder> m_pGB;
CComPtr<ICaptureGraphBuilder2> m_pCapture;
m_pCapture.CoCreateInstance(CLSID_CaptureGraphBuilder);
m_pGB.CoCreateInstance(CLSID_FilterGraph);
m_pCapture->SetFiltergraph(m_pGB);
//FindFirstDevice
DEVMGR_DEVICE_INFORMATION di;
GUID guidCamera = { 0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A, 0x93, 0x3E, 0x4D, 0x7E, 0x3C, 0x86 };
di.dwSize = sizeof(di);
HANDLE handle = FindFirstDevice(DeviceSearchByGuid, &guidCamera, &di);
FindClose(handle);
//VideoCaptureFilter
CComPtr<IBaseFilter> pVideoCaptureFilter;
CComPtr<IPersistPropertyBag> pPropertyBag;
pVideoCaptureFilter.CoCreateInstance( CLSID_VideoCapture );
pVideoCaptureFilter.QueryInterface( &pPropertyBag );
CComVariant varCamName;
varCamName = di.szLegacyName;
CPropertyBag PropBag;
PropBag.Write(L"VCapName", &varCamName);
pPropertyBag->Load(&PropBag, NULL);
pPropertyBag.Release();
m_pGB->AddFilter(pVideoCaptureFilter, L"Video capture source");
//RenderStream, ControlStream
hr = m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pVideoCaptureFilter, NULL, NULL );
cout<<hr<<endl;
if( FAILED( hr ) )
{
return hr;//hr返回值显示failed,退出程序,我想知道原因
}
手机为多普达,刷的系统6.5,请指教