2012-03-13 62 views
2

我正在编写一个导出我捕获的视频(PAL SDI)的应用程序。原来的颜色空间是uyvy(4:2:2)。当我使用swscale将帧转换为4:2:0并使用avcodec进行编码时,字段之间出现颜色渗色。我怀疑这是由于swscale没有意识到帧被隔行扫描。这里是我出口的视频显示领域之一的鲍伯去隔行帧的一部分的例子:Swscale色彩空间转换隔行帧?

color bleeding between fields

正如你所看到的,颜色与其他领域的出血。我如何避免这种情况发生?我已经看过图书馆,并试图在swscale中找到任何可以尊重这些字段的东西,但我没有找到任何东西。

我将每个字段存储在单独的缓冲区中,所以我可以在手之前单独处理字段,如果这会有所帮助。

感谢您的任何帮助!

问候 卡尔

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

回答

3

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

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

相关问题