Swscale色彩空间转换隔行扫描帧?

时间:2012-03-13 09:08:24

标签: ffmpeg color-space interlacing

我正在编写一个导出我已捕获的视频的应用程序(PAL SDI)。原始色彩空间是uyvy(4:2:2)。当我将带有swscale的帧转换为4:2:0并使用avcodec进行编码时,我会在字段之间出现颜色。我怀疑这是来自swscale没有意识到框架是隔行扫描的。以下是我导出的视频中bob-deinterlaced框架的一部分示例,其中显示了以下字段之一:

color bleeding between fields

如您所见,颜色从另一个字段流出。我如何防止这种情况发生?我看过这个图书馆,并试图在swscale中找到任何告诉它尊重字段的东西,但我没有找到任何东西。

我将每个字段存储在单独的缓冲区中,因此我可以预先单独处理这些字段,如果这有用的话。

感谢您提供任何帮助!

此致 卡尔

编辑:基本上,我想要的是输出PAL DV。我怀疑swscale能够以某种方式产生这种类型的隔行扫描420,因为ffmpeg(应用程序)可以处理这个(我认为)。

1 个答案:

答案 0 :(得分:3)

答案是做两个swscale操作,每个字段一个。您可以通过使用两倍步幅指定高度的一半来欺骗swscale以使用相同的缓冲区,然后将第二个操作偏移一行。

我终于从libav-user列表中得到了答案。示例代码可以在MPlayer / libmpcodecs / vf_scale.c和libavfilter / vf_scale.c中找到。