Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading lib_rend/ivas_crend.c +152 −61 Original line number Diff line number Diff line Loading @@ -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++ ) { Loading @@ -90,6 +97,7 @@ static ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_im[j] = NULL; } return IVAS_ERR_OK; } Loading Loading @@ -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 ) { Loading Loading @@ -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; Loading Loading @@ -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 */ Loading Loading @@ -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 */ Loading lib_rend/ivas_stat_rend.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading lib_util/hrtf_file_reader.c +8 −1 Original line number Diff line number Diff line Loading @@ -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; Loading scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c +8 −6 Original line number Diff line number Diff line Loading @@ -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 ) Loading Loading @@ -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]; Loading @@ -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]; Loading Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -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. */ Loading
lib_rend/ivas_crend.c +152 −61 Original line number Diff line number Diff line Loading @@ -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++ ) { Loading @@ -90,6 +97,7 @@ static ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_im[j] = NULL; } return IVAS_ERR_OK; } Loading Loading @@ -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 ) { Loading Loading @@ -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; Loading Loading @@ -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 */ Loading Loading @@ -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 */ Loading
lib_rend/ivas_stat_rend.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
lib_util/hrtf_file_reader.c +8 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c +8 −6 Original line number Diff line number Diff line Loading @@ -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 ) Loading Loading @@ -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]; Loading @@ -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]; Loading