HRESULT hr = S_OK;
ICaptureGraphBuilder2 *m_pCaptureBuilder = NULL;
IGraphBuilder *m_pFilterGraph = NULL;
//第一步:创建 ICaptureGraphBuilder2接口
hr = CoCreateInstance( (REFCLSID)CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC,
(REFIID)IID_ICaptureGraphBuilder2,(void **)&m_pCaptureBuilder);
if(SUCCEEDED(hr))
{
//第二步:创建IGraphBuilder接口
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (LPVOID *)&m_pFilterGraph);
if(SUCCEEDED(hr))
{
//第三步:调用ICaptureBuilder的SetFilterGraph方法将FilterGraph加入到Builder中
hr = m_pCaptureBuilder->SetFiltergraph(m_pFilterGraph);
if(SUCCEEDED(hr))
{
//查询各个接口,得到媒体控制接口,该接口控制整个Graph状态的
hr = m_pFilterGraph->QueryInterface(IID_IMediaControl,(void **)&m_pMideaControl);
DWORD dflags;
if(SUCCEEDED(AddToObjectTable(m_pFilterGraph,&dflags)))
{
return TRUE;
}
}
}
}