Commit ae0ed899 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Add saturation for ratio sums to guard against overflow with malformed metadata.

parent 487ec713
Loading
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2303,9 +2303,17 @@ static void compensate_energy_ratios_fx(
            move32();
            FOR( dir = 0; dir < numDirs; dir++ )
            {
#ifdef FIX_BASOP_2529_MASA_RATIO_SCALINGS
                ratioSum = L_add_sat( ratioSum, hMeta->directional_meta[dir].energy_ratio_fx[sf][band] ); // Q30
#else
                ratioSum = L_add( ratioSum, hMeta->directional_meta[dir].energy_ratio_fx[sf][band] ); // Q30
#endif
            }
#ifdef FIX_BASOP_2529_MASA_RATIO_SCALINGS
            ratioSum = L_add_sat( ratioSum, hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] ); // Q30
#else
            ratioSum = L_add( ratioSum, hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] ); // Q30
#endif

            IF( ratioSum == 0 )
            {
+8 −0
Original line number Diff line number Diff line
@@ -9127,9 +9127,17 @@ static void renderMasaToMasa(
            move32();
            FOR( dir = 0; dir < numDirs; dir++ )
            {
#ifdef FIX_BASOP_2529_MASA_RATIO_SCALINGS
                ratioSum_fx = L_add_sat( ratioSum_fx, inMeta->directional_meta[dir].energy_ratio_fx[sf][band] );
#else
                ratioSum_fx = L_add( ratioSum_fx, inMeta->directional_meta[dir].energy_ratio_fx[sf][band] );
#endif
            }
#ifdef FIX_BASOP_2529_MASA_RATIO_SCALINGS
            ratioSum_fx = L_add_sat( ratioSum_fx, inMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] );
#else
            ratioSum_fx = L_add( ratioSum_fx, inMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] );
#endif

            IF( ratioSum_fx == 0 )
            {