diff mbox series

[FFmpeg-devel] libavcodec/qsvenc: Enable 444 encoding for RGB input

Message ID 20230103030010.2413877-1-wenbin.chen@intel.com
State New
Headers show
Series [FFmpeg-devel] libavcodec/qsvenc: Enable 444 encoding for RGB input | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Chen, Wenbin Jan. 3, 2023, 3 a.m. UTC
From: Wenbin Chen <wenbin.chen@intel.com>

MSDK/VPL uses 420 chroma format as default to encode RGB, and this is
not a proper usage. Now enable 444 encoding for RGB input by default.
RGB is encoded using 444 chroma format when user doesn't specify the
profile or uses rext profile, otherwise, 420 is used.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
---
 libavcodec/qsvenc.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Xiang, Haihao Feb. 24, 2023, 2:29 a.m. UTC | #1
On Di, 2023-01-03 at 11:00 +0800, wenbin.chen-at-intel.com@ffmpeg.org wrote:
> From: Wenbin Chen <wenbin.chen@intel.com>
> 
> MSDK/VPL uses 420 chroma format as default to encode RGB, and this is
> not a proper usage. Now enable 444 encoding for RGB input by default.
> RGB is encoded using 444 chroma format when user doesn't specify the
> profile or uses rext profile, otherwise, 420 is used.
> 
> Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
> ---
>  libavcodec/qsvenc.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
> index 514a1e8148..150fc9c729 100644
> --- a/libavcodec/qsvenc.c
> +++ b/libavcodec/qsvenc.c
> @@ -1088,6 +1088,10 @@ static int init_video_param(AVCodecContext *avctx,
> QSVEncContext *q)
>                  q->extco3.MaxFrameSizeI = q->max_frame_size_i;
>              if (q->max_frame_size_p >= 0)
>                  q->extco3.MaxFrameSizeP = q->max_frame_size_p;
> +            if (sw_format == AV_PIX_FMT_BGRA &&
> +                (q->profile == MFX_PROFILE_HEVC_REXT ||
> +                q->profile == MFX_PROFILE_UNKNOWN))
> +                q->extco3.TargetChromaFormatPlus1 = MFX_CHROMAFORMAT_YUV444 +
> 1;
>  
>              q->extco3.ScenarioInfo = q->scenario;
>          }

LGTM, will apply.

Thanks
Haihao
diff mbox series

Patch

diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index 514a1e8148..150fc9c729 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -1088,6 +1088,10 @@  static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
                 q->extco3.MaxFrameSizeI = q->max_frame_size_i;
             if (q->max_frame_size_p >= 0)
                 q->extco3.MaxFrameSizeP = q->max_frame_size_p;
+            if (sw_format == AV_PIX_FMT_BGRA &&
+                (q->profile == MFX_PROFILE_HEVC_REXT ||
+                q->profile == MFX_PROFILE_UNKNOWN))
+                q->extco3.TargetChromaFormatPlus1 = MFX_CHROMAFORMAT_YUV444 + 1;
 
             q->extco3.ScenarioInfo = q->scenario;
         }