Commit 0720f011 authored by emerit's avatar emerit
Browse files

on going work

parent 9a520898
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@

#define FIX_BINAURAL_DELAY_PRECISION
#define USE_SYMETRIC_HRIR_FILTERS
#define FIX_CREND_BRIR_REVERB
// #define FIX_CREND_BRIR_REVERB
#define FIX_382_MASA_META_FRAMING_ASYNC                 /* Nokia: Issue 382: detect potential MASA metadata framing offset */
#define FIX_386_CORECODER_RECONFIG                      /* VA: Issue 386: Resolve ToDo comments in CoreCoder reconfig. */

+152 −61
Original line number Diff line number Diff line
@@ -80,7 +80,14 @@ static ivas_error ivas_hrtf_init(
            hHrtf->pOut_to_bin_re[i][j] = NULL;
            hHrtf->pOut_to_bin_im[i][j] = NULL;
        }
#ifdef USE_SYMETRIC_HRIR_FILTERS
        hHrtf->ch_sum_diff[i] = -1;
        hHrtf->ch_sum_diff_pair[i] = i;
#endif
    }
#ifdef USE_SYMETRIC_HRIR_FILTERS
    hHrtf->use_symetric_filters = 0;
#endif

    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
    {
@@ -90,6 +97,7 @@ static ivas_error ivas_hrtf_init(
        hHrtf->pOut_to_bin_diffuse_im[j] = NULL;
    }


    return IVAS_ERR_OK;
}

@@ -220,6 +228,9 @@ static ivas_error ivas_rend_initCrend(
    }


    if ( hSetOfHRTF == NULL )
    {

#ifdef USE_SYMETRIC_HRIR_FILTERS
        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {
@@ -254,7 +265,7 @@ static ivas_error ivas_rend_initCrend(
            }
            else
            {
            for ( i = 0; i < hHrtf->max_num_ir; i++ )
                for ( i = 0; i < hHrtf->max_num_ir - 1; i++ )
                {
                    hHrtf->ch_sum_diff[i] = -1;
                    hHrtf->ch_sum_diff_pair[i] = i;
@@ -302,8 +313,6 @@ static ivas_error ivas_rend_initCrend(
        }
#endif

    if ( hSetOfHRTF == NULL )
    {
        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {
            hHrtf->max_num_ir -= 1; /* subtract LFE */
@@ -686,6 +695,88 @@ static ivas_error ivas_rend_initCrend(
    }
    else
    {
#ifdef USE_SYMETRIC_HRIR_FILTERS
        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {
            if ( use_brir )
            {
                nb_ear = hSetOfHRTF->hHRTF_brir_combined->use_symetric_filters == 0 ? 2 : 1;
            }
            else
            {
                nb_ear = hSetOfHRTF->hHRTF_hrir_combined->use_symetric_filters == 0 ? 2 : 1;
            }
            if ( nb_ear == 1 )
            {
                for ( i = 0; i < hHrtf->max_num_ir - 1; i++ )
                {
                    if ( i < 2 )
                    {
                        hHrtf->ch_sum_diff[i] = i == 0 ? 0 : 1;
                        hHrtf->ch_sum_diff_pair[i] = i == 0 ? 1 : 0;
                    }
                    else if ( i == 2 )
                    {
                        hHrtf->ch_sum_diff[i] = 0;
                        hHrtf->ch_sum_diff_pair[i] = i;
                    }
                    else
                    {
                        hHrtf->ch_sum_diff[i] = i % 2 ? 0 : 1;
                        hHrtf->ch_sum_diff_pair[i] = i % 2 ? i + 1 : i - 1;
                    }
                }
            }
            else
            {
                for ( i = 0; i < hHrtf->max_num_ir - 1; i++ )
                {
                    hHrtf->ch_sum_diff[i] = -1;
                    hHrtf->ch_sum_diff_pair[i] = i;
                }
            }
        }
        else
        {
            nb_ear = hSetOfHRTF->hHRTF_hrir_hoa3->use_symetric_filters == 0 ? 2 : 1;
            if ( nb_ear == 1 )
            {
                curComp = 0;
                nbCompForCurrentOrder = 1;
                curOrder = 0;

                for ( i = 0; i < hHrtf->max_num_ir; i++ )
                {
                    if ( curComp < curOrder )
                    {
                        hHrtf->ch_sum_diff[i] = 1;
                    }
                    else
                    {
                        hHrtf->ch_sum_diff[i] = 0;
                    }

                    curComp++;
                    if ( curComp == nbCompForCurrentOrder )
                    {
                        curOrder++;
                        curComp = 0;
                        nbCompForCurrentOrder = 2 * curOrder + 1;
                    }
                    hHrtf->ch_sum_diff_pair[i] = i;
                }
            }
            else
            {
                for ( i = 0; i < hHrtf->max_num_ir; i++ )
                {
                    hHrtf->ch_sum_diff[i] = -1;
                    hHrtf->ch_sum_diff_pair[i] = i;
                }
            }
        }
#endif

        if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED )
        {
            hHrtf->max_num_ir -= 1; /* subtract LFE */
+1 −0
Original line number Diff line number Diff line
@@ -667,6 +667,7 @@ typedef struct ivas_hrtfs_structure
#ifdef USE_SYMETRIC_HRIR_FILTERS
    int16_t ch_sum_diff[MAX_INTERN_CHANNELS];
    int16_t ch_sum_diff_pair[MAX_INTERN_CHANNELS];
    int16_t use_symetric_filters;
#endif


+8 −1
Original line number Diff line number Diff line
@@ -706,7 +706,14 @@ static ivas_error ivas_hrtf_init(
            hHRTF->pOut_to_bin_re[i][j] = NULL;
            hHRTF->pOut_to_bin_im[i][j] = NULL;
        }
    }
#ifdef USE_SYMETRIC_HRIR_FILTERS
        hHRTF->ch_sum_diff[i] = -1;
        hHRTF->ch_sum_diff_pair[i] = i;
#endif
    }
#ifdef USE_SYMETRIC_HRIR_FILTERS
    hHRTF->use_symetric_filters = 0;
#endif
    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
    {
        hHRTF->num_iterations_diffuse[j] = 0;
+8 −6
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@

#define DEBUG_BINAURAL_FILTER_DESIGN

#define GAIN_SUM_DIFF 0.5f

#ifdef DEBUG_BINAURAL_FILTER_DESIGN
/*------------------------------  Debug utilities ---------------------------------------------- */
static void printBuf_float32( float *buf, uint32_t size1 )
@@ -1667,8 +1669,8 @@ ivas_error ivas_crend_binaural_filter_design_convert_filters_to_sum_diff(
        {
            for ( i_tap = 0; i_tap < pParamIn->pIndex_frequency_max[i_index][sym_hrir][i_num]; i_tap++ )
            {
                ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] = 0.5f * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap];
                ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] = 0.5f * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap];
                ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] = GAIN_SUM_DIFF * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap];
                ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] = GAIN_SUM_DIFF * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap];
            }
            i_offset += ( *ppParamSumDiff )->pIndex_frequency_max[i_chan][sym_hrir][i_num];
            i_offset_in += pParamIn->pIndex_frequency_max[i_index][sym_hrir][i_num];
@@ -1682,13 +1684,13 @@ ivas_error ivas_crend_binaural_filter_design_convert_filters_to_sum_diff(
            {
                if ( lscfg.sum_diff[i_chan] )
                {
                    ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] = 0.5f * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap] - ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] = 0.5f * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap] - ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] = GAIN_SUM_DIFF * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap] - ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] = GAIN_SUM_DIFF * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap] - ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap];
                }
                else
                {
                    ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] += 0.5f * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] += 0.5f * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_re[i_chan][sym_hrir][i_offset + i_tap] += GAIN_SUM_DIFF * pParamIn->pOut_to_bin_re[i_index][sym_hrir][i_offset_in + i_tap];
                    ( *ppParamSumDiff )->pOut_to_bin_im[i_chan][sym_hrir][i_offset + i_tap] += GAIN_SUM_DIFF * pParamIn->pOut_to_bin_im[i_index][sym_hrir][i_offset_in + i_tap];
                }
            }
            i_offset += ( *ppParamSumDiff )->pIndex_frequency_max[i_chan][sym_hrir][i_num];