Unverified Commit 911e9627 authored by norvell's avatar norvell
Browse files

Change AlphaL/R to Word16

parent 1c5efba7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@
#define FIX_2015_PREMPH_SAT_ALT_PART2                   /* VA: Add missing scaling factor to be passed to AVQ_cod() */
#define FIX_2253_CORRECT_GSC_MINIMUM_PIT_SEARCH         /* VA: Fix Issue 2253 where the encoder and decoder could get out of sync */
#define NONBE_FIX_1967_SBA_DECODER_MONO_OUT_BIG_DIFFERENCES /* Dolby: Fix basop issue 1967 */

#define FIX_2235_TD_RENDERER_WORD16                     /* Eri: Use Word16 in TD renderer without converting to Word32 */

/* ##################### End NON-BE switches ########################### */

+5 −0
Original line number Diff line number Diff line
@@ -357,8 +357,13 @@ static void GenerateFilter_fx(

            FOR( i = 0; i < p; i++ )
            {
#ifdef FIX_2235_TD_RENDERER_WORD16
                temp1 = W_add( temp1, Mpy_32_16_1( modelEval->BM_fx[modelEval->BMEnergiesL[modelEval->UseIndsL[i]].i], model->AlphaL_fx[BM_idx[modelEval->BMEnergiesL[modelEval->UseIndsL[i]].i] + ( model->AlphaN * k )] ) ); // add(model->AlphaL_e, 1)
                temp2 = W_add( temp2, Mpy_32_16_1( modelEval->BM_fx[modelEval->BMEnergiesR[modelEval->UseIndsR[i]].i], model->AlphaR_fx[BM_idx[modelEval->BMEnergiesR[modelEval->UseIndsR[i]].i] + ( model->AlphaN * k )] ) ); // add(model->AlphaR_e, 1)
#else
                temp1 = W_add( temp1, Mpy_32_32( modelEval->BM_fx[modelEval->BMEnergiesL[modelEval->UseIndsL[i]].i], model->AlphaL_fx[BM_idx[modelEval->BMEnergiesL[modelEval->UseIndsL[i]].i] + ( model->AlphaN * k )] ) ); // add(model->AlphaL_e, 1)
                temp2 = W_add( temp2, Mpy_32_32( modelEval->BM_fx[modelEval->BMEnergiesR[modelEval->UseIndsR[i]].i], model->AlphaR_fx[BM_idx[modelEval->BMEnergiesR[modelEval->UseIndsR[i]].i] + ( model->AlphaN * k )] ) ); // add(model->AlphaR_e, 1)
#endif
            }

            tmp_hrfModL_e = W_norm( temp1 );
+27 −0
Original line number Diff line number Diff line
@@ -504,6 +504,14 @@ static ivas_error DefaultBSplineModel_fx(
    SWITCH( output_Fs )
    {
        case 48000:
#ifdef FIX_2235_TD_RENDERER_WORD16
            model->AlphaL_fx = (const Word16 *) defaultHRIR_rom_AlphaL48_fx; // Q14
            model->AlphaL_e = Q15 - defaultHRIR_rom_Alpha48_Q_fx;
            move16();
            model->AlphaR_fx = (const Word16 *) defaultHRIR_rom_AlphaR48_fx; // Q14
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha48_Q_fx;
            move16();
#else
            model->AlphaL_dyn_fx = (Word32 *) malloc( 60160 * sizeof( Word32 ) );
            if ( model->AlphaL_dyn_fx == NULL )
            {
@@ -524,6 +532,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->AlphaR_fx = model->AlphaR_dyn_fx;
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha48_Q_fx;
            move16();
#endif
            model->EL_fx = (const Word32 *) defaultHRIR_rom_EL48_fx; // Q28
            model->EL_e = Q31 - defaultHRIR_rom_E48_Q_fx;
            move16();
@@ -539,6 +548,14 @@ static ivas_error DefaultBSplineModel_fx(
            }
            BREAK;
        case 32000:
#ifdef FIX_2235_TD_RENDERER_WORD16
            model->AlphaL_fx = (const Word16 *) defaultHRIR_rom_AlphaL32_fx; // Q14
            model->AlphaL_e = Q15 - defaultHRIR_rom_Alpha32_Q_fx;
            move16();
            model->AlphaR_fx = (const Word16 *) defaultHRIR_rom_AlphaR32_fx; // Q14
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha32_Q_fx;
            move16();
#else
            model->AlphaL_dyn_fx = (Word32 *) malloc( 40420 * sizeof( Word32 ) );
            if ( model->AlphaL_dyn_fx == NULL )
            {
@@ -559,6 +576,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->AlphaR_fx = model->AlphaR_dyn_fx;
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha32_Q_fx;
            move16();
#endif
            model->EL_fx = (const Word32 *) defaultHRIR_rom_EL32_fx; // Q28
            model->EL_e = Q31 - defaultHRIR_rom_E32_Q_fx;
            move16();
@@ -574,6 +592,14 @@ static ivas_error DefaultBSplineModel_fx(
            }
            BREAK;
        case 16000:
#ifdef FIX_2235_TD_RENDERER_WORD16
            model->AlphaL_fx = (const Word16 *) defaultHRIR_rom_AlphaL16_fx; // Q14
            model->AlphaL_e = Q15 - defaultHRIR_rom_Alpha16_Q_fx;
            move16();
            model->AlphaR_fx = (const Word16 *) defaultHRIR_rom_AlphaR16_fx; // Q14
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha16_Q_fx;
            move16();
#else
            model->AlphaL_dyn_fx = (Word32 *) malloc( 20210 * sizeof( Word32 ) );
            if ( model->AlphaL_dyn_fx == NULL )
            {
@@ -592,6 +618,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->AlphaR_fx = model->AlphaR_dyn_fx;
            model->AlphaR_e = Q15 - defaultHRIR_rom_Alpha16_Q_fx;
            move16();
#endif
            model->EL_fx = (const Word32 *) defaultHRIR_rom_EL16_fx; // Q28
            model->EL_e = Q31 - defaultHRIR_rom_E16_Q_fx;
            move16();
+13 −0
Original line number Diff line number Diff line
@@ -1056,9 +1056,17 @@ typedef struct
    const Word32 *elevBsShape_fx;
    const Word32 **azimBsShape_fx;
    Word32 **azimKSeq_fx;    /* Array, length azimDim3+1            */
#ifdef FIX_2235_TD_RENDERER_WORD16
    const Word16 *AlphaL_fx; /* Array, size AlphaN x K */
#else
    const Word32 *AlphaL_fx; /* Array, size AlphaN x K */
#endif
    Word16 AlphaL_e;
#ifdef FIX_2235_TD_RENDERER_WORD16
    const Word16 *AlphaR_fx; /* Array, size AlphaN x K */
#else
    const Word32 *AlphaR_fx; /* Array, size AlphaN x K */
#endif
    Word16 AlphaR_e;
    const Word32 *EL_fx; /* Array, size (AlphaN*HRTF_MODEL_N_SECTIONS) */
    Word16 EL_e;
@@ -1069,8 +1077,13 @@ typedef struct
    Word16 iSecFirst[HRTF_MODEL_N_SECTIONS]; /* Indices for start of sections */
    Word16 iSecLast[HRTF_MODEL_N_SECTIONS];  /* Indices for end of sections */
    /* Pointers for allocation of dynamic memory  */
#ifdef FIX_2235_TD_RENDERER_WORD16
    Word16 *AlphaL_dyn_fx;
    Word16 *AlphaR_dyn_fx;
#else
    Word32 *AlphaL_dyn_fx;
    Word32 *AlphaR_dyn_fx;
#endif
    Word32 *EL_dyn_fx;
    Word32 *ER_dyn_fx;
    Word32 *elevBsShape_dyn_fx;
+26 −0
Original line number Diff line number Diff line
@@ -529,6 +529,13 @@ static ivas_error TDREND_LoadBSplineBinary(
    }
    fread( &model->AlphaN, sizeof( Word16 ), 1, f_hrtf );

#ifdef FIX_2235_TD_RENDERER_WORD16
    model->AlphaL_dyn_fx = (Word16 *) malloc( model->AlphaN * model->K * sizeof( Word16 ) );
    if ( model->AlphaL_dyn_fx == NULL )
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
    }
#else
    model->AlphaL_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) );

    v_tmp16 = (Word16 *) malloc( model->AlphaN * model->K * sizeof( Word16 ) );
@@ -536,17 +543,30 @@ static ivas_error TDREND_LoadBSplineBinary(
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
    }
#endif
    fread( &factor_Q, 1, sizeof( Word16 ), f_hrtf );

    model->AlphaL_e = Q15 - factor_Q;
    //    model->AlphaL_dyn_e = 1; /* force to 6 to be corrected  */
    model->AlphaR_e = model->AlphaL_e;

#ifdef FIX_2235_TD_RENDERER_WORD16
    fread( model->AlphaL_dyn_fx, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf );
#else
    fread( v_tmp16, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf );
    for ( j = 0; j < model->AlphaN * model->K; j++ )
    {
        model->AlphaL_dyn_fx[j] = L_shl_r( L_deposit_l( v_tmp16[j] ), Q30 - factor_Q );
    }
#endif
#ifdef FIX_2235_TD_RENDERER_WORD16
    model->AlphaR_dyn_fx = (Word16 *) malloc( model->AlphaN * model->K * sizeof( Word16 ) );
    if ( model->AlphaR_dyn_fx == NULL )
    {
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
    }
    fread( model->AlphaR_dyn_fx, sizeof( Word16 ), model->AlphaN * model->K, f_hrtf );
#else
    model->AlphaR_dyn_fx = (Word32 *) malloc( model->AlphaN * model->K * sizeof( Word32 ) );
    if ( model->AlphaR_dyn_fx == NULL )
    {
@@ -560,6 +580,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    }

    free( v_tmp16 );
#endif

    /* azimuth */
    fread( &model->num_unique_azim_splines, sizeof( Word16 ), 1, f_hrtf );
@@ -660,8 +681,13 @@ static ivas_error TDREND_LoadBSplineBinary(
    fread( (Word32 *) model->ER_dyn_fx, sizeof( Word32 ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf );

    /* Set const pointers */
#ifdef FIX_2235_TD_RENDERER_WORD16
    model->AlphaL_fx = (const Word16 *) model->AlphaL_dyn_fx;
    model->AlphaR_fx = (const Word16 *) model->AlphaR_dyn_fx;
#else
    model->AlphaL_fx = (const Word32 *) model->AlphaL_dyn_fx;
    model->AlphaR_fx = (const Word32 *) model->AlphaR_dyn_fx;
#endif
    model->EL_fx = (const Word32 *) model->EL_dyn_fx;
    model->ER_fx = (const Word32 *) model->ER_dyn_fx;
    model->elevBsLen = (const Word16 *) model->elevBsLen_dyn;