AAC: escape_sequence is 21 bits max
authorMåns Rullgård <mans@mansr.com>
Mon, 11 Jan 2010 18:02:00 +0000 (18:02 +0000)
committerMåns Rullgård <mans@mansr.com>
Mon, 11 Jan 2010 18:02:00 +0000 (18:02 +0000)
The maximum length of escape_sequence is 21 bits, so adjust limit in
code to match this.  Also fix the comment.

Originally committed as revision 21151 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/aac.c

index 2bb05b85a2f077ee7dd3fd3abceeac3b4e86e89b..d23d4da2c42119ad16e8ded5b79782e4dbf49d3e 100644 (file)
@@ -942,9 +942,9 @@ static int decode_spectrum_and_dequant(AACContext *ac, float coef[1024],
                                     if (vq_ptr[j] == 64.0f) {
                                         int n = 4;
                                         /* The total length of escape_sequence must be < 22 bits according
                                     if (vq_ptr[j] == 64.0f) {
                                         int n = 4;
                                         /* The total length of escape_sequence must be < 22 bits according
-                                           to the specification (i.e. max is 11111111110xxxxxxxxxx). */
-                                        while (get_bits1(gb) && n < 15) n++;
-                                        if (n == 15) {
+                                           to the specification (i.e. max is 111111110xxxxxxxxxxxx). */
+                                        while (get_bits1(gb) && n < 13) n++;
+                                        if (n == 13) {
                                             av_log(ac->avccontext, AV_LOG_ERROR, "error in spectral data, ESC overflow\n");
                                             return -1;
                                         }
                                             av_log(ac->avccontext, AV_LOG_ERROR, "error in spectral data, ESC overflow\n");
                                             return -1;
                                         }