Loading lib_dec/er_dec_tcx_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -1949,13 +1949,13 @@ void con_tcx_ivas_fx( { Word16 lsp_local[M], lsp_fade[M], alpha_inv; alpha_inv = 16384 - alpha_delayed; alpha_inv = sub(16384, alpha_delayed); E_LPC_a_lsp_conversion(A_local, lsp_local, lsp_local, M); FOR (i = 0; i < M; i++) { lsp_fade[i] = alpha_delayed * lsp_local[i] + alpha_inv * st->lspold_cng[i]; lsp_fade[i] = add(mult_r(alpha_delayed, lsp_local[i]), mult_r(alpha_inv, st->lspold_cng[i])); } E_LPC_f_lsp_a_conversion(lsp_fade, A_local, M); Loading lib_dec/fd_cng_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -2022,6 +2022,14 @@ void generate_masking_noise_ivas_fx( Word32 scale_fx = 0x40000000; // 1.0 in Q30 move32(); Word16 shift = getScaleFactor32(hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); hFdCngCom->cngNoiseLevelExp = sub(hFdCngCom->cngNoiseLevelExp, shift); /* skip noise generating if level is very low, to avoid problems with possibly running into denormals */ *exp_out = Q15; move16(); Loading lib_dec/fd_cng_dec_fx.c +5 −5 Original line number Diff line number Diff line Loading @@ -1207,7 +1207,6 @@ Word16 ApplyFdCng_ivas_fx( Flag Overflow = 0; Flag Carry = 0; #endif Word64 W_tmp; Word16 L_frame, last_L_frame; //Word32 *sidNoiseEst; Loading Loading @@ -1556,13 +1555,14 @@ Word16 ApplyFdCng_ivas_fx( } /* update isf cng estimate for concealment. Do that during concealment, in order to avoid addition clean channel complexity*/ W_tmp = 0; L_tmp = 0; move32(); FOR( j = hFdCngCom->startBand; j < hFdCngCom->stopFFTbin; j++ ) { W_tmp = W_add( W_tmp, L_shr( cngNoiseLevel[j], sub( 31, *cngNoiseLevel_exp ) ) ); L_tmp = L_add_sat( L_tmp, L_shl_sat(cngNoiseLevel[j], 31 - *cngNoiseLevel_exp) ); } L_tmp = W_extract_h( W_shl( W_tmp, 32 ) ); L_tmp_exp = 31; L_tmp_exp = 0; move16(); #ifdef BASOP_NOGLOB IF(L_shl_o(L_tmp, L_tmp_exp, &Overflow) > 21474836 /*0.01f Q31*/) #else Loading lib_dec/ivas_jbm_dec.c +57 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,13 @@ ivas_error ivas_jbm_dec_tc_fx( { IF( st_ivas->hSCE[ch] != NULL ) { Word16 shift = getScaleFactor32(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); Q_cngNoiseLevel[ch] = sub(31, st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp); } } Loading Loading @@ -2271,6 +2278,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( { nchan_transport = 1; /* Only one channel transported */ } IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); Loading Loading @@ -2413,6 +2430,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2529,6 +2556,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2644,6 +2681,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2876,6 +2923,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading lib_rend/ivas_dirac_dec_binaural_functions.c +10 −0 Original line number Diff line number Diff line Loading @@ -1166,6 +1166,16 @@ static void ivas_dirac_dec_binaural_internal( IF( abs_s( (Word16) st_ivas->cldfbAnaDec[1]->scale_flt ) != 0 ) st_ivas->cldfbAnaDec[1]->q_scale = norm_s( (Word16) st_ivas->cldfbAnaDec[1]->scale_flt ); st_ivas->cldfbAnaDec[1]->scale = (Word16) ( st_ivas->cldfbAnaDec[1]->scale_flt * ( 1 << st_ivas->cldfbAnaDec[1]->q_scale ) ); IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } Word16 q_cldfb[6][CLDFB_SLOTS_PER_SUBFRAME] = { 0 }; FOR( Word16 ind = 0; ind < 6; ind++ ) { Loading Loading
lib_dec/er_dec_tcx_fx.c +2 −2 Original line number Diff line number Diff line Loading @@ -1949,13 +1949,13 @@ void con_tcx_ivas_fx( { Word16 lsp_local[M], lsp_fade[M], alpha_inv; alpha_inv = 16384 - alpha_delayed; alpha_inv = sub(16384, alpha_delayed); E_LPC_a_lsp_conversion(A_local, lsp_local, lsp_local, M); FOR (i = 0; i < M; i++) { lsp_fade[i] = alpha_delayed * lsp_local[i] + alpha_inv * st->lspold_cng[i]; lsp_fade[i] = add(mult_r(alpha_delayed, lsp_local[i]), mult_r(alpha_inv, st->lspold_cng[i])); } E_LPC_f_lsp_a_conversion(lsp_fade, A_local, M); Loading
lib_dec/fd_cng_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -2022,6 +2022,14 @@ void generate_masking_noise_ivas_fx( Word32 scale_fx = 0x40000000; // 1.0 in Q30 move32(); Word16 shift = getScaleFactor32(hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); hFdCngCom->cngNoiseLevelExp = sub(hFdCngCom->cngNoiseLevelExp, shift); /* skip noise generating if level is very low, to avoid problems with possibly running into denormals */ *exp_out = Q15; move16(); Loading
lib_dec/fd_cng_dec_fx.c +5 −5 Original line number Diff line number Diff line Loading @@ -1207,7 +1207,6 @@ Word16 ApplyFdCng_ivas_fx( Flag Overflow = 0; Flag Carry = 0; #endif Word64 W_tmp; Word16 L_frame, last_L_frame; //Word32 *sidNoiseEst; Loading Loading @@ -1556,13 +1555,14 @@ Word16 ApplyFdCng_ivas_fx( } /* update isf cng estimate for concealment. Do that during concealment, in order to avoid addition clean channel complexity*/ W_tmp = 0; L_tmp = 0; move32(); FOR( j = hFdCngCom->startBand; j < hFdCngCom->stopFFTbin; j++ ) { W_tmp = W_add( W_tmp, L_shr( cngNoiseLevel[j], sub( 31, *cngNoiseLevel_exp ) ) ); L_tmp = L_add_sat( L_tmp, L_shl_sat(cngNoiseLevel[j], 31 - *cngNoiseLevel_exp) ); } L_tmp = W_extract_h( W_shl( W_tmp, 32 ) ); L_tmp_exp = 31; L_tmp_exp = 0; move16(); #ifdef BASOP_NOGLOB IF(L_shl_o(L_tmp, L_tmp_exp, &Overflow) > 21474836 /*0.01f Q31*/) #else Loading
lib_dec/ivas_jbm_dec.c +57 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,13 @@ ivas_error ivas_jbm_dec_tc_fx( { IF( st_ivas->hSCE[ch] != NULL ) { Word16 shift = getScaleFactor32(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); Q_cngNoiseLevel[ch] = sub(31, st_ivas->hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp); } } Loading Loading @@ -2271,6 +2278,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( { nchan_transport = 1; /* Only one channel transported */ } IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } #endif ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); Loading Loading @@ -2413,6 +2430,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2529,6 +2556,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2644,6 +2681,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading Loading @@ -2876,6 +2923,16 @@ void ivas_jbm_dec_feed_tc_to_renderer( nchan_transport = 1; /* Only one channel transported */ } #endif IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } ivas_sba_dec_digest_tc_fx( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); #if 1 if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) Loading
lib_rend/ivas_dirac_dec_binaural_functions.c +10 −0 Original line number Diff line number Diff line Loading @@ -1166,6 +1166,16 @@ static void ivas_dirac_dec_binaural_internal( IF( abs_s( (Word16) st_ivas->cldfbAnaDec[1]->scale_flt ) != 0 ) st_ivas->cldfbAnaDec[1]->q_scale = norm_s( (Word16) st_ivas->cldfbAnaDec[1]->scale_flt ); st_ivas->cldfbAnaDec[1]->scale = (Word16) ( st_ivas->cldfbAnaDec[1]->scale_flt * ( 1 << st_ivas->cldfbAnaDec[1]->q_scale ) ); IF(st_ivas->hSCE[0]) { Word16 shift = getScaleFactor32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN); IF(LT_16(sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift), 4)) { shift = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, 4); } scale_sig32(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevel, FFTCLDFBLEN, shift); st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp = sub(st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->cngNoiseLevelExp, shift); } Word16 q_cldfb[6][CLDFB_SLOTS_PER_SUBFRAME] = { 0 }; FOR( Word16 ind = 0; ind < 6; ind++ ) { Loading