[FFmpeg-cvslog] imc: reject files with unfathomable sampling rates
Christophe Gisquet
git at videolan.org
Thu Aug 21 14:27:16 CEST 2014
ffmpeg | branch: master | Christophe Gisquet <christophe.gisquet at gmail.com> | Thu Aug 21 12:21:07 2014 +0200| [4728cdd88033c2bd41ae675d7df9aaf3f578136b] | committer: Michael Niedermayer
imc: reject files with unfathomable sampling rates
With huge sampling rates, the table derivation method does not converge fast
enough. While fixing it using e.g. Newton-Rhapson-like methods (the curve is
nicely convex) is possible, it is much simpler to reject these cases.
The value of 96000 was arbitrarily chosen as a realistic value, though
1000000 would still work and converge.
Fixes ticket #3868.
Suggested-by: Paul B Mahol <onemda at gmail.com>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4728cdd88033c2bd41ae675d7df9aaf3f578136b
---
libavcodec/imc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libavcodec/imc.c b/libavcodec/imc.c
index e6a087a..0df0dd1 100644
--- a/libavcodec/imc.c
+++ b/libavcodec/imc.c
@@ -180,6 +180,14 @@ static av_cold int imc_decode_init(AVCodecContext *avctx)
IMCContext *q = avctx->priv_data;
double r1, r2;
+ if (avctx->codec_id == AV_CODEC_ID_IAC && avctx->sample_rate > 96000) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Strange sample rate of %i, file likely corrupt or "
+ "needing a new table derivation method.\n",
+ avctx->sample_rate);
+ return AVERROR_PATCHWELCOME;
+ }
+
if (avctx->codec_id == AV_CODEC_ID_IMC)
avctx->channels = 1;
More information about the ffmpeg-cvslog
mailing list