Commit 053b6f5d authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Addressed comments shared in 3gpp issue 668

[x] Addressed comments in #668
[x] ivas_tools.c and tools.c instrumentation will be addressed in
another MR.
parent 5fb2c3b1
Loading
Loading
Loading
Loading
Loading
+8 −11
Original line number Original line Diff line number Diff line
@@ -654,23 +654,18 @@ void hp20_fix32(


    Qprev_y1 = extract_l( mem_fx[4] );
    Qprev_y1 = extract_l( mem_fx[4] );
    Qprev_y2 = extract_l( mem_fx[5] );
    Qprev_y2 = extract_l( mem_fx[5] );
    y1_fx64 = (Word64) mem_fx[0];
    y1_fx64 = W_deposit32_l( mem_fx[0] );
    y2_fx64 = (Word64) mem_fx[1];
    y2_fx64 = W_deposit32_l( mem_fx[1] );
    x0_fx64 = (Word64) mem_fx[2];
    x0_fx64 = W_deposit32_l( mem_fx[2] );
    x1_fx64 = (Word64) mem_fx[3];
    x1_fx64 = W_deposit32_l( mem_fx[3] );
    move64();
    move64();
    move64();
    move64();


    FOR( i = 0; i < lg; i++ )
    FOR( i = 0; i < lg; i++ )
    {
    {
        x2_fx64 = x1_fx64;
        x2_fx64 = x1_fx64;
        x1_fx64 = x0_fx64;
        x0_fx64 = (Word64) signal_fx[i];
        move64();
        move64();
        move64();
        x1_fx64 = x0_fx64;
        move64();
        move64();
        x0_fx64 = W_deposit32_l( signal_fx[i] );


        Qy1 = W_norm( y1_fx64 );
        Qy1 = W_norm( y1_fx64 );
        if ( y1_fx64 == 0 )
        if ( y1_fx64 == 0 )
@@ -732,9 +727,11 @@ void hp20_fix32(
        y0_fx64 = W_shr( y0_fx64, 29 );
        y0_fx64 = W_shr( y0_fx64, 29 );


        signal_fx[i] = W_extract_l( W_shr( y0_fx64, Qmin ) );
        signal_fx[i] = W_extract_l( W_shr( y0_fx64, Qmin ) );
        move32();
        IF( signal_fx[i] < 0 )
        IF( signal_fx[i] < 0 )
        {
        {
            signal_fx[i] = L_add( signal_fx[i], 1 );
            signal_fx[i] = L_add( signal_fx[i], 1 );
            move32();
        }
        }


        y2_fx64 = y1_fx64;
        y2_fx64 = y1_fx64;
+4 −4
Original line number Original line Diff line number Diff line
@@ -303,9 +303,9 @@ void ivas_imdct_fx(


    FOR( i = 0; i < len_by_2; i++ )
    FOR( i = 0; i < len_by_2; i++ )
    {
    {
        re[i] = L_add( Mpy_32_16_1( pIn[sub( sub( length, imult1616( 2, i ) ), 1 )], pTwid_re[i] ), Mpy_32_16_1( pIn[2 * i], pTwid_im[i] ) ); /*stl_arr_index*/
        re[i] = L_add( Mpy_32_16_1( pIn[sub( sub( length, shl( i, 1 ) ), 1 )], pTwid_re[i] ), Mpy_32_16_1( pIn[2 * i], pTwid_im[i] ) ); /*stl_arr_index*/
        move32();
        move32();
        im[i] = L_sub( Mpy_32_16_1( pIn[2 * i], pTwid_re[i] ), Mpy_32_16_1( pIn[sub( sub( length, imult1616( 2, i ) ), 1 )], pTwid_im[i] ) ); /*stl_arr_index*/
        im[i] = L_sub( Mpy_32_16_1( pIn[2 * i], pTwid_re[i] ), Mpy_32_16_1( pIn[sub( sub( length, shl( i, 1 ) ), 1 )], pTwid_im[i] ) ); /*stl_arr_index*/
        move32();
        move32();
    }
    }


@@ -328,9 +328,9 @@ void ivas_imdct_fx(


    FOR( i = ( len_by_2 - 1 ); i >= 0; i-- )
    FOR( i = ( len_by_2 - 1 ); i >= 0; i-- )
    {
    {
        re[add( imult1616( 2, i ), 1 )] = im[sub( sub( len_by_2, 1 ), i )];
        re[add( shl( i, 1 ), 1 )] = im[sub( sub( len_by_2, 1 ), i )];
        move32();
        move32();
        re[imult1616( 2, i )] = L_negate( re[i] );
        re[2 * i] = L_negate( re[i] );
        move32();
        move32();
    }
    }


+6 −2
Original line number Original line Diff line number Diff line
@@ -1081,7 +1081,7 @@ void interpolate_3_over_1_allpass_32(
    Word32 *mem          /* i/o: memory                  */
    Word32 *mem          /* i/o: memory                  */
)
)
{
{
    Word16 i;
    Word16 i, tmp16;
    Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
    Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */
    Word32 *out1;
    Word32 *out1;
    Word32 mem_temp;
    Word32 mem_temp;
@@ -1104,6 +1104,7 @@ void interpolate_3_over_1_allpass_32(
        mem[2] = Vu[1];
        mem[2] = Vu[1];
        move32();
        move32();
        *out1++ = mem[3];
        *out1++ = mem[3];
        move32();


        /* Middle branch */
        /* Middle branch */
        Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) );
        Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) );
@@ -1118,6 +1119,7 @@ void interpolate_3_over_1_allpass_32(
        mem[5] = Vm[1];
        mem[5] = Vm[1];
        move32();
        move32();
        *out1++ = mem[6];
        *out1++ = mem[6];
        move32();


        /* Lower branch */
        /* Lower branch */
        Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) );
        Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) );
@@ -1134,10 +1136,12 @@ void interpolate_3_over_1_allpass_32(
        mem[8] = Vl[1];
        mem[8] = Vl[1];
        move32();
        move32();
        *out1++ = mem[9];
        *out1++ = mem[9];
        move32();
    }
    }


    /*LPF*/
    /*LPF*/
    FOR( i = 0; i < len * 3; i++ )
    tmp16 = imult1616( len, 3 );
    FOR( i = 0; i < tmp16; i++ )
    {
    {
        mem_temp = out[i];
        mem_temp = out[i];
        move32();
        move32();
+6 −6
Original line number Original line Diff line number Diff line
@@ -6208,7 +6208,7 @@ static void ivas_param_mc_dequantize_cov_fx(
        tmp_e = Cp_buf_e[add( k, imult1616( nY_int, k ) )];
        tmp_e = Cp_buf_e[add( k, imult1616( nY_int, k ) )];
        move16();
        move16();


        IF( NE_32( Cproto_fx[add( k, imult1616( nY_int, k ) )], 0 ) )
        IF( Cproto_fx[add( k, imult1616( nY_int, k ) )] != 0 )
        {
        {
            L_tmp = ISqrt32( Cproto_fx[add( k, imult1616( nY_int, k ) )], &tmp_e );
            L_tmp = ISqrt32( Cproto_fx[add( k, imult1616( nY_int, k ) )], &tmp_e );
        }
        }
@@ -6269,13 +6269,13 @@ static void ivas_param_mc_dequantize_cov_fx(
        Cy_state_int_e[hParamMC->hMetadataPMC->icc_mapping[param_frame_idx][k][1] + nY_int * hParamMC->hMetadataPMC->icc_mapping[param_frame_idx][k][0]] = tmp;
        Cy_state_int_e[hParamMC->hMetadataPMC->icc_mapping[param_frame_idx][k][1] + nY_int * hParamMC->hMetadataPMC->icc_mapping[param_frame_idx][k][0]] = tmp;
        move16();
        move16();
#else
#else
        Cy_state_int_fx[hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0] + nY_int * hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1]] = L_shr( L_deposit_h( icc_q_fx[k] ), tmp );
        Cy_state_int_fx[add( hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0], imult1616( nY_int, hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1] ) )] = L_shr( L_deposit_h( icc_q_fx[k] ), tmp );
        move32();
        move32();
        Cy_state_int_e[hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0] + nY_int * hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1]] = tmp;
        Cy_state_int_e[add( hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0], imult1616( nY_int, hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1] ) )] = tmp;
        move16();
        move16();
        Cy_state_int_fx[hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1] + nY_int * hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0]] = L_shr( L_deposit_h( icc_q_fx[k] ), tmp );
        Cy_state_int_fx[add( hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1], imult1616( nY_int, hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0] ) )] = L_shr( L_deposit_h( icc_q_fx[k] ), tmp );
        move32();
        move32();
        Cy_state_int_e[hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1] + nY_int * hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0]] = tmp;
        Cy_state_int_e[add( hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][1], imult1616( nY_int, hParamMC->hMetadataPMC->icc_mapping_conf->icc_mapping[k][0] ) )] = tmp;
        move16();
        move16();
#endif
#endif
    }
    }
@@ -6339,7 +6339,7 @@ static void ivas_param_mc_dequantize_cov_fx(
        }
        }
    }
    }


    IF( synth_conf == PARAM_MC_SYNTH_LS_CONV_COV )
    IF( EQ_32( synth_conf, PARAM_MC_SYNTH_LS_CONV_COV ) )
    {
    {
        /* Cy = dmx*Cy*dmx' */
        /* Cy = dmx*Cy*dmx' */
        Word32 mat_mult_buffer1_fx[MAX_CICP_CHANNELS * MAX_CICP_CHANNELS];
        Word32 mat_mult_buffer1_fx[MAX_CICP_CHANNELS * MAX_CICP_CHANNELS];
+8 −5
Original line number Original line Diff line number Diff line
@@ -200,6 +200,7 @@ void ivas_sba2mc_cldfb_fixed(
 *
 *
 * MC signals transformed into SBA in TD domain
 * MC signals transformed into SBA in TD domain
 *-------------------------------------------------------------------------*/
 *-------------------------------------------------------------------------*/

#ifdef IVAS_FLOAT_FIXED
#ifdef IVAS_FLOAT_FIXED
void ivas_mc2sba_fx(
void ivas_mc2sba_fx(
    IVAS_OUTPUT_SETUP hIntSetup, /* i  : Format of decoder output                         */
    IVAS_OUTPUT_SETUP hIntSetup, /* i  : Format of decoder output                         */
@@ -233,6 +234,7 @@ void ivas_mc2sba_fx(
    move16();
    move16();
    FOR( i = 0; i < add( hIntSetup.nchan_out_woLFE, hIntSetup.num_lfe ); i++ )
    FOR( i = 0; i < add( hIntSetup.nchan_out_woLFE, hIntSetup.num_lfe ); i++ )
    {
    {
        test();
        IF( ( hIntSetup.num_lfe > 0 ) && EQ_16( i, hIntSetup.index_lfe[idx_lfe] ) )
        IF( ( hIntSetup.num_lfe > 0 ) && EQ_16( i, hIntSetup.index_lfe[idx_lfe] ) )
        {
        {
            IF( gain_lfe_fx > 0 )
            IF( gain_lfe_fx > 0 )
@@ -245,16 +247,16 @@ void ivas_mc2sba_fx(
                }
                }
            }
            }


            IF( LT_16( idx_lfe, sub( hIntSetup.num_lfe, 1 ) ) )
            if ( LT_16( idx_lfe, sub( hIntSetup.num_lfe, 1 ) ) )
            {
            {
                idx_lfe = add( idx_lfe, 1 );
                idx_lfe = add( idx_lfe, 1 );
            }
            }
        }
        }
        ELSE
        ELSE
        {
        {
            azimuth = (Word16) L_shr( hIntSetup.ls_azimuth_fx[idx_in], 22 );
            azimuth = extract_l( L_shr( hIntSetup.ls_azimuth_fx[idx_in], Q22 ) );
            move16();
            move16();
            elevation = (Word16) L_shr( hIntSetup.ls_elevation_fx[idx_in], 22 );
            elevation = extract_l( L_shr( hIntSetup.ls_elevation_fx[idx_in], Q22 ) );
            move16();
            move16();
            idx_in = add( idx_in, 1 );
            idx_in = add( idx_in, 1 );
            ivas_dirac_dec_get_response_fx(
            ivas_dirac_dec_get_response_fx(
@@ -284,7 +286,6 @@ void ivas_mc2sba_fx(
    return;
    return;
}
}
#else
#else

void ivas_mc2sba(
void ivas_mc2sba(
    IVAS_OUTPUT_SETUP hIntSetup, /* i  : Format of decoder output                         */
    IVAS_OUTPUT_SETUP hIntSetup, /* i  : Format of decoder output                         */
    float *in_buffer_td[],       /* i  : MC signals (on input) and the HOA3 (on output)   */
    float *in_buffer_td[],       /* i  : MC signals (on input) and the HOA3 (on output)   */
@@ -362,6 +363,7 @@ void ivas_mc2sba(
}
}
#endif
#endif



/*-------------------------------------------------------------------------*
/*-------------------------------------------------------------------------*
 * ivas_param_mc_mc2sba_cldfb()
 * ivas_param_mc_mc2sba_cldfb()
 *
 *
@@ -402,6 +404,7 @@ void ivas_param_mc_mc2sba_cldfb_fx(


    FOR( idx_ch = 0; idx_ch < add( hTransSetup.nchan_out_woLFE, hTransSetup.num_lfe ); idx_ch++ )
    FOR( idx_ch = 0; idx_ch < add( hTransSetup.nchan_out_woLFE, hTransSetup.num_lfe ); idx_ch++ )
    {
    {
        test();
        IF( ( hTransSetup.num_lfe > 0 ) && EQ_16( idx_ch, hTransSetup.index_lfe[idx_lfe] ) )
        IF( ( hTransSetup.num_lfe > 0 ) && EQ_16( idx_ch, hTransSetup.index_lfe[idx_lfe] ) )
        {
        {
            IF( gain_lfe_fx > 0 )
            IF( gain_lfe_fx > 0 )
@@ -413,7 +416,7 @@ void ivas_param_mc_mc2sba_cldfb_fx(
                move32();
                move32();
            }
            }


            IF( LT_16( idx_lfe, sub( hTransSetup.num_lfe, 1 ) ) )
            if ( LT_16( idx_lfe, sub( hTransSetup.num_lfe, 1 ) ) )
            {
            {
                idx_lfe = add( idx_lfe, 1 );
                idx_lfe = add( idx_lfe, 1 );
            }
            }
Loading