SampleGrabber BufferLen C#和VB.NET中的大小变化

时间:2013-03-21 23:44:41

标签: directshow samplegrabber

如果从不同的编程语言调用,那么未设置媒体子类型的ISampleGrabberCB.BufferCB 中的BufferLen的大小是否有任何原因?

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

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

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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