Sample Grabber过滤数据中的奇怪垃圾线

时间:2017-08-25 14:22:25

标签: c++ winapi directshow

我正在使用Sample Grabber Filter从视频文件(mov,h264)中提取帧的原始数据。我使用BufferCB回调选项来接收数据。

除了对于几个文件我在文件中出现一条奇怪的线(几乎通过对角线)之外,一切都很顺利。我试图调试数据,并注意到在每一行中,数据中有2个零,应该是255,并且它们会逐行更改列位置。

这是图片:

image

这是前8 x 5像素的原始数据:

enter image description here

文件中的所有帧都会发生这种情况。这只是它完全变白的第一帧。

但是,Windows Media Player不显示此行。

任何可能导致此问题的想法是否有办法解决?

1 个答案:

答案 0 :(得分:0)

这不太可能是Sample Grabber错误,更可能是媒体类型的错误处理,部分步幅对齐或忽略Sample Grabber连接上更改的媒体类型/步幅。视觉效果是典型的一类问题,其中预期和实际图像在某些特性上不同。

首先要做的是在图表运行时检查引脚连接上的媒体类型。媒体类型可能与预期不同,也可能与运行图表时的媒体类型不同。此外,媒体类型跟踪将允许您计算步幅并与代码中的步幅进行比较。

请注意,RGB媒体类型通常具有与32位边界对齐的图像步幅。然后有时过滤器更喜欢分配更大的缓冲区,尤其是。宽度超过视频的像素宽度,尤其是出于性能原因,请在右侧填充视频。您应该在处理数据时处理此问题。