diff vp3.c @ 2703:3817945001ce libavcodec

replace get_superblock_run_length() with a VLC table
author melanson
date Wed, 18 May 2005 00:11:49 +0000
parents 5a4e5225cbb6
children f858785d54ee
line wrap: on
line diff
--- a/vp3.c	Tue May 17 23:39:23 2005 +0000
+++ b/vp3.c	Wed May 18 00:11:49 2005 +0000
@@ -1182,7 +1182,14 @@
         while (current_superblock < s->superblock_count) {
             if (current_run == 0) {
                 bit ^= 1;
+#if 1
+                current_run = get_vlc2(gb, 
+                    s->superblock_run_length_vlc.table, 6, 2) + 1;
+                if (current_run == 34)
+                    current_run += get_bits(gb, 12);
+#else
                 current_run = get_superblock_run_length(gb);
+#endif
                 debug_block_coding("      setting superblocks %d..%d to %s\n",
                     current_superblock,
                     current_superblock + current_run - 1,
@@ -1221,7 +1228,14 @@
 
                     if (current_run == 0) {
                         bit ^= 1;
+#if 1
+                        current_run = get_vlc2(gb, 
+                            s->superblock_run_length_vlc.table, 6, 2) + 1;
+                        if (current_run == 34)
+                            current_run += get_bits(gb, 12);
+#else
                         current_run = get_superblock_run_length(gb);
+#endif
                     }
 
                     debug_block_coding("      setting superblock %d to %s\n",
@@ -2630,6 +2644,10 @@
             &ac_bias_3[i][0][0], 4, 2, 0);
     }
 
+    init_vlc(&s->superblock_run_length_vlc, 6, 34,
+        &superblock_run_length_vlc_table[0][1], 4, 2,
+        &superblock_run_length_vlc_table[0][0], 4, 2, 0);
+
     init_vlc(&s->fragment_run_length_vlc, 5, 31,
         &fragment_run_length_vlc_table[0][1], 4, 2,
         &fragment_run_length_vlc_table[0][0], 4, 2, 0);