diff --git a/lib_com/options.h b/lib_com/options.h index 90f1239d80f74e63a6f678ed46db56b1f316f2b9..14b1c5eb8abefa42f190eac704904f56c7780c65 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -146,5 +146,6 @@ #define NONBE_FIX_TCX5_INTERLEAVING_FOR_FS_IN_UNEQUAL_FS_OUT /* FhG: apply correct TCX5 grouping/interleaving when input_fs != output_fs */ #define FIX_1824 +#define FIX_1822 #endif diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index a0fa343a275ee97ed086d36671d4470ce020a593..e8700e2236416dff2586ccd7fec58e3e26c4e013 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -1023,9 +1023,17 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( move16(); } } +#ifdef FIX_1822 + diff = L_sub( h_dirac_output_synthesis_params->diffuse_compensation_factor_fx, ONE_IN_Q27 /*1 Q27*/ ); + diff = L_shl( diff, 2 ); // Q29 +#endif FOR( ; k < num_freq_bands; k++ ) { +#ifdef FIX_1822 + sqr_inp = Madd_32_32( One_in_qdiff, diffuseness[k], diff ); // Q = q_diffuseness - 1 +#else sqr_inp = Madd_32_32( One_in_qdiff, diffuseness[k], L_sub( h_dirac_output_synthesis_params->diffuse_compensation_factor_decorr_fx, ONE_IN_Q29 /*1 Q29*/ ) ); // Q = q_diffuseness - 1 +#endif sqr_exp = sq_e; move16(); sqr = Sqrt32( sqr_inp, &sqr_exp ); /*Q(31-sqr_exp)*/