fxMessageBoxquotCoInitialize Failedrnquot return m_hWnd NULL m_pVW NULL m_pMC NULL m_pGB NULL m_pCapture NULLCCaptureVideo::CCaptureVideo // Stop media playback ifm_pMCm_pMC-gtStop ifm_pVW m_pVW-gtput_VisibleOAFALSE m_pVW-gtput_OwnerNULL SAFE_RELEASEm_pCapture SAFE_RELEASEm_pMC SAFE_RELEASEm_pGB SAFE_RELEASEm_pBF CoUninitialize int CCaptureVideo::EnumDevicesHWND hList if hList return -1 int id 0 //枚举视频扑捉设备 ICreateDevEnum pCreateDevEnum HRESULT hr CoCreateInstanceCLSID_SystemDeviceEnum NULLCLSCTX_INPROC_SERVERIID_ICreateDevEnum voidamppCreateDevEnum if hr NOERRORreturn -1 CComPtrltIEnumMonikergt pEm hr pCreateDevEnum-gtCreateClassEnumeratorCLSID_VideoInputDeviceCategoryamppEm 0 if hr NOERRORreturn -1 pEm-gtReset ULONG cFetched IMoniker pM whilehr pEm-gtNext1 amppM ampcFetched hrS_OK IPropertyBag pBag hr pM-gtBindToStorage0 0 IID_IPropertyBag void amppBag ifSUCCEEDEDhr VARIANT var var.vt VT_BSTR hr pBag-gtReadLquotFriendlyNamequot ampvar NULL if hr NOERROR TCHAR str2048 id WideCharToMultiByteCP_ACP0var.bstrVal -1 str 2048 NULLNULL ::SendMessagehList CB_ADDSTRING 0LPARAMstr SysFreeStringvar.bstrVal pBag-gtRelease pM-gtRelease return idHRESULT CCaptureVideo::Initint iDeviceID HWND hWnd HRESULT hr hr InitCaptureGraphBuilder if FAILEDhr AfxMessageBoxquotFailed to get video interfacesquot return hr // Bind Device Filter. We know the device because the id was passed in ifBindFilteriDeviceID ampm_pBFreturn S_FALSE hr m_pGB-gtAddFilterm_pBF LquotCapture Filterquot // hr m_pCapture-gtRenderStreamampPIN_CATEGORY_PREVIEWampMEDIATYPE_Video // m_pBF NULL NULL // create a sample grabber hr m_pGrabber.CoCreateInstance CLSID_SampleGrabber if m_pGrabber AfxMessageBoxquotFail to create SampleGrabber maybe qedit.dll is notregisteredquot return hr CComQIPtrlt IBaseFilter ampIID_IBaseFilter gt pGrabBase m_pGrabber //设置视频格式 AM_MEDIA_TYPE mt ZeroMemoryampmt sizeofAM_MEDIA_TYPE mt.majortype MEDIATYPE_Video mt.subtype MEDIASUBTYPE_RGB24 hr m_pGrabber-gtSetMediaTypeampmt if FAILED hr AfxMessageBoxquotFail to set media typequot return hr hr m_pGB-gtAddFilter pGrabBase LquotGrabberquot if FAILED hr AfxMessageBoxquotFail to put sample grabber in graphquot return hr // try to render preview/capture pin hr m_pCapture-gtRenderStreamampPIN_CATEGORY_PREVIEWampMEDIATYPE_Videom_pBFpGrabBaseNULL if FAILED hr hr m_pCapture-gtRenderStreamampPIN_CATEGORY_CAPTUREampMEDIATYPE_Videom_pBFpGrabBaseNULL if FAILED hr AfxMessageBoxquotCan’t build the graphquot return hr hr m_pGrabber-gtGetConnectedMediaType ampmt if FAIL.
上一篇:
远程读写游戏内存VC带源码
下一篇:
还记得,那年的风车吗?