如果从不同的编程语言调用,那么在没有设置媒体子类型的情况下,BufferLen在ISampleGrabberCB.BufferCB中的大小为什么会有所不同呢?
我有一个C#应用程序和一个VB.NET应用程序,它们都能在关闭时钟和在SampleGrabber上设置媒体子类型的情况下尽快运行一个图形。密码是一样的。在C#应用程序中,每次一个示例通过抓取器时,BufferLen的大小都是不同的(正如您所期望的)。在VB.NET应用程序中,BufferLen是一个固定不变的值。
例如,当通过图形运行1280x720视频时,VB代码中BufferLen的大小总是1,382,400 (这有点道理,因为视频解码器上的输出引脚显示的是12位NV12格式)。在C#代码中,BufferLen的大小在低值和高值之间差别很大。
有人知道为什么会这样吗?
发布于 2013-03-22 08:17:40
可变缓冲区长度表示您正在获得压缩视频。但我无法解释为什么会这样。有一个版本作为管理员运行吗?还是64位?
发布于 2013-03-22 10:35:16
问题解决了。实际上,图是不一样的:在C#应用程序中,AVI分配器直接连接到SampleGrabber;在VB应用程序中,一个意想不到的视频解码器位于两者之间。结果表明,VB代码在分解和重建图形之前正在呈现图形,这意味着已经设置了媒体子类型。感谢你们的帮助。
https://stackoverflow.com/questions/15560220
复制相似问题