DirectShow:BITMAPINFOHEADER和ISampleGrabber返回不同的大小

时间:2009-03-10 23:35:37

标签: video directshow

我有一个特定的FLV(VP6 / LAME)文件,由BITMAPINFOHEADER结构报告为400 x 171像素,并由许多FLV元数据编辑器(如RichFLV)验证。

然而,当使用ISampleGrabber从中获取样本时,得到的样本(每像素3个字节)只有204,000字节(400 x 170 x 3)而不是205,200字节(400 x 171 x 3)正如我所料。

由于我试图将400 x 170的数据仅推送到400 x 171 Bitmap对象的构造函数中,因此它变得非常不安并导致A / V异常。

我可以通过破解来检测“接近但不完全符合预期”的样本量,但我真的很想知道1px的垂直高度在这个过程中的位置。我的猜测是一个狡猾的过滤器,它不支持宽度/高度的奇数值并且正在删除它,但我不确定一种简单的方法来检查它。

任何人都知道会发生什么以及如何验证它?

(PS:我不是一个优秀的C / C ++开发人员,所以请不要过多使用它的解决方案)

1 个答案:

答案 0 :(得分:0)

我最好的猜测是一个狡猾/错误的FLV过滤器。尝试使用其他FLV过滤器时会发生什么?其他FLV文件是否报告不正确的视频尺寸?