- 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