Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ #define ALIGN_SID_SIZE /* Issue 111: make all DTX modes use one SID frame bitrate (5.2 kbps) */ #define FIX_I78 /* Issue 78: replace malloc by count_malloc to fix memory counting in DirAC*/ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif lib_dec/ivas_dirac_dec.c +128 −1 Original line number Diff line number Diff line Loading @@ -1120,16 +1120,37 @@ static void ivas_dirac_alloc_mem( hDirAC_mem->frame_dec_f = NULL; if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->cy_auto_dir_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_auto_dir_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_auto_dir_smooth, size ); #ifdef FIX_I78 hDirAC_mem->proto_power_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->proto_power_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->proto_power_smooth, size ); #ifdef FIX_I78 hDirAC_mem->proto_power_diff_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->proto_power_diff_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->proto_power_diff_smooth, size ); #ifdef FIX_I78 hDirAC_mem->direct_responses_square = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->direct_responses_square = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->direct_responses_square, size ); #ifdef FIX_I78 hDirAC_mem->frame_dec_f = (float *) count_malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->frame_dec_f = (float *) malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ); #endif } hDirAC->h_output_synthesis_psd_state.proto_power_smooth = hDirAC_mem->proto_power_smooth; hDirAC->h_output_synthesis_psd_state.proto_power_diff_smooth = hDirAC_mem->proto_power_diff_smooth; Loading @@ -1137,42 +1158,75 @@ static void ivas_dirac_alloc_mem( hDirAC->h_output_synthesis_psd_state.direct_responses_square = hDirAC_mem->direct_responses_square; /* Target and smoothed nrg factors/gains */ #ifdef FIX_I78 hDirAC_mem->cy_cross_dir_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_cross_dir_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_cross_dir_smooth, size ); if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->cy_auto_diff_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_auto_diff_smooth, size ); } else { #ifdef FIX_I78 hDirAC_mem->cy_auto_diff_smooth = (float *) count_malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ); #else hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ); #endif set_zero( hDirAC_mem->cy_auto_diff_smooth, num_outputs_diff * num_freq_bands_diff ); } hDirAC->h_output_synthesis_psd_state.cy_cross_dir_smooth = hDirAC_mem->cy_cross_dir_smooth; hDirAC->h_output_synthesis_psd_state.cy_auto_diff_smooth = hDirAC_mem->cy_auto_diff_smooth; /*Responses (gains/factors)*/ #ifdef FIX_I78 hDirAC_mem->direct_responses = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->direct_responses = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->direct_responses, size ); hDirAC->h_output_synthesis_psd_state.direct_responses = hDirAC_mem->direct_responses; /* Prototypes */ #ifdef FIX_I78 hDirAC_mem->proto_direct_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ); #else hDirAC_mem->proto_direct_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ); #endif if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { #ifdef FIX_I78 hDirAC_mem->proto_diffuse_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ); #else hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ); #endif } else { #ifdef FIX_I78 hDirAC_mem->proto_diffuse_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ); #endif } hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f = hDirAC_mem->proto_direct_buffer_f; hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f = hDirAC_mem->proto_diffuse_buffer_f; /* Gains/power factors*/ #ifdef FIX_I78 hDirAC_mem->direct_power_factor = (float *) count_malloc( sizeof( float ) * num_freq_bands ); hDirAC_mem->diffuse_power_factor = (float *) count_malloc( sizeof( float ) * num_freq_bands ); #else hDirAC_mem->direct_power_factor = (float *) malloc( sizeof( float ) * num_freq_bands ); hDirAC_mem->diffuse_power_factor = (float *) malloc( sizeof( float ) * num_freq_bands ); #endif hDirAC->h_output_synthesis_psd_state.direct_power_factor = hDirAC_mem->direct_power_factor; hDirAC->h_output_synthesis_psd_state.diffuse_power_factor = hDirAC_mem->diffuse_power_factor; Loading @@ -1180,20 +1234,37 @@ static void ivas_dirac_alloc_mem( hDirAC_mem->onset_filter = NULL; if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * 2 * num_freq_bands ); hDirAC_mem->onset_filter = (float *) count_malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ); hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ); #endif } else { if ( num_protos_dir > 2 ) { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * 5 * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 5 * num_freq_bands ); #endif } else { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * num_freq_bands ); #endif } #ifdef FIX_I78 hDirAC_mem->onset_filter = (float *) count_malloc( sizeof( float ) * 2 * num_freq_bands ); #else hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ); #endif } return; Loading @@ -1205,59 +1276,115 @@ static void ivas_dirac_free_mem( { if ( hDirAC_mem->cy_auto_dir_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_auto_dir_smooth ); #else free( hDirAC_mem->cy_auto_dir_smooth ); #endif } if ( hDirAC_mem->proto_power_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_power_smooth ); #else free( hDirAC_mem->proto_power_smooth ); #endif } if ( hDirAC_mem->proto_power_diff_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_power_diff_smooth ); #else free( hDirAC_mem->proto_power_diff_smooth ); #endif } if ( hDirAC_mem->direct_responses_square != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_responses_square ); #else free( hDirAC_mem->direct_responses_square ); #endif } if ( hDirAC_mem->frame_dec_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->frame_dec_f ); #else free( hDirAC_mem->frame_dec_f ); #endif } if ( hDirAC_mem->cy_cross_dir_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_cross_dir_smooth ); #else free( hDirAC_mem->cy_cross_dir_smooth ); #endif } if ( hDirAC_mem->cy_auto_diff_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_auto_diff_smooth ); #else free( hDirAC_mem->cy_auto_diff_smooth ); #endif } if ( hDirAC_mem->direct_responses != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_responses ); #else free( hDirAC_mem->direct_responses ); #endif } if ( hDirAC_mem->proto_direct_buffer_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_direct_buffer_f ); #else free( hDirAC_mem->proto_direct_buffer_f ); #endif } if ( hDirAC_mem->proto_diffuse_buffer_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_diffuse_buffer_f ); #else free( hDirAC_mem->proto_diffuse_buffer_f ); #endif } if ( hDirAC_mem->direct_power_factor != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_power_factor ); #else free( hDirAC_mem->direct_power_factor ); #endif } if ( hDirAC_mem->diffuse_power_factor != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->diffuse_power_factor ); #else free( hDirAC_mem->diffuse_power_factor ); #endif } if ( hDirAC_mem->reference_power != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->reference_power ); #else free( hDirAC_mem->reference_power ); #endif } if ( hDirAC_mem->onset_filter != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->onset_filter ); #else free( hDirAC_mem->onset_filter ); #endif } return; Loading Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ #define ALIGN_SID_SIZE /* Issue 111: make all DTX modes use one SID frame bitrate (5.2 kbps) */ #define FIX_I78 /* Issue 78: replace malloc by count_malloc to fix memory counting in DirAC*/ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif
lib_dec/ivas_dirac_dec.c +128 −1 Original line number Diff line number Diff line Loading @@ -1120,16 +1120,37 @@ static void ivas_dirac_alloc_mem( hDirAC_mem->frame_dec_f = NULL; if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->cy_auto_dir_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_auto_dir_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_auto_dir_smooth, size ); #ifdef FIX_I78 hDirAC_mem->proto_power_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->proto_power_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->proto_power_smooth, size ); #ifdef FIX_I78 hDirAC_mem->proto_power_diff_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->proto_power_diff_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->proto_power_diff_smooth, size ); #ifdef FIX_I78 hDirAC_mem->direct_responses_square = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->direct_responses_square = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->direct_responses_square, size ); #ifdef FIX_I78 hDirAC_mem->frame_dec_f = (float *) count_malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->frame_dec_f = (float *) malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ); #endif } hDirAC->h_output_synthesis_psd_state.proto_power_smooth = hDirAC_mem->proto_power_smooth; hDirAC->h_output_synthesis_psd_state.proto_power_diff_smooth = hDirAC_mem->proto_power_diff_smooth; Loading @@ -1137,42 +1158,75 @@ static void ivas_dirac_alloc_mem( hDirAC->h_output_synthesis_psd_state.direct_responses_square = hDirAC_mem->direct_responses_square; /* Target and smoothed nrg factors/gains */ #ifdef FIX_I78 hDirAC_mem->cy_cross_dir_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_cross_dir_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_cross_dir_smooth, size ); if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->cy_auto_diff_smooth = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->cy_auto_diff_smooth, size ); } else { #ifdef FIX_I78 hDirAC_mem->cy_auto_diff_smooth = (float *) count_malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ); #else hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ); #endif set_zero( hDirAC_mem->cy_auto_diff_smooth, num_outputs_diff * num_freq_bands_diff ); } hDirAC->h_output_synthesis_psd_state.cy_cross_dir_smooth = hDirAC_mem->cy_cross_dir_smooth; hDirAC->h_output_synthesis_psd_state.cy_auto_diff_smooth = hDirAC_mem->cy_auto_diff_smooth; /*Responses (gains/factors)*/ #ifdef FIX_I78 hDirAC_mem->direct_responses = (float *) count_malloc( sizeof( float ) * size ); #else hDirAC_mem->direct_responses = (float *) malloc( sizeof( float ) * size ); #endif set_zero( hDirAC_mem->direct_responses, size ); hDirAC->h_output_synthesis_psd_state.direct_responses = hDirAC_mem->direct_responses; /* Prototypes */ #ifdef FIX_I78 hDirAC_mem->proto_direct_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ); #else hDirAC_mem->proto_direct_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ); #endif if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { #ifdef FIX_I78 hDirAC_mem->proto_diffuse_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ); #else hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ); #endif } else { #ifdef FIX_I78 hDirAC_mem->proto_diffuse_buffer_f = (float *) count_malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ); #endif } hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f = hDirAC_mem->proto_direct_buffer_f; hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f = hDirAC_mem->proto_diffuse_buffer_f; /* Gains/power factors*/ #ifdef FIX_I78 hDirAC_mem->direct_power_factor = (float *) count_malloc( sizeof( float ) * num_freq_bands ); hDirAC_mem->diffuse_power_factor = (float *) count_malloc( sizeof( float ) * num_freq_bands ); #else hDirAC_mem->direct_power_factor = (float *) malloc( sizeof( float ) * num_freq_bands ); hDirAC_mem->diffuse_power_factor = (float *) malloc( sizeof( float ) * num_freq_bands ); #endif hDirAC->h_output_synthesis_psd_state.direct_power_factor = hDirAC_mem->direct_power_factor; hDirAC->h_output_synthesis_psd_state.diffuse_power_factor = hDirAC_mem->diffuse_power_factor; Loading @@ -1180,20 +1234,37 @@ static void ivas_dirac_alloc_mem( hDirAC_mem->onset_filter = NULL; if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * 2 * num_freq_bands ); hDirAC_mem->onset_filter = (float *) count_malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ); hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ); #endif } else { if ( num_protos_dir > 2 ) { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * 5 * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 5 * num_freq_bands ); #endif } else { #ifdef FIX_I78 hDirAC_mem->reference_power = (float *) count_malloc( sizeof( float ) * num_freq_bands ); #else hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * num_freq_bands ); #endif } #ifdef FIX_I78 hDirAC_mem->onset_filter = (float *) count_malloc( sizeof( float ) * 2 * num_freq_bands ); #else hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ); #endif } return; Loading @@ -1205,59 +1276,115 @@ static void ivas_dirac_free_mem( { if ( hDirAC_mem->cy_auto_dir_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_auto_dir_smooth ); #else free( hDirAC_mem->cy_auto_dir_smooth ); #endif } if ( hDirAC_mem->proto_power_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_power_smooth ); #else free( hDirAC_mem->proto_power_smooth ); #endif } if ( hDirAC_mem->proto_power_diff_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_power_diff_smooth ); #else free( hDirAC_mem->proto_power_diff_smooth ); #endif } if ( hDirAC_mem->direct_responses_square != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_responses_square ); #else free( hDirAC_mem->direct_responses_square ); #endif } if ( hDirAC_mem->frame_dec_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->frame_dec_f ); #else free( hDirAC_mem->frame_dec_f ); #endif } if ( hDirAC_mem->cy_cross_dir_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_cross_dir_smooth ); #else free( hDirAC_mem->cy_cross_dir_smooth ); #endif } if ( hDirAC_mem->cy_auto_diff_smooth != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->cy_auto_diff_smooth ); #else free( hDirAC_mem->cy_auto_diff_smooth ); #endif } if ( hDirAC_mem->direct_responses != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_responses ); #else free( hDirAC_mem->direct_responses ); #endif } if ( hDirAC_mem->proto_direct_buffer_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_direct_buffer_f ); #else free( hDirAC_mem->proto_direct_buffer_f ); #endif } if ( hDirAC_mem->proto_diffuse_buffer_f != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->proto_diffuse_buffer_f ); #else free( hDirAC_mem->proto_diffuse_buffer_f ); #endif } if ( hDirAC_mem->direct_power_factor != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->direct_power_factor ); #else free( hDirAC_mem->direct_power_factor ); #endif } if ( hDirAC_mem->diffuse_power_factor != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->diffuse_power_factor ); #else free( hDirAC_mem->diffuse_power_factor ); #endif } if ( hDirAC_mem->reference_power != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->reference_power ); #else free( hDirAC_mem->reference_power ); #endif } if ( hDirAC_mem->onset_filter != NULL ) { #ifdef FIX_I78 count_free( hDirAC_mem->onset_filter ); #else free( hDirAC_mem->onset_filter ); #endif } return; Loading