directshow重要接口

directshow重要接口

ID:11711091

大小:24.50 KB

页数:3页

时间:2018-07-13

directshow重要接口_第1页
directshow重要接口_第2页
directshow重要接口_第3页
资源描述:

《directshow重要接口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DirectShow重要接口DirectShow的重要接口  DirectShow采用了COM标准,所以很多重要的功能都是通过COM接口来完成。下面就列举一些重要的DirectShow的接口。  (1)IGraphBuilder接口  用于构造FilterGraph的接口,建立和管理一系列的Filter,过滤和处理源媒体流。  (2)IMediaControl接口  用于控制多媒体流在过滤器图表中的流动,如流的启动和停止。  (3)IMediaEvent接口  用于捕获播放过程中发生的事件,并通知应用程序,如EC_COMPLETE等。  (4)IVideoWindow接口 

2、 用于控制视频窗口的属性。  (5)IMeadiaSeeking接口  用于查找媒体的接口,定位流媒体,控制多媒体数据播放提供精确控制。  (6)IBaseFilter接口  从ImediaFilter接口继承,用来定义一个具体的过滤器指针,并对多媒体数据进行处理。  (7)IPin接口  用于管理两个过滤器之间的Pin,从而连接过滤器。  (8)IsampleGrabberCB接口  是SampleGrabber过滤器的一个接口,用于当流媒体数据通过过滤器时进行采样以获得帧图象。   用DirectShow来使用摄像头,一般要求摄像头的驱动是WDM格式的,当然,一些比较老

3、的驱动格式DirectShow也可支持。在DirectShow中,有一个SampleGrabber过滤器,它是一个可以被插入流的过滤器,它有自己的缓冲,存放采样。我们就可以用它来从一个视频文件中简单的扑获一桢。DirectShow通过图形过滤管理器(FilterGraphManager)来与上层应用程序和下层的驱动进行联系。DirectShow通过捕获过滤器(CaptureFilter)来支持对摄像头的捕获,一个捕获过滤器有多个插口(pin),其中的预览(preview)插口可用来进行显示祯图象。  1、创建图形过滤管理器FilterGraph  如上面原理所述,首先要创建

4、FilterGraph:CComPtr<IGraphBuilder>m_pGraph;hr=m_pGraph.CoCreateInstance(CLSID_FilterGraph);  2、连接设备  还要创建系统枚举器组件对象:CComPtr<ICreateDevEnum>pCreateDevEnum;pCreateDevEnum.CoCreateInstance(CLSID_SystemDeviceEnum);  然后使用接口方法CreateClassEnumerator()为指定的Filter注册类型目录创建一个枚举器,并获得IenumMoniker接口:CComPt

5、r<IEnumMoniker>pEm;pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm,0);  接着在调用BindToObject()以后,可以将设备标识生成一个DirectShowFilter,将其加到FilterGraph中就可以参与工作了。CComPtr<IMoniker>pM;CComPtr<IPropertyBag>pBag;hr=pM->BindToStorage(0,0,ID_IPropertyBag,(void**)&pBag);  3、创建SampleGra

6、bber过滤器CComPtr<ISampleGrabber>m_pGrabberhr=m_pGrabber.CoCreateInstance(CLSID_SampleGrabber);  当创建好SampleGrabber以后,在SampleGrabber过滤器连接到别的过滤器之前你必须配置它。然后查询IsampleGrabber接口,还要设置流媒体类型:m_pGrabber->SetMediaType();  可以仅仅指定主媒体类型;或者主类型加子类型;或者主类型,子类型和类型格式。然后就把它加载到FilterGraph中去:m_pGraph->AddFilter(pGr

7、abBase,"Grabber");  4、查找FilterGraph的Pin并完成后续连接。  接下来就可以通过调用IGraphBuilder的FindPin()接口来查找过滤管理器中的Pin接口,并通过ICaptureGraphBuilder2中的接口RenderStream()来完成后续的连接。hr=pCGB2->FindPin(pCap,PINDIR_OUTPUT,&PIN_CATEGORY_VIDEOPORT,NULL,FALSE,0,&pVPPin);hr=pCGB2->RenderStream(&PI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。