这是在网上看到的一个directshow播放过程的最简介绍(原文地址:http://hi.baidu.com/ihoohi/blog/item/51cc1d554b3db9173b293545.html
(个人觉得很经典摘录如下)
    IGraphBuilder *     mGraph;
    IMediaControl *     mMediaControl;
    CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&mGraph);  //此处为创建Filter Graph Manager实例
    mGraph->QueryInterface(IID_IMediaControl, (void **)&mMediaControl);//获取其它如控制等组件指针
    mGraph->RenderFile(L"g:\\cctv00.mpg", NULL);    //创建一条完整的Filter链路
    mMediaControl->Run();//调用各个接口方法进行控制,并且完成Filter Graph Manager与应用程序的交互
 
上面六行代码告诉了我们播放一个媒体文件的必需步骤:
1,通过API函数CoCreateInstance()创建一个Filter Graph Manager 实例; 此步很容易,要做的事少,方法如上
2,通过调用QueryInterface ( )函数来获取组件的指针; 此步很容易,要做的事少,方法如上
3,创建一条完整的Filter链路       此步骤较为麻烦,也是成功的关键。包括filter的添加、Pin的连接等
4,对Filter Graph进行控制和对事件作出响应。此步骤是一个完整的播放器必须的。
posted on 2010-07-21 21:13  物联互通  阅读(277)  评论(0编辑  收藏  举报