0

如果从不同的编程语言调用,是否有任何理由说明未设置媒体子类型的 ISampleGrabberCB.BufferCB 中 BufferLen 的大小应该有所不同?

我有一个 C# 应用程序和一个 VB.NET 应用程序,它们都在关闭时钟并且在 SampleGrabber 上没有设置媒体子类型的情况下尽快运行图表。代码是相同的。在 C# 应用程序中,每次样本通过采集器时,BufferLen 的大小都是不同的(如您所料)。在 VB.NET 应用程序中,BufferLen 是一个常量固定值。

例如,当通过图形运行 1280 x 720 视频时,VB 代码中 BufferLen 的大小始终为1,382,400(这是有道理的,因为视频解码器上的输出引脚显示 12 位 NV12 格式)。在 C# 代码中,BufferLen 的大小在低值和高值之间变化很大。

有谁知道为什么会这样?

4

2 回答 2

0

可变缓冲区长度表示您正在获取压缩视频。我无法解释为什么会这样。一个版本是否以管理员身份运行?还是64位?

于 2013-03-22T08:17:40.430 回答
0

问题解决了。图表并不完全相同,实际上:在 C# 应用程序中,AVI 拆分器直接连接到 SampleGrabber;在 VB 应用程序中,一个意想不到的视频解码器位于两者之间。事实证明,VB 代码在将图形拆下并重建之前渲染图形,这意味着媒体子类型已经设置。感谢你们俩的帮助。

于 2013-03-22T10:35:16.670 回答