在使用directshow中一些认识

本文探讨了在DirectShow中使用push/pull模式搭建编解码系统的经验,包括解码端和编码端的设计概念,以及在使用过程中需要注意的数据类型、时间系统和数据对齐问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 对于使用directshow其实,没有什么高深的认识,只是用其他架构,搭建一个编解码系统,在使用过程有了些体会;

1.directshow中的push/pull模式:如果有人喜欢一上来就谈“拉或推”模式,基本上可以判断此人看的比动手少。其实在directshow的使用中,你只要用数据流的方式去看待整个架构就可以了,不用关心是拉的,还是推的;具体可以去看其源码。

2.基于ds的解码端,用拉比较好,这只是对于整个数据流使用一个表述,因为解码出数据,下游需要使用,越快越好,拉就更形象了。其实在整个链路中,只需要做一个模仿render的功能filter就ok了,把数据dump给下流数据处理模块。一切就ok了。至于某些文件解析filter,不支持拉也没关系,只要在它下游链路上做一个filter,不停要数据,就ok了。

3.基于ds编码端用推比较好。这些只是设计概念上问题。在源端,只要做一个模仿soucefilter功能的模块,就可以把数据向下推了,然后,在做一个模仿render的模块,对接受的编码数据,可以进行进一步的处理,例如给其他模块,如librstp模块打包,发送等等,就随你便了。

4.在使用ds的过程中,需要注意几点,就是各个filter间的类型与时间系统,还有送数据对齐等问题。在一个项目中由于要送数据给下面的编码器,结果由于音视频数据交织问题,以及送的音频数据的对齐问题,查了很长时间。

 

今天就写到这里,以后遇到什么问题,在这里添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值