Loading lib_com/ivas_cnst.h +4 −0 Original line number Diff line number Diff line Loading @@ -1618,6 +1618,10 @@ typedef enum #define SPAR_DIRAC_DTX_BANDS ( SPAR_DTX_BANDS + DIRAC_DTX_BANDS ) #define CLDFB_PAR_WEIGHT_START_BAND 7 #ifdef ARITH_HUFF_CODER_CHANGES #define IVAS_SBA_SIGNALLING_OVERHEAD 550 #endif /*----------------------------------------------------------------------------------* * Limiter constants Loading lib_enc/ivas_spar_md_enc.c +21 −30 Original line number Diff line number Diff line Loading @@ -113,8 +113,10 @@ ivas_error ivas_spar_md_enc_open( int16_t num_channels, i, j; #ifdef ARITH_HUFF_CODER_CHANGES int16_t bits_per_PR, bits_per_C, bits_per_P = 0; int16_t wc_coarse_strat = 0; int16_t num_bands_arith_huff = ivas_get_num_bands_from_bw_idx( SPAR_CONFIG_BW ); int32_t wc_coarse_strat = 0; int16_t num_bands_arith_huff = IVAS_MAX_NUM_BANDS; int16_t n_input, n_dmx, n_dec = 0; int16_t table_idx, quant_start = 0; #endif error = IVAS_ERR_OK; Loading Loading @@ -211,37 +213,26 @@ ivas_error ivas_spar_md_enc_open( } #ifdef ARITH_HUFF_CODER_CHANGES i = 0; /*calculate the worst case strat vlaue*/ while ( i <= IVAS_SPAR_BR_TABLE_LEN ) if ( hEncoderConfig->ivas_total_brate <= 192000 ) { if ( sba_order == SBA_FOA_ORDER && ivas_spar_br_table_consts[i].ivas_total_brate == hEncoderConfig->ivas_total_brate && hEncoderConfig->ivas_total_brate <= 192000 ) { bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][0] ) + 1 ) * 3; bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][1] ) + 1 ) * 2; bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][2] ) + 1 ) * 1; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * 50 ) + 550; wc_coarse_strat = wc_coarse_strat / 50; break; } else if ( sba_order == SBA_FOA_ORDER && ivas_spar_br_table_consts[i].ivas_total_brate == hEncoderConfig->ivas_total_brate && hEncoderConfig->ivas_total_brate > 192000 ) { bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][0] ) + 1 ) * 3; bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][1] ) + 1 ) * 2; bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][2] ) + 1 ) * 1; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * 50 ) + 550; wc_coarse_strat = wc_coarse_strat / 50; break; quant_start = 2; table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); } else if ( sba_order == SBA_HOA2_ORDER || sba_order == SBA_HOA3_ORDER ) else { wc_coarse_strat = MAX_BITS_METADATA; break; } i++; quant_start = 0; table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, hEncoderConfig->sba_order, SPAR_CONFIG_BW, NULL, NULL ); } n_input = ivas_sba_get_nchan_metadata( hEncoderConfig->sba_order ); n_dmx = ivas_spar_br_table_consts[table_idx].nchan_transport; n_dec = n_input - n_dmx; bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][0] ) + 1 ) * ( n_input - 1 ); bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][1] ) + 1 ) * ( ( n_dmx - 1 ) * n_dec ); bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][2] ) + 1 ) * n_dec; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * FRAMES_PER_SECOND ) + IVAS_SBA_SIGNALLING_OVERHEAD; wc_coarse_strat = wc_coarse_strat / FRAMES_PER_SECOND; hMdEnc->wc_strat = wc_coarse_strat; hMdEnc->wc_coarse_strat_buff = (Indice *) malloc( wc_coarse_strat * sizeof( Indice ) ); #endif Loading Loading
lib_com/ivas_cnst.h +4 −0 Original line number Diff line number Diff line Loading @@ -1618,6 +1618,10 @@ typedef enum #define SPAR_DIRAC_DTX_BANDS ( SPAR_DTX_BANDS + DIRAC_DTX_BANDS ) #define CLDFB_PAR_WEIGHT_START_BAND 7 #ifdef ARITH_HUFF_CODER_CHANGES #define IVAS_SBA_SIGNALLING_OVERHEAD 550 #endif /*----------------------------------------------------------------------------------* * Limiter constants Loading
lib_enc/ivas_spar_md_enc.c +21 −30 Original line number Diff line number Diff line Loading @@ -113,8 +113,10 @@ ivas_error ivas_spar_md_enc_open( int16_t num_channels, i, j; #ifdef ARITH_HUFF_CODER_CHANGES int16_t bits_per_PR, bits_per_C, bits_per_P = 0; int16_t wc_coarse_strat = 0; int16_t num_bands_arith_huff = ivas_get_num_bands_from_bw_idx( SPAR_CONFIG_BW ); int32_t wc_coarse_strat = 0; int16_t num_bands_arith_huff = IVAS_MAX_NUM_BANDS; int16_t n_input, n_dmx, n_dec = 0; int16_t table_idx, quant_start = 0; #endif error = IVAS_ERR_OK; Loading Loading @@ -211,37 +213,26 @@ ivas_error ivas_spar_md_enc_open( } #ifdef ARITH_HUFF_CODER_CHANGES i = 0; /*calculate the worst case strat vlaue*/ while ( i <= IVAS_SPAR_BR_TABLE_LEN ) if ( hEncoderConfig->ivas_total_brate <= 192000 ) { if ( sba_order == SBA_FOA_ORDER && ivas_spar_br_table_consts[i].ivas_total_brate == hEncoderConfig->ivas_total_brate && hEncoderConfig->ivas_total_brate <= 192000 ) { bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][0] ) + 1 ) * 3; bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][1] ) + 1 ) * 2; bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[2][2] ) + 1 ) * 1; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * 50 ) + 550; wc_coarse_strat = wc_coarse_strat / 50; break; } else if ( sba_order == SBA_FOA_ORDER && ivas_spar_br_table_consts[i].ivas_total_brate == hEncoderConfig->ivas_total_brate && hEncoderConfig->ivas_total_brate > 192000 ) { bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][0] ) + 1 ) * 3; bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][1] ) + 1 ) * 2; bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[i].q_lvls[0][2] ) + 1 ) * 1; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * 50 ) + 550; wc_coarse_strat = wc_coarse_strat / 50; break; quant_start = 2; table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); } else if ( sba_order == SBA_HOA2_ORDER || sba_order == SBA_HOA3_ORDER ) else { wc_coarse_strat = MAX_BITS_METADATA; break; } i++; quant_start = 0; table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, hEncoderConfig->sba_order, SPAR_CONFIG_BW, NULL, NULL ); } n_input = ivas_sba_get_nchan_metadata( hEncoderConfig->sba_order ); n_dmx = ivas_spar_br_table_consts[table_idx].nchan_transport; n_dec = n_input - n_dmx; bits_per_PR = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][0] ) + 1 ) * ( n_input - 1 ); bits_per_C = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][1] ) + 1 ) * ( ( n_dmx - 1 ) * n_dec ); bits_per_P = ( (int16_t) log2( ivas_spar_br_table_consts[table_idx].q_lvls[quant_start][2] ) + 1 ) * n_dec; wc_coarse_strat = bits_per_PR + bits_per_C + bits_per_P; wc_coarse_strat = ( wc_coarse_strat * num_bands_arith_huff * FRAMES_PER_SECOND ) + IVAS_SBA_SIGNALLING_OVERHEAD; wc_coarse_strat = wc_coarse_strat / FRAMES_PER_SECOND; hMdEnc->wc_strat = wc_coarse_strat; hMdEnc->wc_coarse_strat_buff = (Indice *) malloc( wc_coarse_strat * sizeof( Indice ) ); #endif Loading