Loading apps/renderer.c +3 −3 Original line number Diff line number Diff line Loading @@ -1787,7 +1787,7 @@ IsmPositionProvider *IsmPositionProvider_open( IsmPositionProvider *ipp; uint16_t i; ipp = (IsmPositionProvider *) malloc_( sizeof( IsmPositionProvider ) ); ipp = (IsmPositionProvider *) malloc( sizeof( IsmPositionProvider ) ); ipp->frameCounter = 0; ipp->numObjects = 0; Loading Loading @@ -2182,8 +2182,8 @@ static void parseIsm( if ( parseUint32( line, &numberOfObjectPositionsToRead ) == 0 ) { positionProvider->numPositions[idx] = numberOfObjectPositionsToRead; positionProvider->positions[idx] = malloc_( numberOfObjectPositionsToRead * sizeof( IVAS_REND_AudioObjectPosition ) ); positionProvider->positionDurations[idx] = malloc_( numberOfObjectPositionsToRead * sizeof( uint16_t ) ); positionProvider->positions[idx] = malloc( numberOfObjectPositionsToRead * sizeof( IVAS_REND_AudioObjectPosition ) ); positionProvider->positionDurations[idx] = malloc( numberOfObjectPositionsToRead * sizeof( uint16_t ) ); for ( i = 0; i < numberOfObjectPositionsToRead; ++i ) { Loading lib_com/ivas_fb_mixer.c +10 −5 Original line number Diff line number Diff line Loading @@ -234,8 +234,8 @@ ivas_error ivas_FB_mixer_open( } else { #ifdef HODIRAC num_chs_alloc = max( fb_cfg->num_out_chans, fb_cfg->nchan_fb_in ); #ifdef SBA_TD_RESIDUAL num_chs_alloc = 1; /* only W channel processed for predicting YZX */ #else num_chs_alloc = fb_cfg->num_out_chans; #endif Loading Loading @@ -412,8 +412,8 @@ void ivas_FB_mixer_close( } else { #ifdef HODIRAC num_chs_alloc = max( fb_cfg->num_out_chans, fb_cfg->nchan_fb_in ); #ifdef SBA_TD_RESIDUAL num_chs_alloc = 1; /* only W channel processed for predicting YZX */ #else num_chs_alloc = fb_cfg->num_out_chans; #endif Loading @@ -439,7 +439,6 @@ void ivas_FB_mixer_close( { num_chs_alloc = 0; } else { #ifdef HODIRAC Loading Loading @@ -543,7 +542,11 @@ void ivas_fb_mixer_pcm_ingest( } else { #ifdef SBA_TD_RESIDUAL num_chs_ingest = 1; /* forward Filterbank MDFT only on W */ #else num_chs_ingest = fb_cfg->num_out_chans; #endif } for ( i = 0; i < fb_cfg->num_in_chans; i++ ) Loading Loading @@ -839,7 +842,9 @@ void ivas_fb_mixer_get_in_out_mapping( for ( i = 1; i < fb_cfg->num_out_chans; i++ ) { in_out_mixer_map[i][0] = 1; #ifndef SBA_TD_RESIDUAL in_out_mixer_map[i][order[i]] = 1; #endif } } } Loading lib_com/options.h +8 −3 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ #define EUALER2QUAT_FIX /* Dlb :fix for issue 430 issue in euler2quat, sign of quat y is inverted */ #define HR_METADATA /* Nok: encode directional MASA metadata with more bits at 384k and 512k */ #define SBA_TD_RESIDUAL /* Dlb : Issue 426: SBA encoder complexity optimization */ #define FIX_357_DTX_32K /* Eri: issue 357 - Forced LP-CNG at 32k */ #define FIX_435_ISM_MERGE_BUG /* Eri: Merge bug fix for ISM NULL metadata and tcx_only cases */ Loading @@ -181,8 +182,13 @@ #define FIX_411_EVS_BE_TESTS_ON_WINDOWS_FAILING /* Eri: Fix incorrect use of stack variable used for channel aware config file */ #define COMBINED_FORMAT_SIGNALING /* VA: Introduce a signaling bit for combined format coding */ #define FIX_386_CORECODER_RECONFIG_2 /* VA: Issue 386: Resolve remaining ToDo comments in CoreCoder reconfig. */ #define FIX_440_PARAM_ISM_DIR_NOISE /* FhG: Issue 440: Fix directional background noise becoming diffuse in ParamISM */ #define FIX_447_PARAMBIN_MASA_REGU_FAC /* Nokia: Issue 447: Fix issue by adjusting regularization factor minimum value. */ #define FIX_441_SBA_PARAMBIN_GAINS /* Nokia: Fix issue 441 by changing gains in SBA path of parametric binauralizer */ #define HODIRAC /* FhG: Sector-based HO-DirAC method for SBA at high bitrates */ #ifdef HODIRAC Loading @@ -198,9 +204,8 @@ //#define HODIRAC_READ_PARAMS #endif /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif lib_dec/ivas_dec.c +13 −0 Original line number Diff line number Diff line Loading @@ -392,7 +392,20 @@ ivas_error ivas_dec( } else if ( st_ivas->ivas_format == SBA_FORMAT && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) { #ifdef FIX_441_SBA_PARAMBIN_GAINS float gain; if ( nchan_remapped == 1 ) { gain = 1.4454f; } else { gain = 1.3657f; } #else float gain = 0.8414f; /* Todo: Temporary gain for roughly matching the loudness. To be tuned later together with other outputs. */ #endif for ( n = 0; n < nchan_remapped; n++ ) { Loading lib_dec/ivas_dirac_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,8 @@ ivas_error ivas_dirac_dec_config( hDirAC->dirac_md_buffer_length = ( MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_DIRAC_PARAM_DEC_SFR ) * num_slots_in_subfr; hDirAC->dirac_bs_md_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->spar_to_dirac_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->dirac_read_idx = 0; hDirAC->dirac_estimator_idx = 0; if ( ( hDirAC->azimuth = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); Loading Loading
apps/renderer.c +3 −3 Original line number Diff line number Diff line Loading @@ -1787,7 +1787,7 @@ IsmPositionProvider *IsmPositionProvider_open( IsmPositionProvider *ipp; uint16_t i; ipp = (IsmPositionProvider *) malloc_( sizeof( IsmPositionProvider ) ); ipp = (IsmPositionProvider *) malloc( sizeof( IsmPositionProvider ) ); ipp->frameCounter = 0; ipp->numObjects = 0; Loading Loading @@ -2182,8 +2182,8 @@ static void parseIsm( if ( parseUint32( line, &numberOfObjectPositionsToRead ) == 0 ) { positionProvider->numPositions[idx] = numberOfObjectPositionsToRead; positionProvider->positions[idx] = malloc_( numberOfObjectPositionsToRead * sizeof( IVAS_REND_AudioObjectPosition ) ); positionProvider->positionDurations[idx] = malloc_( numberOfObjectPositionsToRead * sizeof( uint16_t ) ); positionProvider->positions[idx] = malloc( numberOfObjectPositionsToRead * sizeof( IVAS_REND_AudioObjectPosition ) ); positionProvider->positionDurations[idx] = malloc( numberOfObjectPositionsToRead * sizeof( uint16_t ) ); for ( i = 0; i < numberOfObjectPositionsToRead; ++i ) { Loading
lib_com/ivas_fb_mixer.c +10 −5 Original line number Diff line number Diff line Loading @@ -234,8 +234,8 @@ ivas_error ivas_FB_mixer_open( } else { #ifdef HODIRAC num_chs_alloc = max( fb_cfg->num_out_chans, fb_cfg->nchan_fb_in ); #ifdef SBA_TD_RESIDUAL num_chs_alloc = 1; /* only W channel processed for predicting YZX */ #else num_chs_alloc = fb_cfg->num_out_chans; #endif Loading Loading @@ -412,8 +412,8 @@ void ivas_FB_mixer_close( } else { #ifdef HODIRAC num_chs_alloc = max( fb_cfg->num_out_chans, fb_cfg->nchan_fb_in ); #ifdef SBA_TD_RESIDUAL num_chs_alloc = 1; /* only W channel processed for predicting YZX */ #else num_chs_alloc = fb_cfg->num_out_chans; #endif Loading @@ -439,7 +439,6 @@ void ivas_FB_mixer_close( { num_chs_alloc = 0; } else { #ifdef HODIRAC Loading Loading @@ -543,7 +542,11 @@ void ivas_fb_mixer_pcm_ingest( } else { #ifdef SBA_TD_RESIDUAL num_chs_ingest = 1; /* forward Filterbank MDFT only on W */ #else num_chs_ingest = fb_cfg->num_out_chans; #endif } for ( i = 0; i < fb_cfg->num_in_chans; i++ ) Loading Loading @@ -839,7 +842,9 @@ void ivas_fb_mixer_get_in_out_mapping( for ( i = 1; i < fb_cfg->num_out_chans; i++ ) { in_out_mixer_map[i][0] = 1; #ifndef SBA_TD_RESIDUAL in_out_mixer_map[i][order[i]] = 1; #endif } } } Loading
lib_com/options.h +8 −3 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ #define EUALER2QUAT_FIX /* Dlb :fix for issue 430 issue in euler2quat, sign of quat y is inverted */ #define HR_METADATA /* Nok: encode directional MASA metadata with more bits at 384k and 512k */ #define SBA_TD_RESIDUAL /* Dlb : Issue 426: SBA encoder complexity optimization */ #define FIX_357_DTX_32K /* Eri: issue 357 - Forced LP-CNG at 32k */ #define FIX_435_ISM_MERGE_BUG /* Eri: Merge bug fix for ISM NULL metadata and tcx_only cases */ Loading @@ -181,8 +182,13 @@ #define FIX_411_EVS_BE_TESTS_ON_WINDOWS_FAILING /* Eri: Fix incorrect use of stack variable used for channel aware config file */ #define COMBINED_FORMAT_SIGNALING /* VA: Introduce a signaling bit for combined format coding */ #define FIX_386_CORECODER_RECONFIG_2 /* VA: Issue 386: Resolve remaining ToDo comments in CoreCoder reconfig. */ #define FIX_440_PARAM_ISM_DIR_NOISE /* FhG: Issue 440: Fix directional background noise becoming diffuse in ParamISM */ #define FIX_447_PARAMBIN_MASA_REGU_FAC /* Nokia: Issue 447: Fix issue by adjusting regularization factor minimum value. */ #define FIX_441_SBA_PARAMBIN_GAINS /* Nokia: Fix issue 441 by changing gains in SBA path of parametric binauralizer */ #define HODIRAC /* FhG: Sector-based HO-DirAC method for SBA at high bitrates */ #ifdef HODIRAC Loading @@ -198,9 +204,8 @@ //#define HODIRAC_READ_PARAMS #endif /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif
lib_dec/ivas_dec.c +13 −0 Original line number Diff line number Diff line Loading @@ -392,7 +392,20 @@ ivas_error ivas_dec( } else if ( st_ivas->ivas_format == SBA_FORMAT && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) { #ifdef FIX_441_SBA_PARAMBIN_GAINS float gain; if ( nchan_remapped == 1 ) { gain = 1.4454f; } else { gain = 1.3657f; } #else float gain = 0.8414f; /* Todo: Temporary gain for roughly matching the loudness. To be tuned later together with other outputs. */ #endif for ( n = 0; n < nchan_remapped; n++ ) { Loading
lib_dec/ivas_dirac_dec.c +2 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,8 @@ ivas_error ivas_dirac_dec_config( hDirAC->dirac_md_buffer_length = ( MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_DIRAC_PARAM_DEC_SFR ) * num_slots_in_subfr; hDirAC->dirac_bs_md_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->spar_to_dirac_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->dirac_read_idx = 0; hDirAC->dirac_estimator_idx = 0; if ( ( hDirAC->azimuth = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); Loading