如果从不同的编程语言调用,那么未设置媒体子类型的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的大小在低值和高值之间变化很大。
有谁知道为什么会这样?
答案 0 :(得分:0)
变量缓冲区长度表示您正在获取压缩视频。我无法解释为什么会这样。是一个版本作为管理员运行?还是64位?
答案 1 :(得分:0)
问题解决了。事实上,图表并不完全相同:在C#app中,AVI分离器直接连接到SampleGrabber;在VB应用程序中,意外的视频解码器位于两者之间。事实证明,VB代码在撕下它并重建它之前渲染图形,这意味着已经设置了媒体子类型。感谢你们两位的帮助。