Introduction to DirectShow Application Programming

翻译自:
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客户端编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值