avcodec/bitstream: fill invalid vlc tables entries as last pass instead of first
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 16 Jun 2014 16:46:14 +0000 (18:46 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 16 Jun 2014 17:10:32 +0000 (19:10 +0200)
This avoids writing entries twice

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/bitstream.c

index 2d3f606..c61243e 100644 (file)
@@ -174,11 +174,6 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes,
         return table_index;
     table = &vlc->table[table_index];
 
-    for (i = 0; i < table_size; i++) {
-        table[i][1] = 0; //bits
-        table[i][0] = -1; //codes
-    }
-
     /* first pass: map codes and compute auxiliary table sizes */
     for (i = 0; i < nb_codes; i++) {
         n      = codes[i].bits;
@@ -237,6 +232,12 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes,
             i = k-1;
         }
     }
+
+    for (i = 0; i < table_size; i++) {
+        if (table[i][1] == 0) //bits
+            table[i][0] = -1; //codes
+    }
+
     return table_index;
 }