Loading lib_com/ivas_cnst.h +3 −0 Original line number Diff line number Diff line Loading @@ -1206,6 +1206,9 @@ enum #define MASA_MAX_BITS_HR 2000 /* max. bit-budget for MASA metadata in HR mode*/ #define HR_MASA_ER_LEVELS 16 #endif #ifdef FIX_HBR_MASAMETA #define MAX_REDUCED_NBANDS 18 /* max number of subbands that is less than the default value 24 */ #endif #define LIMIT_ER_ELEVATION_ENC 4 #define LIMIT_ER_SIMPLE_ENC 6 Loading lib_com/ivas_masa_com.c +31 −3 Original line number Diff line number Diff line Loading @@ -313,20 +313,31 @@ void masa_sample_rate_band_correction( MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */ int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ const int32_t sampling_rate /* i : Sampling rate */ , #ifdef FIX_HBR_MASAMETA const uint8_t maxBand, /* i : max band */ uint8_t is_encoder, /* i: signals if called at encoder */ #else const int32_t sampling_rate, /* i : Sampling rate */ #endif MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ ) { uint8_t band, sf; #ifdef FIX_HBR_MASAMETA int16_t highBand; #else int16_t maxBin, highBand, maxBand; #endif uint8_t numBands48k; #ifndef FIX_HBR_MASAMETA if ( sampling_rate == 48000 ) { return; } #endif #ifndef FIX_HBR_MASAMETA /* Find maximum band usable at this sample rate */ maxBin = (int16_t) ( CLDFB_NO_CHANNELS_MAX * sampling_rate / 48000 ); maxBand = 0; Loading @@ -335,7 +346,7 @@ void masa_sample_rate_band_correction( maxBand++; } maxBand--; #endif numBands48k = config->numCodingBands; for ( band = 1; band < config->numCodingBands + 1; band++ ) Loading @@ -346,6 +357,19 @@ void masa_sample_rate_band_correction( { config->numCodingBands = band; hQMetaData->numCodingBands = band; #ifdef FIX_HBR_MASAMETA if ( is_encoder ) { if ( hQMetaData->q_direction->cfg.nbands > band ) { hQMetaData->q_direction->cfg.nbands = band; } if ( hQMetaData->no_directions == 2 && hQMetaData->q_direction[1].cfg.nbands > band ) { hQMetaData->q_direction[1].cfg.nbands = band; } } #endif band_mapping[band] = maxBand; break; } Loading Loading @@ -393,7 +417,11 @@ void masa_sample_rate_band_correction( /* in decoder, zero the EXT out MASA meta buffer */ for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { #ifdef FIX_HBR_MASAMETA for ( band = hQMetaData->numCodingBands; band < MASA_FREQUENCY_BANDS; band++ ) #else for ( band = config->numCodingBands; band < MASA_FREQUENCY_BANDS; band++ ) #endif { hExtOutMeta->directionIndex[0][sf][band] = SPH_IDX_FRONT; hExtOutMeta->directToTotalRatio[0][sf][band] = 0u; Loading lib_com/ivas_prot.h +13 −4 Original line number Diff line number Diff line Loading @@ -3169,6 +3169,10 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( const SPHERICAL_GRID_DATA *sph_grid16, /* i: spherical grid for deindexing */ const int16_t bits_sph_idx, const int16_t bits_sp_coh #ifdef FIX_HBR_MASAMETA , uint8_t ncoding_bands_config #endif ); #endif Loading Loading @@ -5139,7 +5143,12 @@ void masa_sample_rate_band_correction( MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */ int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ #ifdef FIX_HBR_MASAMETA const uint8_t maxBand, /* i : max band */ uint8_t is_encoder, /* i: signals if called at encoder */ #else const int32_t sampling_rate, /* i : sampling rate */ #endif MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ ); Loading lib_com/ivas_stat_com.h +3 −0 Original line number Diff line number Diff line Loading @@ -471,6 +471,9 @@ typedef struct int16_t nbands; int16_t nblocks; int16_t start_band; #ifdef FIX_HBR_MASAMETA uint8_t inactiveBands; #endif int16_t search_effort; MC_LS_SETUP mc_ls_setup; Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ #define FIX_487_LOWRATE_SBA_TUNING_FIX /* Dlb: TUning fix for low bitrate cases to match theoretical longest SPAR MD bitstream */ #define FIX_490_MASA_2TC_LBR_DTX /* Nokia: Fixes issue 490 by correcting condition. */ #define FIX_HBR_MASAMETA /* Nokia: Fixes to HBR MASA metadata at 384 and 512 kbps. Addresses issues 438 and 477 as well. */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading Loading
lib_com/ivas_cnst.h +3 −0 Original line number Diff line number Diff line Loading @@ -1206,6 +1206,9 @@ enum #define MASA_MAX_BITS_HR 2000 /* max. bit-budget for MASA metadata in HR mode*/ #define HR_MASA_ER_LEVELS 16 #endif #ifdef FIX_HBR_MASAMETA #define MAX_REDUCED_NBANDS 18 /* max number of subbands that is less than the default value 24 */ #endif #define LIMIT_ER_ELEVATION_ENC 4 #define LIMIT_ER_SIMPLE_ENC 6 Loading
lib_com/ivas_masa_com.c +31 −3 Original line number Diff line number Diff line Loading @@ -313,20 +313,31 @@ void masa_sample_rate_band_correction( MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */ int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ const int32_t sampling_rate /* i : Sampling rate */ , #ifdef FIX_HBR_MASAMETA const uint8_t maxBand, /* i : max band */ uint8_t is_encoder, /* i: signals if called at encoder */ #else const int32_t sampling_rate, /* i : Sampling rate */ #endif MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ ) { uint8_t band, sf; #ifdef FIX_HBR_MASAMETA int16_t highBand; #else int16_t maxBin, highBand, maxBand; #endif uint8_t numBands48k; #ifndef FIX_HBR_MASAMETA if ( sampling_rate == 48000 ) { return; } #endif #ifndef FIX_HBR_MASAMETA /* Find maximum band usable at this sample rate */ maxBin = (int16_t) ( CLDFB_NO_CHANNELS_MAX * sampling_rate / 48000 ); maxBand = 0; Loading @@ -335,7 +346,7 @@ void masa_sample_rate_band_correction( maxBand++; } maxBand--; #endif numBands48k = config->numCodingBands; for ( band = 1; band < config->numCodingBands + 1; band++ ) Loading @@ -346,6 +357,19 @@ void masa_sample_rate_band_correction( { config->numCodingBands = band; hQMetaData->numCodingBands = band; #ifdef FIX_HBR_MASAMETA if ( is_encoder ) { if ( hQMetaData->q_direction->cfg.nbands > band ) { hQMetaData->q_direction->cfg.nbands = band; } if ( hQMetaData->no_directions == 2 && hQMetaData->q_direction[1].cfg.nbands > band ) { hQMetaData->q_direction[1].cfg.nbands = band; } } #endif band_mapping[band] = maxBand; break; } Loading Loading @@ -393,7 +417,11 @@ void masa_sample_rate_band_correction( /* in decoder, zero the EXT out MASA meta buffer */ for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { #ifdef FIX_HBR_MASAMETA for ( band = hQMetaData->numCodingBands; band < MASA_FREQUENCY_BANDS; band++ ) #else for ( band = config->numCodingBands; band < MASA_FREQUENCY_BANDS; band++ ) #endif { hExtOutMeta->directionIndex[0][sf][band] = SPH_IDX_FRONT; hExtOutMeta->directToTotalRatio[0][sf][band] = 0u; Loading
lib_com/ivas_prot.h +13 −4 Original line number Diff line number Diff line Loading @@ -3169,6 +3169,10 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( const SPHERICAL_GRID_DATA *sph_grid16, /* i: spherical grid for deindexing */ const int16_t bits_sph_idx, const int16_t bits_sp_coh #ifdef FIX_HBR_MASAMETA , uint8_t ncoding_bands_config #endif ); #endif Loading Loading @@ -5139,7 +5143,12 @@ void masa_sample_rate_band_correction( MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */ int16_t *band_mapping, /* i/o: Band mapping used and modified */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ #ifdef FIX_HBR_MASAMETA const uint8_t maxBand, /* i : max band */ uint8_t is_encoder, /* i: signals if called at encoder */ #else const int32_t sampling_rate, /* i : sampling rate */ #endif MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ ); Loading
lib_com/ivas_stat_com.h +3 −0 Original line number Diff line number Diff line Loading @@ -471,6 +471,9 @@ typedef struct int16_t nbands; int16_t nblocks; int16_t start_band; #ifdef FIX_HBR_MASAMETA uint8_t inactiveBands; #endif int16_t search_effort; MC_LS_SETUP mc_ls_setup; Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ #define FIX_487_LOWRATE_SBA_TUNING_FIX /* Dlb: TUning fix for low bitrate cases to match theoretical longest SPAR MD bitstream */ #define FIX_490_MASA_2TC_LBR_DTX /* Nokia: Fixes issue 490 by correcting condition. */ #define FIX_HBR_MASAMETA /* Nokia: Fixes to HBR MASA metadata at 384 and 512 kbps. Addresses issues 438 and 477 as well. */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading