psymodel: dont apply lowpass filters with a cutoff close to the nyquist
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 7 Mar 2013 18:28:30 +0000 (19:28 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 7 Mar 2013 18:28:30 +0000 (19:28 +0100)
The IIR filter numerically diverges in such cases, this could easily be
fixed but would make the filter slower on some platforms

Fixes Ticket2246

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/psymodel.c

index a4a7cbb..09dd83d 100644 (file)
@@ -106,7 +106,7 @@ av_cold struct FFPsyPreprocessContext* ff_psy_preprocess_init(AVCodecContext *av
     if (!cutoff_coeff && avctx->codec_id == AV_CODEC_ID_AAC)
         cutoff_coeff = 2.0 * AAC_CUTOFF(avctx) / avctx->sample_rate;
 
-    if (cutoff_coeff)
+    if (cutoff_coeff && cutoff_coeff < 0.98)
     ctx->fcoeffs = ff_iir_filter_init_coeffs(avctx, FF_FILTER_TYPE_BUTTERWORTH,
                                              FF_FILTER_MODE_LOWPASS, FILT_ORDER,
                                              cutoff_coeff, 0.0, 0.0);