Introduction to DirectShow Application Programming

来源:互联网 发布:手机养狗软件 编辑:程序博客网 时间:2024/06/05 07:19

翻译自:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd390352(v=vs.85).aspx

这篇文章介绍了在DirectShow 中使用的基本术语和概念。

Filters and Filter Graphs

DirectShow由一些被称为filter的软件组件构成。filter是一种能够支持对多媒体流做一些处理的软件组件。例如,DirectShow filters可以做:

  • 读取文件
  • 从视频采集设备获取视频
  • 解码各种格式的流,例如MPEG-1视频
  • 传递数据到图像设备或声卡

Filters接收数据并产生相应的输出。例如,如果filter解码MPEG-1视频,那么输入就是MPEG编码的流,输出是一系列解压后的视频帧。

在DirectShow中, 通过连接一串filters,一个应用能完成各种任务。这样,一个filter的输出就成了另一个filter的输入。一组被连接好的filters称为一个filter graph. 例如,下图表示一个用于播放AVI文件的filter graph.
这里写图片描述

File Source filter 从硬盘中读取AVI文件,AVI Splitter filter解析文件并生成两个流,一个被压缩的视频流和一个音频流。AVI Decompressor filter 解码视频帧。Video Render filter用DirectDraw或GDI把帧显示。默认的 DirectSound 设备用DirectSound播放音频流.

应用并不需要管理所有的数据流。相反的,这些filters被一个叫做 Filter Graph Manager的东西控制。应用只需要调用像“Run”或 “Stop”这样的上层API。如果你需要实现更多的流操作, 你可以通过COM接口使用filters。Filter Graph Manager也为应用传递事件通知。

Filter Graph Manager也为另一个目的服务:它通过将filters连在一起,为应用提供了构建图表的方法,

Writing a DirectShow Application

总的来说,任何DirectShow应用都必须实现三个任务。如下图所示:
这里写图片描述

  1. 应用创建一个Filter Graph Manager的实例。
  2. 应用通过Filter Graph Manager来构建一个Filter Graph。图中的具体设置取决于应用程序。
  3. 应用通过Filter Graph Manager来控制Filter Graph和filters中的数据流。通过这个过程, 应用也可以响应Filter Graph Manager的事件。

编程结束时,应用将发布Filter Graph Manager及所有的filters。

DirectShow基于COM, Filter Graph Manager和filters也都是COM对象。在开始编写 DirectShow程序之前,你应该大概了解COM客户端编程。

0 0
原创粉丝点击