Loading lib_com/ivas_cnst.h +0 −3 Original line number Diff line number Diff line Loading @@ -1791,9 +1791,6 @@ typedef enum #define IVAS_FB_BANDS_12 12 #define IVAS_FB_BANDS_20 20 #define IVAS_MAX_NUM_BANDS IVAS_FB_BANDS_12 #ifdef ARITH_HUFF_CODER_CHANGES_1 #define IVAS_MAX_NUM_BANDS_VLBR 6 #endif #define IVAS_MAX_NUM_FB_BANDS IVAS_FB_BANDS_20 #define IVAS_FB_12_1MS_LEN ( IVAS_FB_12_1MS_48K_END_BINS_BAND_0 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_0 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_1 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_1 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_2 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_2 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_3 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_3 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_4 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_4 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_5 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_5 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_6 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_6 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_7 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_7 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_8 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_8 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_9 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_9 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_10 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_10 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_11 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_11 ) #define IVAS_16K_12BANDS_ACTIVE_BANDS 10 Loading lib_com/ivas_prot.h +4 −0 Original line number Diff line number Diff line Loading @@ -4476,6 +4476,10 @@ void ivas_spar_set_bitrate_config( ivas_spar_md_com_cfg *pSpar_md_cfg, /* i/o: SPAR MD config. handle */ const int16_t table_idx, /* i : config. table index */ const int16_t num_bands /* i : number of bands */ #ifdef ARITH_HUFF_CODER_CHANGES_1 , const int16_t dirac2spar_md_flag #endif #ifdef ARITH_HUFF_CODER_CHANGES , const int16_t enc_flag, Loading lib_com/ivas_rom_com.c +8 −0 Original line number Diff line number Diff line Loading @@ -891,11 +891,19 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] = so minimum core-coder bitrate per channel can be min core-coder bitrates as per the table - AGC_BITS_PER_CH */ /* preferred tuning (3.2/4.9kbps) with/out TDD */ { 13200, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, #ifdef FIX_487_LOWRATE_SBA_TUNING_FIX { { 10000, 8150, 13150 } }, #else { { 10000, 8300, 13150 } }, #endif { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, { 16400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, #ifdef FIX_487_LOWRATE_SBA_TUNING_FIX { { 13200, 11350, 16350 } }, #else { { 13200, 11500, 16350 } }, #endif { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, { 24400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0,{ { 16400, 14850, 24350 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, Loading lib_com/ivas_spar_com.c +20 −6 Original line number Diff line number Diff line Loading @@ -2136,6 +2136,10 @@ void ivas_spar_set_bitrate_config( ivas_spar_md_com_cfg *pSpar_md_cfg, /* i/o: SPAR MD config. handle */ const int16_t table_idx, /* i : config. table index */ const int16_t num_bands /* i : number of bands */ #ifdef ARITH_HUFF_CODER_CHANGES_1 , const int16_t dirac2spar_md_flag #endif #ifdef ARITH_HUFF_CODER_CHANGES , const int16_t enc_flag, Loading @@ -2154,6 +2158,9 @@ void ivas_spar_set_bitrate_config( int16_t wc_coarse_strat; int16_t n_input, n_dmx, n_dec; int16_t quant_strat; #endif #ifdef ARITH_HUFF_CODER_CHANGES_1 int16_t bands_bw; #endif pSpar_md_cfg->nchan_transport = ivas_spar_br_table_consts[table_idx].nchan_transport; Loading Loading @@ -2201,18 +2208,17 @@ void ivas_spar_set_bitrate_config( #ifdef ARITH_HUFF_CODER_CHANGES_1 if ( ivas_total_brate < IVAS_24k4 ) { pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS_VLBR ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS_VLBR ); bands_bw = 2; } else { pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); bands_bw = 1; } #else #endif pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); #endif pSpar_md_cfg->tgt_bits_per_blk += md_coding_bits_header; pSpar_md_cfg->max_bits_per_blk += md_coding_bits_header; Loading @@ -2229,7 +2235,12 @@ void ivas_spar_set_bitrate_config( quant_strat = QUANT_STRAT_2; } #ifdef ARITH_HUFF_CODER_CHANGES_1 num_PR_bits_dirac_bands = ( dirac2spar_md_flag == 1 ) ? num_bands - SPAR_DIRAC_SPLIT_START_BAND : 0; num_PR_bits_dirac_bands /= bands_bw; #else num_PR_bits_dirac_bands = num_bands - SPAR_DIRAC_SPLIT_START_BAND; #endif num_PR_bits_dirac_bands = max( 0, num_PR_bits_dirac_bands ); num_PR_bits_dirac_bands *= DIRAC_TO_SPAR_HBR_PRED_CHS; Loading @@ -2243,6 +2254,9 @@ void ivas_spar_set_bitrate_config( bits_P = (int16_t) ceilf( log2f( ivas_spar_br_table_consts[table_idx].q_lvls[quant_strat][2] ) ) * ( n_dec ); wc_coarse_strat = bits_PR + bits_C + bits_P; wc_coarse_strat *= num_bands; #ifdef ARITH_HUFF_CODER_CHANGES_1 wc_coarse_strat /= bands_bw; #endif wc_coarse_strat -= num_PR_bits_dirac_bands; wc_coarse_strat += md_coding_bits_header; Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,8 @@ #define FIX_DTX_428 /* FhG: fix for issue 428, crash with DTX and bitrate switching */ #define FIX_487_LOWRATE_SBA_TUNING_FIX /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading Loading
lib_com/ivas_cnst.h +0 −3 Original line number Diff line number Diff line Loading @@ -1791,9 +1791,6 @@ typedef enum #define IVAS_FB_BANDS_12 12 #define IVAS_FB_BANDS_20 20 #define IVAS_MAX_NUM_BANDS IVAS_FB_BANDS_12 #ifdef ARITH_HUFF_CODER_CHANGES_1 #define IVAS_MAX_NUM_BANDS_VLBR 6 #endif #define IVAS_MAX_NUM_FB_BANDS IVAS_FB_BANDS_20 #define IVAS_FB_12_1MS_LEN ( IVAS_FB_12_1MS_48K_END_BINS_BAND_0 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_0 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_1 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_1 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_2 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_2 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_3 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_3 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_4 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_4 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_5 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_5 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_6 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_6 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_7 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_7 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_8 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_8 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_9 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_9 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_10 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_10 ) + ( IVAS_FB_12_1MS_48K_END_BINS_BAND_11 - IVAS_FB_12_1MS_48K_START_OFFSET_BAND_11 ) #define IVAS_16K_12BANDS_ACTIVE_BANDS 10 Loading
lib_com/ivas_prot.h +4 −0 Original line number Diff line number Diff line Loading @@ -4476,6 +4476,10 @@ void ivas_spar_set_bitrate_config( ivas_spar_md_com_cfg *pSpar_md_cfg, /* i/o: SPAR MD config. handle */ const int16_t table_idx, /* i : config. table index */ const int16_t num_bands /* i : number of bands */ #ifdef ARITH_HUFF_CODER_CHANGES_1 , const int16_t dirac2spar_md_flag #endif #ifdef ARITH_HUFF_CODER_CHANGES , const int16_t enc_flag, Loading
lib_com/ivas_rom_com.c +8 −0 Original line number Diff line number Diff line Loading @@ -891,11 +891,19 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] = so minimum core-coder bitrate per channel can be min core-coder bitrates as per the table - AGC_BITS_PER_CH */ /* preferred tuning (3.2/4.9kbps) with/out TDD */ { 13200, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, #ifdef FIX_487_LOWRATE_SBA_TUNING_FIX { { 10000, 8150, 13150 } }, #else { { 10000, 8300, 13150 } }, #endif { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, { 16400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, #ifdef FIX_487_LOWRATE_SBA_TUNING_FIX { { 13200, 11350, 16350 } }, #else { { 13200, 11500, 16350 } }, #endif { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, { 24400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0,{ { 16400, 14850, 24350 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, Loading
lib_com/ivas_spar_com.c +20 −6 Original line number Diff line number Diff line Loading @@ -2136,6 +2136,10 @@ void ivas_spar_set_bitrate_config( ivas_spar_md_com_cfg *pSpar_md_cfg, /* i/o: SPAR MD config. handle */ const int16_t table_idx, /* i : config. table index */ const int16_t num_bands /* i : number of bands */ #ifdef ARITH_HUFF_CODER_CHANGES_1 , const int16_t dirac2spar_md_flag #endif #ifdef ARITH_HUFF_CODER_CHANGES , const int16_t enc_flag, Loading @@ -2154,6 +2158,9 @@ void ivas_spar_set_bitrate_config( int16_t wc_coarse_strat; int16_t n_input, n_dmx, n_dec; int16_t quant_strat; #endif #ifdef ARITH_HUFF_CODER_CHANGES_1 int16_t bands_bw; #endif pSpar_md_cfg->nchan_transport = ivas_spar_br_table_consts[table_idx].nchan_transport; Loading Loading @@ -2201,18 +2208,17 @@ void ivas_spar_set_bitrate_config( #ifdef ARITH_HUFF_CODER_CHANGES_1 if ( ivas_total_brate < IVAS_24k4 ) { pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS_VLBR ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS_VLBR ); bands_bw = 2; } else { pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); bands_bw = 1; } #else #endif pSpar_md_cfg->tgt_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->tgt_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); pSpar_md_cfg->max_bits_per_blk = (int16_t) ceilf( ( 1.0f * pSpar_md_cfg->max_bits_per_blk * num_bands ) / IVAS_MAX_NUM_BANDS ); #endif pSpar_md_cfg->tgt_bits_per_blk += md_coding_bits_header; pSpar_md_cfg->max_bits_per_blk += md_coding_bits_header; Loading @@ -2229,7 +2235,12 @@ void ivas_spar_set_bitrate_config( quant_strat = QUANT_STRAT_2; } #ifdef ARITH_HUFF_CODER_CHANGES_1 num_PR_bits_dirac_bands = ( dirac2spar_md_flag == 1 ) ? num_bands - SPAR_DIRAC_SPLIT_START_BAND : 0; num_PR_bits_dirac_bands /= bands_bw; #else num_PR_bits_dirac_bands = num_bands - SPAR_DIRAC_SPLIT_START_BAND; #endif num_PR_bits_dirac_bands = max( 0, num_PR_bits_dirac_bands ); num_PR_bits_dirac_bands *= DIRAC_TO_SPAR_HBR_PRED_CHS; Loading @@ -2243,6 +2254,9 @@ void ivas_spar_set_bitrate_config( bits_P = (int16_t) ceilf( log2f( ivas_spar_br_table_consts[table_idx].q_lvls[quant_strat][2] ) ) * ( n_dec ); wc_coarse_strat = bits_PR + bits_C + bits_P; wc_coarse_strat *= num_bands; #ifdef ARITH_HUFF_CODER_CHANGES_1 wc_coarse_strat /= bands_bw; #endif wc_coarse_strat -= num_PR_bits_dirac_bands; wc_coarse_strat += md_coding_bits_header; Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,8 @@ #define FIX_DTX_428 /* FhG: fix for issue 428, crash with DTX and bitrate switching */ #define FIX_487_LOWRATE_SBA_TUNING_FIX /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading