Loading lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -101,12 +101,15 @@ #define FIX_BASOP_2332_ASAN_OVERFLOW_IN_EXT_DIRAC_REND /* Nokia: basop issue 2332: Uses predefined memory sizes instead computing wrong */ #define FIX_BASOP_2333_MCMASA_ANA_MEMORY_LEAK /* Nokia: basop issue 2333: Add missing free for direction_vector_e to ivas_mcmasa_ana_fx.c */ #define HARM_COREDECODER_FUNCTIONS /* VA: basop issue 2347: Remove various duplicated code in core-decoder */ #define FIX_BASOP_2358_SCALING_OOB /* Eri: Basip issue 2358: Clang-18 reports OOB access where scaling is applied to L_FRAME48k instead of output_frame */ #define FIX_BASOP_2351_EXTREND_SCALE /* FhG: basop issue 2351: Only scale initialized samples in renderer, related to 2326 */ #define FIX_2331_CLANG18_MSAN_UNINIT_VARIABLE /* FhG: Fix issue 2331: Uninitialized variable */ #define FIX_2362_TOTAL_BRATE_CALCULATION /* FhG: basop issue 2362: fix calculation of st->total_brate in ivas_cpe_enc_fx() */ #define FIX_2330_CLANG_18_WARNINGS_REND /* FhG: Fix renderer warnings */ #define FIX_BASOP_2350_HARM_0B_BWE /* VA: basop issue 2350: harmonization of the 0b BWE */ #define FIX_BASOP_2350_HARM_0B_BWE_2 /* VA: basop issue 2350: Simplify calling of hf_synth_fx() */ #define FIX_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ #define FIX_2370_UNUSED_BUFFERS_CORE_ENC /* VA: basop issue 2370: remove temporary input buffers in core-encoder */ #define FIX_2376_FIX_USAN_PRE_PROC /* VA: basop issue 2376: Resolve "USAN: SEGV in ivas_compute_core_buffers_fx() */ /* #################### End BE switches ################################## */ Loading @@ -120,6 +123,7 @@ #define FIX_1500_ISM_MD_DTX /* VA: float issue 1500: fix ISM elevation metadata smoothing in DTX */ #define FIX_2348_REPLACE_FEC_ENC /* VA: basop issue 2348: replace FEC_encode_ivas_fx with FEC_encode_fx */ #define FIX_2338_HARM_GSC_GAIN_COMP /* VA: basop issue 2338: harmonization of band gain computation for both EVS and IVAS */ #define FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG /* Eri: Basop issue 2317: Uninitialized value read in case of DTX and BW switching */ /* ##################### End NON-BE switches ########################### */ Loading lib_dec/acelp_core_dec_fx.c +19 −2 Original line number Diff line number Diff line Loading @@ -74,7 +74,9 @@ ivas_error acelp_core_dec_fx( const Word16 read_sid_info /* i : read SID info flag */ ) { #ifndef FIX_BASOP_2350_HARM_0B_BWE_2 Word32 synth_fx[960], save_hb_synth_fx[960] /*, bwe_exc_extended_fx[L_FRAME32k + NL_BUFF_OFFSET]*/; #endif Word16 old_exc_fx[L_EXC_DEC], *exc_fx; /* excitation signal buffer */ Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */ Word16 output_frame; /* frame length at output sampling freq. */ Loading Loading @@ -1896,6 +1898,9 @@ ivas_error acelp_core_dec_fx( st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx ); } #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Word32 synth_fx[L_FRAME48k]; #endif Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx; set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR ); syn_32_fx = syn_tmp_32_fx + L_SUBFR; Loading Loading @@ -2049,7 +2054,11 @@ ivas_error acelp_core_dec_fx( } } cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*tmp buffer for save_hb_synth_fx[] */, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Copy_Scale_sig_32_16( synth_fx, save_hb_synth_fx16, output_frame, 0 ); // Q0 #endif /* restore lowband */ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) Loading Loading @@ -2197,6 +2206,9 @@ ivas_error acelp_core_dec_fx( Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/ } #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 #endif st->Q_syn2 = 0; move16(); } Loading @@ -2217,6 +2229,9 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) ) { #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 hf_synth_fx( st->hBWE_zero, st->element_mode, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); #else IF( EQ_16( st->element_mode, EVS_MONO ) ) { #ifndef FIX_BASOP_2350_HARM_0B_BWE Loading @@ -2235,6 +2250,7 @@ ivas_error acelp_core_dec_fx( #endif Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); } #endif } ELSE { Loading Loading @@ -2352,6 +2368,7 @@ ivas_error acelp_core_dec_fx( } } #ifndef FIX_BASOP_2350_HARM_0B_BWE_2 IF( NE_16( st->element_mode, EVS_MONO ) ) { IF( save_hb_synth_fx16 != NULL ) Loading @@ -2360,7 +2377,7 @@ ivas_error acelp_core_dec_fx( } Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 } #endif pop_wmops(); return error; } lib_enc/ivas_core_enc_fx.c +30 −1 Original line number Diff line number Diff line Loading @@ -628,8 +628,9 @@ ivas_error ivas_core_enc_fx( * Postprocessing, BWEs and Updates *---------------------------------------------------------------------*/ #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2]; #endif FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; Loading @@ -644,6 +645,7 @@ ivas_error ivas_core_enc_fx( move16(); } #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame ); Copy( st->input_fx, tmp_input_fx, input_frame ); q_inp[0] = st->q_old_inp; Loading @@ -654,6 +656,7 @@ ivas_error ivas_core_enc_fx( move16(); st->q_old_inp = -1; move16(); #endif /*---------------------------------------------------------------------* * Postprocessing for ACELP/HQ core switching Loading Loading @@ -694,6 +697,21 @@ ivas_error ivas_core_enc_fx( * SWB(FB) BWE encoding *---------------------------------------------------------------------*/ #ifdef FIX_2370_UNUSED_BUFFERS_CORE_ENC Word16 q_inp_orig; q_inp_orig = st->q_inp; move16(); test(); IF( GE_32( input_Fs, 32000 ) && st->hBWE_TD != NULL ) { st->q_inp = -1; st->q_old_inp = -1; move16(); move16(); Scale_sig( st->input_fx - input_frame, shl( input_frame, 1 ), sub( st->q_inp, q_inp_orig ) ); } #endif new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; new_swb_speech_fx_16 = new_swb_speech_buffer_fx_16 + STEREO_DFT_OVL_MAX; set16_fx( new_swb_speech_buffer_fx_16, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); Loading Loading @@ -788,6 +806,15 @@ ivas_error ivas_core_enc_fx( Scale_sig( old_syn_12k8_16k_fx[n], L_FRAME16k, sub( Q1, Q_new[n] ) ); // Q0 #ifdef FIX_2370_UNUSED_BUFFERS_CORE_ENC IF( GE_32( input_Fs, 32000 ) && st->hBWE_TD != NULL ) { Scale_sig( st->input_fx, input_frame, sub( q_inp_orig, st->q_inp ) ); st->q_inp = q_inp_orig; move16(); } #endif /*---------------------------------------------------------------------* * SWB DTX/CNG encoding *---------------------------------------------------------------------*/ Loading Loading @@ -842,6 +869,7 @@ ivas_error ivas_core_enc_fx( } } #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame ); Copy( tmp_input_fx, st->input_fx, input_frame ); st->q_old_inp = q_inp[0]; Loading @@ -849,6 +877,7 @@ ivas_error ivas_core_enc_fx( st->q_inp = q_inp[1]; move16(); #endif /*---------------------------------------------------------------------* * Common updates *---------------------------------------------------------------------*/ Loading lib_enc/ivas_stereo_dft_enc_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -3953,10 +3953,16 @@ static void stereo_dft_enc_compute_prm_fx( * Compute Side gains *-----------------------------------------------------------------*/ #ifdef FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG Copy32( pSideGain, hStereoDft->sidSideGain_fx, STEREO_DFT_BAND_MAX ); /* Copy all sideGain values since BW change may be reverted during CNG */ #endif FOR( b = 0; b < hStereoDft->nbands; b++ ) { #ifndef FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG hStereoDft->sidSideGain_fx[b] = *( pSideGain + b ); move32(); #endif /* Quantization */ IF( flag_quant ) Loading lib_rend/ivas_objectRenderer_fx.c +16 −0 Original line number Diff line number Diff line Loading @@ -434,9 +434,17 @@ ivas_error ivas_td_binaural_renderer_unwrap_fx( { Word16 i; #ifdef FIX_BASOP_2358_SCALING_OOB FOR( i = 0; i < num_src; ++i ) #else FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) #endif { #ifdef FIX_BASOP_2358_SCALING_OOB scale_sig32( output_fx[i], output_frame, -4 ); // Q11 - 4 = Q7 #else scale_sig32( output_fx[i], L_FRAME48k, -4 ); // Q11 - 4 = Q7 #endif } IF( NE_32( ( error = ivas_reverb_process_fx( hReverb, transport_config, 0, output_fx, p_reverb_signal_fx, subframe_idx ) ), IVAS_ERR_OK ) ) // Q p_reverb_signal_fx = Q output_fx - 2 = 5 Loading @@ -444,9 +452,17 @@ ivas_error ivas_td_binaural_renderer_unwrap_fx( return error; } #ifdef FIX_BASOP_2358_SCALING_OOB FOR( i = 0; i < num_src; ++i ) #else FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) #endif { #ifdef FIX_BASOP_2358_SCALING_OOB scale_sig32( output_fx[i], output_frame, 4 ); // Q7 + 4 = Q11 #else scale_sig32( output_fx[i], L_FRAME48k, 4 ); // Q7 + 4 = Q11 #endif } FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) Loading Loading
lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -101,12 +101,15 @@ #define FIX_BASOP_2332_ASAN_OVERFLOW_IN_EXT_DIRAC_REND /* Nokia: basop issue 2332: Uses predefined memory sizes instead computing wrong */ #define FIX_BASOP_2333_MCMASA_ANA_MEMORY_LEAK /* Nokia: basop issue 2333: Add missing free for direction_vector_e to ivas_mcmasa_ana_fx.c */ #define HARM_COREDECODER_FUNCTIONS /* VA: basop issue 2347: Remove various duplicated code in core-decoder */ #define FIX_BASOP_2358_SCALING_OOB /* Eri: Basip issue 2358: Clang-18 reports OOB access where scaling is applied to L_FRAME48k instead of output_frame */ #define FIX_BASOP_2351_EXTREND_SCALE /* FhG: basop issue 2351: Only scale initialized samples in renderer, related to 2326 */ #define FIX_2331_CLANG18_MSAN_UNINIT_VARIABLE /* FhG: Fix issue 2331: Uninitialized variable */ #define FIX_2362_TOTAL_BRATE_CALCULATION /* FhG: basop issue 2362: fix calculation of st->total_brate in ivas_cpe_enc_fx() */ #define FIX_2330_CLANG_18_WARNINGS_REND /* FhG: Fix renderer warnings */ #define FIX_BASOP_2350_HARM_0B_BWE /* VA: basop issue 2350: harmonization of the 0b BWE */ #define FIX_BASOP_2350_HARM_0B_BWE_2 /* VA: basop issue 2350: Simplify calling of hf_synth_fx() */ #define FIX_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ #define FIX_2370_UNUSED_BUFFERS_CORE_ENC /* VA: basop issue 2370: remove temporary input buffers in core-encoder */ #define FIX_2376_FIX_USAN_PRE_PROC /* VA: basop issue 2376: Resolve "USAN: SEGV in ivas_compute_core_buffers_fx() */ /* #################### End BE switches ################################## */ Loading @@ -120,6 +123,7 @@ #define FIX_1500_ISM_MD_DTX /* VA: float issue 1500: fix ISM elevation metadata smoothing in DTX */ #define FIX_2348_REPLACE_FEC_ENC /* VA: basop issue 2348: replace FEC_encode_ivas_fx with FEC_encode_fx */ #define FIX_2338_HARM_GSC_GAIN_COMP /* VA: basop issue 2338: harmonization of band gain computation for both EVS and IVAS */ #define FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG /* Eri: Basop issue 2317: Uninitialized value read in case of DTX and BW switching */ /* ##################### End NON-BE switches ########################### */ Loading
lib_dec/acelp_core_dec_fx.c +19 −2 Original line number Diff line number Diff line Loading @@ -74,7 +74,9 @@ ivas_error acelp_core_dec_fx( const Word16 read_sid_info /* i : read SID info flag */ ) { #ifndef FIX_BASOP_2350_HARM_0B_BWE_2 Word32 synth_fx[960], save_hb_synth_fx[960] /*, bwe_exc_extended_fx[L_FRAME32k + NL_BUFF_OFFSET]*/; #endif Word16 old_exc_fx[L_EXC_DEC], *exc_fx; /* excitation signal buffer */ Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */ Word16 output_frame; /* frame length at output sampling freq. */ Loading Loading @@ -1896,6 +1898,9 @@ ivas_error acelp_core_dec_fx( st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx ); } #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Word32 synth_fx[L_FRAME48k]; #endif Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx; set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR ); syn_32_fx = syn_tmp_32_fx + L_SUBFR; Loading Loading @@ -2049,7 +2054,11 @@ ivas_error acelp_core_dec_fx( } } cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*tmp buffer for save_hb_synth_fx[] */, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Copy_Scale_sig_32_16( synth_fx, save_hb_synth_fx16, output_frame, 0 ); // Q0 #endif /* restore lowband */ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) Loading Loading @@ -2197,6 +2206,9 @@ ivas_error acelp_core_dec_fx( Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/ } #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 #endif st->Q_syn2 = 0; move16(); } Loading @@ -2217,6 +2229,9 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) ) { #ifdef FIX_BASOP_2350_HARM_0B_BWE_2 hf_synth_fx( st->hBWE_zero, st->element_mode, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); #else IF( EQ_16( st->element_mode, EVS_MONO ) ) { #ifndef FIX_BASOP_2350_HARM_0B_BWE Loading @@ -2235,6 +2250,7 @@ ivas_error acelp_core_dec_fx( #endif Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); } #endif } ELSE { Loading Loading @@ -2352,6 +2368,7 @@ ivas_error acelp_core_dec_fx( } } #ifndef FIX_BASOP_2350_HARM_0B_BWE_2 IF( NE_16( st->element_mode, EVS_MONO ) ) { IF( save_hb_synth_fx16 != NULL ) Loading @@ -2360,7 +2377,7 @@ ivas_error acelp_core_dec_fx( } Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 } #endif pop_wmops(); return error; }
lib_enc/ivas_core_enc_fx.c +30 −1 Original line number Diff line number Diff line Loading @@ -628,8 +628,9 @@ ivas_error ivas_core_enc_fx( * Postprocessing, BWEs and Updates *---------------------------------------------------------------------*/ #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2]; #endif FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; Loading @@ -644,6 +645,7 @@ ivas_error ivas_core_enc_fx( move16(); } #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame ); Copy( st->input_fx, tmp_input_fx, input_frame ); q_inp[0] = st->q_old_inp; Loading @@ -654,6 +656,7 @@ ivas_error ivas_core_enc_fx( move16(); st->q_old_inp = -1; move16(); #endif /*---------------------------------------------------------------------* * Postprocessing for ACELP/HQ core switching Loading Loading @@ -694,6 +697,21 @@ ivas_error ivas_core_enc_fx( * SWB(FB) BWE encoding *---------------------------------------------------------------------*/ #ifdef FIX_2370_UNUSED_BUFFERS_CORE_ENC Word16 q_inp_orig; q_inp_orig = st->q_inp; move16(); test(); IF( GE_32( input_Fs, 32000 ) && st->hBWE_TD != NULL ) { st->q_inp = -1; st->q_old_inp = -1; move16(); move16(); Scale_sig( st->input_fx - input_frame, shl( input_frame, 1 ), sub( st->q_inp, q_inp_orig ) ); } #endif new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; new_swb_speech_fx_16 = new_swb_speech_buffer_fx_16 + STEREO_DFT_OVL_MAX; set16_fx( new_swb_speech_buffer_fx_16, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); Loading Loading @@ -788,6 +806,15 @@ ivas_error ivas_core_enc_fx( Scale_sig( old_syn_12k8_16k_fx[n], L_FRAME16k, sub( Q1, Q_new[n] ) ); // Q0 #ifdef FIX_2370_UNUSED_BUFFERS_CORE_ENC IF( GE_32( input_Fs, 32000 ) && st->hBWE_TD != NULL ) { Scale_sig( st->input_fx, input_frame, sub( q_inp_orig, st->q_inp ) ); st->q_inp = q_inp_orig; move16(); } #endif /*---------------------------------------------------------------------* * SWB DTX/CNG encoding *---------------------------------------------------------------------*/ Loading Loading @@ -842,6 +869,7 @@ ivas_error ivas_core_enc_fx( } } #ifndef FIX_2370_UNUSED_BUFFERS_CORE_ENC Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame ); Copy( tmp_input_fx, st->input_fx, input_frame ); st->q_old_inp = q_inp[0]; Loading @@ -849,6 +877,7 @@ ivas_error ivas_core_enc_fx( st->q_inp = q_inp[1]; move16(); #endif /*---------------------------------------------------------------------* * Common updates *---------------------------------------------------------------------*/ Loading
lib_enc/ivas_stereo_dft_enc_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -3953,10 +3953,16 @@ static void stereo_dft_enc_compute_prm_fx( * Compute Side gains *-----------------------------------------------------------------*/ #ifdef FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG Copy32( pSideGain, hStereoDft->sidSideGain_fx, STEREO_DFT_BAND_MAX ); /* Copy all sideGain values since BW change may be reverted during CNG */ #endif FOR( b = 0; b < hStereoDft->nbands; b++ ) { #ifndef FIX_BASOP_2317_UNINIT_VALUE_IN_STEREO_CNG hStereoDft->sidSideGain_fx[b] = *( pSideGain + b ); move32(); #endif /* Quantization */ IF( flag_quant ) Loading
lib_rend/ivas_objectRenderer_fx.c +16 −0 Original line number Diff line number Diff line Loading @@ -434,9 +434,17 @@ ivas_error ivas_td_binaural_renderer_unwrap_fx( { Word16 i; #ifdef FIX_BASOP_2358_SCALING_OOB FOR( i = 0; i < num_src; ++i ) #else FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) #endif { #ifdef FIX_BASOP_2358_SCALING_OOB scale_sig32( output_fx[i], output_frame, -4 ); // Q11 - 4 = Q7 #else scale_sig32( output_fx[i], L_FRAME48k, -4 ); // Q11 - 4 = Q7 #endif } IF( NE_32( ( error = ivas_reverb_process_fx( hReverb, transport_config, 0, output_fx, p_reverb_signal_fx, subframe_idx ) ), IVAS_ERR_OK ) ) // Q p_reverb_signal_fx = Q output_fx - 2 = 5 Loading @@ -444,9 +452,17 @@ ivas_error ivas_td_binaural_renderer_unwrap_fx( return error; } #ifdef FIX_BASOP_2358_SCALING_OOB FOR( i = 0; i < num_src; ++i ) #else FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) #endif { #ifdef FIX_BASOP_2358_SCALING_OOB scale_sig32( output_fx[i], output_frame, 4 ); // Q7 + 4 = Q11 #else scale_sig32( output_fx[i], L_FRAME48k, 4 ); // Q7 + 4 = Q11 #endif } FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) Loading