Repository navigation
Commit 47bc999
faster GIF decoding
- Frame indices become RGBA through a table of the 256 colors (transparent and missing entries resolved once),
written as one 32-bit value per pixel instead of four bytes after a table bounds check.
- LZW strings are written without checking every byte against the end of the image, unless the string runs
past it.
The results are bit-identical: still and animated decoding (and the GIF and APNG encoders on the decoded
frames) checked against master on 1593 images. The benchmark's 101 frame GIF decodes about 25% faster.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJgRK5qpwJEbHPuFv6kgAQ1 parent 4cb4753 commit 47bc999
2 files changed
Lines changed: 27 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
27 | 32 | | |
28 | 33 | | |
29 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
272 | 272 | | |
273 | 273 | | |
274 | 274 | | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
275 | 284 | | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
| 285 | + | |
| 286 | + | |
290 | 287 | | |
291 | 288 | | |
292 | 289 | | |
| |||
393 | 390 | | |
394 | 391 | | |
395 | 392 | | |
396 | | - | |
397 | | - | |
398 | | - | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
399 | 404 | | |
400 | 405 | | |
401 | 406 | | |
| |||
0 commit comments