Introduction to DirectShow Application Programming

翻译 2016年05月31日 23:29:39

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

[DirectShow] 001 - Introduction to DirectShow Application Programming

The building block of DirectShow is a software component called a filter.A filter is a software comp...
  • bwmwm
  • bwmwm
  • 2009年07月21日 16:48
  • 694

Introduction to 3D Game Programming with DirectX 11学习笔记 1~3章

Direct3D使用所谓的左手坐标系(left-handed coordinate system)。假如你把左手手指指向x轴正方向,然后朝y轴正方向弯曲四指,大拇指就会指向z轴正方向。图1.5展示了左...
  • qq_23225317
  • qq_23225317
  • 2017年02月16日 15:31
  • 763

An Introduction to Interactive Programming in Python

这是在coursera上面的一门学习pyhton的基础课程,由RICE的四位老师主讲。生动有趣,...
  • mutiantong
  • mutiantong
  • 2014年11月06日 09:58
  • 931

看后总结(Introduction to Computer Science and Programming,MIT 600)

本周由于前一半在忙实验室汇报,后面还带了家教,所以暂时还未完成全部课程学习。不过基本已经学完了,只剩最后两课。现先给出已看课程的总结。       总体上,看这个视频花了较长时间。看的是2014版,没...
  • ananhao
  • ananhao
  • 2017年05月21日 23:08
  • 335

Introduction to 3D Game Programming with DirectX 11学习笔记 4.2Direct3D进行初始化

我们将Direct3D的初始化过程分为如下几个步骤:1.使用D3D11CreateDevice方法创建ID3D11Device和ID3D11DeviceContext。 2.使用ID3D11Devic...
  • qq_23225317
  • qq_23225317
  • 2017年02月16日 17:21
  • 1272

课程: Introduction to Programming with MATLAB in coursera

课程: Introduction to Programming with MATLAB in coursera lesson4.2 input/output 1 从控制台输入一个参数例子 ...
  • wisdomfriend
  • wisdomfriend
  • 2015年04月29日 08:04
  • 571

学习《Introduction to 3D Game Programming with DirectX 11》

学习龙书11(Introduction to 3D Game Programming with DirectX 11)的环境选择
  • tczzyzymj
  • tczzyzymj
  • 2016年03月19日 21:16
  • 1068

Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(三)像素着色器

由顶点着色器(或几何着色器)输出的顶点属性都已经过了插值处理。这些插值随后会作为像素着色器(pixel shader)的输入数据传入像素着色器。假设这里没有几何着色器,图6.5说明了目前顶点数据的流动...
  • qq_23225317
  • qq_23225317
  • 2017年03月13日 16:57
  • 283

Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(一)

顶点和顶点布局在Direct3D中,顶点由空间位置和各种附加属性组成,Direct3D可以让我们灵活地建立属于我们自己的顶点格式;换句话说,它允许我们定义顶点的分量。要创建一个自定义的顶点格式,我们必...
  • qq_23225317
  • qq_23225317
  • 2017年03月12日 14:21
  • 421

【转】把书《CUDA By Example an Introduction to General Purpose GPU Programming》读薄

转载于http://bookc.github.io/2014/05/08/my-summery-the-book-cuda-by-example-an-introduction-to-general-...
  • JOHNNIE_TURBO
  • JOHNNIE_TURBO
  • 2015年07月28日 11:49
  • 563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Introduction to DirectShow Application Programming
举报原因:
原因补充:

(最多只允许输入30个字)