Mesa (main): radeon/vce: change rate ctrl struct to array

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 26 20:27:35 UTC 2021


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

Author: Thong Thai <thong.thai at amd.com>
Date:   Tue Jul 13 12:06:00 2021 -0400

radeon/vce: change rate ctrl struct to array

Signed-off-by: Thong Thai <thong.thai at amd.com>
Reviewed-by: Boyuan Zhang <Boyuan.Zhang at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11850>

---

 src/gallium/drivers/radeon/radeon_vce.c        |  8 +++----
 src/gallium/drivers/radeon/radeon_vce_40_2_2.c | 24 ++++++++++-----------
 src/gallium/drivers/radeon/radeon_vce_50.c     | 18 ++++++++--------
 src/gallium/drivers/radeon/radeon_vce_52.c     | 30 +++++++++++++-------------
 4 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_vce.c b/src/gallium/drivers/radeon/radeon_vce.c
index 68d140944bf..daa7b8898d1 100644
--- a/src/gallium/drivers/radeon/radeon_vce.c
+++ b/src/gallium/drivers/radeon/radeon_vce.c
@@ -261,13 +261,13 @@ static void rvce_begin_frame(struct pipe_video_codec *encoder, struct pipe_video
    struct pipe_h264_enc_picture_desc *pic = (struct pipe_h264_enc_picture_desc *)picture;
 
    bool need_rate_control =
-      enc->pic.rate_ctrl.rate_ctrl_method != pic->rate_ctrl.rate_ctrl_method ||
+      enc->pic.rate_ctrl[0].rate_ctrl_method != pic->rate_ctrl[0].rate_ctrl_method ||
       enc->pic.quant_i_frames != pic->quant_i_frames ||
       enc->pic.quant_p_frames != pic->quant_p_frames ||
       enc->pic.quant_b_frames != pic->quant_b_frames ||
-      enc->pic.rate_ctrl.target_bitrate != pic->rate_ctrl.target_bitrate ||
-      enc->pic.rate_ctrl.frame_rate_num != pic->rate_ctrl.frame_rate_num ||
-      enc->pic.rate_ctrl.frame_rate_den != pic->rate_ctrl.frame_rate_den;
+      enc->pic.rate_ctrl[0].target_bitrate != pic->rate_ctrl[0].target_bitrate ||
+      enc->pic.rate_ctrl[0].frame_rate_num != pic->rate_ctrl[0].frame_rate_num ||
+      enc->pic.rate_ctrl[0].frame_rate_den != pic->rate_ctrl[0].frame_rate_den;
 
    enc->pic = *pic;
    enc->si_get_pic_param(enc, pic);
diff --git a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
index 30b43536c4a..184df16d4d7 100644
--- a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
+++ b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
@@ -92,22 +92,22 @@ static void create(struct rvce_encoder *enc)
 static void rate_control(struct rvce_encoder *enc)
 {
    RVCE_BEGIN(0x04000005);                                 // rate control
-   RVCE_CS(enc->pic.rate_ctrl.rate_ctrl_method);           // encRateControlMethod
-   RVCE_CS(enc->pic.rate_ctrl.target_bitrate);             // encRateControlTargetBitRate
-   RVCE_CS(enc->pic.rate_ctrl.peak_bitrate);               // encRateControlPeakBitRate
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_num);             // encRateControlFrameRateNum
+   RVCE_CS(enc->pic.rate_ctrl[0].rate_ctrl_method);           // encRateControlMethod
+   RVCE_CS(enc->pic.rate_ctrl[0].target_bitrate);             // encRateControlTargetBitRate
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bitrate);               // encRateControlPeakBitRate
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_num);             // encRateControlFrameRateNum
    RVCE_CS(0x00000000);                                    // encGOPSize
    RVCE_CS(enc->pic.quant_i_frames);                       // encQP_I
    RVCE_CS(enc->pic.quant_p_frames);                       // encQP_P
    RVCE_CS(enc->pic.quant_b_frames);                       // encQP_B
-   RVCE_CS(enc->pic.rate_ctrl.vbv_buffer_size);            // encVBVBufferSize
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_den);             // encRateControlFrameRateDen
+   RVCE_CS(enc->pic.rate_ctrl[0].vbv_buffer_size);            // encVBVBufferSize
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_den);             // encRateControlFrameRateDen
    RVCE_CS(0x00000000);                                    // encVBVBufferLevel
    RVCE_CS(0x00000000);                                    // encMaxAUSize
    RVCE_CS(0x00000000);                                    // encQPInitialMode
-   RVCE_CS(enc->pic.rate_ctrl.target_bits_picture);        // encTargetBitsPerPicture
-   RVCE_CS(enc->pic.rate_ctrl.peak_bits_picture_integer);  // encPeakBitsPerPictureInteger
-   RVCE_CS(enc->pic.rate_ctrl.peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
+   RVCE_CS(enc->pic.rate_ctrl[0].target_bits_picture);        // encTargetBitsPerPicture
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bits_picture_integer);  // encPeakBitsPerPictureInteger
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
    RVCE_CS(0x00000000);                                    // encMinQP
    RVCE_CS(0x00000033);                                    // encMaxQP
    RVCE_CS(0x00000000);                                    // encSkipFrameEnable
@@ -221,7 +221,7 @@ static void vui(struct rvce_encoder *enc)
 {
    int i;
 
-   if (!enc->pic.rate_ctrl.frame_rate_num)
+   if (!enc->pic.rate_ctrl[0].frame_rate_num)
       return;
 
    RVCE_BEGIN(0x04000009);                     // vui
@@ -242,8 +242,8 @@ static void vui(struct rvce_encoder *enc)
    RVCE_CS(0x00000000);                        // chromaLocInfo.chromaLocTop
    RVCE_CS(0x00000000);                        // chromaLocInfo.chromaLocBottom
    RVCE_CS(0x00000001);                        // timingInfoPresentFlag
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_den); // timingInfo.numUnitsInTick
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_num * 2); // timingInfo.timeScale;
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_den); // timingInfo.numUnitsInTick
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_num * 2); // timingInfo.timeScale;
    RVCE_CS(0x00000001);                            // timingInfo.fixedFrameRateFlag
    RVCE_CS(0x00000000);                            // nalHRDParametersPresentFlag
    RVCE_CS(0x00000000);                            // hrdParam.cpbCntMinus1
diff --git a/src/gallium/drivers/radeon/radeon_vce_50.c b/src/gallium/drivers/radeon/radeon_vce_50.c
index e75ceec5950..918804ee063 100644
--- a/src/gallium/drivers/radeon/radeon_vce_50.c
+++ b/src/gallium/drivers/radeon/radeon_vce_50.c
@@ -38,22 +38,22 @@
 static void rate_control(struct rvce_encoder *enc)
 {
    RVCE_BEGIN(0x04000005);                                 // rate control
-   RVCE_CS(enc->pic.rate_ctrl.rate_ctrl_method);           // encRateControlMethod
-   RVCE_CS(enc->pic.rate_ctrl.target_bitrate);             // encRateControlTargetBitRate
-   RVCE_CS(enc->pic.rate_ctrl.peak_bitrate);               // encRateControlPeakBitRate
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_num);             // encRateControlFrameRateNum
+   RVCE_CS(enc->pic.rate_ctrl[0].rate_ctrl_method);           // encRateControlMethod
+   RVCE_CS(enc->pic.rate_ctrl[0].target_bitrate);             // encRateControlTargetBitRate
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bitrate);               // encRateControlPeakBitRate
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_num);             // encRateControlFrameRateNum
    RVCE_CS(0x00000000);                                    // encGOPSize
    RVCE_CS(enc->pic.quant_i_frames);                       // encQP_I
    RVCE_CS(enc->pic.quant_p_frames);                       // encQP_P
    RVCE_CS(enc->pic.quant_b_frames);                       // encQP_B
-   RVCE_CS(enc->pic.rate_ctrl.vbv_buffer_size);            // encVBVBufferSize
-   RVCE_CS(enc->pic.rate_ctrl.frame_rate_den);             // encRateControlFrameRateDen
+   RVCE_CS(enc->pic.rate_ctrl[0].vbv_buffer_size);            // encVBVBufferSize
+   RVCE_CS(enc->pic.rate_ctrl[0].frame_rate_den);             // encRateControlFrameRateDen
    RVCE_CS(0x00000000);                                    // encVBVBufferLevel
    RVCE_CS(0x00000000);                                    // encMaxAUSize
    RVCE_CS(0x00000000);                                    // encQPInitialMode
-   RVCE_CS(enc->pic.rate_ctrl.target_bits_picture);        // encTargetBitsPerPicture
-   RVCE_CS(enc->pic.rate_ctrl.peak_bits_picture_integer);  // encPeakBitsPerPictureInteger
-   RVCE_CS(enc->pic.rate_ctrl.peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
+   RVCE_CS(enc->pic.rate_ctrl[0].target_bits_picture);        // encTargetBitsPerPicture
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bits_picture_integer);  // encPeakBitsPerPictureInteger
+   RVCE_CS(enc->pic.rate_ctrl[0].peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
    RVCE_CS(0x00000000);                                    // encMinQP
    RVCE_CS(0x00000033);                                    // encMaxQP
    RVCE_CS(0x00000000);                                    // encSkipFrameEnable
diff --git a/src/gallium/drivers/radeon/radeon_vce_52.c b/src/gallium/drivers/radeon/radeon_vce_52.c
index f70534d14be..961c4731c46 100644
--- a/src/gallium/drivers/radeon/radeon_vce_52.c
+++ b/src/gallium/drivers/radeon/radeon_vce_52.c
@@ -37,15 +37,15 @@
 
 static void get_rate_control_param(struct rvce_encoder *enc, struct pipe_h264_enc_picture_desc *pic)
 {
-   enc->enc_pic.rc.rc_method = pic->rate_ctrl.rate_ctrl_method;
-   enc->enc_pic.rc.target_bitrate = pic->rate_ctrl.target_bitrate;
-   enc->enc_pic.rc.peak_bitrate = pic->rate_ctrl.peak_bitrate;
+   enc->enc_pic.rc.rc_method = pic->rate_ctrl[0].rate_ctrl_method;
+   enc->enc_pic.rc.target_bitrate = pic->rate_ctrl[0].target_bitrate;
+   enc->enc_pic.rc.peak_bitrate = pic->rate_ctrl[0].peak_bitrate;
    enc->enc_pic.rc.quant_i_frames = pic->quant_i_frames;
    enc->enc_pic.rc.quant_p_frames = pic->quant_p_frames;
    enc->enc_pic.rc.quant_b_frames = pic->quant_b_frames;
    enc->enc_pic.rc.gop_size = pic->gop_size;
-   enc->enc_pic.rc.frame_rate_num = pic->rate_ctrl.frame_rate_num;
-   enc->enc_pic.rc.frame_rate_den = pic->rate_ctrl.frame_rate_den;
+   enc->enc_pic.rc.frame_rate_num = pic->rate_ctrl[0].frame_rate_num;
+   enc->enc_pic.rc.frame_rate_den = pic->rate_ctrl[0].frame_rate_den;
    enc->enc_pic.rc.max_qp = 51;
 
    /* For CBR mode, to guarantee bitrate of generated stream complies with
@@ -53,17 +53,17 @@ static void get_rate_control_param(struct rvce_encoder *enc, struct pipe_h264_en
     * as target bitrate.
     */
    if (enc->enc_pic.rc.rc_method == PIPE_H2645_ENC_RATE_CONTROL_METHOD_CONSTANT) {
-           enc->enc_pic.rc.vbv_buffer_size = pic->rate_ctrl.target_bitrate;
+           enc->enc_pic.rc.vbv_buffer_size = pic->rate_ctrl[0].target_bitrate;
    } else {
-           enc->enc_pic.rc.vbv_buffer_size = pic->rate_ctrl.vbv_buffer_size;
+           enc->enc_pic.rc.vbv_buffer_size = pic->rate_ctrl[0].vbv_buffer_size;
    }
 
-   enc->enc_pic.rc.vbv_buf_lv = pic->rate_ctrl.vbv_buf_lv;
-   enc->enc_pic.rc.fill_data_enable = pic->rate_ctrl.fill_data_enable;
-   enc->enc_pic.rc.enforce_hrd = pic->rate_ctrl.enforce_hrd;
-   enc->enc_pic.rc.target_bits_picture = pic->rate_ctrl.target_bits_picture;
-   enc->enc_pic.rc.peak_bits_picture_integer = pic->rate_ctrl.peak_bits_picture_integer;
-   enc->enc_pic.rc.peak_bits_picture_fraction = pic->rate_ctrl.peak_bits_picture_fraction;
+   enc->enc_pic.rc.vbv_buf_lv = pic->rate_ctrl[0].vbv_buf_lv;
+   enc->enc_pic.rc.fill_data_enable = pic->rate_ctrl[0].fill_data_enable;
+   enc->enc_pic.rc.enforce_hrd = pic->rate_ctrl[0].enforce_hrd;
+   enc->enc_pic.rc.target_bits_picture = pic->rate_ctrl[0].target_bits_picture;
+   enc->enc_pic.rc.peak_bits_picture_integer = pic->rate_ctrl[0].peak_bits_picture_integer;
+   enc->enc_pic.rc.peak_bits_picture_fraction = pic->rate_ctrl[0].peak_bits_picture_fraction;
 }
 
 static void get_motion_estimation_param(struct rvce_encoder *enc,
@@ -132,8 +132,8 @@ static void get_vui_param(struct rvce_encoder *enc, struct pipe_h264_enc_picture
    enc->enc_pic.vui.transfer_char = 0x00000002;
    enc->enc_pic.vui.matrix_coef = 0x00000002;
    enc->enc_pic.vui.timing_info_present_flag = 0x00000001;
-   enc->enc_pic.vui.num_units_in_tick = pic->rate_ctrl.frame_rate_den;
-   enc->enc_pic.vui.time_scale = pic->rate_ctrl.frame_rate_num * 2;
+   enc->enc_pic.vui.num_units_in_tick = pic->rate_ctrl[0].frame_rate_den;
+   enc->enc_pic.vui.time_scale = pic->rate_ctrl[0].frame_rate_num * 2;
    enc->enc_pic.vui.fixed_frame_rate_flag = 0x00000001;
    enc->enc_pic.vui.bit_rate_scale = 0x00000004;
    enc->enc_pic.vui.cpb_size_scale = 0x00000006;



More information about the mesa-commit mailing list