Commit 7dec78b6 authored by emerit's avatar emerit
Browse files

fix Q factor initialosation for Crend

parent ba6f5a68
Loading
Loading
Loading
Loading
+130 −3
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ ivas_error ivas_hrtf_init(
    move16();
    move16();
    move16();
#ifdef FIX_POINT_CREND_HRTF_FILE_FORMAT
#ifdef FIX_CREND_SIMPLIFY_CODE
    hHrtf->factor_Q_latency_s_fx = 0;
    move16();
    hHrtf->factor_Q_inv_diffuse_weight = 0;
@@ -348,17 +348,32 @@ static ivas_error ivas_rend_initCrend_fx(
                    hHrtf->latency_s_fx = CRendBin_Combined_BRIR_latency_s_fx;                                     // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_48kHz;                   // Q0
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; // Q0
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_BRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_BRIR_coeff_Q_48kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                ELSE
                {
                    hHrtf->latency_s_fx = CRendBin_Combined_HRIR_latency_s_fx;                                     // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_HRIR_max_num_iterations_48kHz;                   // Q0
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz; // Q0
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_HRIR_inv_diffuse_weight_Q_48kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_HRIR_coeff_Q_48kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                move32();
                move16();
                move16();

                FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
                {
                    IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) )
@@ -390,12 +405,28 @@ static ivas_error ivas_rend_initCrend_fx(
                    hHrtf->latency_s_fx = CRendBin_Combined_BRIR_latency_s_fx;                                     // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_32kHz;                   // Q0
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; // Q0
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_BRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_BRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                ELSE
                {
                    hHrtf->latency_s_fx = CRendBin_Combined_HRIR_latency_s_fx;                                     // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_HRIR_max_num_iterations_32kHz;                   // Q0
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz; // Q0
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_HRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_HRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                move32();
                move16();
@@ -432,12 +463,28 @@ static ivas_error ivas_rend_initCrend_fx(
                    hHrtf->latency_s_fx = CRendBin_Combined_BRIR_latency_s_fx; // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_16kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_BRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_BRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                ELSE
                {
                    hHrtf->latency_s_fx = CRendBin_Combined_HRIR_latency_s_fx; // Q31
                    hHrtf->max_num_iterations = CRendBin_Combined_HRIR_max_num_iterations_16kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz;
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_Combined_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_Combined_HRIR_inv_diffuse_weight_Q_16kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_Combined_HRIR_coeff_Q_16kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                }
                move32();
                move16();
@@ -599,6 +646,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    hHrtf->latency_s_fx = CRendBin_HOA3_HRIR_latency_s_fx; // Q31
                    hHrtf->max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_48kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA3_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_48kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA3_HRIR_coeff_Q_48kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                    move32();
                    move16();
                    move16();
@@ -638,6 +693,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    hHrtf->latency_s_fx = CRendBin_HOA3_HRIR_latency_s_fx; // Q31
                    hHrtf->max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_32kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA3_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA3_HRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                    move32();
                    move16();
                    move16();
@@ -681,6 +744,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA3_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_16kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA3_HRIR_coeff_Q_16kHz_fx;
                    move16();
                    move16();
                    move16();
#endif

                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -729,6 +800,15 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA2_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_48kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA2_HRIR_coeff_Q_48kHz_fx;
                    move16();
                    move16();
                    move16();
#endif


                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -768,6 +848,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA2_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA2_HRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif

                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -808,6 +896,15 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_HOA2_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_16kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_HOA2_HRIR_coeff_Q_16kHz_fx;
                    move16();
                    move16();
                    move16();
#endif


                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -855,6 +952,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_FOA_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_FOA_HRIR_inv_diffuse_weight_Q_48kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_FOA_HRIR_coeff_Q_48kHz_fx;
                    move16();
                    move16();
                    move16();
#endif

                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -894,7 +999,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();

#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_FOA_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_FOA_HRIR_inv_diffuse_weight_Q_32kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_FOA_HRIR_coeff_Q_32kHz_fx;
                    move16();
                    move16();
                    move16();
#endif
                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
                        FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
@@ -934,6 +1046,14 @@ static ivas_error ivas_rend_initCrend_fx(
                    move32();
                    move16();
                    move16();
#ifdef FIX_CREND_SIMPLIFY_CODE
                    hHrtf->factor_Q_latency_s_fx = CRendBin_FOA_HRIR_Q_latency_s_fx;
                    hHrtf->factor_Q_inv_diffuse_weight = CRendBin_FOA_HRIR_inv_diffuse_weight_Q_16kHz_fx;
                    hHrtf->factor_Q_pOut_to_bin = CRendBin_FOA_HRIR_coeff_Q_16kHz_fx;
                    move16();
                    move16();
                    move16();
#endif

                    FOR( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
@@ -1008,6 +1128,13 @@ static ivas_error ivas_rend_initCrend_fx(
            move16();
            move16();
            move16();
            hHrtf->factor_Q_inv_diffuse_weight = hHrtfCrend->factor_Q_inv_diffuse_weight;
            hHrtf->factor_Q_latency_s_fx = hHrtfCrend->factor_Q_latency_s_fx;
            hHrtf->factor_Q_pOut_to_bin = hHrtfCrend->factor_Q_pOut_to_bin;
            move16();
            move16();
            move16();


            FOR( j = 0; j < BINAURAL_CHANNELS; j++ )
            {
+2 −2
Original line number Diff line number Diff line
@@ -775,7 +775,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    fread( (Word32 *) model->EL_dyn_fx, sizeof( Word32 ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf );
    for ( j = 0; j < model->AlphaN * HRTF_MODEL_N_SECTIONS; j++ )
    {
        model->EL_dyn_fx[j] = L_shl_r( model->EL_dyn_fx[j], sub( Q30, factor_Q ) );
        model->EL_dyn_fx[j] = L_shl_r( model->EL_dyn_fx[j], sub( Q28, factor_Q ) );
    }

    model->ER_dyn_fx = (Word32 *) malloc( model->AlphaN * HRTF_MODEL_N_SECTIONS * sizeof( Word32 ) );
@@ -786,7 +786,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    fread( (Word32 *) model->ER_dyn_fx, sizeof( Word32 ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf );
    for ( j = 0; j < model->AlphaN * HRTF_MODEL_N_SECTIONS; j++ )
    {
        model->ER_dyn_fx[j] = L_shl_r( model->ER_dyn_fx[j], sub( Q30, factor_Q ) );
        model->ER_dyn_fx[j] = L_shl_r( model->ER_dyn_fx[j], sub( Q28, factor_Q ) );
    }

    /* Set const pointers */