mirror of
https://github.com/webmproject/libwebp.git
synced 2024-11-20 04:18:26 +01:00
container doc: move RIFF description to own section
- remove some little used terms - condense file header description - add description of FourCC Change-Id: Ia873652f41789811f3fb2ec97182a068ac727961
This commit is contained in:
parent
4299f39852
commit
e3e339497e
@ -93,11 +93,21 @@ _uint32_
|
|||||||
|
|
||||||
: A 32-bit, little-endian, unsigned integer.
|
: A 32-bit, little-endian, unsigned integer.
|
||||||
|
|
||||||
|
_FourCC_
|
||||||
|
|
||||||
|
: A _FourCC_ (four-character code) is a _uint32_ created by concatenating four
|
||||||
|
ASCII characters in little-endian order.
|
||||||
|
|
||||||
_1-based_
|
_1-based_
|
||||||
|
|
||||||
: An unsigned integer field storing values offset by `-1`. e.g., Such a field
|
: An unsigned integer field storing values offset by `-1`. e.g., Such a field
|
||||||
would store value _25_ as _24_.
|
would store value _25_ as _24_.
|
||||||
|
|
||||||
|
RIFF file format
|
||||||
|
----------------
|
||||||
|
The WebP file format is based on the RIFF (resource interchange file format)
|
||||||
|
document format.
|
||||||
|
|
||||||
The basic element of a RIFF file is a _chunk_. It consists of:
|
The basic element of a RIFF file is a _chunk_. It consists of:
|
||||||
|
|
||||||
0 1 2 3
|
0 1 2 3
|
||||||
@ -112,12 +122,12 @@ The basic element of a RIFF file is a _chunk_. It consists of:
|
|||||||
|
|
||||||
Chunk FourCC: 32 bits
|
Chunk FourCC: 32 bits
|
||||||
|
|
||||||
: ASCII four character code or _chunk tag_ used for chunk identification.
|
: ASCII four-character code used for chunk identification.
|
||||||
|
|
||||||
Chunk Size: 32 bits (_uint32_)
|
Chunk Size: 32 bits (_uint32_)
|
||||||
|
|
||||||
: The size of the chunk (_ckSize_) not including this field, the chunk
|
: The size of the chunk not including this field, the chunk identifier or
|
||||||
identifier and padding.
|
padding.
|
||||||
|
|
||||||
Chunk Payload: _Chunk Size_ bytes
|
Chunk Payload: _Chunk Size_ bytes
|
||||||
|
|
||||||
@ -126,43 +136,13 @@ Chunk Payload: _Chunk Size_ bytes
|
|||||||
|
|
||||||
_ChunkHeader('ABCD')_
|
_ChunkHeader('ABCD')_
|
||||||
|
|
||||||
: This is used to describe the fourcc and size header of individual
|
: This is used to describe the _FourCC_ and _Chunk Size_ header of individual
|
||||||
chunks, where 'ABCD' is the fourcc for the chunk. This element's
|
chunks, where 'ABCD' is the FourCC for the chunk. This element's
|
||||||
size is 8 bytes.
|
size is 8 bytes.
|
||||||
|
|
||||||
: Note that, in this specification, all chunk tag characters are in
|
**Note:** RIFF has a convention that all-uppercase chunk FourCCs are standard
|
||||||
file order, not in byte order of a uint32 of any particular
|
chunks that apply to any RIFF file format, while FourCCs specific to a file
|
||||||
architecture.
|
format are all lowercase. WebP does not follow this convention.
|
||||||
|
|
||||||
_list of chunks_
|
|
||||||
|
|
||||||
: A concatenation of multiple chunks.
|
|
||||||
|
|
||||||
: We will refer to the first chunk as having _position_ 0, the second
|
|
||||||
as position 1, etc. By _chunk with index 0 among "ABCD"_ we mean
|
|
||||||
the first chunk among the chunks of type "ABCD" in the list, the
|
|
||||||
_chunk with index 1 among "ABCD"_ is the second such chunk, etc.
|
|
||||||
|
|
||||||
A WebP file MUST begin with a single chunk with a tag 'RIFF'. All
|
|
||||||
other defined chunks are contained within this chunk. The file SHOULD
|
|
||||||
NOT contain anything after it.
|
|
||||||
|
|
||||||
The maximum size of RIFF's _ckSize_ is 2^32 minus 10 bytes. The size
|
|
||||||
of the whole file is at most 4GiB minus 2 bytes.
|
|
||||||
|
|
||||||
**Note:** some RIFF libraries are said to have bugs when handling files
|
|
||||||
larger than 1GiB or 2GiB. If you are using an existing library, check
|
|
||||||
that it handles large files correctly.
|
|
||||||
|
|
||||||
The first four bytes of the RIFF chunk contents (i.e., bytes 8-11 of the file)
|
|
||||||
MUST be the ASCII string "WEBP". They are followed by a list of chunks. As the
|
|
||||||
size of any chunk is even, the size of the RIFF chunk is also even. The
|
|
||||||
contents of the chunks in that list will be described in the following sections.
|
|
||||||
|
|
||||||
**Note:** RIFF has a convention that all-uppercase chunks are standard
|
|
||||||
chunks that apply to any RIFF file format, while chunks specific to a
|
|
||||||
file format are all lowercase. WebP does not follow this convention.
|
|
||||||
|
|
||||||
|
|
||||||
WebP file header
|
WebP file header
|
||||||
----------------
|
----------------
|
||||||
@ -183,12 +163,20 @@ WebP file header
|
|||||||
|
|
||||||
File Size: 32 bits (_uint32_)
|
File Size: 32 bits (_uint32_)
|
||||||
|
|
||||||
: The size of the file in bytes starting at offset 8.
|
: The size of the file in bytes starting at offset 8. The maximum value of
|
||||||
|
this field is 2^32 minus 10 bytes and thus the size of the whole file is at
|
||||||
|
most 4GiB minus 2 bytes.
|
||||||
|
|
||||||
'WEBP': 32 bits
|
'WEBP': 32 bits
|
||||||
|
|
||||||
: The ASCII characters 'W' 'E' 'B' 'P'.
|
: The ASCII characters 'W' 'E' 'B' 'P'.
|
||||||
|
|
||||||
|
A WebP file MUST begin with a RIFF header with the FourCC 'WEBP'. The file size
|
||||||
|
in the header is the total size of the chunks that follow plus `4` bytes for
|
||||||
|
the 'WEBP' FourCC. The file SHOULD NOT contain anything after it. As the size
|
||||||
|
of any chunk is even, the size given by the RIFF header is also even. The
|
||||||
|
contents of individual chunks will be described in the following sections.
|
||||||
|
|
||||||
Simple file format (lossy)
|
Simple file format (lossy)
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user