Commit d28f9190 authored by emerit's avatar emerit
Browse files

bug fix

parent 5efcdf4e
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -2779,9 +2779,6 @@ const float McMASA_LFEGain_vectors[64] =
    -2.14f,  0.26f,  0.84f,  1.02f
};

#ifdef USE_SYMETRIC_HRIR_FILTERS
#endif

/*----------------------------------------------------------------------------------*
 * ISM ROM tables
 *----------------------------------------------------------------------------------*/
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@

#define FIX_BINAURAL_DELAY_PRECISION
#define USE_SYMETRIC_HRIR_FILTERS
#define FIX_CREND_BRIR_REVERB
#define FIX_382_MASA_META_FRAMING_ASYNC                 /* Nokia: Issue 382: detect potential MASA metadata framing offset */

/* ################## End DEVELOPMENT switches ######################### */
+83 −35
Original line number Diff line number Diff line
@@ -219,10 +219,7 @@ static ivas_error ivas_rend_initCrend(
        return IVAS_ERR_INTERNAL_FATAL;
    }

    if ( hSetOfHRTF == NULL )
    {
        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {

#ifdef USE_SYMETRIC_HRIR_FILTERS
    if ( use_brir )
    {
@@ -234,9 +231,9 @@ static ivas_error ivas_rend_initCrend(
    }
    if ( nb_ear == 1 )
    {
                for ( i = 0; i < hHrtf->max_num_ir; i++ )
        for ( i = 0; i < hHrtf->max_num_ir - 1; i++ )
        {
                    if ( ( i == 2 ) || ( i == 3 ) )
            if ( i == 2 )
            {
                hHrtf->ch_sum_diff[i] = 0;
                hHrtf->ch_sum_diff_pair[i] = i;
@@ -256,8 +253,12 @@ static ivas_error ivas_rend_initCrend(
            hHrtf->ch_sum_diff_pair[i] = i;
        }
    }

#endif

    if ( hSetOfHRTF == NULL )
    {
        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {
            hHrtf->max_num_ir -= 1; /* subtract LFE */
            hHrtf->gain_lfe = GAIN_LFE;

@@ -405,15 +406,18 @@ static ivas_error ivas_rend_initCrend(

                if ( output_Fs == 48000 )
                {
#ifndef USE_SYMETRIC_HRIR_FILTERS
                    if ( use_brir )
                    {
#endif
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[tmp];
#ifndef USE_SYMETRIC_HRIR_FILTERS
                    }
                    else
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[tmp];
                    }

#endif
#ifdef USE_SYMETRIC_HRIR_FILTERS
                    for ( j = 0; j < nb_ear; j++ )
#else
@@ -506,6 +510,12 @@ static ivas_error ivas_rend_initCrend(
                {
                    return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" );
                }
#ifdef USE_SYMETRIC_HRIR_FILTERS
                if ( use_brir && ( nb_ear == 1 ) )
                {
                    hHrtf->inv_diffuse_weight[i] = hHrtf->inv_diffuse_weight[i] * 0.5f;
                }
#endif
            }
        }
        else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS )
@@ -682,7 +692,11 @@ static ivas_error ivas_rend_initCrend(
                hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_combined->index_frequency_max_diffuse;
            }

#ifdef USE_SYMETRIC_HRIR_FILTERS
            for ( j = 0; j < nb_ear; j++ )
#else
            for ( j = 0; j < BINAURAL_CHANNELS; j++ )
#endif
            {
                if ( use_brir )
                {
@@ -736,7 +750,11 @@ static ivas_error ivas_rend_initCrend(
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight[tmp];
                }

#ifdef USE_SYMETRIC_HRIR_FILTERS
                for ( j = 0; j < nb_ear; j++ )
#else
                for ( j = 0; j < BINAURAL_CHANNELS; j++ )
#endif
                {
                    if ( use_brir )
                    {
@@ -950,8 +968,11 @@ ivas_error ivas_rend_openCrend(
        {
            hCrend->lfe_delay_line = NULL;
        }

#ifdef FIX_CREND_BRIR_REVERB
        if ( ( hRendCfg != NULL ) && ( hRendCfg->roomAcoustics.late_reverb_on ) && ( outConfig == AUDIO_CONFIG_BINAURAL ) )
#else
        if ( ( hRendCfg != NULL ) && ( hRendCfg->roomAcoustics.late_reverb_on ) )
#endif
        {
            if ( ( error = ivas_reverb_open( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, hRendCfg, output_Fs ) ) != IVAS_ERR_OK )
            {
@@ -1130,9 +1151,9 @@ static ivas_error ivas_rend_crendConvolver(
        {
#ifdef USE_SYMETRIC_HRIR_FILTERS
            pIn_s = &pcm_in[idx_in][i_ts * subframe_length];
            if ( ( pCrend->hHrtfCrend->ch_sum_diff[idx_in] >= 0 ) && ( idx_in != 2 ) )
            if ( ( pCrend->hHrtfCrend->ch_sum_diff[i] >= 0 ) && ( i != 2 ) )
            {
                pIn_d = &pcm_in[pCrend->hHrtfCrend->ch_sum_diff_pair[idx_in]][i_ts * subframe_length];
                pIn_d = &pcm_in[pCrend->hHrtfCrend->ch_sum_diff_pair[i]][i_ts * subframe_length];
            }
            else
            {
@@ -1153,6 +1174,33 @@ static ivas_error ivas_rend_crendConvolver(
                    pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
                    pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
                }
#ifdef USE_SYMETRIC_HRIR_FILTERS
                if ( pCrend->hHrtfCrend->ch_sum_diff[0] >= 0 )
                {
                    pFreq_filt_re = &pCrend->hCrend->freq_buffer_re[pCrend->hHrtfCrend->ch_sum_diff_pair[i]][offset];
                    pFreq_filt_im = &pCrend->hCrend->freq_buffer_im[pCrend->hHrtfCrend->ch_sum_diff_pair[i]][offset];

                    if ( ( pCrend->hHrtfCrend->ch_sum_diff[idx_in] >= 0 ) && ( idx_in != 2 ) )
                    {
                        if ( pCrend->hHrtfCrend->ch_sum_diff[idx_in] == 1 )
                        {
                            for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
                            {
                                pFreq_buf_re[k] = pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i] - pFreq_buf_re[k];
                                pFreq_buf_im[k] = pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i] - pFreq_buf_im[k];
                            }
                        }
                        else
                        {
                            for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
                            {
                                pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
                                pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
                            }
                        }
                    }
                }
#endif
            }

            pFreq_buf_re = &pCrend->hCrend->freq_buffer_re[i][offset];
+2358 −4974

File changed.

Preview size limit exceeded, changes collapsed.

+24 −24
Original line number Diff line number Diff line
@@ -152,42 +152,42 @@ extern float CRendBin_Combined_BRIR_latency_s;
/* Sample Rate = 48000 */

extern int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz;
extern uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[15][2];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[2];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][2][22];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[15][1];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[1];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][1][22];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[2][40];
extern float CRendBin_Combined_BRIR_coeff_re_48kHz[15][2][2955];
extern float CRendBin_Combined_BRIR_coeff_im_48kHz[15][2][2955];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[2][2885];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[2][2885];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[1][40];
extern float CRendBin_Combined_BRIR_coeff_re_48kHz[15][1][2984];
extern float CRendBin_Combined_BRIR_coeff_im_48kHz[15][1][2984];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[1][2885];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[1][2885];

/* Sample Rate = 32000 */

extern int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz;
extern uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[15][2];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[2];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][2][22];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[15][1];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[1];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][1][22];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[2][40];
extern float CRendBin_Combined_BRIR_coeff_re_32kHz[15][2][2819];
extern float CRendBin_Combined_BRIR_coeff_im_32kHz[15][2][2819];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[2][2870];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[2][2870];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[1][40];
extern float CRendBin_Combined_BRIR_coeff_re_32kHz[15][1][2845];
extern float CRendBin_Combined_BRIR_coeff_im_32kHz[15][1][2845];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[1][2870];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[1][2870];

/* Sample Rate = 16000 */

extern int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz;
extern uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[15][2];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[2];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][2][23];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[15][1];
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[1];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][1][23];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[2][40];
extern float CRendBin_Combined_BRIR_coeff_re_16kHz[15][2][1774];
extern float CRendBin_Combined_BRIR_coeff_im_16kHz[15][2][1774];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[2][2522];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[2][2522];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[1][40];
extern float CRendBin_Combined_BRIR_coeff_re_16kHz[15][1][1777];
extern float CRendBin_Combined_BRIR_coeff_im_16kHz[15][1][1777];
extern float CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[1][2522];
extern float CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[1][2522];
#endif /* _IVAS_ROM_BINAURAL_CREND_HEAD_ */
Loading