Currently, ChromaFormat passed to libmfx is set to YUV42O by default. Modify to choose ChromaFormat according to fourCC.
Signed-off-by: Linjie Fu <linjie...@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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".