Skip to content

Commit 09f4500

Browse files
committed
std/webp: add new package (and vp8 placeholder)
1 parent 16705a1 commit 09f4500

17 files changed

+2119
-276
lines changed

doc/changelog.md

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ The LICENSE has changed from a single license (Apache 2) to a dual license
2121
- Added `std/lzma`.
2222
- Added `std/netpbm`.
2323
- Added `std/sha256`.
24+
- Added `std/vp8`.
25+
- Added `std/webp`.
2426
- Added `std/xxhash32`.
2527
- Added `std/xxhash64`.
2628
- Added `std/xz`.

doc/std/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ to enable.
6464
- `PNG: BASE, ADLER32, CRC32, DEFLATE, ZLIB`
6565
- `SHA256: BASE`
6666
- `TGA: BASE`
67+
- `VP8: BASE`
6768
- `WBMP: BASE`
69+
- `WEBP: BASE, VP8`
6870
- `XXHASH32: BASE`
6971
- `XXHASH64: BASE`
7072
- `XZ: BASE, CRC32, CRC64, LZMA, SHA256`

doc/std/image-decoders.md

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ In Wuffs syntax, the `base.image_decoder` methods are:
131131
- [std/png](/std/png)
132132
- [std/tga](/std/tga)
133133
- [std/wbmp](/std/wbmp)
134+
- [std/webp](/std/webp)
134135

135136

136137
## Examples

example/convert-to-nia/convert-to-nia.c

+13
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ An equivalent program (using the Skia image codecs) is at:
6767
#define WUFFS_CONFIG__MODULE__NIE
6868
#define WUFFS_CONFIG__MODULE__PNG
6969
#define WUFFS_CONFIG__MODULE__TGA
70+
#define WUFFS_CONFIG__MODULE__VP8
7071
#define WUFFS_CONFIG__MODULE__WBMP
72+
#define WUFFS_CONFIG__MODULE__WEBP
7173
#define WUFFS_CONFIG__MODULE__ZLIB
7274

7375
// Defining the WUFFS_CONFIG__DST_PIXEL_FORMAT__ENABLE_ALLOWLIST (and the
@@ -164,6 +166,7 @@ union {
164166
wuffs_png__decoder png;
165167
wuffs_tga__decoder tga;
166168
wuffs_wbmp__decoder wbmp;
169+
wuffs_webp__decoder webp;
167170
} g_potential_decoders;
168171

169172
wuffs_crc32__ieee_hasher g_digest_hasher;
@@ -413,6 +416,16 @@ initialize_image_decoder() {
413416
wuffs_wbmp__decoder__upcast_as__wuffs_base__image_decoder(
414417
&g_potential_decoders.wbmp);
415418
return NULL;
419+
420+
case WUFFS_BASE__FOURCC__WEBP:
421+
status = wuffs_webp__decoder__initialize(
422+
&g_potential_decoders.webp, sizeof g_potential_decoders.webp,
423+
WUFFS_VERSION, WUFFS_INITIALIZE__DEFAULT_OPTIONS);
424+
TRY(wuffs_base__status__message(&status));
425+
g_image_decoder =
426+
wuffs_webp__decoder__upcast_as__wuffs_base__image_decoder(
427+
&g_potential_decoders.webp);
428+
return NULL;
416429
}
417430
return "main: unsupported file format";
418431
}

example/imageviewer/imageviewer.cc

+2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ The Escape key quits.
8080
#define WUFFS_CONFIG__MODULE__NIE
8181
#define WUFFS_CONFIG__MODULE__PNG
8282
#define WUFFS_CONFIG__MODULE__TGA
83+
#define WUFFS_CONFIG__MODULE__VP8
8384
#define WUFFS_CONFIG__MODULE__WBMP
85+
#define WUFFS_CONFIG__MODULE__WEBP
8486
#define WUFFS_CONFIG__MODULE__ZLIB
8587

8688
// Defining the WUFFS_CONFIG__DST_PIXEL_FORMAT__ENABLE_ALLOWLIST (and the

example/sdl-imageviewer/sdl-imageviewer.cc

+2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ isn't otherwise doing anything.
7878
#define WUFFS_CONFIG__MODULE__NIE
7979
#define WUFFS_CONFIG__MODULE__PNG
8080
#define WUFFS_CONFIG__MODULE__TGA
81+
#define WUFFS_CONFIG__MODULE__VP8
8182
#define WUFFS_CONFIG__MODULE__WBMP
83+
#define WUFFS_CONFIG__MODULE__WEBP
8284
#define WUFFS_CONFIG__MODULE__ZLIB
8385

8486
// Defining the WUFFS_CONFIG__DST_PIXEL_FORMAT__ENABLE_ALLOWLIST (and the

internal/cgen/auxiliary/image.cc

+5
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ DecodeImageCallbacks::SelectDecoder(uint32_t fourcc,
100100
case WUFFS_BASE__FOURCC__WBMP:
101101
return wuffs_wbmp__decoder::alloc_as__wuffs_base__image_decoder();
102102
#endif
103+
104+
#if !defined(WUFFS_CONFIG__MODULES) || defined(WUFFS_CONFIG__MODULE__WEBP)
105+
case WUFFS_BASE__FOURCC__WEBP:
106+
return wuffs_webp__decoder::alloc_as__wuffs_base__image_decoder();
107+
#endif
103108
}
104109

105110
return wuffs_base__image_decoder::unique_ptr(nullptr);

internal/cgen/auxiliary/image.hh

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class DecodeImageCallbacks {
9191
// - WUFFS_BASE__FOURCC__PNG
9292
// - WUFFS_BASE__FOURCC__TGA
9393
// - WUFFS_BASE__FOURCC__WBMP
94+
// - WUFFS_BASE__FOURCC__WEBP
9495
virtual wuffs_base__image_decoder::unique_ptr //
9596
SelectDecoder(uint32_t fourcc,
9697
wuffs_base__slice_u8 prefix_data,

0 commit comments

Comments
 (0)