DirectShow 学习笔记

DirectShow 学习笔记    

一 DirectShow简介
DirectShow  主要为在Windows平台上处理各种格式的媒体文件的回放,音视频采集等高性能的
多媒体应用,提供了完整的解决方案并集成了DirectX家族中其他成员(如DirectDraw,DirectSound等技术)

二 Filter原理

1 Filter的基本概念

Filter是DirectShow中的最基本的概念,DirectShow使用Filter Graph来管理Filter,
Filter Graph是Filter的容器,Filter是FilterGraph中的最小功能模块

Filter一般有由一个或多个Pin组成,Filter之间通过Pin相互连接,构成一条顺序的链路.
Filter 根据功能的不同大致分为3大类:Source Filters,TransFrom Filters,Rendering Filters
仅含有输出Pin,没有输入Pin 的Filter 为Source Filters
既有输入Pin,也有输出Pin的Filter     为TransFrom Filters
仅有输入Pin,没有输出Pin的Filter     为Rendering Filters

2 Filter的连接
Filter的连接实际上也就是的Filter上Pin的连接,连接的方向一般总是由上一级的Filter的输出Pin
指向下一级Filter的输入Pin  (在连接的过程中要注意媒体类型检查)

四种智能连接
(1)IGraphBuilder::AddSourceFilter 该方法给出一个源文件路径,Filter Graph Manager
     能够为这个源文件加载一个相应的Source Filter.
     这是一个分析文件路径以及查询注册表的过程.

(2)IGraphBuilder::RenderFile   该方法给出一个文件名,首先根据IGraphBuilder::AddSourceFilter
     类似的算法找到并创建正确的Source Filter 然后,就从该
     Source Filter的各个输出Pin开始,进行剩下的智能连接
     过程。

(3)IGraphBuilder::Render  这个方法从当前Filter Graph的某个Filter的指定输出Pin
     开始,进行从这个Pin往下的一条支路的智能连接。算法与
     RenderFile类似

(4)IGraphBuilder::Connect  这个方法以欲连接的一对输出Pin和输入Pin作为参数 首先
     进行这两个Pin之间的直接连接,如果不成功,则要插入
     "中介"Filter 这个"中介"Filter的选择以及试连接过程
     就是一个智能连接过程,算法与上述的RenderFile类似

3 动态重建技术
 从上往下要求媒体类型改变 但传送数据使用的内存不需增大
 从下往上要求媒体类型改变 但传送数据使用的内存不需增大 (这里的从上往下要求媒体类型改变有一个前提
       条件,那就是Filter B 必须要拥有自己的
       Sample分配器)
4 Filter的数据传送
推模式 和 拉模式


5 媒体定位
IMediaSeeking 接口   如果写的是推模式 Source Filter,一般应该在Filter的输出Pin上
    实现IMediaSeeking接口,如果写的是Transform Filter 只需要输出Pin上
    将用户的定位操作请求传递给上一级Filter的输出Pin
       
    IMediaSeeking除了可以进行媒体的随机定位外,还可以用来调整媒体文件的
    回放速率,调用方法IMediaSeeking::SetRate 如参数为2.0表示2倍速播放

6 音视频的同步解决方案

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值