From 168f92ffaa724df953be7be27d5bc7d7edd457d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Mon, 23 Nov 2009 22:22:16 +0000 Subject: [PATCH] WMA: extend exponent table up to 75 Fixes issue 1565. Originally committed as revision 20593 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/wmadec.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 5a31963520..baaf930a0d 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -240,8 +240,8 @@ static void decode_exp_lsp(WMACodecContext *s, int ch) s->block_len, lsp_coefs); } -/** pow(10, i / 16.0) for i in -60..67 */ -static const float pow_tab[128] = { +/** pow(10, i / 16.0) for i in -60..75 */ +static const float pow_tab[] = { 1.7782794100389e-04, 2.0535250264571e-04, 2.3713737056617e-04, 2.7384196342644e-04, 3.1622776601684e-04, 3.6517412725484e-04, @@ -306,6 +306,10 @@ static const float pow_tab[128] = { 7.4989420933246e+03, 8.6596432336007e+03, 1.0000000000000e+04, 1.1547819846895e+04, 1.3335214321633e+04, 1.5399265260595e+04, + 1.7782794100389e+04, 2.0535250264571e+04, + 2.3713737056617e+04, 2.7384196342644e+04, + 3.1622776601684e+04, 3.6517412725484e+04, + 4.2169650342858e+04, 4.8696752516586e+04, }; /** @@ -345,8 +349,11 @@ static int decode_exp_vlc(WMACodecContext *s, int ch) return -1; /* NOTE: this offset is the same as MPEG4 AAC ! */ last_exp += code - 60; - if ((unsigned)last_exp + 60 > FF_ARRAY_ELEMS(pow_tab)) + if ((unsigned)last_exp + 60 > FF_ARRAY_ELEMS(pow_tab)) { + av_log(s->avctx, AV_LOG_ERROR, "Exponent out of range: %d\n", + last_exp); return -1; + } v = ptab[last_exp]; iv = iptab[last_exp]; if (v > max_scale)