[FFmpeg-cvslog] lavu/hwcontext_qsv: add support for 10bit 4:4:4 content on Linux

Haihao Xiang git at videolan.org
Mon Oct 10 06:15:24 EEST 2022


ffmpeg | branch: master | Haihao Xiang <haihao.xiang at intel.com> | Thu Oct  6 15:35:35 2022 +0800| [aba25b391c7f68cea456d1b862a71bcd105b46f3] | committer: Haihao Xiang

lavu/hwcontext_qsv: add support for 10bit 4:4:4 content on Linux

XV30 is used for 10bit 4:4:4 content in FFmpeg VAAPI, so XV30 should be
used for 10bit 4:4:4 content in FFmpeg QSV too because QSV is based on
VAAPI on Linux. However the SDK only declares support for Y410 but does
nothing with the alpha in Y410, so this commit fudged a mapping between
AV_PIX_FMT_XV30 and MFX_FOURCC_Y410.

Signed-off-by: Haihao Xiang <haihao.xiang at intel.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aba25b391c7f68cea456d1b862a71bcd105b46f3
---

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

diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index 2272df52f2..93ecd2f1a3 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -124,6 +124,10 @@ static const struct {
     // the SDK only delares support for AYUV
     { AV_PIX_FMT_VUYX,
                        MFX_FOURCC_AYUV, 0 },
+    // XV30 is used for VAAPI child device,
+    // the SDK only delares support for Y410
+    { AV_PIX_FMT_XV30,
+                       MFX_FOURCC_Y410, 0 },
 #endif
 };
 
@@ -1525,6 +1529,9 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface)
         // use the value from the frame.
         surface->Data.A = frame->data[0] + 3;
         break;
+    case AV_PIX_FMT_XV30:
+        surface->Data.U = frame->data[0];
+        break;
 #endif
     default:
         return MFX_ERR_UNSUPPORTED;



More information about the ffmpeg-cvslog mailing list