Changes

Jump to: navigation, search

APNG Specification

2 bytes added, 16:03, 8 March 2007
no edit summary
Subsequent frames are encoded in `fdAt` chunks containing almost the same structure of content as IDAT chunks. Information for each frame about placement and rendering is stored in `fcTl` chunks. The full layout of `fdAt` and `fcTl` chunks is described below.
Note: For purposes of chunk descriptions, an "unsigned int" shall be a 32-bit unsigned integer in network byte order; a "signed int" shall be a 32limited to the range 0 to (2^31)-bit signed integer in network byte order1; an "unsigned short" shall be a 16-bit unsigned integer in network byte order; a "byte" shall be a an 8-bit unsigned integer.
== Chunk Sequence Numbers ==
The `fcTl` and `fdAt` chunks have a 4 byte sequence number. Both chunk types share the sequence. The purpose of this number is to detect (and optionally correct) sequence errors in an Animated PNG, since the PNG specification does not impose orderng restrictions on ancillary chunks.
 
Sequence numbers must start at 0 and increment by one.
The table below illustrates the use of sequence numbers for images with more than one frame and more than one `fdAt` chunk:
The frame must be rendered within the region defined by the `width`, `height`, `x_offset` and `y_offset` from the `fcTl`, and the width and height from the `IHDR`.
The width and height cannot be bigger than (respectively) the width and height specified in the `IHDR` chunk. The value of both the width and the height must be greater than 0.
For frame 0 the width and height fields must equal the width and height from the `IHDR` chunk. Also for frame 0 the `x_offset` and `y_offset` fields must be 0. Should parts No part of the region may fall outside the canvas defined by frame 0, rendering may be clipped to that canvas or the condition may be treated as an error.
The `delay_num` and `delay_den` parameters together specify a fraction indicating the delay after the current frame, in seconds. If the denominator is 0, it is to be treated as if it were 100 (that is, delay_num then specifies 1/100ths of a second). If the the value of the numerator is 0 the decoder should render the next frame as quickly as possible, though viewers may impose a reasonable lower bound on the delay.
48
edits

Navigation menu