mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 12:28:07 +02:00
radeonsi/vcn: add AUD syntax to h264 encoding
Adding AUD syntax to h264 bitstream, for easier locate frame boundaries. Signed-off-by: Ruijing Dong <ruijing.dong@amd.com> Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Reviewed-by: Boyuan Zhang <boyuan.zhang@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17994>
This commit is contained in:
parent
12cde23c38
commit
10de12d710
1 changed files with 12 additions and 6 deletions
|
|
@ -752,7 +752,7 @@ static void radeon_enc_nalu_vps(struct radeon_encoder *enc)
|
|||
RADEON_ENC_END();
|
||||
}
|
||||
|
||||
static void radeon_enc_nalu_aud_hevc(struct radeon_encoder *enc)
|
||||
static void radeon_enc_nalu_aud(struct radeon_encoder *enc)
|
||||
{
|
||||
RADEON_ENC_BEGIN(enc->cmd.nalu);
|
||||
RADEON_ENC_CS(RENCODE_DIRECT_OUTPUT_NALU_TYPE_AUD);
|
||||
|
|
@ -760,10 +760,15 @@ static void radeon_enc_nalu_aud_hevc(struct radeon_encoder *enc)
|
|||
radeon_enc_reset(enc);
|
||||
radeon_enc_set_emulation_prevention(enc, false);
|
||||
radeon_enc_code_fixed_bits(enc, 0x00000001, 32);
|
||||
radeon_enc_code_fixed_bits(enc, 0x0, 1);
|
||||
radeon_enc_code_fixed_bits(enc, 35, 6);
|
||||
radeon_enc_code_fixed_bits(enc, 0x0, 6);
|
||||
radeon_enc_code_fixed_bits(enc, 0x1, 3);
|
||||
|
||||
if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_MPEG4_AVC)
|
||||
radeon_enc_code_fixed_bits(enc, 0x9, 8);
|
||||
else if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_HEVC) {
|
||||
radeon_enc_code_fixed_bits(enc, 0x0, 1);
|
||||
radeon_enc_code_fixed_bits(enc, 35, 6);
|
||||
radeon_enc_code_fixed_bits(enc, 0x0, 6);
|
||||
radeon_enc_code_fixed_bits(enc, 0x1, 3);
|
||||
}
|
||||
radeon_enc_byte_align(enc);
|
||||
radeon_enc_set_emulation_prevention(enc, true);
|
||||
switch (enc->enc_pic.picture_type) {
|
||||
|
|
@ -1254,6 +1259,7 @@ static void begin(struct radeon_encoder *enc)
|
|||
|
||||
static void radeon_enc_headers_h264(struct radeon_encoder *enc)
|
||||
{
|
||||
enc->nalu_aud(enc);
|
||||
if (enc->enc_pic.layer_ctrl.num_temporal_layers > 1)
|
||||
enc->nalu_prefix(enc);
|
||||
if (enc->enc_pic.is_idr) {
|
||||
|
|
@ -1393,6 +1399,7 @@ void radeon_enc_1_2_init(struct radeon_encoder *enc)
|
|||
enc->op_preset = radeon_enc_op_preset;
|
||||
enc->encode_params = radeon_enc_encode_params;
|
||||
enc->session_init = radeon_enc_session_init;
|
||||
enc->nalu_aud = radeon_enc_nalu_aud;
|
||||
|
||||
if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_MPEG4_AVC) {
|
||||
enc->slice_control = radeon_enc_slice_control;
|
||||
|
|
@ -1412,7 +1419,6 @@ void radeon_enc_1_2_init(struct radeon_encoder *enc)
|
|||
enc->nalu_sps = radeon_enc_nalu_sps_hevc;
|
||||
enc->nalu_pps = radeon_enc_nalu_pps_hevc;
|
||||
enc->nalu_vps = radeon_enc_nalu_vps;
|
||||
enc->nalu_aud = radeon_enc_nalu_aud_hevc;
|
||||
enc->slice_header = radeon_enc_slice_header_hevc;
|
||||
enc->encode_headers = radeon_enc_headers_hevc;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue