Browse Source

stb_image: Fast path for matches with dist=1 (runs) in stbi__parse_huffman_block.

Fabian Giesen 10 years ago
parent
commit
cdc230598e
1 changed files with 6 additions and 2 deletions
  1. 6 2
      stb_image.h

+ 6 - 2
stb_image.h

@@ -2210,8 +2210,12 @@ static int stbi__parse_huffman_block(stbi__zbuf *a)
             zout = a->zout;
          }
          p = (stbi_uc *) (zout - dist);
-         while (len--)
-            *zout++ = *p++;
+         if (dist == 1) { // run of one byte; common in images.
+            stbi_uc v = *p;
+            do *zout++ = v; while (--len);
+         } else {
+            do *zout++ = *p++; while (--len);
+         }
       }
    }
 }