mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
b09ea25fec
commit
4728cdd880
@ -180,6 +180,14 @@ static av_cold int imc_decode_init(AVCodecContext *avctx)
|
|||||||
IMCContext *q = avctx->priv_data;
|
IMCContext *q = avctx->priv_data;
|
||||||
double r1, r2;
|
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)
|
if (avctx->codec_id == AV_CODEC_ID_IMC)
|
||||||
avctx->channels = 1;
|
avctx->channels = 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user