aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2017-02-11 15:40:20 +0100
committerLuca Barbato <lu_zero@gentoo.org>2017-02-11 20:23:11 +0100
commitba30b74686f0cb6c9dd465ac4820059c48bf9d08 (patch)
treefa25f4c468d09823d6e3d6d60f54d930eb094251 /libavcodec
parent0ee78020cd41d81eec651acd7fc65906207796f3 (diff)
downloadffmpeg-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.c20
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) {