mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-30 23:28:06 +02:00
radeonsi/vce,uvd_enc: Stop using obsolete rate control params
Other drivers don't use these and the values can be derived from other fields. Reviewed-by: Ruijing Dong <ruijing.dong@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30992>
This commit is contained in:
parent
7fa7812219
commit
96975bc32f
4 changed files with 54 additions and 12 deletions
|
|
@ -316,9 +316,13 @@ static void radeon_uvd_enc_rc_layer_init(struct radeon_uvd_encoder *enc,
|
|||
enc->enc_pic.rc_layer_init.frame_rate_num = pic->rc[0].frame_rate_num;
|
||||
enc->enc_pic.rc_layer_init.frame_rate_den = pic->rc[0].frame_rate_den;
|
||||
enc->enc_pic.rc_layer_init.vbv_buffer_size = pic->rc[0].vbv_buffer_size;
|
||||
enc->enc_pic.rc_layer_init.avg_target_bits_per_picture = pic->rc[0].target_bits_picture;
|
||||
enc->enc_pic.rc_layer_init.peak_bits_per_picture_integer = pic->rc[0].peak_bits_picture_integer;
|
||||
enc->enc_pic.rc_layer_init.peak_bits_per_picture_fractional = pic->rc[0].peak_bits_picture_fraction;
|
||||
enc->enc_pic.rc_layer_init.avg_target_bits_per_picture =
|
||||
pic->rc[0].target_bitrate * ((float)pic->rc[0].frame_rate_den / pic->rc[0].frame_rate_num);
|
||||
enc->enc_pic.rc_layer_init.peak_bits_per_picture_integer =
|
||||
pic->rc[0].peak_bitrate * ((float)pic->rc[0].frame_rate_den / pic->rc[0].frame_rate_num);
|
||||
enc->enc_pic.rc_layer_init.peak_bits_per_picture_fractional =
|
||||
(((pic->rc[0].peak_bitrate * (uint64_t)pic->rc[0].frame_rate_den) % pic->rc[0].frame_rate_num) << 32) /
|
||||
pic->rc[0].frame_rate_num;
|
||||
|
||||
RADEON_ENC_BEGIN(RENC_UVD_IB_PARAM_RATE_CONTROL_LAYER_INIT);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_layer_init.target_bit_rate);
|
||||
|
|
|
|||
|
|
@ -72,6 +72,20 @@ static void create(struct rvce_encoder *enc)
|
|||
|
||||
static void rate_control(struct rvce_encoder *enc)
|
||||
{
|
||||
uint32_t target_bits_picture =
|
||||
enc->pic.rate_ctrl[0].target_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
uint32_t peak_bits_picture_integer =
|
||||
enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
uint32_t peak_bits_picture_fraction =
|
||||
(((enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
(uint64_t)enc->pic.rate_ctrl[0].frame_rate_den) %
|
||||
enc->pic.rate_ctrl[0].frame_rate_num) << 32) /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num;
|
||||
|
||||
RVCE_BEGIN(0x04000005); // rate control
|
||||
RVCE_CS(enc->pic.rate_ctrl[0].rate_ctrl_method); // encRateControlMethod
|
||||
RVCE_CS(enc->pic.rate_ctrl[0].target_bitrate); // encRateControlTargetBitRate
|
||||
|
|
@ -86,9 +100,9 @@ static void rate_control(struct rvce_encoder *enc)
|
|||
RVCE_CS(0x00000000); // encVBVBufferLevel
|
||||
RVCE_CS(0x00000000); // encMaxAUSize
|
||||
RVCE_CS(0x00000000); // encQPInitialMode
|
||||
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(target_bits_picture); // encTargetBitsPerPicture
|
||||
RVCE_CS(peak_bits_picture_integer); // encPeakBitsPerPictureInteger
|
||||
RVCE_CS(peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
|
||||
RVCE_CS(0x00000000); // encMinQP
|
||||
RVCE_CS(0x00000033); // encMaxQP
|
||||
RVCE_CS(0x00000000); // encSkipFrameEnable
|
||||
|
|
|
|||
|
|
@ -18,6 +18,20 @@
|
|||
|
||||
static void rate_control(struct rvce_encoder *enc)
|
||||
{
|
||||
uint32_t target_bits_picture =
|
||||
enc->pic.rate_ctrl[0].target_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
uint32_t peak_bits_picture_integer =
|
||||
enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
uint32_t peak_bits_picture_fraction =
|
||||
(((enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
(uint64_t)enc->pic.rate_ctrl[0].frame_rate_den) %
|
||||
enc->pic.rate_ctrl[0].frame_rate_num) << 32) /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num;
|
||||
|
||||
RVCE_BEGIN(0x04000005); // rate control
|
||||
RVCE_CS(enc->pic.rate_ctrl[0].rate_ctrl_method); // encRateControlMethod
|
||||
RVCE_CS(enc->pic.rate_ctrl[0].target_bitrate); // encRateControlTargetBitRate
|
||||
|
|
@ -32,9 +46,9 @@ static void rate_control(struct rvce_encoder *enc)
|
|||
RVCE_CS(0x00000000); // encVBVBufferLevel
|
||||
RVCE_CS(0x00000000); // encMaxAUSize
|
||||
RVCE_CS(0x00000000); // encQPInitialMode
|
||||
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(target_bits_picture); // encTargetBitsPerPicture
|
||||
RVCE_CS(peak_bits_picture_integer); // encPeakBitsPerPictureInteger
|
||||
RVCE_CS(peak_bits_picture_fraction); // encPeakBitsPerPictureFractional
|
||||
RVCE_CS(0x00000000); // encMinQP
|
||||
RVCE_CS(0x00000033); // encMaxQP
|
||||
RVCE_CS(0x00000000); // encSkipFrameEnable
|
||||
|
|
|
|||
|
|
@ -32,9 +32,19 @@ static void get_rate_control_param(struct rvce_encoder *enc, struct pipe_h264_en
|
|||
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;
|
||||
enc->enc_pic.rc.target_bits_picture =
|
||||
enc->pic.rate_ctrl[0].target_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
enc->enc_pic.rc.peak_bits_picture_integer =
|
||||
enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
((float)enc->pic.rate_ctrl[0].frame_rate_den /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num);
|
||||
enc->enc_pic.rc.peak_bits_picture_fraction =
|
||||
(((enc->pic.rate_ctrl[0].peak_bitrate *
|
||||
(uint64_t)enc->pic.rate_ctrl[0].frame_rate_den) %
|
||||
enc->pic.rate_ctrl[0].frame_rate_num) << 32) /
|
||||
enc->pic.rate_ctrl[0].frame_rate_num;
|
||||
}
|
||||
|
||||
static void get_motion_estimation_param(struct rvce_encoder *enc,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue