[FFmpeg-devel] [PATCH] lavu/hwcontext_qsv: add 10-bit RGB support for QSV

Linjie Fu linjie.justin.fu at gmail.com
Sun Aug 9 08:11:07 EEST 2020


After adding a copy pass through path inside MSDK, x2rgb10 is now
available as an output of VPP.

Command line for CSC:
ffmpeg -hwaccel qsv -v verbose -c:v hevc_qsv -i
    p010.h265 -vf scale_qsv=format=x2rgb10,hwdownload,format=x2rgb10
    -vframes 1 out.yuv

Signed-off-by: Linjie Fu <linjie.justin.fu at gmail.com>
---
[1]Issue:
https://github.com/Intel-Media-SDK/MediaSDK/issues/1654
[2]Adding copy passthrou:
https://github.com/AntonGrishin/MediaSDK/commit/20058c0e1dbd521e2571e14f6246c48fea996094
[3]Still in need to be fixed:
https://github.com/Intel-Media-SDK/MediaSDK/pull/2268

This patch would be ready to merge after [3] is handled decently.

 libavutil/hwcontext_qsv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index 35a944f8f8..64cb1663d8 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -110,6 +110,10 @@ static const struct {
 #if CONFIG_VAAPI
     { AV_PIX_FMT_YUYV422,
                        MFX_FOURCC_YUY2 },
+#if QSV_VERSION_ATLEAST(1, 9)
+    { AV_PIX_FMT_X2RGB10,
+                    MFX_FOURCC_A2RGB10 },
+#endif
 #if QSV_VERSION_ATLEAST(1, 27)
     { AV_PIX_FMT_Y210,
                        MFX_FOURCC_Y210 },
@@ -798,6 +802,10 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface)
         surface->Data.V16 = (mfxU16 *)frame->data[0] + 3;
         break;
 #endif
+    case AV_PIX_FMT_X2RGB10:
+        surface->Data.A2RGB10 = (mfxA2RGB10 *)frame->data[0];
+        break;
+
     default:
         return MFX_ERR_UNSUPPORTED;
     }
-- 
2.28.0



More information about the ffmpeg-devel mailing list