Loading lib_enc/ivas_osba_enc.c +0 −97 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ * Local function prototypes *------------------------------------------------------------------------*/ static void ivas_osba_energy_and_ratio_est( OSBA_ENC_HANDLE hOSba, float data_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_inp ); static void ivas_osba_render_ism_to_sba( float data_in_f[][L_FRAME48k], float data_out_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_sba, const int16_t nchan_ism, ISM_METADATA_HANDLE hIsmMeta[], float prev_gains[][MAX_INPUT_CHANNELS], const float interpolator[L_FRAME48k] ); /*-------------------------------------------------------------------* Loading Loading @@ -443,101 +441,6 @@ void ivas_osba_enc( * Local functions *--------------------------------------------------------------------------*/ /* Estimate energies and ratios */ static void ivas_osba_energy_and_ratio_est( OSBA_ENC_HANDLE hOSba, float data_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_inp ) { int16_t ts, i, j, k; int16_t num_freq_bands; int16_t l_ts; float *pcm_in[MAX_NUM_OBJECTS]; float Chnl_RealBuffer[MAX_NUM_OBJECTS][DIRAC_NO_FB_BANDS_MAX]; float Chnl_ImagBuffer[MAX_NUM_OBJECTS][DIRAC_NO_FB_BANDS_MAX]; float *p_Chnl_RealBuffer[MAX_NUM_OBJECTS]; float *p_Chnl_ImagBuffer[MAX_NUM_OBJECTS]; int16_t block_m_idx; int16_t mrange[2], brange[2]; float tftile_energy; float ism_ratio_sum; num_freq_bands = hOSba->nbands; l_ts = input_frame / MDFT_NO_COL_MAX; for ( i = 0; i < nchan_inp; i++ ) { pcm_in[i] = &data_f[i][0]; p_Chnl_RealBuffer[i] = &Chnl_RealBuffer[i][0]; p_Chnl_ImagBuffer[i] = &Chnl_ImagBuffer[i][0]; } /* do processing for all subframes */ for ( block_m_idx = 0; block_m_idx < hOSba->nSubframes; block_m_idx++ ) { mrange[0] = hOSba->block_grouping[block_m_idx]; mrange[1] = hOSba->block_grouping[block_m_idx + 1]; /* Reset variable */ for ( i = 0; i < hOSba->nbands; i++ ) { set_zero( hOSba->energy_ratio_ism[block_m_idx][i], nchan_inp ); } set_zero( hOSba->energy_ism[block_m_idx], num_freq_bands ); /* Compute TF transform and energy */ for ( ts = mrange[0]; ts < mrange[1]; ts++ ) { ivas_fb_mixer_get_windowed_fr( hOSba->hFbMixer, pcm_in, p_Chnl_RealBuffer, p_Chnl_ImagBuffer, l_ts, l_ts, hOSba->hFbMixer->fb_cfg->num_in_chans ); ivas_fb_mixer_update_prior_input( hOSba->hFbMixer, pcm_in, l_ts, hOSba->hFbMixer->fb_cfg->num_in_chans ); for ( i = 0; i < nchan_inp; i++ ) { pcm_in[i] += l_ts; } for ( i = 0; i < num_freq_bands; i++ ) { brange[0] = hOSba->band_grouping[i]; brange[1] = hOSba->band_grouping[i + 1]; for ( j = brange[0]; j < brange[1]; j++ ) { for ( k = 0; k < nchan_inp; k++ ) { tftile_energy = Chnl_RealBuffer[k][j] * Chnl_RealBuffer[k][j] + Chnl_ImagBuffer[k][j] * Chnl_ImagBuffer[k][j]; hOSba->energy_ism[block_m_idx][i] += tftile_energy; hOSba->energy_ratio_ism[block_m_idx][i][k] += tftile_energy; } } } } /* Compute ISM energy ratios */ for ( i = 0; i < num_freq_bands; i++ ) { ism_ratio_sum = 0.0f; for ( j = 0; j < nchan_inp; j++ ) { hOSba->energy_ratio_ism[block_m_idx][i][j] /= ( hOSba->energy_ism[block_m_idx][i] + EPSILON ); ism_ratio_sum += hOSba->energy_ratio_ism[block_m_idx][i][j]; } if ( ism_ratio_sum == 0.0f ) { float temp_ism_ratio = 1.0f / ( (float) nchan_inp ); for ( j = 0; j < nchan_inp; j++ ) { hOSba->energy_ratio_ism[block_m_idx][i][j] = temp_ism_ratio; } } } } return; } /* Render ISMs to SBA */ static void ivas_osba_render_ism_to_sba( float data_in_f[][L_FRAME48k], Loading Loading
lib_enc/ivas_osba_enc.c +0 −97 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ * Local function prototypes *------------------------------------------------------------------------*/ static void ivas_osba_energy_and_ratio_est( OSBA_ENC_HANDLE hOSba, float data_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_inp ); static void ivas_osba_render_ism_to_sba( float data_in_f[][L_FRAME48k], float data_out_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_sba, const int16_t nchan_ism, ISM_METADATA_HANDLE hIsmMeta[], float prev_gains[][MAX_INPUT_CHANNELS], const float interpolator[L_FRAME48k] ); /*-------------------------------------------------------------------* Loading Loading @@ -443,101 +441,6 @@ void ivas_osba_enc( * Local functions *--------------------------------------------------------------------------*/ /* Estimate energies and ratios */ static void ivas_osba_energy_and_ratio_est( OSBA_ENC_HANDLE hOSba, float data_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_inp ) { int16_t ts, i, j, k; int16_t num_freq_bands; int16_t l_ts; float *pcm_in[MAX_NUM_OBJECTS]; float Chnl_RealBuffer[MAX_NUM_OBJECTS][DIRAC_NO_FB_BANDS_MAX]; float Chnl_ImagBuffer[MAX_NUM_OBJECTS][DIRAC_NO_FB_BANDS_MAX]; float *p_Chnl_RealBuffer[MAX_NUM_OBJECTS]; float *p_Chnl_ImagBuffer[MAX_NUM_OBJECTS]; int16_t block_m_idx; int16_t mrange[2], brange[2]; float tftile_energy; float ism_ratio_sum; num_freq_bands = hOSba->nbands; l_ts = input_frame / MDFT_NO_COL_MAX; for ( i = 0; i < nchan_inp; i++ ) { pcm_in[i] = &data_f[i][0]; p_Chnl_RealBuffer[i] = &Chnl_RealBuffer[i][0]; p_Chnl_ImagBuffer[i] = &Chnl_ImagBuffer[i][0]; } /* do processing for all subframes */ for ( block_m_idx = 0; block_m_idx < hOSba->nSubframes; block_m_idx++ ) { mrange[0] = hOSba->block_grouping[block_m_idx]; mrange[1] = hOSba->block_grouping[block_m_idx + 1]; /* Reset variable */ for ( i = 0; i < hOSba->nbands; i++ ) { set_zero( hOSba->energy_ratio_ism[block_m_idx][i], nchan_inp ); } set_zero( hOSba->energy_ism[block_m_idx], num_freq_bands ); /* Compute TF transform and energy */ for ( ts = mrange[0]; ts < mrange[1]; ts++ ) { ivas_fb_mixer_get_windowed_fr( hOSba->hFbMixer, pcm_in, p_Chnl_RealBuffer, p_Chnl_ImagBuffer, l_ts, l_ts, hOSba->hFbMixer->fb_cfg->num_in_chans ); ivas_fb_mixer_update_prior_input( hOSba->hFbMixer, pcm_in, l_ts, hOSba->hFbMixer->fb_cfg->num_in_chans ); for ( i = 0; i < nchan_inp; i++ ) { pcm_in[i] += l_ts; } for ( i = 0; i < num_freq_bands; i++ ) { brange[0] = hOSba->band_grouping[i]; brange[1] = hOSba->band_grouping[i + 1]; for ( j = brange[0]; j < brange[1]; j++ ) { for ( k = 0; k < nchan_inp; k++ ) { tftile_energy = Chnl_RealBuffer[k][j] * Chnl_RealBuffer[k][j] + Chnl_ImagBuffer[k][j] * Chnl_ImagBuffer[k][j]; hOSba->energy_ism[block_m_idx][i] += tftile_energy; hOSba->energy_ratio_ism[block_m_idx][i][k] += tftile_energy; } } } } /* Compute ISM energy ratios */ for ( i = 0; i < num_freq_bands; i++ ) { ism_ratio_sum = 0.0f; for ( j = 0; j < nchan_inp; j++ ) { hOSba->energy_ratio_ism[block_m_idx][i][j] /= ( hOSba->energy_ism[block_m_idx][i] + EPSILON ); ism_ratio_sum += hOSba->energy_ratio_ism[block_m_idx][i][j]; } if ( ism_ratio_sum == 0.0f ) { float temp_ism_ratio = 1.0f / ( (float) nchan_inp ); for ( j = 0; j < nchan_inp; j++ ) { hOSba->energy_ratio_ism[block_m_idx][i][j] = temp_ism_ratio; } } } } return; } /* Render ISMs to SBA */ static void ivas_osba_render_ism_to_sba( float data_in_f[][L_FRAME48k], Loading