diff --git a/lib_com/options.h b/lib_com/options.h index 0258d7e6fbb3e79945b6a858ec5b1fe367b7d9b3..24be8c3674d8277d484a839e9de23a03460fb5ca 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -179,6 +179,7 @@ #ifdef SPLIT_REND_WITH_HEAD_ROT #define SPLIT_REND_POSE_CORRECTION_UNUSED_BITS #define ISAR_BITSTREAM_UPDATE_LC3PLUS /* FhG: Multiple improvements to the ISAR bitstream when LC3plus is used. See MR 1456 for details. */ +#define FIX_1372_ISAR_POST_REND #endif #define NONBE_FIX_855_JBM_FLUSH_OFFSET /* FhG: issue #855: add missing switch here for the code in JBM flushing */ #define FIX_923_EXTERNAL_REND_COMMAND_LINE /* VA: issue 923: enable external renderer command-line options in UPPER case letters */ diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h index 90a9d2763af145b16d1fc659f0f5fd1921c66b55..618454f665a7c6026357381ecc54b11ad841d0da 100644 --- a/lib_isar/isar_prot.h +++ b/lib_isar/isar_prot.h @@ -118,12 +118,22 @@ void isar_log_cldfb2wav_data( const char *filename ); #endif +#ifndef FIX_1372_ISAR_POST_REND void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ); +#else +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act, + Word16 *Q_in ); +#endif void isar_splitBinLCLDDecProcess( ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c index ac04868328d22f9d0c84fb5b4edc0616ae2d287b..529c19f12c531d2687cc7fe855bf713f615ca0a0 100644 --- a/lib_isar/isar_splitRendererPost.c +++ b/lib_isar/isar_splitRendererPost.c @@ -1737,30 +1737,41 @@ static void interpolate_rend_md_fx( * * *-----------------------------------------------------------------------------------------*/ +#ifndef FIX_1372_ISAR_POST_REND void isar_SplitRenderer_PostRenderer( ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ const IVAS_QUATERNION Quaternion_act ) +#else +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act, + Word16 *Q_in ) +#endif { int16_t pos_idx, b, brange[2], ch_idx1; int16_t num_md_bands, slot_idx, b2, index_slot, num_slots, sf_idx_md; - Word32 pred_out_re_fx[BINAURAL_CHANNELS], pred_out_im_fx[BINAURAL_CHANNELS], tmp_re_fx, tmp_im_fx, gd_int_fx; -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - ISAR_BIN_HR_SPLIT_REND_MD rot_md_act[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS]; + Word32 gd_int_fx; +#ifndef FIX_1372_ISAR_POST_REND + Word32 pred_out_re_fx[BINAURAL_CHANNELS], pred_out_im_fx[BINAURAL_CHANNELS]; + Word32 tmp_re_fx, tmp_im_fx; + Word16 exp_tmp1, exp_tmp2; #else - ISAR_BIN_HR_SPLIT_REND_MD rot_md_act[1][MAX_SPLIT_REND_MD_BANDS]; + Word64 pred_out_re_fx64[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], pred_out_im_fx64[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word64 tmp_re_fx64, tmp_im_fx64, out64_re, out64_im; + Word16 shift64 = 63; #endif + ISAR_BIN_HR_SPLIT_REND_MD rot_md_act[1][MAX_SPLIT_REND_MD_BANDS]; int16_t interp_yaw_pose_idx[2], interp_pitch_pose_idx[2], interp_roll_pose_idx[2]; Word32 interp_yaw_fact_fx, interp_pitch_fact_fx, interp_roll_fact_fx; Word16 Q_yaw = Q31, Q_pitch = Q31, Q_roll = Q31; Word32 mix_mat_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; Word32 mix_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - float Cldfb_RealBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; - float Cldfb_ImagBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; -#endif Word16 fade_fx; Word32 *pMix_mat_re_prev_fx[BINAURAL_CHANNELS]; Word32 *pMix_mat_im_prev_fx[BINAURAL_CHANNELS]; @@ -1771,12 +1782,7 @@ void isar_SplitRenderer_PostRenderer( push_wmops( "isar_SplitRenderer_PostRenderer" ); num_slots = MAX_PARAM_SPATIAL_SUBFRAMES; -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - pos_idx = MAX_HEAD_ROT_POSES - 1; -#else pos_idx = 0; -#endif - sf_idx_md = 0; get_interpolation_vars( pMultiBinPoseData, &hBinPostRenderer->QuaternionsPre[sf_idx_md], &Quaternion_act, interp_yaw_pose_idx, interp_pitch_pose_idx, interp_roll_pose_idx, &interp_yaw_fact_fx, &interp_pitch_fact_fx, &interp_roll_fact_fx, &Q_yaw, &Q_pitch, &Q_roll ); @@ -1808,50 +1814,7 @@ void isar_SplitRenderer_PostRenderer( } } - -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES - 1; pos_idx++ ) - { - for ( b = 0; b < num_md_bands; b++ ) - { - if ( hBinPostRenderer->pose_type[pos_idx] == PITCH_ONLY ) - { - - for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) - { - set_zero( hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1], BINAURAL_CHANNELS ); - set_zero( hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1], BINAURAL_CHANNELS ); - hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][ch_idx1] = 1.0f; - } - hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[0][0] *= hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd; - hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[1][1] *= hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd2; - hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd = 0.0f; - } - else if ( hBinPostRenderer->pose_type[pos_idx] == ANY_ROLL ) - { - hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd = 0.0f; - } - - for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) - { - - /*update the prediction matrix with interpolated matrix*/ - rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][0]; - rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][1]; - rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1][0]; - rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1][1]; - rot_md_act[pos_idx][b].gd = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd; - } - } - } - -#endif - -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) -#else pos_idx = 0; -#endif { FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) { @@ -1887,15 +1850,13 @@ void isar_SplitRenderer_PostRenderer( brange[0] = pBand_grouping[b]; brange[1] = pBand_grouping[b + 1]; - Word16 exp_tmp1, exp_tmp2; FOR( b2 = brange[0]; b2 < brange[1]; b2++ ) { FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) { /* Apply prediction matrix */ +#ifndef FIX_1372_ISAR_POST_REND ivas_cmult_fix( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], 25, Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], 25, mix_mat_re_fx[0][ch_idx1], 6, mix_mat_im_fx[0][ch_idx1], 6, &tmp_re_fx, &tmp_im_fx, &exp_tmp1, &exp_tmp2 ); - // tmp_re_fx = L_shl(tmp_re_fx, sub(exp_tmp1, 6)); //Q25 - // tmp_im_fx = L_shl(tmp_im_fx, sub(exp_tmp1, 6)); //Q25 pred_out_re_fx[ch_idx1] = tmp_re_fx; pred_out_im_fx[ch_idx1] = tmp_im_fx; @@ -1903,36 +1864,80 @@ void isar_SplitRenderer_PostRenderer( Word16 exp_im = exp_tmp2; ivas_cmult_fix( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], 25, Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], 25, mix_mat_re_fx[1][ch_idx1], 6, mix_mat_im_fx[1][ch_idx1], 6, &tmp_re_fx, &tmp_im_fx, &exp_tmp1, &exp_tmp2 ); - // tmp_re_fx = L_shl(tmp_re_fx, sub(exp_tmp1, 6)); //Q25 - // tmp_im_fx = L_shl(tmp_im_fx, sub(exp_tmp1, 6)); //Q25 pred_out_re_fx[ch_idx1] = BASOP_Util_Add_Mant32Exp( pred_out_re_fx[ch_idx1], exp_re, tmp_re_fx, exp_tmp1, &exp_re ); pred_out_re_fx[ch_idx1] = L_shl( pred_out_re_fx[ch_idx1], exp_re - 25 ); pred_out_im_fx[ch_idx1] = BASOP_Util_Add_Mant32Exp( pred_out_im_fx[ch_idx1], exp_im, tmp_im_fx, exp_tmp2, &exp_im ); pred_out_im_fx[ch_idx1] = L_shl( pred_out_im_fx[ch_idx1], exp_im - 25 ); +#else + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_re_fx[0][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_im_fx[0][ch_idx1] ); + out64_re = W_sub( tmp_re_fx64, tmp_im_fx64 ); + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_im_fx[0][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_re_fx[0][ch_idx1] ); + out64_im = W_add( tmp_re_fx64, tmp_im_fx64 ); + move64(); + move64(); + move64(); + move64(); + move64(); + move64(); + + + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_re_fx[1][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_im_fx[1][ch_idx1] ); + out64_re = W_add( out64_re, W_sub( tmp_re_fx64, tmp_im_fx64 ) ); + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_im_fx[1][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_re_fx[1][ch_idx1] ); + out64_im = W_add( out64_im, W_add( tmp_re_fx64, tmp_im_fx64 ) ); + move64(); + move64(); + move64(); + move64(); + move64(); + move64(); + + + shift64 = s_min( shift64, s_min( W_norm( out64_im ), W_norm( out64_re ) ) ); + pred_out_re_fx64[ch_idx1][index_slot][b2] = out64_re; + pred_out_im_fx64[ch_idx1][index_slot][b2] = out64_im; + move16(); + move64(); + move64(); +#endif } - +#ifndef FIX_1372_ISAR_POST_REND FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - Cldfb_RealBuffer_Recons_Binaural[pos_idx][ch_idx1][index_slot][b2] = pred_out_re[ch_idx1]; - Cldfb_ImagBuffer_Recons_Binaural[pos_idx][ch_idx1][index_slot][b2] = pred_out_im[ch_idx1]; -#else Cldfb_RealBuffer_Ref_Binaural_fx[ch_idx1][index_slot][b2] = pred_out_re_fx[ch_idx1]; Cldfb_ImagBuffer_Ref_Binaural_fx[ch_idx1][index_slot][b2] = pred_out_im_fx[ch_idx1]; -#endif } +#endif + } + } + } + +#ifdef FIX_1372_ISAR_POST_REND + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + FOR( b2 = pBand_grouping[0]; b2 < pBand_grouping[num_md_bands]; b2++ ) + { + Cldfb_RealBuffer_Ref_Binaural_fx[ch_idx1][slot_idx][b2] = W_extract_h( W_shl( pred_out_re_fx64[ch_idx1][slot_idx][b2], shift64 ) ); + Cldfb_ImagBuffer_Ref_Binaural_fx[ch_idx1][slot_idx][b2] = W_extract_h( W_shl( pred_out_im_fx64[ch_idx1][slot_idx][b2], shift64 ) ); + move32(); + move32(); } } } + *Q_in = sub( add( *Q_in, shift64 ), Q6 ); + move16(); +#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) -#else pos_idx = 0; -#endif { FOR( b = 0; b < num_md_bands; b++ ) { @@ -1947,43 +1952,6 @@ void isar_SplitRenderer_PostRenderer( } } hBinPostRenderer->cf_flag = 1; - -#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG - { - int16_t num_cldfb_bands; - num_cldfb_bands = CLDFB_NO_CHANNELS_MAX; - for ( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) - { - index_slot = sf_idx * num_slots + slot_idx; - for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) - { - mvr2r( Cldfb_RealBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES - 1][ch_idx1][index_slot], Cldfb_RealBuffer_Ref_Binaural[ch_idx1][index_slot], num_cldfb_bands ); - mvr2r( Cldfb_ImagBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES - 1][ch_idx1][index_slot], Cldfb_ImagBuffer_Ref_Binaural[ch_idx1][index_slot], num_cldfb_bands ); - } - } - - for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) - { - char fname[200] = "recons_out_pos"; - char tag[2]; - tag[0] = (char) ( '0' + pos_idx ); - tag[1] = '\0'; - strcat( fname, tag ); - strcat( fname, ".wav" ); - isar_log_cldfb2wav_data( - Cldfb_RealBuffer_Recons_Binaural[pos_idx], - Cldfb_ImagBuffer_Recons_Binaural[pos_idx], - hBinPostRenderer->cldfbSynReconsBinDec[pos_idx], - BINAURAL_CHANNELS, - num_cldfb_bands, - 48000, - num_slots, - sf_idx * num_slots, - fname ); - } - } -#endif - pop_wmops(); return; } @@ -2004,7 +1972,8 @@ static void isar_rend_CldfbSplitPostRendProcessTdIn( Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; num_cldfb_bands = hBinHrSplitPostRend->cldfbSyn[0]->no_channels; - Word16 Q_output = 11; + Word16 Q_output = Q11; + Word16 Q_in = Q6; /* Implement CLDFB analysis */ FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) @@ -2022,7 +1991,11 @@ static void isar_rend_CldfbSplitPostRendProcessTdIn( } } +#ifndef FIX_1372_ISAR_POST_REND isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost ); +#else + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost, &Q_in ); +#endif /* Implement CLDFB synthesis */ FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) @@ -2044,7 +2017,11 @@ static void isar_rend_CldfbSplitPostRendProcessTdIn( Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); } +#ifndef FIX_1372_ISAR_POST_REND Q_cldfb = add( scaleFactor, sub( Q_output, Q5 ) ); +#else + Q_cldfb = add( scaleFactor, Q_in ); +#endif Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) ); cldfbSynthesis_ivas_fx( RealBuffer_fx, ImagBuffer_fx, &( output_fx[ch_idx][0] ), num_cldfb_bands * CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, hBinHrSplitPostRend->cldfbSyn[ch_idx] ); // Q_cldfb - 1 Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( Q11, sub( Q_cldfb, 1 ) ) ); @@ -2082,7 +2059,11 @@ void isar_rend_CldfbSplitPostRendProcess( return; } +#ifndef FIX_1372_ISAR_POST_REND isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost ); +#else + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost, &Q_cldfb_in ); +#endif /* Implement CLDFB synthesis */ FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ )