Loading lib_com/ivas_prot.h +13 −3 Original line number Diff line number Diff line Loading @@ -947,7 +947,7 @@ ivas_error ivas_ism_enc( int16_t *nb_bits_metadata /* i : number of metadata bits */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif ); Loading @@ -971,7 +971,7 @@ ivas_error ivas_ism_metadata_enc( ,const float lp_noise_CPE /* i : LP filterend total noise estimation */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #ifdef FIX_OMASA_STEREO_SWITCHING ,int16_t *omasa_stereo_sw_cnt Loading Loading @@ -5078,7 +5078,7 @@ ivas_error ivas_masa_encode( const int16_t ism_imp /* i : importance of separated object */ #ifdef OMASA_ENERGIES , const int16_t flag_omasa_brate /* i : flag for using less bitrate for objects in OMASA*/ const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #endif ); Loading Loading @@ -5728,6 +5728,16 @@ void set_ism_importance_interformat( int16_t ism_imp[] /* o : ISM importance flags */ ); #ifdef OMASA_ENERGIES /*! r: flag for using less bitrate for objects in OMASA */ int16_t ivas_omasa_ener_brate( const int16_t nchan_ism, /* i : number of ISMs */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ float data_f[][L_FRAME48k], /* i : Input / transport audio signals */ const int16_t input_frame /* i : Input frame size */ ); #endif /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ Loading lib_enc/ivas_enc.c +9 −36 Original line number Diff line number Diff line Loading @@ -63,9 +63,6 @@ ivas_error ivas_enc( Encoder_State *st; /* used for bitstream handling */ #ifdef MASA_AND_OBJECTS int16_t nb_bits_metadata[MAX_SCE + 1]; #ifdef OMASA_ENERGIES int16_t flag_omasa_brate; #endif #else int16_t nb_bits_metadata[MAX_SCE]; #endif Loading @@ -92,9 +89,6 @@ ivas_error ivas_enc( #ifdef MASA_AND_OBJECTS set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); #ifdef OMASA_ENERGIES flag_omasa_brate = 0; #endif #else set_s( nb_bits_metadata, 0, MAX_SCE ); #endif Loading Loading @@ -304,6 +298,11 @@ ivas_error ivas_enc( { float data_separated_object[L_FRAME48k]; int16_t idx_separated_object; #ifdef OMASA_ENERGIES int16_t flag_omasa_ener_brate; flag_omasa_ener_brate = 0; #endif if ( ( error = ivas_omasa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { Loading Loading @@ -358,40 +357,14 @@ ivas_error ivas_enc( else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { #ifdef OMASA_ENERGIES float energy_ism, energy_masa; energy_ism = 0.0f; if ( st_ivas->nSCE >= 3 && st_ivas->hEncoderConfig->ivas_total_brate == IVAS_128k ) { for ( i = 0; i < st_ivas->nSCE; i++ ) { energy_ism += sum2_f( data_f[i], input_frame ); } energy_masa = 0.0f; for ( i = st_ivas->nSCE; i < st_ivas->nSCE + 2; i++ ) { energy_masa += sum2_f( data_f[i], input_frame ); } energy_ism = energy_ism / ( energy_masa + 1.0f ) * 2.0f / (float) ( st_ivas->nSCE ); flag_omasa_brate = 0; if ( energy_ism < 1.0f ) { flag_omasa_brate = 1; } #ifdef DEBUG_MODE_INFO dbgwrite( &energy_ism, sizeof( float ), 1, 1, "en_ratio.bin" ); #endif } flag_omasa_ener_brate = ivas_omasa_ener_brate( st_ivas->hEncoderConfig->nchan_ism, ivas_total_brate, data_f, input_frame ); #endif /* Analysis, decision about bitrates per channel & core coding */ if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, &nb_bits_metadata[1] #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif ) ) != IVAS_ERR_OK ) { Loading @@ -416,7 +389,7 @@ ivas_error ivas_enc( st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa, st_ivas->hIsmMetaData[0]->ism_imp #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif ) ) != IVAS_ERR_OK ) { Loading lib_enc/ivas_ism_enc.c +2 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ ivas_error ivas_ism_enc( int16_t *nb_bits_metadata /* i : number of metadata bits */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif ) { Loading Loading @@ -288,7 +288,7 @@ ivas_error ivas_ism_enc( nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, st_ivas->hMasa != NULL ? st_ivas->hMasa->data.lp_noise_CPE : 0 #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif #ifdef FIX_OMASA_STEREO_SWITCHING , Loading lib_enc/ivas_ism_metadata_enc.c +3 −3 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ ivas_error ivas_ism_metadata_enc( const float lp_noise_CPE #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #ifdef FIX_OMASA_STEREO_SWITCHING , Loading Loading @@ -704,9 +704,9 @@ ivas_error ivas_ism_metadata_enc( { *ism_total_brate += ivas_interformat_brate( ism_mode, nchan_ism, hSCE[ch]->element_brate, ism_imp[ch], brate_limit_flag ); #ifdef OMASA_ENERGIES if ( ism_imp[ch] > 1 && flag_omasa_brate == 1 && brate_limit_flag >= 0 ) if ( ism_imp[ch] > 1 && flag_omasa_ener_brate == 1 && brate_limit_flag >= 0 ) { *ism_total_brate -= flag_omasa_brate * ADJUST_ISM_BRATE_NEG; *ism_total_brate -= ADJUST_ISM_BRATE_NEG; } if ( brate_limit_flag == -1 && ism_imp[ch] >= 1 && nchan_ism >= 3 && ( ism_total_brate_ref - *ism_total_brate > IVAS_48k ) ) Loading lib_enc/ivas_masa_enc.c +2 −2 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ ivas_error ivas_masa_encode( const int16_t ism_imp /* i : importance of separated object */ #ifdef OMASA_ENERGIES , const int16_t flag_omasa_brate /* i : flag for using less bitrate for objects in OMASA */ const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #endif ) Loading Loading @@ -470,7 +470,7 @@ ivas_error ivas_masa_encode( #ifdef OMASA_ENERGIES if ( ivas_total_brate == IVAS_128k && nchan_ism >= 3 ) { push_next_indice( hMetaData, flag_omasa_brate, 1 ); push_next_indice( hMetaData, flag_omasa_ener_brate, 1 ); hQMetaData->metadata_max_bits -= 1; } #endif Loading Loading
lib_com/ivas_prot.h +13 −3 Original line number Diff line number Diff line Loading @@ -947,7 +947,7 @@ ivas_error ivas_ism_enc( int16_t *nb_bits_metadata /* i : number of metadata bits */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif ); Loading @@ -971,7 +971,7 @@ ivas_error ivas_ism_metadata_enc( ,const float lp_noise_CPE /* i : LP filterend total noise estimation */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #ifdef FIX_OMASA_STEREO_SWITCHING ,int16_t *omasa_stereo_sw_cnt Loading Loading @@ -5078,7 +5078,7 @@ ivas_error ivas_masa_encode( const int16_t ism_imp /* i : importance of separated object */ #ifdef OMASA_ENERGIES , const int16_t flag_omasa_brate /* i : flag for using less bitrate for objects in OMASA*/ const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #endif ); Loading Loading @@ -5728,6 +5728,16 @@ void set_ism_importance_interformat( int16_t ism_imp[] /* o : ISM importance flags */ ); #ifdef OMASA_ENERGIES /*! r: flag for using less bitrate for objects in OMASA */ int16_t ivas_omasa_ener_brate( const int16_t nchan_ism, /* i : number of ISMs */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ float data_f[][L_FRAME48k], /* i : Input / transport audio signals */ const int16_t input_frame /* i : Input frame size */ ); #endif /*! r: adjusted bitrate */ int32_t ivas_interformat_brate( const ISM_MODE ism_mode, /* i : ISM mode */ Loading
lib_enc/ivas_enc.c +9 −36 Original line number Diff line number Diff line Loading @@ -63,9 +63,6 @@ ivas_error ivas_enc( Encoder_State *st; /* used for bitstream handling */ #ifdef MASA_AND_OBJECTS int16_t nb_bits_metadata[MAX_SCE + 1]; #ifdef OMASA_ENERGIES int16_t flag_omasa_brate; #endif #else int16_t nb_bits_metadata[MAX_SCE]; #endif Loading @@ -92,9 +89,6 @@ ivas_error ivas_enc( #ifdef MASA_AND_OBJECTS set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); #ifdef OMASA_ENERGIES flag_omasa_brate = 0; #endif #else set_s( nb_bits_metadata, 0, MAX_SCE ); #endif Loading Loading @@ -304,6 +298,11 @@ ivas_error ivas_enc( { float data_separated_object[L_FRAME48k]; int16_t idx_separated_object; #ifdef OMASA_ENERGIES int16_t flag_omasa_ener_brate; flag_omasa_ener_brate = 0; #endif if ( ( error = ivas_omasa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { Loading Loading @@ -358,40 +357,14 @@ ivas_error ivas_enc( else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { #ifdef OMASA_ENERGIES float energy_ism, energy_masa; energy_ism = 0.0f; if ( st_ivas->nSCE >= 3 && st_ivas->hEncoderConfig->ivas_total_brate == IVAS_128k ) { for ( i = 0; i < st_ivas->nSCE; i++ ) { energy_ism += sum2_f( data_f[i], input_frame ); } energy_masa = 0.0f; for ( i = st_ivas->nSCE; i < st_ivas->nSCE + 2; i++ ) { energy_masa += sum2_f( data_f[i], input_frame ); } energy_ism = energy_ism / ( energy_masa + 1.0f ) * 2.0f / (float) ( st_ivas->nSCE ); flag_omasa_brate = 0; if ( energy_ism < 1.0f ) { flag_omasa_brate = 1; } #ifdef DEBUG_MODE_INFO dbgwrite( &energy_ism, sizeof( float ), 1, 1, "en_ratio.bin" ); #endif } flag_omasa_ener_brate = ivas_omasa_ener_brate( st_ivas->hEncoderConfig->nchan_ism, ivas_total_brate, data_f, input_frame ); #endif /* Analysis, decision about bitrates per channel & core coding */ if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, &nb_bits_metadata[1] #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif ) ) != IVAS_ERR_OK ) { Loading @@ -416,7 +389,7 @@ ivas_error ivas_enc( st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa, st_ivas->hIsmMetaData[0]->ism_imp #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif ) ) != IVAS_ERR_OK ) { Loading
lib_enc/ivas_ism_enc.c +2 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ ivas_error ivas_ism_enc( int16_t *nb_bits_metadata /* i : number of metadata bits */ #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif ) { Loading Loading @@ -288,7 +288,7 @@ ivas_error ivas_ism_enc( nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, st_ivas->hMasa != NULL ? st_ivas->hMasa->data.lp_noise_CPE : 0 #ifdef OMASA_ENERGIES , flag_omasa_brate flag_omasa_ener_brate #endif #ifdef FIX_OMASA_STEREO_SWITCHING , Loading
lib_enc/ivas_ism_metadata_enc.c +3 −3 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ ivas_error ivas_ism_metadata_enc( const float lp_noise_CPE #ifdef OMASA_ENERGIES , int16_t flag_omasa_brate const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #ifdef FIX_OMASA_STEREO_SWITCHING , Loading Loading @@ -704,9 +704,9 @@ ivas_error ivas_ism_metadata_enc( { *ism_total_brate += ivas_interformat_brate( ism_mode, nchan_ism, hSCE[ch]->element_brate, ism_imp[ch], brate_limit_flag ); #ifdef OMASA_ENERGIES if ( ism_imp[ch] > 1 && flag_omasa_brate == 1 && brate_limit_flag >= 0 ) if ( ism_imp[ch] > 1 && flag_omasa_ener_brate == 1 && brate_limit_flag >= 0 ) { *ism_total_brate -= flag_omasa_brate * ADJUST_ISM_BRATE_NEG; *ism_total_brate -= ADJUST_ISM_BRATE_NEG; } if ( brate_limit_flag == -1 && ism_imp[ch] >= 1 && nchan_ism >= 3 && ( ism_total_brate_ref - *ism_total_brate > IVAS_48k ) ) Loading
lib_enc/ivas_masa_enc.c +2 −2 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ ivas_error ivas_masa_encode( const int16_t ism_imp /* i : importance of separated object */ #ifdef OMASA_ENERGIES , const int16_t flag_omasa_brate /* i : flag for using less bitrate for objects in OMASA */ const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ #endif #endif ) Loading Loading @@ -470,7 +470,7 @@ ivas_error ivas_masa_encode( #ifdef OMASA_ENERGIES if ( ivas_total_brate == IVAS_128k && nchan_ism >= 3 ) { push_next_indice( hMetaData, flag_omasa_brate, 1 ); push_next_indice( hMetaData, flag_omasa_ener_brate, 1 ); hQMetaData->metadata_max_bits -= 1; } #endif Loading