Commit c46f9f46 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

LTV test with all MRs included

parent 856c5694
Loading
Loading
Loading
Loading
Loading
+19 −20
Original line number Diff line number Diff line
@@ -783,7 +783,6 @@ void computeDirectionVectors_fx(
 *
 *
 *------------------------------------------------------------------------*/

void computeDiffuseness_fixed(
    Word32 *buffer_intensity[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF], // i: Q(q_factor_intensity)
    const Word32 *buffer_energy,                                     // i: Q(q_factor_energy)
@@ -796,10 +795,10 @@ void computeDiffuseness_fixed(
{
    Word32 intensity_slow[DIRAC_NUM_DIMS * CLDFB_NO_CHANNELS_MAX];
    Word32 intensity_slow_abs[CLDFB_NO_CHANNELS_MAX];
    Word64 tmp_intensity_slow_abs[CLDFB_NO_CHANNELS_MAX];
    Word16 intensity_slow_abs_exp[CLDFB_NO_CHANNELS_MAX];
    Word64 intensity_slow_abs_64[CLDFB_NO_CHANNELS_MAX];
    Word16 intensity_slow_abs_q[CLDFB_NO_CHANNELS_MAX];
    Word32 energy_slow[CLDFB_NO_CHANNELS_MAX];
    Word16 i, j, k, tmp16;
    Word16 i, j, k;
    Word32 tmp = 0;
    move32();
    Word32 *p_tmp;
@@ -809,10 +808,8 @@ void computeDiffuseness_fixed(

    /* Compute Intensity slow and energy slow buffer_intensity and buffer_energy */

    set_zero_fx( intensity_slow, DIRAC_NUM_DIMS * CLDFB_NO_CHANNELS_MAX );
    set_zero_fx( intensity_slow, i_mult( DIRAC_NUM_DIMS, CLDFB_NO_CHANNELS_MAX ) );
    set_zero_fx( intensity_slow_abs, CLDFB_NO_CHANNELS_MAX );
    set16_fx( intensity_slow_abs_exp, 0, CLDFB_NO_CHANNELS_MAX );
    set64_fx( tmp_intensity_slow_abs, 0, CLDFB_NO_CHANNELS_MAX );
    set_zero_fx( energy_slow, CLDFB_NO_CHANNELS_MAX );

    /* Calculate max possible shift for the buffer buffer_energy and buffer_intensity */
@@ -896,27 +893,31 @@ void computeDiffuseness_fixed(
        q_intensity = s_min( q_intensity, q_tmp );
    }

    scale_sig32( intensity_slow, i_mult( DIRAC_NUM_DIMS, num_freq_bands ), -2 );
    q_intensity = sub( q_intensity, 2 );
    min_q_shift1 = getScaleFactor32( intensity_slow, i_mult( DIRAC_NUM_DIMS, num_freq_bands ) );
    min_q_shift1 = sub( min_q_shift1, idiv1616( add( find_guarded_bits_fx( DIRAC_NUM_DIMS ), 1 ), 2 ) );
    scale_sig32( intensity_slow, i_mult( DIRAC_NUM_DIMS, num_freq_bands ), min_q_shift1 );
    q_intensity = add( q_intensity, min_q_shift1 );
    FOR( k = 0; k < num_freq_bands; k++ )
    {
        intensity_slow_abs_64[k] = 0;
        move64();
    }
     
    /* intensity_slow.^2 + intensity_slow_abs*/
    FOR( j = 0; j < DIRAC_NUM_DIMS; ++j )
    {
        p_tmp = intensity_slow + j * num_freq_bands;

        FOR( k = 0; k < num_freq_bands; k++ )
        {
            tmp_intensity_slow_abs[k] = W_mac_32_32( tmp_intensity_slow_abs[k], p_tmp[k], p_tmp[k] );
            move64();
            intensity_slow_abs_64[k] = W_add( intensity_slow_abs_64[k], W_mult_32_32( p_tmp[k], p_tmp[k] ) ); // 2*q_intensity+1
        }
    }

    FOR( k = 0; k < num_freq_bands; k++ )
    {
        tmp16 = W_norm( tmp_intensity_slow_abs[k] );
        intensity_slow_abs[k] = W_extract_h( W_shl( tmp_intensity_slow_abs[k], tmp16 ) );
        Word16 shift = W_norm( intensity_slow_abs_64[k] );
        intensity_slow_abs[k] = W_extract_h( W_shl( intensity_slow_abs_64[k], shift ) );
        move32();
        intensity_slow_abs_exp[k] = sub( 31, sub( add( add( shl( q_intensity, 1 ), 1 ), tmp16 ), 32 ) );
        intensity_slow_abs_q[k] = sub( add( add( q_intensity, q_intensity ), shift ), 31 );
        move16();
    }

@@ -926,8 +927,7 @@ void computeDiffuseness_fixed(
    move16();
    FOR( i = 0; i < num_freq_bands; ++i )
    {
        exp1 = intensity_slow_abs_exp[i];
        move16();
        exp1 = sub( 31, intensity_slow_abs_q[i] );
        tmp = Sqrt32( p_tmp[i], &exp1 );

        tmp = BASOP_Util_Divide3232_Scale_newton( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 );
@@ -966,7 +966,6 @@ void computeDiffuseness_fixed(
    return;
}


Word32 deindex_azimuth_fx(                             /* o  : output Q22                              */
                           Word16 id_phi,              /* i  : index                                   */
                           const Word16 no_bits,       /* i  : number of bits for the spherical grid   */
+1 −1
Original line number Diff line number Diff line
@@ -2879,7 +2879,7 @@ void IMDCT_ivas_fx(
            {
                Word16 q_old_out = q_win;
                move16();
                edct_fx( x_fx, xn_buf_fx_32 + add( shr( overlap, 1 ), nz ), L_frame, &q_xn_buf_fx_32 );
                edct_ivas_fx( x_fx, xn_buf_fx_32 + add( shr( overlap, 1 ), nz ), L_frame, &q_xn_buf_fx_32 );
                Word16 res_m, res_e;
                res_e = 0;
                move16();
+19 −11
Original line number Diff line number Diff line
@@ -1392,25 +1392,33 @@ void tcx_scalar_quantization_ivas_fx(
        s = sub( add( x_e, gain_e ), 15 );
    }

    /* substract 0x8000 to affect the mac_r in the following loop
    so it acts like extract_h. the 0x4000 will be multiplied by 2
    by the mac_r to get to 0x8000 and disable the round. */
    offset = sub( offset, 0x4000 );

    FOR( ; i >= 0; i-- )
    {
        offs32 = Mpy_32_16_1( L_abs( x[i] ), gain ); /* multiply */
        offs32 = Mpy_32_16_1( x[i], gain ); /* multiply */
        offs32 = L_shl_sat( offs32, s );    /* convert to 15Q16 */
        tmp16 = mac_r_sat( offs32, offset, 1 );      /* add offset and truncate */
        IF( x[i] < 0 )
        IF( x[i] > 0 )
        {
            tmp16 = negate( tmp16 ); /* restore sign */
            offs32 = L_add_sat( offs32, L_shl( offset, 1 ) );
            tmp16 = extract_h( offs32 );
            IF( GT_32( L_deposit_h( tmp16 ), offs32 ) )
            {
                tmp16 = sub( tmp16, 1 );
            }
        }
        ELSE
        {
            offs32 = L_add_sat( offs32, L_shl( negate( offset ), 1 ) );
            tmp16 = extract_h( offs32 );
            IF( LT_32( L_deposit_h( tmp16 ), offs32 ) )
            {
                tmp16 = add( tmp16, 1 );
            }
        }

        xq[i] = tmp16;
        move16();
    }


    IF( alfe_flag == 0 )
    {
        AdaptLowFreqEmph_fx( x, x_e, xq, gain, gain_e,
+15 −2
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ ivas_error ivas_dirac_ana_open_fx(
            {
                return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) );
            }
            set16_fx( hDirAC->direction_vector_e[i][j], 31, MASA_FREQUENCY_BANDS );
        }
    }

@@ -257,6 +258,7 @@ void ivas_dirac_ana_fx(
    /* Estimate MASA parameters from the SBA signals */
    ivas_dirac_param_est_ana_fx( hDirAC, data_fx, elevation_m_values, azimuth_m_values, energyRatio, spreadCoherence, surroundingCoherence, input_frame );
    /* Create MASA metadata buffer from the estimated values */

    ivas_create_masa_out_meta_fx( hDirAC->hMasaOut, hDirAC->sph_grid16, nchan_transport, elevation_m_values, azimuth_m_values, energyRatio, spreadCoherence, surroundingCoherence, Q31, Q31, Q31 );

    /* Downmix */
@@ -334,13 +336,22 @@ static void ivas_dirac_param_est_ana_fx(
            move32();
            hDirAC->direction_vector_m_fx[2][block_m_idx][band_m_idx] = 0;
            move32();

            hDirAC->direction_vector_e[0][block_m_idx][band_m_idx] = 0;
            move16();
            hDirAC->direction_vector_e[1][block_m_idx][band_m_idx] = 0;
            move16();
            hDirAC->direction_vector_e[2][block_m_idx][band_m_idx] = 0;
            move16();
        }

        /* Need to initialize renormalization_factors, and variables to be normalized */
        set32_fx( renormalization_factor_diff_fx, 0, hDirAC->nbands );
        set16_fx( renormalization_factor_diff_e, 31, hDirAC->nbands );
        set32_fx( diffuseness_m_fx, 0, hDirAC->nbands );
        set16_fx( diffuseness_e, 0, hDirAC->nbands );
        set32_fx( hDirAC->energy_fx[block_m_idx], 0, MASA_FREQUENCY_BANDS );
        set32_fx( hDirAC->energy_fx[block_m_idx], 0, MASA_FREQUENCY_BANDS );
        set16_fx( hDirAC->energy_e[block_m_idx], 0, MASA_FREQUENCY_BANDS );

        FOR( ts = mrange[0]; ts < mrange[1]; ts++ )
        {
@@ -351,7 +362,9 @@ static void ivas_dirac_param_est_ana_fx(
            move16();
            FOR( i = 0; i < numAnalysisChannels; i++ )
            {
                cldfbAnalysis_ts_fx_fixed_q( &( data_fx[i][( l_ts * ts )] ), Foa_RealBuffer_fx[i], Foa_ImagBuffer_fx[i], l_ts, hDirAC->cldfbAnaEnc[i], &inp_q );
                inp_q = Q7;
                move16();
                cldfbAnalysis_ts_fx_var_q( &( data_fx[i][l_ts * ts] ), Foa_RealBuffer_fx[i], Foa_ImagBuffer_fx[i], l_ts, hDirAC->cldfbAnaEnc[i], &inp_q );
                cr_q = s_min( cr_q, getScaleFactor32( Foa_RealBuffer_fx[i], CLDFB_NO_CHANNELS_MAX ) );
                ci_q = s_min( ci_q, getScaleFactor32( Foa_ImagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX ) );
            }
+53 −54
Original line number Diff line number Diff line
@@ -2740,14 +2740,12 @@ static void adaptTransportSignalsHeadtracked_fx(
    Word16 slot, ch, bin, louderCh;
    Word32 mono_factor_ILD, mono_factor;
    Word32 y_val, mono_factor_rotation, ene_proc, ene_target, ILD;
    Word16 ene_proc_e, ene_target_e;
    Word16 max_band;
    Word32 eqVal;
    Word16 band_idx, bin_lo, bin_hi, norm, shift = 31;
    Word16 q_chEneIIR = 0, q_procChEneIIR = 0;
    Word32 temp_div;
    Word16 e_div, tmp, is_zero, i;
    move16();
    move16();
    Word16 e_div, is_zero, i;
    move16();

#ifdef OPT_BIN_RENDERER_V1
@@ -2793,16 +2791,17 @@ static void adaptTransportSignalsHeadtracked_fx(
    shift = sub( shift, 5 );
    // 5 is gaurded bits needed//
    Word32 re, img, temp;
    Word16 q_temp = sub( imult1616( 2, add( q_inp, shift ) ), 31 );
    Word16 s, q_band_nrg, q_temp[2];
    FOR( band_idx = 0; band_idx < max_band; band_idx++ )
    {
        Word32 ch_nrg[2];   /* storage for input signal channel energies */
        Word64 W_ch_nrg[2]; /* storage for input signal channel energies */
        bin_lo = MASA_band_grouping_24[band_idx];
        bin_hi = s_min( MASA_band_grouping_24[band_idx + 1], (Word16) nBins );

        FOR( ch = 0; ch < 2; ch++ )
        {
            ch_nrg[ch] = 0;
            W_ch_nrg[ch] = 0;
            move32();
            FOR( slot = 0; slot < nSlots; slot++ )
            {
@@ -2811,24 +2810,31 @@ static void adaptTransportSignalsHeadtracked_fx(
                    re = L_shl( inRe_fx[ch][slot][bin], shift );
                    img = L_shl( inIm_fx[ch][slot][bin], shift );

                    ch_nrg[ch] = L_add( ch_nrg[ch], ( L_add( Mpy_32_32( re, re ), Mpy_32_32( img, img ) ) ) ); // 2(q_inp +shift) -31
                    move32();
                    W_ch_nrg[ch] = W_add( W_ch_nrg[ch], ( W_add( W_mult0_32_32( re, re ), W_mult0_32_32( img, img ) ) ) ); // 2(q_inp +shift)
                    move64();
                }
            }
            s = W_norm( W_ch_nrg[ch] );
            ch_nrg[ch] = W_extract_h( W_shl( W_ch_nrg[ch], s ) ); // Q: 2*(q_inp+shift) + s - 32
            q_temp[ch] = sub( add( shl( add( q_inp, shift ), 1 ), s ), 32 );
            move32();
            move16();

            hHeadTrackData->chEneIIR_fx[ch][band_idx] = Mpy_32_16_1( hHeadTrackData->chEneIIR_fx[ch][band_idx], ADAPT_HTPROTO_IIR_FAC_FX ); // q_chEneIIR
            move32();
            temp = Mpy_32_16_1( ch_nrg[ch], sub( 32767, ADAPT_HTPROTO_IIR_FAC_FX ) );
            IF( LT_16( hHeadTrackData->q_chEneIIR, q_temp ) )
            temp = Mpy_32_16_1( ch_nrg[ch], sub( 32767, ADAPT_HTPROTO_IIR_FAC_FX ) ); // q_temp[ch]
            IF( LT_16( hHeadTrackData->q_chEneIIR[ch][band_idx], q_temp[ch] ) )
            {
                hHeadTrackData->chEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_temp, hHeadTrackData->q_chEneIIR ) ), hHeadTrackData->chEneIIR_fx[ch][band_idx] );
                hHeadTrackData->chEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_temp[ch], hHeadTrackData->q_chEneIIR[ch][band_idx] ) ), hHeadTrackData->chEneIIR_fx[ch][band_idx] ); // hHeadTrackData->q_chEneIIR[ch][band_idx]
            }
            ELSE
            {
                hHeadTrackData->chEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->chEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_chEneIIR, q_temp ) ), temp );
                hHeadTrackData->chEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->chEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_chEneIIR[ch][band_idx], q_temp[ch] ) ), temp ); // q_temp[ch]
            }
            move32();
            hHeadTrackData->q_chEneIIR[ch][band_idx] = s_min( hHeadTrackData->q_chEneIIR[ch][band_idx], q_temp[ch] );
            move16();
        }
        q_chEneIIR = s_min( hHeadTrackData->q_chEneIIR, q_temp );
        /* Determine ILD */

        IF( EQ_32( L_max( 1, hHeadTrackData->chEneIIR_fx[0][band_idx] ), L_max( 1, hHeadTrackData->chEneIIR_fx[1][band_idx] ) ) )
@@ -2839,7 +2845,7 @@ static void adaptTransportSignalsHeadtracked_fx(
        ELSE
        {
            temp_div = L_deposit_h( BASOP_Util_Divide3232_Scale( L_max( 1, hHeadTrackData->chEneIIR_fx[0][band_idx] ), L_max( 1, hHeadTrackData->chEneIIR_fx[1][band_idx] ), &e_div ) );

            e_div = add( e_div, sub( hHeadTrackData->q_chEneIIR[1][band_idx], hHeadTrackData->q_chEneIIR[0][band_idx] ) );
            temp = BASOP_Util_Log2( temp_div ); // Q25
            IF( e_div > 0 )
            {
@@ -2853,7 +2859,7 @@ static void adaptTransportSignalsHeadtracked_fx(
            temp = Mpy_32_32( temp, 646462464 );       // logx base 10 = 0.30103* logx base 2//
            ILD = L_abs( Mpy_32_16_1( temp, 20480 ) ); // Q21
        }
        IF( GT_32( hHeadTrackData->chEneIIR_fx[1][band_idx], hHeadTrackData->chEneIIR_fx[0][band_idx] ) )
        IF( BASOP_Util_Cmp_Mant32Exp( hHeadTrackData->chEneIIR_fx[1][band_idx], sub( 31, hHeadTrackData->q_chEneIIR[1][band_idx] ), hHeadTrackData->chEneIIR_fx[0][band_idx], sub( 31, hHeadTrackData->q_chEneIIR[0][band_idx] ) ) > 0 )
        {
            louderCh = 1;
        }
@@ -2886,8 +2892,9 @@ static void adaptTransportSignalsHeadtracked_fx(
        {
            IF( NE_16( ch, louderCh ) )
            {
                Word32 band_nrg = 0;
                move32();
                Word32 band_nrg;
                Word64 W_band_nrg = 0;
                move64();

                FOR( slot = 0; slot < nSlots; slot++ )
                {
@@ -2900,22 +2907,29 @@ static void adaptTransportSignalsHeadtracked_fx(
                        move32();
                        re = L_shl( inRe_fx[ch][slot][bin], shift );  // q_inp +shift
                        img = L_shl( inIm_fx[ch][slot][bin], shift ); // q_inp +shift
                        band_nrg = L_add( band_nrg, ( L_add( Mpy_32_32( re, re ), Mpy_32_32( img, img ) ) ) ); // 2(q_inp +shift) -31

                        W_band_nrg = W_add( W_band_nrg, ( W_add( W_mult0_32_32( re, re ), W_mult0_32_32( img, img ) ) ) ); // 2(q_inp + shift)
                    }
                }
                hHeadTrackData->procChEneIIR_fx[ch][band_idx] = Mpy_32_16_1( hHeadTrackData->procChEneIIR_fx[ch][band_idx], ADAPT_HTPROTO_IIR_FAC_FX ); // q_procChEneIIR
                s = W_norm( W_band_nrg );
                band_nrg = W_extract_h( W_shl( W_band_nrg, s ) ); // Q: 2*(q_inp+shift) + s - 32
                q_band_nrg = sub( add( shl( add( q_inp, shift ), 1 ), s ), 32 );

                hHeadTrackData->procChEneIIR_fx[ch][band_idx] = Mpy_32_16_1( hHeadTrackData->procChEneIIR_fx[ch][band_idx], ADAPT_HTPROTO_IIR_FAC_FX ); // hHeadTrackData->q_procChEneIIR[ch][band_idx]
                move32();

                temp = Mpy_32_16_1( band_nrg, sub( 32767, ADAPT_HTPROTO_IIR_FAC_FX ) );
                IF( LT_16( hHeadTrackData->q_procChEneIIR, q_temp ) )
                temp = Mpy_32_16_1( band_nrg, sub( 32767, ADAPT_HTPROTO_IIR_FAC_FX ) ); // q_band_nrg
                IF( LT_16( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_band_nrg ) )
                {
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_temp, hHeadTrackData->q_procChEneIIR ) ), hHeadTrackData->procChEneIIR_fx[ch][band_idx] );
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_band_nrg, hHeadTrackData->q_procChEneIIR[ch][band_idx] ) ), hHeadTrackData->procChEneIIR_fx[ch][band_idx] ); // hHeadTrackData->q_procChEneIIR[ch][band_idx]
                }
                ELSE
                {
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->procChEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_procChEneIIR, q_temp ) ), temp );
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->procChEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_band_nrg ) ), temp ); // q_band_nrg
                }
                move32();
                hHeadTrackData->q_procChEneIIR[ch][band_idx] = s_min( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_band_nrg );
                move16();
            }
            ELSE
            {
@@ -2924,27 +2938,27 @@ static void adaptTransportSignalsHeadtracked_fx(
                move32();

                temp = Mpy_32_16_1( ch_nrg[ch], sub( 32767, ADAPT_HTPROTO_IIR_FAC_FX ) );
                IF( LT_16( hHeadTrackData->q_procChEneIIR, q_temp ) )
                IF( LT_16( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_temp[ch] ) )
                {
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_temp, hHeadTrackData->q_procChEneIIR ) ), hHeadTrackData->procChEneIIR_fx[ch][band_idx] );
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( temp, sub( q_temp[ch], hHeadTrackData->q_procChEneIIR[ch][band_idx] ) ), hHeadTrackData->procChEneIIR_fx[ch][band_idx] ); // hHeadTrackData->q_procChEneIIR[ch][band_idx]
                }
                ELSE
                {
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->procChEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_procChEneIIR, q_temp ) ), temp );
                    hHeadTrackData->procChEneIIR_fx[ch][band_idx] = L_add( L_shr( hHeadTrackData->procChEneIIR_fx[ch][band_idx], sub( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_temp[ch] ) ), temp ); // q_temp[ch]
                }
                move32();
                hHeadTrackData->q_procChEneIIR[ch][band_idx] = s_min( hHeadTrackData->q_procChEneIIR[ch][band_idx], q_temp[ch] );
                move16();
            }
        }

        q_procChEneIIR = s_min( hHeadTrackData->q_procChEneIIR, q_temp );

        /* Equalize */
        ene_target = L_add( hHeadTrackData->chEneIIR_fx[0][band_idx], hHeadTrackData->chEneIIR_fx[1][band_idx] ); // q_chEneIIR//
        ene_target = BASOP_Util_Add_Mant32Exp( hHeadTrackData->chEneIIR_fx[0][band_idx], sub( 31, hHeadTrackData->q_chEneIIR[0][band_idx] ), hHeadTrackData->chEneIIR_fx[1][band_idx], sub( 31, hHeadTrackData->q_chEneIIR[1][band_idx] ), &ene_target_e );

        ene_proc = L_add( hHeadTrackData->procChEneIIR_fx[0][band_idx], hHeadTrackData->procChEneIIR_fx[1][band_idx] ); // q_procChEneIIR//
        ene_proc = BASOP_Util_Add_Mant32Exp( hHeadTrackData->procChEneIIR_fx[0][band_idx], sub( 31, hHeadTrackData->q_procChEneIIR[0][band_idx] ), hHeadTrackData->procChEneIIR_fx[1][band_idx], sub( 31, hHeadTrackData->q_procChEneIIR[1][band_idx] ), &ene_proc_e );

        temp_div = L_deposit_h( BASOP_Util_Divide3232_Scale( ene_target, L_max( 1, ene_proc ), &e_div ) );
        e_div = add( e_div, sub( q_procChEneIIR, q_chEneIIR ) );
        e_div = add( e_div, sub( ene_target_e, ene_proc_e ) );

        eqVal = Sqrt32( temp_div, &e_div );

@@ -2994,16 +3008,8 @@ static void adaptTransportSignalsHeadtracked_fx(
    }
    IF( is_zero )
    {
        hHeadTrackData->q_chEneIIR = 31;
        move16();
    }
    ELSE
    {
        tmp = sub( s_min( getScaleFactor32( hHeadTrackData->chEneIIR_fx[0], MASA_FREQUENCY_BANDS ), getScaleFactor32( hHeadTrackData->chEneIIR_fx[1], MASA_FREQUENCY_BANDS ) ), 1 );
        scale_sig32( hHeadTrackData->chEneIIR_fx[0], MASA_FREQUENCY_BANDS, tmp );
        scale_sig32( hHeadTrackData->chEneIIR_fx[1], MASA_FREQUENCY_BANDS, tmp );
        hHeadTrackData->q_chEneIIR = add( q_chEneIIR, tmp );
        move16();
        set16_fx( hHeadTrackData->q_chEneIIR[0], 31, MASA_FREQUENCY_BANDS );
        set16_fx( hHeadTrackData->q_chEneIIR[1], 31, MASA_FREQUENCY_BANDS );
    }

    is_zero = 1;
@@ -3020,17 +3026,10 @@ static void adaptTransportSignalsHeadtracked_fx(
    }
    IF( is_zero )
    {
        hHeadTrackData->q_procChEneIIR = 31;
        move16();
    }
    ELSE
    {
        tmp = sub( s_min( getScaleFactor32( hHeadTrackData->procChEneIIR_fx[0], MASA_FREQUENCY_BANDS ), getScaleFactor32( hHeadTrackData->procChEneIIR_fx[1], MASA_FREQUENCY_BANDS ) ), 1 );
        scale_sig32( hHeadTrackData->procChEneIIR_fx[0], MASA_FREQUENCY_BANDS, tmp );
        scale_sig32( hHeadTrackData->procChEneIIR_fx[1], MASA_FREQUENCY_BANDS, tmp );
        hHeadTrackData->q_procChEneIIR = add( q_procChEneIIR, tmp );
        move16();
        set16_fx( hHeadTrackData->q_procChEneIIR[0], 31, MASA_FREQUENCY_BANDS );
        set16_fx( hHeadTrackData->q_procChEneIIR[1], 31, MASA_FREQUENCY_BANDS );
    }

    return;
}

Loading