如果DirectShow的输入引脚不支持IAMBufferNeatheration,如何更改DirectShow呈现器的缓冲区大小? [英] How to change a DirectShow renderer's buffer size if it's input pin doesn't support IAMBufferNegotiation?

查看:0
本文介绍了如果DirectShow的输入引脚不支持IAMBufferNeatheration,如何更改DirectShow呈现器的缓冲区大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用Delphi6编写的DirectShow应用程序。我想将呈现器的缓冲区大小从当前的500ms值减少到更小的值。问题是,它的输入引脚不支持IAMBufferNeairation,这很奇怪,因为呈现器是我的VOIP电话上的耳机,而且它显然需要更小的缓冲区大小,以避免电话呼叫期间令人不快的延迟。

我在图形编辑中尝试了一个环回测试,将VOIP电话的捕获过滤器(麦克风)连接到呈现器(耳机)。我知道缓冲区大小是500毫秒,因为这就是图形编辑显示的渲染器属性。然而,当我在Skype通话中使用VOIP电话时,延迟要短得多,像我预期的那样,大约是50-100毫秒。

因此Skype知道如何更改呈现器的默认缓冲区大小。我如何才能使用相同的技巧?

推荐答案

输出引脚通常负责设置分配器,IAMBufferNegotiation通常在输出引脚上可用。您只想减少捕获筛选器输出引脚上的缓冲区大小,这将生成将在图表中传输的小缓冲区,这些缓冲区仍然是小缓冲区和小数据块,因此没有必要减少中间过滤器上的缓冲区大小。

这篇关于如果DirectShow的输入引脚不支持IAMBufferNeatheration,如何更改DirectShow呈现器的缓冲区大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆