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客户端编程。

举报

相关文章推荐

Introduction to DirectShow Application Programming

翻译自: https://msdn.microsoft.com/en-us/library/windows/desktop/dd390352(v=vs.85).aspx这篇文章介绍了在DirectS...

DirectShow学习笔记1-帮助文档Introduction to DirectShow Application Programming

翻译和摘要 DirectShow帮助文档中: Getting Started——> Introduction to DirectShow Application Programming 文章 简要...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Introduction to SSE Programming

By Alex Fr, 10 Jul 2003 Introduction The Intel Streaming SIMD Extensions technology enhance the...

Introduction to Windows Programming

Starting programming Windows applications in native C/C++ can be a bit daunting. There are lots of t...

An Introduction to OpenCL Programming

Benedict R. Gaster (AMD Architect) has published on AMD developers website, an introduction to Ope...

Introduction to WebKit Objective-C Programming Guide

Concurrency Note: The WebKit framework is not thread safe. If you call functions or methods in thi...

Introduction to return oriented programming (ROP)

What is ROP? Return Oriented Programming (ROP) is a powerful technique used to counter common explo...

Introduction to C++ Programming in UE4

所在原文目录结构位置: C++ Programming Guide  |_____Programming Quick Start Guide  |_____Introduction to C++ Pr...

Introduction to Core Data Programming Guide

Concurrency with Core Data There are several situations in which performing operations with Core Da...

Introduction to Recommender Systems-Programming Assignment 1

Overview This assignment will explore non-personalized recommendations. You will be given a program...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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