《DirectShow开发指南》学习笔记_1

DirectShow系统

      DirectShow系统位于应用层中,它是用一种叫Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。

       按照功能来分,Filter大致分为3类:Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责获取数据,数据源可以是文件、因特网计算机里的采集卡(WDM驱动或VFW驱动的)数字摄像机等,然后将数据往下传输;Transform Filters主要负责数据格式转换,例如数据流分离/合成、解码/编码等,然后将数据继续往下传输;Rendering Filters主要负责数据的最终去向——将数据送给显卡、声卡进行多媒体的演示,或者输出到文件进行存储。

播放第一个媒体文件

       DirectShow提供了大量的Filter用以支持最基本的应用。根据实际需要,也可以定制自己的Filter。它的最基本的应用莫过于回放一个媒体文件。如图所示是一条典型的AVI文件回放的链路。

        其中,箭头方向即是数据的流向,File Source(Async)属于Source Filters,它用于管理硬盘上指定的播放文件,并根据AVI Splitter的要求提供数据。AVI Splitter和AVI Decompressor属于Transform Filters,其中AVI Splitter负责向File Source(Async)索取数据,并将取得数据的音频和视频进行分离,然后分别从各自的输出Pin输出;AVI Decompressor负责视频的解码。Video Renderer和Default DirectSound Device属于Rendering Filters,其中,Video Renderer负责向视频窗口输出图像;Default DirectSound Device负责同步播放声音。

         提示:运行graphstudionext.exe或者DirectX SDK安装目录下的bin\DXUtils\graphedt.exe,然后选择菜单项File | Render Media Filter,在弹出的对话框中选择一个媒体文件,可以看到一条回放文件的Filter链路。选择菜单项Graph | Play,开始播放Filter Graph。

猜你喜欢

转载自blog.csdn.net/Small_SaltedFish/article/details/81735016
今日推荐