aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-09-26 09:02:18 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-09-26 09:02:18 +0000
commit21d84ee3e733934b3c81931e18fddb976c989e44 (patch)
tree9136bca0d24dc1c82c49a3a091fb2d8394ac4d51
parenta738bc75cf841b9cba0bff7d53fd1e7a3d7864a5 (diff)
parent270d784c793bddca60768719622aa9e186071b05 (diff)
downloadlibhevc-21d84ee3e733934b3c81931e18fddb976c989e44.tar.gz
Snap for 7768542 from 270d784c793bddca60768719622aa9e186071b05 to main-cg-testing-release
Change-Id: I63323016546064a7f0dc8f3136641b78c6b7ae43
-rw-r--r--encoder/ihevce_defs.h4
-rw-r--r--encoder/ihevce_encode_header_sei_vui.c9
-rw-r--r--encoder/ihevce_error_check.c5
-rw-r--r--encoder/ihevce_frame_process.c23
4 files changed, 28 insertions, 13 deletions
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;
+ }
}
}