clarify that the data is after the size specified by the file size in
the header; an alternate way to read the previous statement was that the
data was after the 'WEBP' fourcc.
based on comments from:
https://datatracker.ietf.org/doc/draft-zern-webp/ballot/#draft-zern-webp_robert-wilton
Bug: webp:448
Change-Id: I7c5c5440a94cb817da51fe07d1ccf45d6af0f001
some renderers may limit output to 72 and use a 3 space indent; this
avoids overflowing into the margin
Change-Id: Iaf4e8b71be27ef00fccd1d82b79bf96c01040f10
these were intended as an extension point, but in this version of the
spec they're not defined. if they ever were used leaving them as SHOULD
could result in a source of incompatibility.
Change-Id: I1376ab7abe7d955ae335106f2faebc217dac77cd
for compatibility SHOULDs are left as is with some additional
description given of behavior if the recommendation is ignored.
Change-Id: I7a25b1a6fd9f9594390c30fce3af5ca17c3158c0
this avoids presenting it in the description of a chunk where it could
appear it was defining an element of the diagram
Change-Id: I51b2c2a0dcecb4fc130711ad37c884a434920ecd
Note the fourth character is an ASCII space to avoid confusion.
Also update the FourCC definition to mention that they're case
sensitive.
Change-Id: I87d0cbcf06e7c25bf2b33419b4c8c891adb82a8a
Use the correct number of lines for fixed width entries like
ChunkHeader(). ':' is used instead of '|' for variable length entries.
Bug: webp:546
Change-Id: I6ec60af674c0777d5ea6ae99c8aa3c7854ddd9f9
Fixed: webp:546
RFC 2119 was updated by RFC 8174; use the text from there
+ change INFORMATIVE to informative to avoid confusion with the key
words in the RFCs
Change-Id: I0a3fe9dc48d284e7ac95633896ffb855ecd1a229
... since no guarantee of Huffman coding can be introduced at decoding
time and encoding didn't actually use Huffman coding in the first place
Bug: webp:551
Change-Id: I400466bb3b4a1d5506353eb3f287d658603164ee
for recent changes to color transform, simple code length code, image
structure and details of decoding prefix codes
Bug: webp:551
Change-Id: I36a4d1ee3e25b8a56f5d926f4770374ace99bc2f
and the corresponding InverseTransform(); the operations were swapped.
The forward transform subtracts the deltas, the inverse adds them.
Bug: webp:551
Change-Id: Ieb90a24f843cee7cdfe46cbb15ec7d716ca9d269
the value of the TR-pixel on the right border is the leftmost pixel on
the current row, not the previous one
Bug: webp:551
Change-Id: I157e8c16ce43a9f52c36aa880be1be3bef19c063
Break the main README into into multiple pages in the doc/ directory,
except for the tests, swig and webp_js docs which are in the corresponding
directories.
The webp mux doc is merged into the API doc and the tools doc.
Change-Id: Ia407617dd88094f4662841d37947cfef80799914
- prefer Exif to EXIF when not referring to the chunk
- normalize use of code format for canvas / frame width & height
Change-Id: I7fc9e87baeb5d8e719274680ce621dcb078a985f
- prefer https
- metadataworkinggroup.org/com seem to be offline; the web archive link
was obtained from exiftool: https://exiftool.org/TagNames/MWG.html
- fix kramdown link, rubyforge has been gone a long time
- fix png/zlib links
Bug: webp:544
Bug: b/202302177
Change-Id: Id69de4553e7baf00393f12a2c1acb262443a1a93
to https://datatracker.ietf.org/doc/html/... the http tools.ietf.org
links redirect here sometimes, in other cases they 404.
Bug: webp:544
Change-Id: I900972070d6c5659c45a86a89e78b870f42fe5bc
unknown chunks as a group are well defined in the text
+ remove the Note about stable features as it matched the list given;
there are no WIP features for the format
Change-Id: I11a4de39f9d203b815879f0e9dea9c45b2ae6ff6
replace with more inclusive terms or remove the comment entirely if the
meaning was already clear.
Bug: webp:507
Change-Id: Ica3bbf751ebf79f6668df6e6209af770248ff4ca
the interpretation of a 0 duration depends on the implementation;
merging of multiple frames isn't guaranteed, some may enforce a minimum
duration.
BUG=webp:380
Change-Id: Idf592049d2092e4cc5cfb2e4c59ddbc91bd52f9c
partially normalize indent, vertical whitespace and capitalization with
the copy used on developers.google.com/speed/webp
Change-Id: I8044418eeb9eaf5bd5c799675c74f6f845d503d6
at the beginning of the loop there's an implicit clear of the entire
canvas to the background (or application defined) color. this avoids
adding the final composited frame to the first.
Change-Id: Ia3a52cf4482c6176334a5c9c99a0ddd07d1776e7
Marking certain frames as "do not blend" helps avoiding alpha-blending
at decode/render time.
It also helps inserting I-frames (frames which can be independently
decoded) into the animation.
Change-Id: Iaa222805db88d2f1c81104ce9d882e7c7ff8cfdb
- Add a note that disposal only applies to the frame rectangle
- Add the formula for alpha-blending.
- Note that alpha-blending would occur for the common rectangle
- Also note the case when both color profile and disposal are
present.
Change-Id: I214787dd64453edf3b0cdaff3951015281a32ee4
- Escape brackets for which kramdown was generating a warning.
Note: This only changes this source file; output HTML would look exactly
the same.
- Also write '5' in words ('five').
Change-Id: I472a03c090a12eb7520719ea463469b36a2736b9
- Clarify the BNF using 'Huffman code groups' and 'Huffman code group'.
- Introduce same terminology in 'Interpretation of meta Huffman codes'.
- Make explicit mention of what is the number of Huffman code groups,
number of Huffman codes and the relation between the two.
Change-Id: I07aa9b62c1d464cd25dc02ac1a68d338b575bdc2
- Rectify a few BNF descriptions
- Corrections in "Decoding Flow of Image Data" section:
1. The sequence in case of "S < 256" should be green, red, blue, alpha.
2. In case of "S >= 256 + 24", the index should be "S - (256 + 24)".
- Provide more description to clarify "Decoding Flow of Image Data" section.
- Some cosmetics: use '1's instead of '1, 2, 3...' sequence, as kramdown takes
care of sequencing.
Change-Id: I2b76caf72f67aae813522dc1a4115f8ec8ea6db7
The color transform block size is stored as 3 bits, not 4.
Fixed the description. The code snippet is already correct.
Change-Id: I830d848b54c121cb5426ca06853a3f1184fd9a31
The prediction block size is stored as 3 bits, not 4.
Fixed the description. The code snippet is already correct.
Change-Id: Iaa66a7e9817b58a2557c9a71c2231cc400b6ae4d
- provide anchor links to the bitstream chunks referenced in the
extended format section
- remove some unnecessary parenthetical notation and add some
consistency to various chunk element definitions
Change-Id: Ifd946fee81b36e4e555399555a2a58c853fdc3b7
- Add details about the VP8L chunk support.
- Also add new example bitsteams containing VP8L chunk.
- Add back a section describing the VP8 chunk.
- Restrict some fields to 16 or 24 bits instead of 32 bits.
- Fields whose values are always positive are stored 1-based
instead of 0-based.
- Unknown chunks can only occur at certain places in the file.
- Remove the restriction for some fields to be divisible by 32 or 16.
Instead they are restricted to be even.
- Add a restriction for (canvas_width * canvas_height) product.
- Add 3 bits for rotation & symmetry in VP8X flags.
- Add some new example layouts.
- Add/clarify some nitty-gritties throughout the doc.
- Use the terms frame/tile more consistently and logically.
- Update related TODOs.
Change-Id: I611c1f58ecc3ee87546ca31bad1609376fad251e
Example kramdown command line to apply syntax highlighting requires
kramdown latest. Command is slightly different for earlier versions.
modified: doc/README
Change-Id: Icda1197436b5c5ed936ceff53c1dc51aa4ce409b
Substantial edit, though less than 100% thorough. This
makes changes that are clearly safe, but avoids others
where my domain knowledge is incomplete and accuracy
might be compromised.
modified: doc/webp-lossless-bitstream-spec.txt
Change-Id: I89361a2e1157b8d2e44a8b4f4603f65833f0c1e6
... as they became unnecessary when upstream (kramdown)
implemented LQ feature request:
17625c8082
Also updated (and simplified) syntax-highlighting instructions.
modified: doc/README
modified: doc/webp-lossless-bitstream-spec.txt
Change-Id: I6f02b0d0a69a4d1d96cb0f771936cbe9e2e6bbec
Word-level formatting (italics, bold) remains to be done,
but awaits final author edits, to avoid rework.
modified: doc/template.html
new file: doc/webp-lossless-bitstream-spec.txt
Change-Id: Id684d2a10d02e197d660a960540fe83f87d317f2
No further experiments are to be expected, so this is quite the
final format so far, pending supplemental feedbacks.
Change-Id: I2a3de025c90b7bb5fdd8792b2b2ccdc2e3753f56
- Make sure alpha flag is set in case of a lossless file with VP8X chunk.
The semantic of ALPHA_FLAG changes with this: it means the images
contain alpha (rather than ALPH chunk in particular).
- Update the mux container spec to add 1-line description of alpha
flag.
- Rename "HasLosslessImages()" to "MuxHasLosslessImages()", and other
similar function renames.
- Rename FeatureFlags to WebPFeatureFlags
- Elaborated a comment for a special case.
- A misc comment fix.
Change-Id: If212ccf4338c125b4c71c10bf281a51b3ba7ff45
now, we only use 2 bits for the filtering method, and 2 bits
for the compression method.
There's two additional bits which are INFORMATIVE, to specify
whether the source has been pre-processed (level reduction)
during compression. This can be used at decompression time
for some post-processing (see DequantizeLevels()).
New relevant spec excerpt:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ChunkHeader('ALPH') |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Rsv| P | F | C | Alpha Bitstream... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Compression method (C): 2 bits
: The compression method used:
* `0`: No compression.
* `1`: Backward reference counts encoded with arithmetic encoder.
Filtering method (F): 2 bits
: The filtering method used:
* `0`: None.
* `1`: Horizontal filter.
* `2`: Vertical filter.
* `3`: Gradient filter.
Pre-processing (P): 2 bits
: These INFORMATIVE bits are used to signal the pre-processing that has
been performed during compression. The decoder can use this information to
e.g. dither the values or smooth the gradients prior to display.
* `0`: no pre-processing
* `1`: level reduction
Decoders are not required to use this information in any specified way.
Reserved (Rsv): 2 bits
: SHOULD be `0`.
Alpha bitstream: _Chunk Size_ - `1` bytes
: Encoded alpha bitstream.
This optional chunk contains encoded alpha data for a single tile.
Either **ALL or NONE** of the tiles must contain this chunk.
The alpha channel data is losslessly stored as raw data (when
compression method is '0') or compressed using the lossless format
(when the compression method is '1').
Change-Id: Ied8f5fb922707a953e6a2b601c69c73e552dda6b
- the tile chunk size does not include the alpha or vp8 chunks that
follow
- remove 'experimental' note from alpha section
- drop an unused term from the terminology section
Change-Id: I46f0fd610bbce579446e19339c3458dddfb595f7
- split the doc into sections for simple and extended format and move
example layouts to the end.
- use ASCII tables to describe chunk formats
- attempt to consistently use MUST/SHOULD, etc.
- remove bold from most terms, but add them to definition lists which
allow for the styling to be changed.
Change-Id: I93c1cd33bde9ccf0b265b202ec4182ce98fd6b48
Updated cwebp (Webp Encoder) binary to support Alpha encoding.
Modified man page and WebP container spec appropriately.
Change-Id: I52f6a5cb3e870c386591e9a7776293fa6a8fb04b
- Add alpha support in mux.
- Remove WebPMuxAddNamedData() and WebPMuxGetNamedData() APIs. Add WebPMuxSetImage(), WebPmuxGetImage() and WebPMuxDeleteImage() APIs instead.
- Refactor code using WebPImage struct.
- Corresponding changes in webpmux binary.
- WebPMuxSetImage()/AddFrame()/AddTile() can now work with data which starts from "RIFF...". This simplifies reading a single-image webp file and adding it as an image/frame/tile in mux.
Change-Id: I7d98a6407dfe55c84a682ef7e46bc622f5a6f8d9
Added the Mux Container Spec (RIFF structure) for the features supported
(Color Profile, XMP Metadata, Animation & Tiling) via WebP Mux. Also
added README file with example psudo code for using the Mux API(s) and a
short description on webpmux (comand line tool, planned to be pushed out
in subsequent Git change).
Change-Id: I87c322cada89955bd758dd524a862a8cbc407541