Loading lib_isar/lib_isar_pre_rend.c +22 −9 Original line number Diff line number Diff line Loading @@ -474,28 +474,40 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( num_slots = shr( tmp, sub( 15, tmp_e ) ); // Q0 // num_slots = (Word16) CLDFB_NO_COL_MAX * ivas_fs / 20; /* CLDFB synthesis of main pose */ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; q1 = 31; q2 = 31; move16(); move16(); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) { q1 = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q1 ); q2 = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q2 ); } } q_final = s_min( q1, q2 ); q_final = s_min( add( Q_buff_re, q_final ), add( Q_buff_im, q_final ) ); q_final = sub( q_final, 3 ); // guard bits q_final = s_min( q_final, Q25 ); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) { Scale_sig32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) ); Scale_sig32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) ); } } } FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) { Loading @@ -514,6 +526,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state = Q_out[ch]; move16(); } assert( Q_out[0] == Q_out[1] ); #ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written; Loading Loading
lib_isar/lib_isar_pre_rend.c +22 −9 Original line number Diff line number Diff line Loading @@ -474,28 +474,40 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( num_slots = shr( tmp, sub( 15, tmp_e ) ); // Q0 // num_slots = (Word16) CLDFB_NO_COL_MAX * ivas_fs / 20; /* CLDFB synthesis of main pose */ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; q1 = 31; q2 = 31; move16(); move16(); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) { q1 = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q1 ); q2 = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q2 ); } } q_final = s_min( q1, q2 ); q_final = s_min( add( Q_buff_re, q_final ), add( Q_buff_im, q_final ) ); q_final = sub( q_final, 3 ); // guard bits q_final = s_min( q_final, Q25 ); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) { Scale_sig32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) ); Scale_sig32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) ); } } } FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) { Loading @@ -514,6 +526,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state = Q_out[ch]; move16(); } assert( Q_out[0] == Q_out[1] ); #ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written; Loading