[FFmpeg-cvslog] r19059 - trunk/libavcodec/lcldec.c

reimar subversion
Sun May 31 13:32:03 CEST 2009


Author: reimar
Date: Sun May 31 13:32:03 2009
New Revision: 19059

Log:
Take advantage of available input padding to optimize mszh_decomp

Modified:
   trunk/libavcodec/lcldec.c

Modified: trunk/libavcodec/lcldec.c
==============================================================================
--- trunk/libavcodec/lcldec.c	Sun May 31 12:58:20 2009	(r19058)
+++ trunk/libavcodec/lcldec.c	Sun May 31 13:32:03 2009	(r19059)
@@ -73,7 +73,7 @@ typedef struct LclDecContext {
 
 
 /**
- * \param srcptr compressed source buffer, must be padded with at least 4 extra bytes
+ * \param srcptr compressed source buffer, must be padded with at least 5 extra bytes
  * \param destptr must be padded sufficiently for av_memcpy_backptr
  */
 static unsigned int mszh_decomp(const unsigned char * srcptr, int srclen, unsigned char * destptr, unsigned int destsize)
@@ -81,16 +81,11 @@ static unsigned int mszh_decomp(const un
     unsigned char *destptr_bak = destptr;
     unsigned char *destptr_end = destptr + destsize;
     const unsigned char *srcptr_end = srcptr + srclen;
-    unsigned char mask = 0;
-    unsigned char maskbit = 0;
+    unsigned char mask = *srcptr++;
+    unsigned char maskbit = 0x80;
     unsigned int ofs, cnt;
 
     while (srcptr < srcptr_end && destptr < destptr_end) {
-        if (maskbit == 0) {
-            mask = *srcptr++;
-            maskbit = 0x80;
-            continue;
-        }
         if (!(mask & maskbit)) {
             memcpy(destptr, srcptr, 4);
             destptr += 4;
@@ -105,6 +100,10 @@ static unsigned int mszh_decomp(const un
             destptr += cnt;
         }
         maskbit >>= 1;
+        if (!maskbit) {
+            mask = *srcptr++;
+            maskbit = 0x80;
+        }
     }
 
     return destptr - destptr_bak;



More information about the ffmpeg-cvslog mailing list