LAV Filter 是否进行 YUV 到 RGB 转换

Does LAV Filter do the YUV to RGB conversion

我想改进使用 LAV 视频解码器的 MPC-HC 解码 H.264 视频流。 我将播放的流始终采用 yuvj444p 格式(电视级别 [0-255] 中的平面 YCbCr 4:4:4),使用 x264 编码。

我使用的是 MPC-HC 1.7.10 版和 LAV 视频解码器 0.68.1 我有一个 nVidia Quadro K5200,我知道如何编写 GLSL 着色器以 运行 YUV 到 RGB 转换。

我想知道这里是否有人可以给我提示是否值得做这样的工作,以及可能从哪里开始。

,LAV Video Decoder滤镜支持yuvj444p到RGB32颜色转换。

为了证明这一点,我尝试了以下测试:

  1. 创建 RGB 颜色格式的未压缩 AVI 文件(使用 MATLAB)。
  2. 将 AVI 文件转换为 yuvj444p 颜色格式的 x264 压缩 MKV 文件(使用 FFMPEG)。
  3. 下一步在 Graph Studio 中构建一个过滤器图,使用 LAV 视频解码器 (DirectShow) 过滤器。
  4. 检查解码器滤波器的输出引脚。
  5. 播放图形,并将输出帧与原始输入帧进行比较。

输入AVI文件名:RGB_INPUT.avi
MKV 文件名:OUTPUT.mkv
我使用了带有以下参数的 ffmpeg(在命令行中):
ffmpeg -i RGB_INPUT.avi -pix_fmt yuvj444p -vf scale=w=0:h=0:out_color_matrix=bt709 -c:v libx264 -crf 18 -x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709 -an OUTPUT.mkv
我从这里拿了例子:http://forum.doom9.org/showthread.php?p=1671195

过滤图:

查看LAV Video Decoder的输出pin,输出颜色格式为RGB32(媒体子类型为:MEDIASUBTYPE_RGB32):

将未压缩的输入帧与解码的输出帧进行比较:

源帧(未压缩图像):

视频渲染器输出(截图):

绝对差图像(缩放10):

结论:LAV 视频解码器正确地将 yuvj444 转换为 RGB32。