01 //第一,创建一个Filter Graph Manager组件
02 IGraphBuilder *pGraph=NULL;
03 HRESULT hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pGraph);
04
05 //第二,根据实际应用创建一条完整的Filter链路。比如播放一个本地文件。
06 // 我们可以在编程构建Filter链路之前,在GraphEdit中验证我们构思的Filter链路是否可行。
07 hr = pGraph->ReaderFile(L"C:\Example.avi",NULL);
08
09 //第三,调用Filter Graph Manager 上的各个接口方法进行控制,并且完成Filter Graph Manager与应用程序的交互。
10 //比如调用IMediaControl接口方法控制Filter Graph的状态转换,代码如下
11
12 IMediaControl *pControl =NULL;
13 hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
14 if(!FIALD(hr))
15 {
16 hr = pControl->Run(); //运行Filter Graph
17 }
18
19
02 IGraphBuilder *pGraph=NULL;
03 HRESULT hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pGraph);
04
05 //第二,根据实际应用创建一条完整的Filter链路。比如播放一个本地文件。
06 // 我们可以在编程构建Filter链路之前,在GraphEdit中验证我们构思的Filter链路是否可行。
07 hr = pGraph->ReaderFile(L"C:\Example.avi",NULL);
08
09 //第三,调用Filter Graph Manager 上的各个接口方法进行控制,并且完成Filter Graph Manager与应用程序的交互。
10 //比如调用IMediaControl接口方法控制Filter Graph的状态转换,代码如下
11
12 IMediaControl *pControl =NULL;
13 hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
14 if(!FIALD(hr))
15 {
16 hr = pControl->Run(); //运行Filter Graph
17 }
18
19