From bbc484d140326715d0fc8dcec3ef03761114a823 Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Thu, 23 May 2024 12:09:37 +0800 Subject: [PATCH] vp9e: accept MFX_FRAMETYPE_IDR and MFX_FRAMETYPE_REF MFX_FRAMETYPE_IDR or MFX_FRAMETYPE_REF can be ORed to mfxEncodeCtrl::FrameType for other codecs(e.g AV1) when calling MFXVideoENCODE_EncodeFrameAsync(), let's do the same for VP9. This makes the below command work fine. ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i input.h264 -force_key_frames:v source \ -forced_idr 1 -c:v vp9_qsv -f null - Signed-off-by: Haihao Xiang --- .../mfx_lib/encode_hw/vp9/src/mfx_vp9_encode_hw_par.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_studio/mfx_lib/encode_hw/vp9/src/mfx_vp9_encode_hw_par.cpp b/_studio/mfx_lib/encode_hw/vp9/src/mfx_vp9_encode_hw_par.cpp index 281af7290a..f0b0973179 100644 --- a/_studio/mfx_lib/encode_hw/vp9/src/mfx_vp9_encode_hw_par.cpp +++ b/_studio/mfx_lib/encode_hw/vp9/src/mfx_vp9_encode_hw_par.cpp @@ -1850,9 +1850,14 @@ mfxStatus CheckAndFixCtrl( checkSts = MFX_WRN_INCOMPATIBLE_VIDEO_PARAM; } - if (ctrl.FrameType > MFX_FRAMETYPE_P) + if (ctrl.FrameType & 0xFF00) { + ctrl.FrameType = (ctrl.FrameType & 0xFF); + checkSts = MFX_WRN_INCOMPATIBLE_VIDEO_PARAM; + } + + if ((ctrl.FrameType & 0xF) > MFX_FRAMETYPE_P) { - ctrl.FrameType = MFX_FRAMETYPE_P; + ctrl.FrameType = (MFX_FRAMETYPE_P | (ctrl.FrameType & 0xF0)); checkSts = MFX_WRN_INCOMPATIBLE_VIDEO_PARAM; }