[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec wmadec.c,1.30,1.31
Jindrich Makovicka CVS
henry
Sat Feb 11 20:39:08 CET 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv6843
Modified Files:
wmadec.c
Log Message:
- fix insufficient code length for exp_vlc
- move vlc tweaking parameters to one place
Index: wmadec.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/wmadec.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- wmadec.c 5 Feb 2006 13:35:17 -0000 1.30
+++ wmadec.c 11 Feb 2006 19:39:05 -0000 1.31
@@ -57,6 +57,13 @@
#define LSP_POW_BITS 7
#define VLCBITS 9
+#define VLCMAX ((22+VLCBITS-1)/VLCBITS)
+
+#define EXPVLCBITS 8
+#define EXPMAX ((19+EXPVLCBITS-1)/EXPVLCBITS)
+
+#define HGAINVLCBITS 9
+#define HGAINMAX ((13+HGAINVLCBITS-1)/HGAINVLCBITS)
typedef struct WMADecodeContext {
GetBitContext gb;
@@ -185,7 +192,7 @@
const uint16_t *p;
int i, l, j, level;
- init_vlc(vlc, 9, n, table_bits, 1, 1, table_codes, 4, 4, 0);
+ init_vlc(vlc, VLCBITS, n, table_bits, 1, 1, table_codes, 4, 4, 0);
run_table = av_malloc(n * sizeof(uint16_t));
level_table = av_malloc(n * sizeof(uint16_t));
@@ -494,13 +501,13 @@
}
}
#endif
- init_vlc(&s->hgain_vlc, 9, sizeof(hgain_huffbits),
+ init_vlc(&s->hgain_vlc, HGAINVLCBITS, sizeof(hgain_huffbits),
hgain_huffbits, 1, 1,
hgain_huffcodes, 2, 2, 0);
}
if (s->use_exp_vlc) {
- init_vlc(&s->exp_vlc, 9, sizeof(scale_huffbits),
+ init_vlc(&s->exp_vlc, EXPVLCBITS, sizeof(scale_huffbits),
scale_huffbits, 1, 1,
scale_huffcodes, 4, 4, 0);
} else {
@@ -681,7 +688,7 @@
}
last_exp = 36;
while (q < q_end) {
- code = get_vlc2(&s->gb, s->exp_vlc.table, VLCBITS, 2);
+ code = get_vlc2(&s->gb, s->exp_vlc.table, EXPVLCBITS, EXPMAX);
if (code < 0)
return -1;
/* NOTE: this offset is the same as MPEG4 AAC ! */
@@ -822,7 +829,7 @@
if (val == (int)0x80000000) {
val = get_bits(&s->gb, 7) - 19;
} else {
- code = get_vlc2(&s->gb, s->hgain_vlc.table, VLCBITS, 2);
+ code = get_vlc2(&s->gb, s->hgain_vlc.table, HGAINVLCBITS, HGAINMAX);
if (code < 0)
return -1;
val += code - 18;
@@ -879,7 +886,7 @@
eptr = ptr + nb_coefs[ch];
memset(ptr, 0, s->block_len * sizeof(int16_t));
for(;;) {
- code = get_vlc2(&s->gb, coef_vlc->table, VLCBITS, 3);
+ code = get_vlc2(&s->gb, coef_vlc->table, VLCBITS, VLCMAX);
if (code < 0)
return -1;
if (code == 1) {
More information about the ffmpeg-cvslog
mailing list