Commit cfbc5f48 authored by kinuthia's avatar kinuthia
Browse files

backport fix 1096

parent e29aba03
Loading
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -384,10 +384,23 @@ static void map_params_dirac_to_stereo(
                }
            }

#ifdef NONBE_FIX_1096_NAN_VALUES_IN_DIRAC_TO_STEREO
            /* Clamp values here. [-1, 1] is the allowed range, but due to precision issues they can be slightly off which can cause problems later. */
            side_gain[b] *= sqrtf( 1.f - diffuseness[b] );
            side_gain[b] = max( min( side_gain[b], 1 ), -1 );
            side_gain[b + STEREO_DFT_BAND_MAX] *= sqrtf( 1.f - diffuseness[b] );
            side_gain[b + STEREO_DFT_BAND_MAX] = max( min( side_gain[b + STEREO_DFT_BAND_MAX], 1 ), -1 );
            /* for residual prediction gain, allowed range is [0, 1]*/
            res_pred_gain[b] = diffuseness[b] * ( 1.0f - surrCoh[b] );
            res_pred_gain[b] = max( min( res_pred_gain[b], 1 ), 0 );
            res_pred_gain[b + STEREO_DFT_BAND_MAX] = diffuseness[b] * ( 1.0f - surrCoh[b] );
            res_pred_gain[b + STEREO_DFT_BAND_MAX] = max( min( res_pred_gain[b + STEREO_DFT_BAND_MAX], 1 ), 0 );
#else
            side_gain[b] *= sqrtf( 1.f - diffuseness[b] );
            side_gain[b + STEREO_DFT_BAND_MAX] *= sqrtf( 1.f - diffuseness[b] );
            res_pred_gain[b] = diffuseness[b] * ( 1.0f - surrCoh[b] );
            res_pred_gain[b + STEREO_DFT_BAND_MAX] = diffuseness[b] * ( 1.0f - surrCoh[b] );
#endif
        }
    }