diff --git a/lib_com/options.h b/lib_com/options.h index dcbf810be450a9de95942a3ae936dd960eb693ff..5f4af9f64d2a10cad116b61c5d3894b905d2896b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -174,6 +174,7 @@ #define FIX_RETURN /* VA: fix location of function returns */ #endif #define FIX_1135_EXT_RENDERER_HANDLES /* VA: issue 1135: Memory usage reduction in external renderer: Allocate only handles that are really needed. */ +#define FIX_1166_TDREND_DIV0 /* FhG,Eri: issue 1166: potential divide by zero in TD Renderer */ /* #################### End BE switches ################################## */ diff --git a/lib_rend/ivas_objectRenderer_hrFilt.c b/lib_rend/ivas_objectRenderer_hrFilt.c index 456dbc640ced78d3b037ccbb63dc28630ea22e1e..56cb50b44024d33706fe48eb01e40b1fb8d912f7 100644 --- a/lib_rend/ivas_objectRenderer_hrFilt.c +++ b/lib_rend/ivas_objectRenderer_hrFilt.c @@ -218,8 +218,13 @@ static void GenerateFilter( ESynL += modelEval->BMEnergiesL[modelEval->UseIndsL[i]].val; ESynR += modelEval->BMEnergiesR[modelEval->UseIndsR[i]].val; } +#ifdef FIX_1166_TDREND_DIV0 + ScaleL = sqrtf( ETotL / ( ESynL + EPSILON ) ); + ScaleR = sqrtf( ETotR / ( ESynR + EPSILON ) ); +#else ScaleL = sqrtf( ETotL / ESynL ); ScaleR = sqrtf( ETotR / ESynR ); +#endif /* Build using only the most energetic components. */ for ( k = model->iSecFirst[iSec]; k <= model->iSecLast[iSec]; k++ )