Mesa (main): radeonsi/vcn/enc: enable cabac entropy mode

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 25 13:43:27 UTC 2022


Module: Mesa
Branch: main
Commit: fef2004b11dd32ecaaa76c305b8ba5f264839700
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fef2004b11dd32ecaaa76c305b8ba5f264839700

Author: Boyuan Zhang <boyuan.zhang at amd.com>
Date:   Fri Apr 22 22:31:07 2022 -0400

radeonsi/vcn/enc: enable cabac entropy mode

Set cabac entropy mode if enabled.

v2: add extra check on radeon driver side, disable cabac if profile is
baseline or extended.

Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
Acked-by: Leo Liu <leo.liu at amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16113>

---

 src/gallium/drivers/radeonsi/radeon_vcn_enc.c     | 8 ++++++++
 src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c | 3 ---
 src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c | 3 ---
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
index 0e608adf721..bec803c3519 100644
--- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
+++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
@@ -101,6 +101,14 @@ static void radeon_vcn_enc_get_param(struct radeon_encoder *enc, struct pipe_pic
       default:
          enc->enc_pic.rc_session_init.rate_control_method = RENCODE_RATE_CONTROL_METHOD_NONE;
       }
+      enc->enc_pic.spec_misc.profile_idc = u_get_h264_profile_idc(enc->base.profile);
+      if (enc->enc_pic.spec_misc.profile_idc >= PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN &&
+          enc->enc_pic.spec_misc.profile_idc != PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED)
+         enc->enc_pic.spec_misc.cabac_enable = pic->pic_ctrl.enc_cabac_enable;
+      else
+         enc->enc_pic.spec_misc.cabac_enable = false;
+      enc->enc_pic.spec_misc.cabac_init_idc = enc->enc_pic.spec_misc.cabac_enable ? pic->pic_ctrl.enc_cabac_init_idc : 0;
+
    } else if (u_reduce_video_profile(picture->profile) == PIPE_VIDEO_FORMAT_HEVC) {
       struct pipe_h265_enc_picture_desc *pic = (struct pipe_h265_enc_picture_desc *)picture;
       enc->enc_pic.picture_type = pic->picture_type;
diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c
index c208ac77fa4..fdc70911d65 100644
--- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c
+++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c
@@ -168,11 +168,8 @@ static void radeon_enc_slice_control_hevc(struct radeon_encoder *enc)
 static void radeon_enc_spec_misc(struct radeon_encoder *enc)
 {
    enc->enc_pic.spec_misc.constrained_intra_pred_flag = 0;
-   enc->enc_pic.spec_misc.cabac_enable = 0;
-   enc->enc_pic.spec_misc.cabac_init_idc = 0;
    enc->enc_pic.spec_misc.half_pel_enabled = 1;
    enc->enc_pic.spec_misc.quarter_pel_enabled = 1;
-   enc->enc_pic.spec_misc.profile_idc = u_get_h264_profile_idc(enc->base.profile);
    enc->enc_pic.spec_misc.level_idc = enc->base.level;
 
    RADEON_ENC_BEGIN(enc->cmd.spec_misc_h264);
diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c
index 6c5871eae0f..9e28b62c081 100644
--- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c
+++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c
@@ -41,11 +41,8 @@
 static void radeon_enc_spec_misc(struct radeon_encoder *enc)
 {
    enc->enc_pic.spec_misc.constrained_intra_pred_flag = 0;
-   enc->enc_pic.spec_misc.cabac_enable = 0;
-   enc->enc_pic.spec_misc.cabac_init_idc = 0;
    enc->enc_pic.spec_misc.half_pel_enabled = 1;
    enc->enc_pic.spec_misc.quarter_pel_enabled = 1;
-   enc->enc_pic.spec_misc.profile_idc = u_get_h264_profile_idc(enc->base.profile);
    enc->enc_pic.spec_misc.level_idc = enc->base.level;
    enc->enc_pic.spec_misc.b_picture_enabled = 0;
    enc->enc_pic.spec_misc.weighted_bipred_idc = 0;



More information about the mesa-commit mailing list