Loading lib_rend/ivas_crend.c +60 −77 Original line number Diff line number Diff line Loading @@ -92,9 +92,7 @@ ivas_error ivas_hrtf_init( FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { #ifdef FIX_POINT_HRTF_FILE_FORMAT hHrtf->inv_diffuse_weight[0][i] = 0; hHrtf->inv_diffuse_weight[1][i] = 0; move16(); hHrtf->inv_diffuse_weight[j][i] = 0; move16(); #endif hHrtf->num_iterations[i][j] = 0; Loading @@ -102,6 +100,9 @@ ivas_error ivas_hrtf_init( hHrtf->pIndex_frequency_max[i][j] = NULL; hHrtf->pOut_to_bin_re[i][j] = NULL; hHrtf->pOut_to_bin_im[i][j] = NULL; hHrtf->pIndex_frequency_max_dyn[i][j] = NULL; hHrtf->pOut_to_bin_re_dyn[i][j] = NULL; hHrtf->pOut_to_bin_im_dyn[i][j] = NULL; } } Loading @@ -113,6 +114,11 @@ ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_re[j] = NULL; hHrtf->pOut_to_bin_diffuse_im[j] = NULL; hHrtf->pIndex_frequency_max_diffuse_dyn[j] = NULL; hHrtf->pOut_to_bin_diffuse_re_dyn[j] = NULL; hHrtf->pOut_to_bin_diffuse_im_dyn[j] = NULL; } #ifdef FIX_POINT_HRTF_FILE_FORMAT Loading Loading @@ -1463,15 +1469,15 @@ static ivas_error ivas_rend_initCrend( #ifdef FIX_POINT_HRTF_FILE_FORMAT if ( hHrtf->factor_Q_latency_s != 0 ) { hHrtf->factor_Q_latency_s = sub( hHrtf->factor_Q_latency_s, 31 ); hHrtf->factor_Q_latency_s = sub( 31, hHrtf->factor_Q_latency_s ); } if ( hHrtf->factor_Q_inv_diffuse_weight != 0 ) { hHrtf->factor_Q_inv_diffuse_weight = sub( hHrtf->factor_Q_inv_diffuse_weight, 15 ); hHrtf->factor_Q_inv_diffuse_weight = sub( 15, hHrtf->factor_Q_inv_diffuse_weight ); } if ( hHrtf->factor_Q_pOut_to_bin != 0 ) { hHrtf->factor_Q_pOut_to_bin = sub( 31, hHrtf->factor_Q_pOut_to_bin ); hHrtf->factor_Q_pOut_to_bin = sub( 15, hHrtf->factor_Q_pOut_to_bin ); } #endif pCrend->hHrtfCrend = hHrtf; Loading Loading @@ -2023,6 +2029,7 @@ ivas_error ivas_rend_openCrend( error = IVAS_ERR_OK; move16(); IF( NE_32( ( error = ivas_rend_initCrendWrapper( pCrend ) ), IVAS_ERR_OK ) ) { return error; Loading @@ -2041,17 +2048,6 @@ ivas_error ivas_rend_openCrend( hCrend = ( *pCrend )->hCrend; hHrtf = ( *pCrend )->hHrtfCrend; IF( hHrtf != NULL ) { IF( NE_32( ( error = ivas_rend_initCrend( *pCrend, inConfig, outConfig, hSetOfHRTF, output_Fs ) ), IVAS_ERR_OK ) ) { return error; } } hCrend = ( *pCrend )->hCrend; hHrtf = ( *pCrend )->hHrtfCrend; IF( hHrtf != NULL ) { max_total_ir_len = imult1616( hHrtf->max_num_iterations, subframe_length ); Loading Loading @@ -2316,12 +2312,13 @@ static ivas_error ivas_rend_crendConvolver( Word16 i, j, k, m; Word16 subframe_length, idx_in; Word16 lfe_idx_in; Word16 offset, offset_in, offset_diffuse; Word32 offset, offset_in, offset_diffuse; Word16 nchan_in, nchan_out; const Word32 *pIn; Word32 *pFreq_buf_re, *pFreq_buf_im; #ifdef FIX_POINT_HRTF_FILE_FORMAT Word32 *pFreq_buf2_re, *pFreq_buf2_im; Word32 *pFreq_buf3_re, *pFreq_buf3_im; #endif const Word16 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Loading @@ -2329,7 +2326,7 @@ static ivas_error ivas_rend_crendConvolver( Word32 tmp_out_im[L_FRAME48k]; CREND_HANDLE hCrend; ivas_error error; Word64 tmp64; hCrend = pCrend->hCrend; Loading Loading @@ -2366,62 +2363,43 @@ static ivas_error ivas_rend_crendConvolver( IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; set_val_Word32( &hCrend->freq_buffer_re_diffuse[0][offset_diffuse], 0, subframe_length ); set_val_Word32( &hCrend->freq_buffer_im_diffuse[0][offset_diffuse], 0, subframe_length ); if ( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { set_val_Word32( &hCrend->freq_buffer_re_diffuse[1][offset_diffuse], 0, subframe_length ); set_val_Word32( &hCrend->freq_buffer_im_diffuse[1][offset_diffuse], 0, subframe_length ); pFreq_buf3_re = &hCrend->freq_buffer_re_diffuse[1][offset_diffuse]; pFreq_buf3_im = &hCrend->freq_buffer_im_diffuse[1][offset_diffuse]; } } i = 0; if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse[1][offset_diffuse]; } for ( idx_in = 0; idx_in < nchan_in; idx_in++ ) FOR( idx_in = 0; idx_in < nchan_in; idx_in++ ) { pIn = &pcm_in[idx_in][i_ts * subframe_length]; if ( idx_in != lfe_idx_in ) { if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) pFreq_buf_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf_im = &hCrend->freq_buffer_im[i][offset]; IF( NE_16( idx_in, lfe_idx_in ) ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_im[k] ); } pFreq_buf2_re[k] = Madd_32_16( pFreq_buf2_re[k], pFreq_buf_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ); pFreq_buf2_im[k] = Madd_32_16( pFreq_buf2_im[k], pFreq_buf_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ); } else IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ), pFreq_buf_im[k] ); pFreq_buf3_re[k] = Madd_32_16( pFreq_buf3_re[k], pFreq_buf_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ); pFreq_buf3_im[k] = Madd_32_16( pFreq_buf3_im[k], pFreq_buf_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ); } } } pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; ivas_mdft_fx( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); #ifdef DEBUGGING Loading @@ -2432,29 +2410,26 @@ static ivas_error ivas_rend_crendConvolver( } } if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) 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 ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shl( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shl( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); } } else IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) 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 ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shr( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shr( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shl( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shl( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf3_re[k] = L_shl( pFreq_buf3_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf3_im[k] = L_shl( pFreq_buf3_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); } } } for ( j = 0; j < nchan_out; j++ ) FOR( j = 0; j < nchan_out; j++ ) { set_zero_fx( tmp_out_re, subframe_length ); set_zero_fx( tmp_out_im, subframe_length ); Loading @@ -2470,7 +2445,7 @@ static ivas_error ivas_rend_crendConvolver( { offset_in = add( add( hCrend->delay_line_rw_index, sub( pCrend->hHrtfCrend->max_num_iterations, pCrend->hHrtfCrend->num_iterations[i][j] ) ), add( m, 1 ) ); offset_in = offset_in % ( pCrend->hHrtfCrend->max_num_iterations ); offset_in = imult1616( offset_in, subframe_length ); offset_in = imult3216( offset_in, subframe_length ); pFreq_buf_re = &hCrend->freq_buffer_re[i][offset_in]; pFreq_buf_im = &hCrend->freq_buffer_im[i][offset_in]; pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_re[i][j][offset]; Loading @@ -2478,10 +2453,14 @@ static ivas_error ivas_rend_crendConvolver( FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max[i][j][m]; k++ ) { tmp_out_re[k] = L_add( Msub_32_32( Mpy_32_16_r( pFreq_buf_re[k], pFreq_filt_re[k] ), pFreq_buf_im[k], pFreq_filt_im[k] ), tmp_out_re[k] ); tmp_out_im[k] = L_add( Madd_32_32( Mpy_32_16_r( pFreq_buf_re[k], pFreq_filt_im[k] ), pFreq_buf_im[k], pFreq_filt_re[k] ), tmp_out_im[k] ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_re[k] ); tmp64 = W_msu_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_im[k] ); tmp_out_re[k] = L_add( tmp_out_re[k], W_sat_m( tmp64 ) ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_im[k] ); tmp64 = W_mac_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_re[k] ); tmp_out_im[k] = L_add( tmp_out_im[k], W_sat_m( tmp64 ) ); } offset = add( offset, k ); offset = L_add( offset, k ); } i = add( i, 1 ); } Loading @@ -2507,12 +2486,16 @@ static ivas_error ivas_rend_crendConvolver( pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_re[j][offset]; pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_im[j][offset]; for ( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ ) { tmp_out_re[k] = L_add( Msub_32_32( Mpy_32_32( pFreq_buf_re[k], pFreq_filt_re[k] ), pFreq_buf_im[k], pFreq_filt_im[k] ), tmp_out_re[k] ); tmp_out_im[k] = L_add( Madd_32_32( Mpy_32_32( pFreq_buf_re[k], pFreq_filt_im[k] ), pFreq_buf_im[k], pFreq_filt_re[k] ), tmp_out_im[k] ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_re[k] ); tmp64 = W_msu_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_im[k] ); tmp_out_re[k] = L_add( tmp_out_re[k], W_sat_m( tmp64 ) ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_im[k] ); tmp64 = W_mac_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_re[k] ); tmp_out_im[k] = L_add( tmp_out_im[k], W_sat_m( tmp64 ) ); } offset = add( offset, k ); offset = L_add( offset, k ); } ivas_imdft_fx( tmp_out_re, tmp_out_im, pOut, subframe_length ); Loading lib_rend/ivas_rom_TdBinauralRenderer.c +4 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ *------------------------------------------------------------------------*/ /* TD renderer default HRIR model */ #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif #ifdef IVAS_FLOAT_FIXED Loading Loading @@ -9874,6 +9874,7 @@ const Word32 defaultHRIR_rom_EL48_fx[HRTF_MODEL_N_SECTIONS * 470] = { 48333,42517,45261,43583,42144,31960,26373,40707,32340,28572, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER48[HRTF_MODEL_N_SECTIONS * 470] = { 0x3e8fdae6,0x3e7ca020,0x3ea71010,0x3e8e5f72,0x3ea8df86,0x3eedf18e,0x3e870070,0x3e91155d,0x3ed7ad3d,0x3ee09b29,0x3edabee2,0x3ebe2887,0x3eda153a,0x3edf229b,0x3ed98d74,0x3e8cd9eb,0x3e76d3fe,0x3ef246f0,0x3e91d6cd,0x3e7d0528,0x3e8cb1ab,0x3e5a8b0f,0x3e73f44d,0x3e78287f,0x3e7d4cbc, 0x3e813e10,0x3e8432dd,0x3e86b9dd,0x3e8ab210,0x3e8f4dfa,0x3e96033f,0x3e9bbb8f,0x3ea4de02,0x3ea142cb,0x3e9cd4df,0x3e907f6e,0x3e8fa9dc,0x3ebdaa9a,0x3ebfeeda,0x3ed0916c,0x3e75db63,0x3e480dca,0x3e2988e2,0x3e26520e,0x3e0dd0cb,0x3e26478f,0x3e29df32,0x3e22ee20,0x3e2b4fa5,0x3e13289b, Loading Loading @@ -16596,6 +16597,7 @@ const Word32 defaultHRIR_rom_EL32_fx[HRTF_MODEL_N_SECTIONS * 470] = { 36665,35511,35696,35348,36231,32192,30868,31825,30821,36350, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER32[HRTF_MODEL_N_SECTIONS * 470] = { 0x3ea94c25,0x3e96b736,0x3eabfa9d,0x3e9ec2da,0x3ea826c7,0x3ece0a69,0x3e92fef6,0x3e94d8e1,0x3ebb67a4,0x3ebf2c92,0x3eb94660,0x3ea8ba00,0x3eb7eebc,0x3ebc8bac,0x3eb98a48,0x3e8f3530,0x3e887888,0x3ecc0f62,0x3e94f674,0x3e8d711b,0x3e919dd2,0x3e81a091,0x3e8ba634,0x3e8f2fd4,0x3e9246c0, 0x3e956a5f,0x3e983291,0x3e9c92d7,0x3ea16c7a,0x3ea72b44,0x3eadd775,0x3eb46e52,0x3ec12acc,0x3eb92832,0x3eb44296,0x3eab288c,0x3ea5572d,0x3edfc124,0x3edb5665,0x3ed8a156,0x3e95c9c8,0x3e80cfca,0x3e62c544,0x3e577720,0x3e3e0ba3,0x3e470f96,0x3e48bbfc,0x3e441407,0x3e491480,0x3e3768b5, Loading Loading @@ -20086,6 +20088,7 @@ const Word32 defaultHRIR_rom_EL16_fx[HRTF_MODEL_N_SECTIONS * 470] = { 150002,147010,147650,145866,151212,135474,130448,130966,127672,150044, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470] = { 0x3ec4944e,0x3eadb6cc,0x3eb770ae,0x3ea07c9a,0x3e9de4d6,0x3eb2cce4,0x3e9537c2,0x3e8fc0f8,0x3ea64bd8,0x3ea6f057,0x3ea48095,0x3ea1483b,0x3ea6b212,0x3ea94fa2,0x3ea700d8,0x3e8c6d20,0x3e8d2e06,0x3eb4be76,0x3e937c88,0x3e92d2c5,0x3ea498f4,0x3e9b7732,0x3ea1e40d,0x3ea4802b,0x3ea7796a, 0x3eab1551,0x3eaf630e,0x3eb3aba4,0x3eb86b96,0x3ebdc1e5,0x3ec281f8,0x3ec740fd,0x3ecf6748,0x3ecaa2f1,0x3ec603de,0x3ebcc27d,0x3eb729e4,0x3ee9b908,0x3ee2461e,0x3ec77a42,0x3eac7df0,0x3e9380d8,0x3e8a4836,0x3e82c8c3,0x3e70d8da,0x3e6dd2ad,0x3e69f304,0x3e6b7f59,0x3e6d1352,0x3e6675a5, lib_rend/ivas_rom_binauralRenderer.c +2 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ #define WMC_TOOL_SKIP #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif Loading Loading @@ -46960,7 +46960,7 @@ const int16_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX] = #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif lib_rend/ivas_rom_binaural_crend_head.c +3392 −3048 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_rend/ivas_rom_binaural_crend_head.h +13 −13 Original line number Diff line number Diff line Loading @@ -283,12 +283,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_48kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS][2885]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS][2885]; /* Sample Rate = 32000 */ Loading @@ -299,12 +299,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_32kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS][2868]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS][2868]; /* Sample Rate = 16000 */ Loading @@ -315,12 +315,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_16kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_16kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1800]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1800]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS][2474]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS][2474]; /********************** default HRIR reverb rom tables **********************/ Loading Loading
lib_rend/ivas_crend.c +60 −77 Original line number Diff line number Diff line Loading @@ -92,9 +92,7 @@ ivas_error ivas_hrtf_init( FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { #ifdef FIX_POINT_HRTF_FILE_FORMAT hHrtf->inv_diffuse_weight[0][i] = 0; hHrtf->inv_diffuse_weight[1][i] = 0; move16(); hHrtf->inv_diffuse_weight[j][i] = 0; move16(); #endif hHrtf->num_iterations[i][j] = 0; Loading @@ -102,6 +100,9 @@ ivas_error ivas_hrtf_init( hHrtf->pIndex_frequency_max[i][j] = NULL; hHrtf->pOut_to_bin_re[i][j] = NULL; hHrtf->pOut_to_bin_im[i][j] = NULL; hHrtf->pIndex_frequency_max_dyn[i][j] = NULL; hHrtf->pOut_to_bin_re_dyn[i][j] = NULL; hHrtf->pOut_to_bin_im_dyn[i][j] = NULL; } } Loading @@ -113,6 +114,11 @@ ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_re[j] = NULL; hHrtf->pOut_to_bin_diffuse_im[j] = NULL; hHrtf->pIndex_frequency_max_diffuse_dyn[j] = NULL; hHrtf->pOut_to_bin_diffuse_re_dyn[j] = NULL; hHrtf->pOut_to_bin_diffuse_im_dyn[j] = NULL; } #ifdef FIX_POINT_HRTF_FILE_FORMAT Loading Loading @@ -1463,15 +1469,15 @@ static ivas_error ivas_rend_initCrend( #ifdef FIX_POINT_HRTF_FILE_FORMAT if ( hHrtf->factor_Q_latency_s != 0 ) { hHrtf->factor_Q_latency_s = sub( hHrtf->factor_Q_latency_s, 31 ); hHrtf->factor_Q_latency_s = sub( 31, hHrtf->factor_Q_latency_s ); } if ( hHrtf->factor_Q_inv_diffuse_weight != 0 ) { hHrtf->factor_Q_inv_diffuse_weight = sub( hHrtf->factor_Q_inv_diffuse_weight, 15 ); hHrtf->factor_Q_inv_diffuse_weight = sub( 15, hHrtf->factor_Q_inv_diffuse_weight ); } if ( hHrtf->factor_Q_pOut_to_bin != 0 ) { hHrtf->factor_Q_pOut_to_bin = sub( 31, hHrtf->factor_Q_pOut_to_bin ); hHrtf->factor_Q_pOut_to_bin = sub( 15, hHrtf->factor_Q_pOut_to_bin ); } #endif pCrend->hHrtfCrend = hHrtf; Loading Loading @@ -2023,6 +2029,7 @@ ivas_error ivas_rend_openCrend( error = IVAS_ERR_OK; move16(); IF( NE_32( ( error = ivas_rend_initCrendWrapper( pCrend ) ), IVAS_ERR_OK ) ) { return error; Loading @@ -2041,17 +2048,6 @@ ivas_error ivas_rend_openCrend( hCrend = ( *pCrend )->hCrend; hHrtf = ( *pCrend )->hHrtfCrend; IF( hHrtf != NULL ) { IF( NE_32( ( error = ivas_rend_initCrend( *pCrend, inConfig, outConfig, hSetOfHRTF, output_Fs ) ), IVAS_ERR_OK ) ) { return error; } } hCrend = ( *pCrend )->hCrend; hHrtf = ( *pCrend )->hHrtfCrend; IF( hHrtf != NULL ) { max_total_ir_len = imult1616( hHrtf->max_num_iterations, subframe_length ); Loading Loading @@ -2316,12 +2312,13 @@ static ivas_error ivas_rend_crendConvolver( Word16 i, j, k, m; Word16 subframe_length, idx_in; Word16 lfe_idx_in; Word16 offset, offset_in, offset_diffuse; Word32 offset, offset_in, offset_diffuse; Word16 nchan_in, nchan_out; const Word32 *pIn; Word32 *pFreq_buf_re, *pFreq_buf_im; #ifdef FIX_POINT_HRTF_FILE_FORMAT Word32 *pFreq_buf2_re, *pFreq_buf2_im; Word32 *pFreq_buf3_re, *pFreq_buf3_im; #endif const Word16 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Loading @@ -2329,7 +2326,7 @@ static ivas_error ivas_rend_crendConvolver( Word32 tmp_out_im[L_FRAME48k]; CREND_HANDLE hCrend; ivas_error error; Word64 tmp64; hCrend = pCrend->hCrend; Loading Loading @@ -2366,62 +2363,43 @@ static ivas_error ivas_rend_crendConvolver( IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; set_val_Word32( &hCrend->freq_buffer_re_diffuse[0][offset_diffuse], 0, subframe_length ); set_val_Word32( &hCrend->freq_buffer_im_diffuse[0][offset_diffuse], 0, subframe_length ); if ( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { set_val_Word32( &hCrend->freq_buffer_re_diffuse[1][offset_diffuse], 0, subframe_length ); set_val_Word32( &hCrend->freq_buffer_im_diffuse[1][offset_diffuse], 0, subframe_length ); pFreq_buf3_re = &hCrend->freq_buffer_re_diffuse[1][offset_diffuse]; pFreq_buf3_im = &hCrend->freq_buffer_im_diffuse[1][offset_diffuse]; } } i = 0; if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; } else { pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse]; pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse]; pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse[1][offset_diffuse]; pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse[1][offset_diffuse]; } for ( idx_in = 0; idx_in < nchan_in; idx_in++ ) FOR( idx_in = 0; idx_in < nchan_in; idx_in++ ) { pIn = &pcm_in[idx_in][i_ts * subframe_length]; if ( idx_in != lfe_idx_in ) { if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) pFreq_buf_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf_im = &hCrend->freq_buffer_im[i][offset]; IF( NE_16( idx_in, lfe_idx_in ) ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_im[k] ); } pFreq_buf2_re[k] = Madd_32_16( pFreq_buf2_re[k], pFreq_buf_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ); pFreq_buf2_im[k] = Madd_32_16( pFreq_buf2_im[k], pFreq_buf_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ); } else IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_re[k] ); pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[0][i] ), pFreq_buf_im[k] ); pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_buf2_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ), pFreq_buf_re[k] ); pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_buf2_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ), pFreq_buf_im[k] ); pFreq_buf3_re[k] = Madd_32_16( pFreq_buf3_re[k], pFreq_buf_re[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ); pFreq_buf3_im[k] = Madd_32_16( pFreq_buf3_im[k], pFreq_buf_im[k], pCrend->hHrtfCrend->inv_diffuse_weight[1][i] ); } } } pFreq_buf2_re = &hCrend->freq_buffer_re[i][offset]; pFreq_buf2_im = &hCrend->freq_buffer_im[i][offset]; ivas_mdft_fx( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); #ifdef DEBUGGING Loading @@ -2432,29 +2410,26 @@ static ivas_error ivas_rend_crendConvolver( } } if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) 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 ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shl( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shl( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); } } else IF( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) { for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) 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 ); pFreq_buf_im[k] = L_shr( pFreq_buf_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shr( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shr( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_re[k] = L_shl( pFreq_buf2_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf2_im[k] = L_shl( pFreq_buf2_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf3_re[k] = L_shl( pFreq_buf3_re[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); pFreq_buf3_im[k] = L_shl( pFreq_buf3_im[k], pCrend->hHrtfCrend->factor_Q_inv_diffuse_weight ); } } } for ( j = 0; j < nchan_out; j++ ) FOR( j = 0; j < nchan_out; j++ ) { set_zero_fx( tmp_out_re, subframe_length ); set_zero_fx( tmp_out_im, subframe_length ); Loading @@ -2470,7 +2445,7 @@ static ivas_error ivas_rend_crendConvolver( { offset_in = add( add( hCrend->delay_line_rw_index, sub( pCrend->hHrtfCrend->max_num_iterations, pCrend->hHrtfCrend->num_iterations[i][j] ) ), add( m, 1 ) ); offset_in = offset_in % ( pCrend->hHrtfCrend->max_num_iterations ); offset_in = imult1616( offset_in, subframe_length ); offset_in = imult3216( offset_in, subframe_length ); pFreq_buf_re = &hCrend->freq_buffer_re[i][offset_in]; pFreq_buf_im = &hCrend->freq_buffer_im[i][offset_in]; pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_re[i][j][offset]; Loading @@ -2478,10 +2453,14 @@ static ivas_error ivas_rend_crendConvolver( FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max[i][j][m]; k++ ) { tmp_out_re[k] = L_add( Msub_32_32( Mpy_32_16_r( pFreq_buf_re[k], pFreq_filt_re[k] ), pFreq_buf_im[k], pFreq_filt_im[k] ), tmp_out_re[k] ); tmp_out_im[k] = L_add( Madd_32_32( Mpy_32_16_r( pFreq_buf_re[k], pFreq_filt_im[k] ), pFreq_buf_im[k], pFreq_filt_re[k] ), tmp_out_im[k] ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_re[k] ); tmp64 = W_msu_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_im[k] ); tmp_out_re[k] = L_add( tmp_out_re[k], W_sat_m( tmp64 ) ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_im[k] ); tmp64 = W_mac_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_re[k] ); tmp_out_im[k] = L_add( tmp_out_im[k], W_sat_m( tmp64 ) ); } offset = add( offset, k ); offset = L_add( offset, k ); } i = add( i, 1 ); } Loading @@ -2507,12 +2486,16 @@ static ivas_error ivas_rend_crendConvolver( pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_re[j][offset]; pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_im[j][offset]; for ( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ ) FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ ) { tmp_out_re[k] = L_add( Msub_32_32( Mpy_32_32( pFreq_buf_re[k], pFreq_filt_re[k] ), pFreq_buf_im[k], pFreq_filt_im[k] ), tmp_out_re[k] ); tmp_out_im[k] = L_add( Madd_32_32( Mpy_32_32( pFreq_buf_re[k], pFreq_filt_im[k] ), pFreq_buf_im[k], pFreq_filt_re[k] ), tmp_out_im[k] ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_re[k] ); tmp64 = W_msu_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_im[k] ); tmp_out_re[k] = L_add( tmp_out_re[k], W_sat_m( tmp64 ) ); tmp64 = W_mult_32_16( pFreq_buf_re[k], pFreq_filt_im[k] ); tmp64 = W_mac_32_16( tmp64, pFreq_buf_im[k], pFreq_filt_re[k] ); tmp_out_im[k] = L_add( tmp_out_im[k], W_sat_m( tmp64 ) ); } offset = add( offset, k ); offset = L_add( offset, k ); } ivas_imdft_fx( tmp_out_re, tmp_out_im, pOut, subframe_length ); Loading
lib_rend/ivas_rom_TdBinauralRenderer.c +4 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ *------------------------------------------------------------------------*/ /* TD renderer default HRIR model */ #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif #ifdef IVAS_FLOAT_FIXED Loading Loading @@ -9874,6 +9874,7 @@ const Word32 defaultHRIR_rom_EL48_fx[HRTF_MODEL_N_SECTIONS * 470] = { 48333,42517,45261,43583,42144,31960,26373,40707,32340,28572, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER48[HRTF_MODEL_N_SECTIONS * 470] = { 0x3e8fdae6,0x3e7ca020,0x3ea71010,0x3e8e5f72,0x3ea8df86,0x3eedf18e,0x3e870070,0x3e91155d,0x3ed7ad3d,0x3ee09b29,0x3edabee2,0x3ebe2887,0x3eda153a,0x3edf229b,0x3ed98d74,0x3e8cd9eb,0x3e76d3fe,0x3ef246f0,0x3e91d6cd,0x3e7d0528,0x3e8cb1ab,0x3e5a8b0f,0x3e73f44d,0x3e78287f,0x3e7d4cbc, 0x3e813e10,0x3e8432dd,0x3e86b9dd,0x3e8ab210,0x3e8f4dfa,0x3e96033f,0x3e9bbb8f,0x3ea4de02,0x3ea142cb,0x3e9cd4df,0x3e907f6e,0x3e8fa9dc,0x3ebdaa9a,0x3ebfeeda,0x3ed0916c,0x3e75db63,0x3e480dca,0x3e2988e2,0x3e26520e,0x3e0dd0cb,0x3e26478f,0x3e29df32,0x3e22ee20,0x3e2b4fa5,0x3e13289b, Loading Loading @@ -16596,6 +16597,7 @@ const Word32 defaultHRIR_rom_EL32_fx[HRTF_MODEL_N_SECTIONS * 470] = { 36665,35511,35696,35348,36231,32192,30868,31825,30821,36350, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER32[HRTF_MODEL_N_SECTIONS * 470] = { 0x3ea94c25,0x3e96b736,0x3eabfa9d,0x3e9ec2da,0x3ea826c7,0x3ece0a69,0x3e92fef6,0x3e94d8e1,0x3ebb67a4,0x3ebf2c92,0x3eb94660,0x3ea8ba00,0x3eb7eebc,0x3ebc8bac,0x3eb98a48,0x3e8f3530,0x3e887888,0x3ecc0f62,0x3e94f674,0x3e8d711b,0x3e919dd2,0x3e81a091,0x3e8ba634,0x3e8f2fd4,0x3e9246c0, 0x3e956a5f,0x3e983291,0x3e9c92d7,0x3ea16c7a,0x3ea72b44,0x3eadd775,0x3eb46e52,0x3ec12acc,0x3eb92832,0x3eb44296,0x3eab288c,0x3ea5572d,0x3edfc124,0x3edb5665,0x3ed8a156,0x3e95c9c8,0x3e80cfca,0x3e62c544,0x3e577720,0x3e3e0ba3,0x3e470f96,0x3e48bbfc,0x3e441407,0x3e491480,0x3e3768b5, Loading Loading @@ -20086,6 +20088,7 @@ const Word32 defaultHRIR_rom_EL16_fx[HRTF_MODEL_N_SECTIONS * 470] = { 150002,147010,147650,145866,151212,135474,130448,130966,127672,150044, }; #endif // IVAS_FLOAT_FIXED const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470] = { 0x3ec4944e,0x3eadb6cc,0x3eb770ae,0x3ea07c9a,0x3e9de4d6,0x3eb2cce4,0x3e9537c2,0x3e8fc0f8,0x3ea64bd8,0x3ea6f057,0x3ea48095,0x3ea1483b,0x3ea6b212,0x3ea94fa2,0x3ea700d8,0x3e8c6d20,0x3e8d2e06,0x3eb4be76,0x3e937c88,0x3e92d2c5,0x3ea498f4,0x3e9b7732,0x3ea1e40d,0x3ea4802b,0x3ea7796a, 0x3eab1551,0x3eaf630e,0x3eb3aba4,0x3eb86b96,0x3ebdc1e5,0x3ec281f8,0x3ec740fd,0x3ecf6748,0x3ecaa2f1,0x3ec603de,0x3ebcc27d,0x3eb729e4,0x3ee9b908,0x3ee2461e,0x3ec77a42,0x3eac7df0,0x3e9380d8,0x3e8a4836,0x3e82c8c3,0x3e70d8da,0x3e6dd2ad,0x3e69f304,0x3e6b7f59,0x3e6d1352,0x3e6675a5,
lib_rend/ivas_rom_binauralRenderer.c +2 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ #define WMC_TOOL_SKIP #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif Loading Loading @@ -46960,7 +46960,7 @@ const int16_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX] = #ifdef DEBUGGING /* Generated on 04-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ /* Generated on 05-Sep-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */ #endif
lib_rend/ivas_rom_binaural_crend_head.c +3392 −3048 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_rend/ivas_rom_binaural_crend_head.h +13 −13 Original line number Diff line number Diff line Loading @@ -283,12 +283,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_48kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS][2885]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS][2885]; /* Sample Rate = 32000 */ Loading @@ -299,12 +299,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_32kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS][2868]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS][2868]; /* Sample Rate = 16000 */ Loading @@ -315,12 +315,12 @@ extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CH extern const Word16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_Q_16kHz; extern const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; extern const Word16 *CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]; extern const Word16 CRendBin_Combined_BRIR_coeff_Q_16kHz; extern const Word16 CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1800]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1800]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; extern Word16 *CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; extern const Word16 CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; extern const Word16 CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS][2474]; extern Word16 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS][2474]; /********************** default HRIR reverb rom tables **********************/ Loading