[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec vp3.c,1.54,1.55

Michael Niedermayer CVS michael
Wed May 18 10:48:14 CEST 2005


Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv30251

Modified Files:
	vp3.c 
Log Message:
optimizing rle decoding loops a little


Index: vp3.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/vp3.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- vp3.c	18 May 2005 07:59:07 -0000	1.54
+++ vp3.c	18 May 2005 08:48:11 -0000	1.55
@@ -1180,12 +1180,12 @@
          * fetched the bit will be toggled again */
         bit ^= 1;
         while (current_superblock < s->superblock_count) {
-            if (current_run == 0) {
+            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)
+                    s->superblock_run_length_vlc.table, 6, 2);
+                if (current_run == 33)
                     current_run += get_bits(gb, 12);
 #else
                 current_run = get_superblock_run_length(gb);
@@ -1206,9 +1206,7 @@
                     decode_partial_blocks = 1;
                 }
             }
-            s->superblock_coding[current_superblock++] = 
-                (bit) ? SB_PARTIALLY_CODED : SB_NOT_CODED;
-            current_run--;
+            s->superblock_coding[current_superblock++] = bit;
         }
 
         /* unpack the list of fully coded superblocks if any of the blocks were
@@ -1226,12 +1224,12 @@
                 /* skip any superblocks already marked as partially coded */
                 if (s->superblock_coding[current_superblock] == SB_NOT_CODED) {
 
-                    if (current_run == 0) {
+                    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)
+                            s->superblock_run_length_vlc.table, 6, 2);
+                        if (current_run == 33)
                             current_run += get_bits(gb, 12);
 #else
                         current_run = get_superblock_run_length(gb);
@@ -1241,9 +1239,7 @@
                     debug_block_coding("      setting superblock %d to %s\n",
                         current_superblock,
                         (bit) ? "fully coded" : "not coded");
-                    s->superblock_coding[current_superblock] = 
-                        (bit) ? SB_FULLY_CODED : SB_NOT_CODED;
-                    current_run--;
+                    s->superblock_coding[current_superblock] = 2*bit;
                 }
                 current_superblock++;
             }
@@ -1291,11 +1287,11 @@
 
                     /* fragment may or may not be coded; this is the case
                      * that cares about the fragment coding runs */
-                    if (current_run == 0) {
+                    if (current_run-- == 0) {
                         bit ^= 1;
 #if 1
                         current_run = get_vlc2(gb, 
-                            s->fragment_run_length_vlc.table, 5, 2) + 1;
+                            s->fragment_run_length_vlc.table, 5, 2);
 #else
                         current_run = get_fragment_run_length(gb);
 #endif
@@ -1328,8 +1324,6 @@
                             i, current_fragment);
                     }
 
-                    current_run--;
-
                 } else {
 
                     /* fragments are fully coded in this superblock; actual





More information about the ffmpeg-cvslog mailing list