[FFmpeg-devel] [PATCH 4/5] lavc/qsvdec: add ChromaFormat support for YUV422/YUV444

Linjie Fu linjie.fu at intel.com
Fri Jun 28 05:29:01 EEST 2019


Currently, ChromaFormat passed to libmfx is set to YUV42O by default.

Modify to choose ChromaFormat according to fourCC.

Signed-off-by: Linjie Fu <linjie.fu at intel.com>
---
 libavcodec/qsvdec.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 46aa2d6..7650325 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -40,6 +40,7 @@
 #include "qsv.h"
 #include "qsv_internal.h"
 #include "qsvdec.h"
+#include <va/va.h>
 
 const AVCodecHWConfigInternal *ff_qsv_hw_configs[] = {
     &(const AVCodecHWConfigInternal) {
@@ -211,7 +212,24 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q)
     param.mfx.FrameInfo.FourCC         = q->fourcc;
     param.mfx.FrameInfo.Width          = frame_width;
     param.mfx.FrameInfo.Height         = frame_height;
-    param.mfx.FrameInfo.ChromaFormat   = MFX_CHROMAFORMAT_YUV420;
+
+    switch (q->fourcc) {
+    case VA_FOURCC_YUY2:
+#ifdef VA_FOURCC_Y210
+    case VA_FOURCC_Y210:
+#endif
+        param.mfx.FrameInfo.ChromaFormat   = MFX_CHROMAFORMAT_YUV422;
+        break;
+    case VA_FOURCC_AYUV:
+#ifdef VA_FOURCC_Y410
+    case VA_FOURCC_Y410:
+#endif
+        param.mfx.FrameInfo.ChromaFormat   = MFX_CHROMAFORMAT_YUV444;
+        break;
+    default:
+        param.mfx.FrameInfo.ChromaFormat   = MFX_CHROMAFORMAT_YUV420;
+        break;
+    }
 
     switch (avctx->field_order) {
     case AV_FIELD_PROGRESSIVE:
-- 
2.7.4



More information about the ffmpeg-devel mailing list