Loading lib_com/ivas_ism_config.c +10 −1 Original line number Diff line number Diff line Loading @@ -683,9 +683,11 @@ ISM_MODE ivas_omasa_ism_mode_select( #define GAMMA_ISM_LOW_IMP 0.8f #define GAMMA_ISM_MEDIUM_IMP 1.2f #define GAMMA_ISM_HIGH_IMP 1.4f #define GAMMA_ISM_HIGH_IMP2 1.35f /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ const int32_t element_brate, /* i : element bitrate */ const int16_t ism_imp /* i : ISM importance flag */ ) Loading @@ -708,9 +710,16 @@ int32_t ivas_interformat_brate( nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP ); } else /* ISM_HIGH_IMP */ { if ( ism_mode == ISM_MASA_MODE_ONE_OBJ ) { nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP2 ); } else { nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP ); } } limit_low = MIN_BRATE_SWB_BWE / FRAMES_PER_SEC; if ( ism_imp == ISM_INACTIVE_IMP ) Loading lib_com/ivas_masa_com.c +43 −14 Original line number Diff line number Diff line Loading @@ -422,17 +422,20 @@ void masa_sample_rate_band_correction( return; } #ifdef MASA_AND_OBJECTS /*--------------------------------------------------------------- * valid() * valid_ratio_index() * * Checking validity of the index of an ISM ratio index vector, * within the indexing function. *---------------------------------------------------------------*/ int16_t valid( /* o: valid or not 1/0 */ /*! r: valid or not 1/0 */ int16_t valid_ratio_index( int16_t index, /* i : index to be checked */ int16_t K, /* i: L1 norm to check against */ int16_t len /* i: vector length */ const int16_t K, /* i : L1 norm to check against */ const int16_t len /* i : vector length */ ) { int16_t out; Loading Loading @@ -462,14 +465,17 @@ int16_t valid( /* o: valid or not 1/0 */ { out = 0; } return out; } /*--------------------------------------------------------------- * reconstruct_ism_ratios() * * Obtains ISM ratio values from the quantized indexes *---------------------------------------------------------------*/ void reconstruct_ism_ratios( int16_t *ratio_ism_idx, /* i : index vector */ int16_t n_ism, /* i : number of components/objects */ Loading @@ -479,22 +485,27 @@ void reconstruct_ism_ratios( { int16_t i; float sum; sum = 0; for ( i = 0; i < n_ism - 1; i++ ) { q_energy_ratio_ism[i] = ratio_ism_idx[i] * step; sum += q_energy_ratio_ism[i]; } q_energy_ratio_ism[n_ism - 1] = 1.0f - sum; return; } /*--------------------------------------------------------------- * modify_masa_energy_ratios() * * Updates energy ratios by taking into account the MASA content contribution * to the total audio scene *---------------------------------------------------------------*/ void modify_masa_energy_ratios( IVAS_QMETADATA_HANDLE hQMetaData /* i/o: Metadata handle */ ) Loading @@ -519,13 +530,18 @@ void modify_masa_energy_ratios( } } } return; } /*--------------------------------------------------------------- * ivas_get_stereo_panning_gains() * * *---------------------------------------------------------------*/ void ivas_get_stereo_panning_gains( float aziDeg, float eleDeg, Loading Loading @@ -559,13 +575,17 @@ void ivas_get_stereo_panning_gains( panningGains[0] = sqrtf( A3 ); panningGains[1] = sqrtf( 1.0f - A3 ); } return; } /*--------------------------------------------------------------- * distribute_evenly_ism() * * Obtain ISM ratio indexes for even content distribution bbetween objects *---------------------------------------------------------------*/ void distribute_evenly_ism( int16_t *idx, /* o: index values */ int16_t K, /* i: sum of indexes */ Loading @@ -574,13 +594,16 @@ void distribute_evenly_ism( { int16_t i; int16_t sum; sum = 0; for ( i = 0; i < no_ism; i++ ) { idx[i] = (int16_t) ( K / no_ism ); sum += idx[i]; } assert( sum <= K ); i = 0; while ( sum < K ) { Loading @@ -592,19 +615,24 @@ void distribute_evenly_ism( sum++; i++; } return; } /*--------------------------------------------------------------- * calculate_cpe_brate_MASA_ISM() * * Calculates bitrate for MASA_ISM mode that is not used for separated objects, * * but for the CPE part (metadata included) *---------------------------------------------------------------*/ int32_t /* o: cpe bitrate value */ calculate_cpe_brate_MASA_ISM( ISM_MODE ism_mode, /* i: ism mode */ int32_t ivas_total_brate, /* i: total bit rate for IVAS */ int16_t n_ism ) /* i: number of objects */ /*! r: CPE bitrate value */ int32_t calculate_cpe_brate_MASA_ISM( const ISM_MODE ism_mode, /* i : ism mode */ const int32_t ivas_total_brate, /* i : total bit rate for IVAS */ const int16_t n_ism /* i : number of objects */ ) { int32_t cpe_brate; int16_t k, sce_id; Loading Loading @@ -632,6 +660,7 @@ calculate_cpe_brate_MASA_ISM( { cpe_brate = ivas_total_brate; } return cpe_brate; } #endif lib_com/ivas_prot.h +17 −14 Original line number Diff line number Diff line Loading @@ -4535,10 +4535,11 @@ void ivas_masa_set_elements( ); #ifdef MASA_AND_OBJECTS int16_t valid( int16_t index, int16_t K, int16_t len /*! r: valid or not 1/0 */ int16_t valid_ratio_index( int16_t index, /* i : index to be checked */ const int16_t K, /* i : L1 norm to check against */ const int16_t len /* i : vector length */ ); void reconstruct_ism_ratios( Loading Loading @@ -4572,11 +4573,12 @@ void ivas_qmetadata_encode_extended_gr( const uint16_t alphabet_size, /* i : alphabet size */ const int16_t gr_param); /* i : GR order */ int32_t /* o: cpe bitrate value */ calculate_cpe_brate_MASA_ISM( ISM_MODE ism_mode, /* i: ism mode */ int32_t ivas_total_brate, /* i: total bit rate for IVAS */ int16_t n_ism ); /* i: number of objects */ /*! r: CPE bitrate value */ int32_t calculate_cpe_brate_MASA_ISM( const ISM_MODE ism_mode, /* i : ism mode */ const int32_t ivas_total_brate, /* i : total bit rate for IVAS */ const int16_t n_ism /* i : number of objects */ ); #endif void ivas_masa_set_coding_config( Loading Loading @@ -5174,6 +5176,7 @@ void set_ism_importance_interformat( /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ const int32_t element_brate, /* i : element bitrate */ const int16_t ism_imp /* i : ISM importance flag */ ); Loading lib_dec/ivas_masa_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -1654,7 +1654,7 @@ static void decode_index_slice( j = 0; while ( index >= 0 ) { if ( valid( j, K, no_ism - 1 ) ) if ( valid_ratio_index( j, K, no_ism - 1 ) ) { index--; } Loading lib_dec/ivas_omasa_dec.c +2 −2 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ void ivas_set_surplus_brate_dec( if ( st_ivas->ism_mode == ISM_MASA_MODE_ONE_OBJ ) { *ism_total_brate = ivas_interformat_brate( st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp ); *ism_total_brate = ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp ); st_ivas->hCPE[0]->brate_surplus = st_ivas->hSCE[0]->element_brate - *ism_total_brate; Loading Loading @@ -90,7 +90,7 @@ void ivas_set_surplus_brate_dec( { st_ivas->hSCE[n]->element_brate = element_brate[n]; *ism_total_brate += ivas_interformat_brate( st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp ); *ism_total_brate += ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp ); } st_ivas->hCPE[0]->brate_surplus = ism_total_brate_ref - *ism_total_brate; Loading Loading
lib_com/ivas_ism_config.c +10 −1 Original line number Diff line number Diff line Loading @@ -683,9 +683,11 @@ ISM_MODE ivas_omasa_ism_mode_select( #define GAMMA_ISM_LOW_IMP 0.8f #define GAMMA_ISM_MEDIUM_IMP 1.2f #define GAMMA_ISM_HIGH_IMP 1.4f #define GAMMA_ISM_HIGH_IMP2 1.35f /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ const int32_t element_brate, /* i : element bitrate */ const int16_t ism_imp /* i : ISM importance flag */ ) Loading @@ -708,9 +710,16 @@ int32_t ivas_interformat_brate( nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP ); } else /* ISM_HIGH_IMP */ { if ( ism_mode == ISM_MASA_MODE_ONE_OBJ ) { nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP2 ); } else { nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP ); } } limit_low = MIN_BRATE_SWB_BWE / FRAMES_PER_SEC; if ( ism_imp == ISM_INACTIVE_IMP ) Loading
lib_com/ivas_masa_com.c +43 −14 Original line number Diff line number Diff line Loading @@ -422,17 +422,20 @@ void masa_sample_rate_band_correction( return; } #ifdef MASA_AND_OBJECTS /*--------------------------------------------------------------- * valid() * valid_ratio_index() * * Checking validity of the index of an ISM ratio index vector, * within the indexing function. *---------------------------------------------------------------*/ int16_t valid( /* o: valid or not 1/0 */ /*! r: valid or not 1/0 */ int16_t valid_ratio_index( int16_t index, /* i : index to be checked */ int16_t K, /* i: L1 norm to check against */ int16_t len /* i: vector length */ const int16_t K, /* i : L1 norm to check against */ const int16_t len /* i : vector length */ ) { int16_t out; Loading Loading @@ -462,14 +465,17 @@ int16_t valid( /* o: valid or not 1/0 */ { out = 0; } return out; } /*--------------------------------------------------------------- * reconstruct_ism_ratios() * * Obtains ISM ratio values from the quantized indexes *---------------------------------------------------------------*/ void reconstruct_ism_ratios( int16_t *ratio_ism_idx, /* i : index vector */ int16_t n_ism, /* i : number of components/objects */ Loading @@ -479,22 +485,27 @@ void reconstruct_ism_ratios( { int16_t i; float sum; sum = 0; for ( i = 0; i < n_ism - 1; i++ ) { q_energy_ratio_ism[i] = ratio_ism_idx[i] * step; sum += q_energy_ratio_ism[i]; } q_energy_ratio_ism[n_ism - 1] = 1.0f - sum; return; } /*--------------------------------------------------------------- * modify_masa_energy_ratios() * * Updates energy ratios by taking into account the MASA content contribution * to the total audio scene *---------------------------------------------------------------*/ void modify_masa_energy_ratios( IVAS_QMETADATA_HANDLE hQMetaData /* i/o: Metadata handle */ ) Loading @@ -519,13 +530,18 @@ void modify_masa_energy_ratios( } } } return; } /*--------------------------------------------------------------- * ivas_get_stereo_panning_gains() * * *---------------------------------------------------------------*/ void ivas_get_stereo_panning_gains( float aziDeg, float eleDeg, Loading Loading @@ -559,13 +575,17 @@ void ivas_get_stereo_panning_gains( panningGains[0] = sqrtf( A3 ); panningGains[1] = sqrtf( 1.0f - A3 ); } return; } /*--------------------------------------------------------------- * distribute_evenly_ism() * * Obtain ISM ratio indexes for even content distribution bbetween objects *---------------------------------------------------------------*/ void distribute_evenly_ism( int16_t *idx, /* o: index values */ int16_t K, /* i: sum of indexes */ Loading @@ -574,13 +594,16 @@ void distribute_evenly_ism( { int16_t i; int16_t sum; sum = 0; for ( i = 0; i < no_ism; i++ ) { idx[i] = (int16_t) ( K / no_ism ); sum += idx[i]; } assert( sum <= K ); i = 0; while ( sum < K ) { Loading @@ -592,19 +615,24 @@ void distribute_evenly_ism( sum++; i++; } return; } /*--------------------------------------------------------------- * calculate_cpe_brate_MASA_ISM() * * Calculates bitrate for MASA_ISM mode that is not used for separated objects, * * but for the CPE part (metadata included) *---------------------------------------------------------------*/ int32_t /* o: cpe bitrate value */ calculate_cpe_brate_MASA_ISM( ISM_MODE ism_mode, /* i: ism mode */ int32_t ivas_total_brate, /* i: total bit rate for IVAS */ int16_t n_ism ) /* i: number of objects */ /*! r: CPE bitrate value */ int32_t calculate_cpe_brate_MASA_ISM( const ISM_MODE ism_mode, /* i : ism mode */ const int32_t ivas_total_brate, /* i : total bit rate for IVAS */ const int16_t n_ism /* i : number of objects */ ) { int32_t cpe_brate; int16_t k, sce_id; Loading Loading @@ -632,6 +660,7 @@ calculate_cpe_brate_MASA_ISM( { cpe_brate = ivas_total_brate; } return cpe_brate; } #endif
lib_com/ivas_prot.h +17 −14 Original line number Diff line number Diff line Loading @@ -4535,10 +4535,11 @@ void ivas_masa_set_elements( ); #ifdef MASA_AND_OBJECTS int16_t valid( int16_t index, int16_t K, int16_t len /*! r: valid or not 1/0 */ int16_t valid_ratio_index( int16_t index, /* i : index to be checked */ const int16_t K, /* i : L1 norm to check against */ const int16_t len /* i : vector length */ ); void reconstruct_ism_ratios( Loading Loading @@ -4572,11 +4573,12 @@ void ivas_qmetadata_encode_extended_gr( const uint16_t alphabet_size, /* i : alphabet size */ const int16_t gr_param); /* i : GR order */ int32_t /* o: cpe bitrate value */ calculate_cpe_brate_MASA_ISM( ISM_MODE ism_mode, /* i: ism mode */ int32_t ivas_total_brate, /* i: total bit rate for IVAS */ int16_t n_ism ); /* i: number of objects */ /*! r: CPE bitrate value */ int32_t calculate_cpe_brate_MASA_ISM( const ISM_MODE ism_mode, /* i : ism mode */ const int32_t ivas_total_brate, /* i : total bit rate for IVAS */ const int16_t n_ism /* i : number of objects */ ); #endif void ivas_masa_set_coding_config( Loading Loading @@ -5174,6 +5176,7 @@ void set_ism_importance_interformat( /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ const int32_t element_brate, /* i : element bitrate */ const int16_t ism_imp /* i : ISM importance flag */ ); Loading
lib_dec/ivas_masa_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -1654,7 +1654,7 @@ static void decode_index_slice( j = 0; while ( index >= 0 ) { if ( valid( j, K, no_ism - 1 ) ) if ( valid_ratio_index( j, K, no_ism - 1 ) ) { index--; } Loading
lib_dec/ivas_omasa_dec.c +2 −2 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ void ivas_set_surplus_brate_dec( if ( st_ivas->ism_mode == ISM_MASA_MODE_ONE_OBJ ) { *ism_total_brate = ivas_interformat_brate( st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp ); *ism_total_brate = ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp ); st_ivas->hCPE[0]->brate_surplus = st_ivas->hSCE[0]->element_brate - *ism_total_brate; Loading Loading @@ -90,7 +90,7 @@ void ivas_set_surplus_brate_dec( { st_ivas->hSCE[n]->element_brate = element_brate[n]; *ism_total_brate += ivas_interformat_brate( st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp ); *ism_total_brate += ivas_interformat_brate( st_ivas->ism_mode, st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp ); } st_ivas->hCPE[0]->brate_surplus = ism_total_brate_ref - *ism_total_brate; Loading