diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-10-07 19:01:49 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-10-07 19:01:49 +0000 |
commit | 8c11426343d9efa7eafdac8bcc259dcbd50506b9 (patch) | |
tree | 481cde0c2c78eff4de329aab45e2062bbd3784ff | |
parent | 1bdffffad7b608c7a0c9315aedea9140a8b967dc (diff) | |
parent | 323d0a08fad441afb406df8b062376237b77fc4a (diff) | |
download | libhevc-8c11426343d9efa7eafdac8bcc259dcbd50506b9.tar.gz |
Snap for 7803473 from 323d0a08fad441afb406df8b062376237b77fc4a to mainline-permission-releaseandroid-mainline-12.0.0_r93android-mainline-12.0.0_r79android-mainline-12.0.0_r64android-mainline-12.0.0_r51android-mainline-12.0.0_r34android-mainline-12.0.0_r107android12-mainline-permission-release
Change-Id: I1ed726ed425225bd1cc98944512cb18c7102ada8
-rw-r--r-- | decoder/ihevcd_api.c | 4 | ||||
-rw-r--r-- | encoder/ihevce_defs.h | 4 | ||||
-rw-r--r-- | encoder/ihevce_encode_header_sei_vui.c | 9 | ||||
-rw-r--r-- | encoder/ihevce_error_check.c | 5 | ||||
-rw-r--r-- | encoder/ihevce_frame_process.c | 23 |
5 files changed, 32 insertions, 13 deletions
diff --git a/decoder/ihevcd_api.c b/decoder/ihevcd_api.c index 4d094be..d8ee57d 100644 --- a/decoder/ihevcd_api.c +++ b/decoder/ihevcd_api.c @@ -2427,6 +2427,10 @@ WORD32 ihevcd_set_flush_mode(iv_obj_t *ps_codec_obj, /* once it comes out of flush mode */ ps_codec->u4_pic_cnt = 0; ps_codec->u4_disp_cnt = 0; + + /* If the first slice NAL fed to decoder after flush is a CRA NAL, then */ + /* it may have associated RASL nals that need to be skipped */ + ps_codec->i4_cra_as_first_pic = 1; return IV_SUCCESS; diff --git a/encoder/ihevce_defs.h b/encoder/ihevce_defs.h index 23871ea..4cc67b5 100644 --- a/encoder/ihevce_defs.h +++ b/encoder/ihevce_defs.h @@ -469,8 +469,8 @@ #define BELOW_REF_DEVIATION (0.0) #define ABOVE_REF_DEVIATION (220.0) -#define MIN_BITRATE 4000 -#define MIN_QP_MOD_OFFSET -10 +#define MIN_BITRATE (1 << (6 + (VUI_BIT_RATE_SCALE))) +#define MIN_QP_MOD_OFFSET (-10) #define MAX_QP_MOD_OFFSET 3 #define TOT_QP_MOD_OFFSET (MAX_QP_MOD_OFFSET - MIN_QP_MOD_OFFSET + 1) diff --git a/encoder/ihevce_encode_header_sei_vui.c b/encoder/ihevce_encode_header_sei_vui.c index be36257..68cef99 100644 --- a/encoder/ihevce_encode_header_sei_vui.c +++ b/encoder/ihevce_encode_header_sei_vui.c @@ -2682,6 +2682,15 @@ WORD32 ihevce_populate_vui( } u8_bit_rate_val >>= (6 + ps_vui->s_vui_hrd_parameters.u4_bit_rate_scale); + /************************************************************************/ + /* u8_bit_rate_value forced >= 4096 as the shift is always of 12 */ + /* because u4_bit_rate_scale = 6. */ + /************************************************************************/ + if (u8_bit_rate_val == 0) + { + return IHEVCE_BITRATE_NOT_SUPPORTED; + } + u8_max_cpb_size >>= (4 + ps_vui->s_vui_hrd_parameters.u4_cpb_size_scale); ps_vui->s_vui_hrd_parameters.as_sub_layer_hrd_params[i] diff --git a/encoder/ihevce_error_check.c b/encoder/ihevce_error_check.c index d8e1a0b..223ea12 100644 --- a/encoder/ihevce_error_check.c +++ b/encoder/ihevce_error_check.c @@ -1191,13 +1191,14 @@ WORD32 ihevce_hle_validate_static_params(ihevce_static_cfg_params_t *ps_static_c g_as_level_data[codec_level_index] .i4_max_bit_rate[ps_static_cfg_prms->s_out_strm_prms.i4_codec_tier] * CBP_VCL_FACTOR || - tgt_bitrate < 4000) + tgt_bitrate < MIN_BITRATE) { error_code = IHEVCE_BITRATE_NOT_SUPPORTED; ps_sys_api->ihevce_printf( pv_cb_handle, - "IHEVCE ERROR: i4_tgt_bitrate out of range for resoltuion number %d bitrate " + "IHEVCE ERROR: i4_tgt_bitrate %d out of range for resolution number %d bitrate " "number %d\n", + tgt_bitrate, i4_resolution_id, br_ctr); return (IHEVCE_SETUNSUPPORTEDINPUT(error_code)); diff --git a/encoder/ihevce_frame_process.c b/encoder/ihevce_frame_process.c index fa37272..9cbcddf 100644 --- a/encoder/ihevce_frame_process.c +++ b/encoder/ihevce_frame_process.c @@ -4949,15 +4949,20 @@ void ihevce_set_pre_enc_prms(enc_ctxt_t *ps_enc_ctxt) // if(ps_enc_ctxt->as_sps[i].i1_vui_parameters_present_flag == 1) { - ihevce_populate_vui( - &ps_enc_ctxt->as_sps[i].s_vui_parameters, - &ps_enc_ctxt->as_sps[i], - &ps_enc_ctxt->s_runtime_src_prms, - &ps_enc_ctxt->ps_stat_prms->s_vui_sei_prms, - i4_resolution_id, - &ps_enc_ctxt->s_runtime_tgt_params, - ps_enc_ctxt->ps_stat_prms, - i4_id); + WORD32 error_code = ihevce_populate_vui( + &ps_enc_ctxt->as_sps[i].s_vui_parameters, + &ps_enc_ctxt->as_sps[i], + &ps_enc_ctxt->s_runtime_src_prms, + &ps_enc_ctxt->ps_stat_prms->s_vui_sei_prms, + i4_resolution_id, + &ps_enc_ctxt->s_runtime_tgt_params, + ps_enc_ctxt->ps_stat_prms, + i4_id); + if (error_code) + { + ((ihevce_hle_ctxt_t *)ps_enc_ctxt->pv_hle_ctxt)->i4_error_code = error_code; + return; + } } } |