9.1.2 使用Capture Graph Builder

2013-10-07 00:41:24 · 作者: · 浏览: 57

9.1.2  使用Capture Graph Builder

使用DirectShow的滤波器进行流媒体开发,需要一个管理器即滤波器链表管理器(Filter Graph Manager),DirectShow SDK提供的是Graph Builder接口IgraphBuilder。不过针对捕获任务(Capture),还有另一个接口ICaptureGraphBuilder2针对采集捕获的增强型接口。

/*创建滤波器链表管理器,查询其各种控制接口*/
HRESULT CCaptureClass::InitCaptureGraphBuilder()

HRESULT hr;
//创建IGraphBuilder接口
hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&m_pGB);
if (FAILED(hr)) return hr;
//创建ICaptureGraphBuilder2接口
hr = CoCreateInstance(CLSID_CaptureGraphBuilder2 , NULL,
CLSCTX_INPROC,
IID_ICaptureGraphBuilder2, (void **)&m_pCapture);
if (FAILED(hr)) return hr;
//初始化滤波器链表管理器IGraphBuilder
m_pCapture->SetFiltergraph(m_pGB);
//查询媒体控制接口
hr = m_pGB->QueryInterface(IID_IMediaControl, (void **)&m_pMC);
if (FAILED(hr)) return hr;
//查询视频窗口接口
hr = m_pGB->QueryInterface(IID_IVideoWindow, (LPVOID *) &m_pVW);
if (FAILED(hr)) return hr;
return hr;
}
在上述程序中,首先创建IGraphBuilder接口,然后创建ICaptureGraphBuilder2接口,接着使用ICaptureGraphBuilder2初始化IGraphBuilder接口。在IGraphBuilder接口下查询媒体控制接口、视频窗口接口。
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节