aboutsummaryrefslogtreecommitdiff
path: root/encoder/svc/isvce_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'encoder/svc/isvce_utils.c')
-rw-r--r--encoder/svc/isvce_utils.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/encoder/svc/isvce_utils.c b/encoder/svc/isvce_utils.c
index 5f4220d..485a52e 100644
--- a/encoder/svc/isvce_utils.c
+++ b/encoder/svc/isvce_utils.c
@@ -101,6 +101,7 @@
#include "ih264e_defs.h"
#include "ih264e_structs.h"
/* Dependencies of 'ih264e_utils.h' */
+#include "irc_mem_req_and_acq.h"
#include "ih264e_rc_mem_interface.h"
#include "ih264e_time_stamp.h"
#include "ih264e_utils.h"
@@ -518,6 +519,36 @@ WORD32 isvce_svc_inp_params_validate(isvce_init_ip_t *ps_ip, isvce_cfg_params_t
*******************************************************************************
*
* @brief
+* Validates SVC RC params
+*
+* @param[in] ps_cfg
+* Cfg parameters
+*
+* @returns error code in conformance with 'IH264E_ERROR_T'
+*
+*******************************************************************************
+*/
+WORD32 isvce_svc_rc_params_validate(isvce_cfg_params_t *ps_cfg)
+{
+ WORD32 i;
+
+ /* RC requires total bits in a second to fit int32_t */
+ for(i = 0; i < ps_cfg->s_svc_params.u1_num_spatial_layers; i++)
+ {
+ if((((((UWORD64) ps_cfg->au4_target_bitrate[i]) * 1000llu) / ps_cfg->u4_tgt_frame_rate) *
+ ps_cfg->u4_idr_frm_interval) > ((UWORD64) INT32_MAX))
+ {
+ return IH264E_BITRATE_NOT_SUPPORTED;
+ }
+ }
+
+ return IH264E_SUCCESS;
+}
+
+/**
+*******************************************************************************
+*
+* @brief
* Validates SVC frame-level input params
*
* @param[in] ps_cfg
@@ -3544,6 +3575,15 @@ IH264E_ERROR_T isvce_codec_init(isvce_codec_t *ps_codec)
ps_codec->i4_air_pic_cnt = -1;
}
+ {
+ WORD32 i4_err_code = isvce_svc_rc_params_validate(&ps_codec->s_cfg);
+
+ if(IH264E_SUCCESS != i4_err_code)
+ {
+ return i4_err_code;
+ }
+ }
+
/****************************************************/
/* INITIALIZE RATE CONTROL */
/****************************************************/