根据clsid取得取得filter

上传人:第*** 文档编号:32828675 上传时间:2018-02-12 格式:DOCX 页数:11 大小:18.44KB
返回 下载 相关 举报
根据clsid取得取得filter_第1页
第1页 / 共11页
根据clsid取得取得filter_第2页
第2页 / 共11页
根据clsid取得取得filter_第3页
第3页 / 共11页
根据clsid取得取得filter_第4页
第4页 / 共11页
根据clsid取得取得filter_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《根据clsid取得取得filter》由会员分享,可在线阅读,更多相关《根据clsid取得取得filter(11页珍藏版)》请在金锄头文库上搜索。

1、 CoInitialize(NULL); HRESULT hr; IGraphBuilder* pGraphBuilder=NULL; CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void *) IBaseFilter* pMpeg4PSFileStream; IBaseFilter* pMpegDemuxFilter; IBaseFilter* pMpeg4VideoDecoder; IBaseFilter* pOverlayMaxer2; IBaseFilter* pVideoRe

2、nderer; hr=CoCreateInstance(CLSID_Mpeg4PSFileStream, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void*) if (FAILED(hr) AfxMessageBox(err create CLSID_Mpeg4PSFileStream); hr=CoCreateInstance(CLSID_MpegDemuxFilter, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void*) if (FAILED(hr) AfxMessageBox(err

3、 create CLSID_MpegDemuxFilter); hr=CoCreateInstance(CLSID_Mpeg4VideoDecoder, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void*) if (FAILED(hr) AfxMessageBox(err create CLSID_Mpeg4VideoDecoder); hr=CoCreateInstance(CLSID_OverlayMaxer2, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void*) if (FAILED

4、(hr) AfxMessageBox(err create CLSID_OverlayMaxer2); hr=CoCreateInstance(CLSID_VideoRenderer, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void*) if (FAILED(hr) AfxMessageBox(err create CLSID_VideoRenderer); pGraphBuilder-AddFilter(pMpeg4PSFileStream , NULL); pGraphBuilder-AddFilter(pMpegDemuxFilter

5、 , NULL); pGraphBuilder-AddFilter(pMpeg4VideoDecoder , NULL); pGraphBuilder-AddFilter(pOverlayMaxer2 , NULL); pGraphBuilder-AddFilter(pVideoRenderer , NULL); /set the source file IFileSourceFilter * pLoader; pMpeg4PSFileStream-QueryInterface(IID_IFileSourceFilter, (void *) hr=pLoader-Load(LE:tempmpe

6、g4_ps.mpg,NULL); if (FAILED(hr) AfxMessageBox(装载文件出错!); /connect filter char *strPinName = new char; IEnumPins* EnumPins; IPin* OutPin; IPin* InPin; ULONG fetched; PIN_INFO pinfo; / find source output pMpeg4PSFileStream-EnumPins( EnumPins-Reset(); EnumPins-Next(1, / only 1 pin for source, so we know

7、 this is the one we need EnumPins-Release(); / find Demux Filter input pMpegDemuxFilter-EnumPins( EnumPins-Reset(); EnumPins-Next(1, InPin-QueryPinInfo( pinfo.pFilter-Release(); / make sure you release the returned IBaseFilter interface while (pinfo.dir = PINDIR_OUTPUT) / check if we have wrong pin

8、(not input pin),2 output pin InPin-Release(); EnumPins-Next(1, / if so, get next pin InPin-QueryPinInfo( pinfo.pFilter-Release(); / connect - 1 pGraphBuilder-Connect(OutPin, InPin); InPin-Release(); OutPin-Release(); / find Demux Filter output EnumPins-Reset(); EnumPins-Next(1, OutPin-QueryPinInfo(

9、pinfo.pFilter-Release(); if (pinfo.dir = PINDIR_INPUT) / check if we have wrong pin (not input pin),only 1 input pin InPin-Release(); EnumPins-Next(1, / if so, get next pin EnumPins-Release(); / find Vweb Mpeg4 Video Decoder input pMpeg4VideoDecoder-EnumPins( EnumPins-Reset(); EnumPins-Next(1, InPin

10、-QueryPinInfo( pinfo.pFilter-Release(); / make sure you release the returned IBaseFilter interface if (pinfo.dir = PINDIR_OUTPUT) / check if we have wrong pin (not input pin),only 1 input pin InPin-Release(); EnumPins-Next(1, / if so, get next pin / connect - 2 pGraphBuilder-Connect(OutPin, InPin);

11、InPin-Release(); OutPin-Release(); / find Vweb Mpeg4 Video Decoder output * EnumPins-Reset(); EnumPins-Next(1, OutPin-QueryPinInfo( pinfo.pFilter-Release(); / make sure you release the returned IBaseFilter interface if (pinfo.dir = PINDIR_INPUT) / check if we have wrong pin (not input pin),only 1 in

12、put pin OutPin-Release(); EnumPins-Next(1, / if so, get next pin OutPin-QueryPinInfo( pinfo.pFilter-Release(); WCHAR *s=pinfo.achName; EnumPins-Release(); / find Overlay Mixer2 input pOverlayMaxer2-EnumPins( EnumPins-Reset(); EnumPins-Next(1, InPin-QueryPinInfo( pinfo.pFilter-Release(); / make sure

13、you release the returned IBaseFilter interface WCHAR *s=pinfo.achName; if (pinfo.dir = PINDIR_OUTPUT) / check if we have wrong pin (not input pin),2 input pin InPin-Release(); EnumPins-Next(1, / if so, get next pin / connect - 3 pGraphBuilder-Connect(OutPin, InPin); InPin-Release(); OutPin-Release()

14、; / find Overlay Mixer2 output EnumPins-Reset(); EnumPins-Next(1, OutPin-QueryPinInfo( pinfo.pFilter-Release(); / make sure you release the returned IBaseFilter interface while (pinfo.dir = PINDIR_INPUT) / check if we have wrong pin (not input pin),2 input pin OutPin-Release(); EnumPins-Next(1, / if

15、 so, get next pin OutPin-QueryPinInfo( pinfo.pFilter-Release(); WCHAR *s=pinfo.achName; EnumPins-Release(); / find renderer input pVideoRenderer-EnumPins( EnumPins-Reset(); EnumPins-Next(1, / renderer has only 1 pin, so this is the pin we need EnumPins-Release(); / connect - 4 pGraphBuilder-Connect(OutPin, InPin); InPin-Release(); OutPin-Release();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号