DirectShow Filter 开发典型例子分析 ——字幕叠加 (FilterTitleOverlay)1
本文分析一下《DirectShow开发指南》中的一个典型的Transform Filter的例子:字幕叠加(FilterTitleOverlay)。通过分析该例子,我们可以学习到DirectShow Transform Filter 开发的方式。
直接打开项目工程(我这里是VC2010),看到项目的结构如下图所示:

先看一下运行的结果:
注意,DirectShow的Filter是不可以直接运行进行调试的。一般情况下需要借助于Graphedit.exe这个程序进行调试。当然这不是绝对的,也可以用graph-studio-next这样的开源程序。
选择右键点击工程->属性->调试->命令。在栏中输入Graphedit.exe的路径,如图所示

这样就可以调试Filter了。
拖入一个文件"五月天 咸鱼.mp4",然后插入本工程的Filter,如图所示。

播放视频,效果如图,可见左上角显示出 "Hello, DirectShow!" 的字样。

看完了结果,就要开始分析代码了~
回顾一下工程结构图:

先看一下CFilterTitleOverlay.h(已经在重要的地方加了注释):
STDMETHODIMP CFilterTitleOverlay::get_Title(char * outBuffer, int * outLength){CAutoLock lockit(&mITitleOverlaySync);*outLength = mOverlayController->GetTitle(outBuffer);return NOERROR;}暂且分析到这里。
书上提供的代码有误,这是经过修改后,添加了注释的代码:
http://download.csdn.net/detail/leixiaohua1020/6371819