Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -180,6 +180,8 @@ #define NONBE_FIX_861_MASA_CRASH_STEREO_SWITCHING /* VA: issue 861: fix MASA 2TC crash when switching from MDCT stereo to TD/DFT stereo */ #define BE_FIX_867_PARAMC_RECONFIG /* FhG: issue #867: fix ParamMC CLDFB buffer dealloc when reconfiguring */ #define NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Nokia: issue #850: Fixes rare non-valid diffuseness and energy ratio values in 2dir MASA. */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ Loading lib_dec/ivas_dirac_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -1260,6 +1260,14 @@ void ivas_qmetadata_to_dirac( hSpatParamRendCom->energy_ratio2[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; hSpatParamRendCom->diffuseness_vector[meta_write_index][b] -= q_direction->band_data[band].energy_ratio[block]; #ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Sanitize diffuseness for rare cases where floating point inaccuracy could result in negative diffuseness. */ if ( hSpatParamRendCom->diffuseness_vector[meta_write_index][b] < 0.0f ) { hSpatParamRendCom->diffuseness_vector[meta_write_index][b] = 0.0f; } #endif if ( q_direction->coherence_band_data != NULL ) { hSpatParamRendCom->spreadCoherence2[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; Loading lib_dec/ivas_qmetadata_dec.c +22 −0 Original line number Diff line number Diff line Loading @@ -1103,7 +1103,29 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( } } } #ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Scale energy ratios that sum to over one */ for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) { for ( m = 0; m < hQMetaData->q_direction[0].cfg.nblocks; m++ ) { float ratioSum; ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; if ( ratioSum > 1.0f ) { float ratioSumInv; ratioSumInv = 1.0f / ratioSum; hQMetaData->q_direction[0].band_data[b].energy_ratio[m] *= ratioSumInv; hQMetaData->q_direction[1].band_data[b].energy_ratio[m] *= ratioSumInv; } } } #endif } #ifdef DEBUG_MODE_QMETADATA for ( d = 0; d < hQMetaData->no_directions; d++ ) Loading Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -180,6 +180,8 @@ #define NONBE_FIX_861_MASA_CRASH_STEREO_SWITCHING /* VA: issue 861: fix MASA 2TC crash when switching from MDCT stereo to TD/DFT stereo */ #define BE_FIX_867_PARAMC_RECONFIG /* FhG: issue #867: fix ParamMC CLDFB buffer dealloc when reconfiguring */ #define NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Nokia: issue #850: Fixes rare non-valid diffuseness and energy ratio values in 2dir MASA. */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ Loading
lib_dec/ivas_dirac_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -1260,6 +1260,14 @@ void ivas_qmetadata_to_dirac( hSpatParamRendCom->energy_ratio2[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; hSpatParamRendCom->diffuseness_vector[meta_write_index][b] -= q_direction->band_data[band].energy_ratio[block]; #ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Sanitize diffuseness for rare cases where floating point inaccuracy could result in negative diffuseness. */ if ( hSpatParamRendCom->diffuseness_vector[meta_write_index][b] < 0.0f ) { hSpatParamRendCom->diffuseness_vector[meta_write_index][b] = 0.0f; } #endif if ( q_direction->coherence_band_data != NULL ) { hSpatParamRendCom->spreadCoherence2[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; Loading
lib_dec/ivas_qmetadata_dec.c +22 −0 Original line number Diff line number Diff line Loading @@ -1103,7 +1103,29 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( } } } #ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING /* Scale energy ratios that sum to over one */ for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) { for ( m = 0; m < hQMetaData->q_direction[0].cfg.nblocks; m++ ) { float ratioSum; ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; if ( ratioSum > 1.0f ) { float ratioSumInv; ratioSumInv = 1.0f / ratioSum; hQMetaData->q_direction[0].band_data[b].energy_ratio[m] *= ratioSumInv; hQMetaData->q_direction[1].band_data[b].energy_ratio[m] *= ratioSumInv; } } } #endif } #ifdef DEBUG_MODE_QMETADATA for ( d = 0; d < hQMetaData->no_directions; d++ ) Loading