Loading lib_rend/ivas_crend.c +45 −17 Original line number Diff line number Diff line Loading @@ -4219,7 +4219,7 @@ static ivas_error ivas_rend_crendConvolver( #ifdef FIX_CREND_CHANGES Word32 *pFreq_buf2_re, *pFreq_buf2_im; #endif const Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Word32 tmp_out_re[L_FRAME48k]; Word32 tmp_out_im[L_FRAME48k]; Loading Loading @@ -4277,6 +4277,18 @@ static ivas_error ivas_rend_crendConvolver( } i = 0; if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse]; } for ( idx_in = 0; idx_in < nchan_in; idx_in++ ) { pIn = &pcm_in[idx_in][i_ts * subframe_length]; Loading @@ -4286,39 +4298,32 @@ static ivas_error ivas_rend_crendConvolver( { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); } } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf_im[k] ); } } } pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; ivas_mdft_fx( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); ivas_mdft_fx( pIn, pFreq_filt_re, pFreq_filt_im, subframe_length, subframe_length ); #ifdef DEBUGGING dbgwrite_txt( pFreq_buf_re, subframe_length, "Fixed_pFreq_buf_re_mdft.txt", NULL ); dbgwrite_txt( pFreq_buf_im, subframe_length, "Fixed_pFreq_buf_im_mdft.txt", NULL ); Loading @@ -4327,6 +4332,29 @@ static ivas_error ivas_rend_crendConvolver( } } if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_shr( pFreq_buf_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); } } else { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_shr( pFreq_buf_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf2_re[k] = L_shr( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf2_im[k] = L_shr( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); } } } for ( j = 0; j < nchan_out; j++ ) { set_val_Word32( tmp_out_re, 0, subframe_length ); Loading Loading
lib_rend/ivas_crend.c +45 −17 Original line number Diff line number Diff line Loading @@ -4219,7 +4219,7 @@ static ivas_error ivas_rend_crendConvolver( #ifdef FIX_CREND_CHANGES Word32 *pFreq_buf2_re, *pFreq_buf2_im; #endif const Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Word32 tmp_out_re[L_FRAME48k]; Word32 tmp_out_im[L_FRAME48k]; Loading Loading @@ -4277,6 +4277,18 @@ static ivas_error ivas_rend_crendConvolver( } i = 0; if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse]; } for ( idx_in = 0; idx_in < nchan_in; idx_in++ ) { pIn = &pcm_in[idx_in][i_ts * subframe_length]; Loading @@ -4286,39 +4298,32 @@ static ivas_error ivas_rend_crendConvolver( { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); } } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( L_shr( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ), pFreq_buf_im[k] ); pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf_im[k] ); } } } pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; ivas_mdft_fx( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); ivas_mdft_fx( pIn, pFreq_filt_re, pFreq_filt_im, subframe_length, subframe_length ); #ifdef DEBUGGING dbgwrite_txt( pFreq_buf_re, subframe_length, "Fixed_pFreq_buf_re_mdft.txt", NULL ); dbgwrite_txt( pFreq_buf_im, subframe_length, "Fixed_pFreq_buf_im_mdft.txt", NULL ); Loading @@ -4327,6 +4332,29 @@ static ivas_error ivas_rend_crendConvolver( } } if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_shr( pFreq_buf_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); } } else { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_shr( pFreq_buf_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf2_re[k] = L_shr( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); pFreq_buf2_im[k] = L_shr( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight_fx ); } } } for ( j = 0; j < nchan_out; j++ ) { set_val_Word32( tmp_out_re, 0, subframe_length ); Loading