diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2017-02-11 15:40:20 +0100 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2017-02-11 20:23:11 +0100 |
commit | ba30b74686f0cb6c9dd465ac4820059c48bf9d08 (patch) | |
tree | fa25f4c468d09823d6e3d6d60f54d930eb094251 /libavcodec | |
parent | 0ee78020cd41d81eec651acd7fc65906207796f3 (diff) | |
download | ffmpeg-ba30b74686f0cb6c9dd465ac4820059c48bf9d08.tar.gz |
aac: Validate the sbr sample rate before using the value
Avoid a floating point exception.
Bug-Id: 1027
CC: libav-stable@libav.org
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/aacsbr.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c index fc08079194..99f7b0829c 100644 --- a/libavcodec/aacsbr.c +++ b/libavcodec/aacsbr.c @@ -327,16 +327,6 @@ static int sbr_make_f_master(AACContext *ac, SpectralBandReplication *sbr, const int8_t *sbr_offset_ptr; int16_t stop_dk[13]; - if (sbr->sample_rate < 32000) { - temp = 3000; - } else if (sbr->sample_rate < 64000) { - temp = 4000; - } else - temp = 5000; - - start_min = ((temp << 7) + (sbr->sample_rate >> 1)) / sbr->sample_rate; - stop_min = ((temp << 8) + (sbr->sample_rate >> 1)) / sbr->sample_rate; - switch (sbr->sample_rate) { case 16000: sbr_offset_ptr = sbr_offset[0]; @@ -362,6 +352,16 @@ static int sbr_make_f_master(AACContext *ac, SpectralBandReplication *sbr, return -1; } + if (sbr->sample_rate < 32000) { + temp = 3000; + } else if (sbr->sample_rate < 64000) { + temp = 4000; + } else + temp = 5000; + + start_min = ((temp << 7) + (sbr->sample_rate >> 1)) / sbr->sample_rate; + stop_min = ((temp << 8) + (sbr->sample_rate >> 1)) / sbr->sample_rate; + sbr->k[0] = start_min + sbr_offset_ptr[spectrum->bs_start_freq]; if (spectrum->bs_stop_freq < 14) { |