MNG: Status Report 19961122
MNG: A Multiple-Image Format in the PNG Family
The Portable Network Graphics (PNG)
[1] format for bit-mapped images
was recently approved by the World Wide Web Consortium (W3C) as a
W3C Recommendation. MNG ("Multiple-image Network Graphics") is a
proposed addition to the PNG family, for
storing and transmitting multiple-image animations and composite
frames, that is now being designed by the PNG developers
[2].
Because the images making up a MNG are in PNG format, MNG shares
the good features of PNG:
- It is unencumbered by patents.
- It is streamable.
- It has excellent, lossless compression.
- It stores up to 16 bits per channel.
- It provides transparency and an alpha channel.
- It provides platform-independent rendition of colors by
inclusion of gamma and chromaticity information.
- It provides early detection of common file transmission
errors and robust detection of file corruption.
- Single-image GIF ("Graphical Interchange Format") files can be
losslessly converted to PNG.
In addition,
- It provides animation with loops and variable interframe delays.
- It allows composition of frames containing multiple images.
- It facilitates the use of images as "sprites."
- It capitalizes on frame-to-frame similarities to reduce the
amount of data that must be included in the datastream.
- It provides "restart" points at which an animation can be
resumed in case of data loss or corruption.
- A "frame priority" chunk allows authors to indicate which
frame should be displayed by single-image viewers, and a subset
of the frames that should be displayed by slow viewers.
- Multiple-image GIF files can be losslessly converted to MNG.
A Simple MNG Datastream
The MNG format uses the same chunk structure (length, name, data,
check value) as that used by PNG.
The simplest form of MNG is an 8-byte MNG file signature,
a MNG header chunk (MHDR), plus a series of one or more PNG
datastreams (less their 8-byte signatures), followed by a MEND
chunk. MNG is more powerful than that, however. It is
frequently true that the images will be similar, and data from
the first image can be reused in constructing the second to
conserve on the amount of data that must be stored or transmitted. In
this example, the palette and the gamma and chromaticity data from
the first image are reused in the second image:
138 M N G CR LF 26 LF # MNG 8-byte signature
MHDR maxwidth maxheight ... # MNG Header Chunk
IHDR width height ... # PNG Header Chunk
gAMA 50000 # PNG Gamma chunk
cHRM ... # PNG Chromaticity Chunk
PLTE ... # PNG Palette
IDAT ... # PNG Pixel data
IEND # End of first PNG datastream
DHDR 0 1 0 # Delta-PNG Header
IDAT ... # Delta-PNG Pixels
DEND # End of Delta-PNG
MEND # End of MNG datastream
When only a smaller rectangle within the second image has pixels
that are different from those in the first image, the DHDR chunk can
specify that only a smaller rectangle of pixels (sometimes called
a "change box") will be transmitted. Whether the pixels for the
full image or for a smaller rectangle are changed, the data can
be presented as new values that replace the old ones or as
deltas (differences) from the corresponding pixels in the
previous image.
Usually the data in delta form is much more
compressible. Several movies of finite-element calculational results
by the U. S. Army Research Laboratory required only about a quarter of the
file space when converted from a simple series of PNGs to delta-encoded
PNGs.
It is possible to change just the alpha samples in the image, or in
selected parts of it, to fade an image in or out against a background image.
Further dramatic savings in the size of the datastream can be
achieved when an image or a portion of one is merely relocated.
MNG provides a LOCA chunk in which the new coordinates of the
image are transmitted instead of having to retransmit the entire
image. A CLIP chunk is also available, to make it possible to
show only a portion of a previously transmitted image. The LOCA
chunk can be used for scrolling or panning across an image that is
larger than the display area.
Loops
MNG has a simple loop structure that can be used for repeating
images. In this example, five images are defined and displayed
in order 0-1-2-3-4 and then played ten times in order 3-2-1-0-1-
2-3-4:
138 M N G CR LF 26 LF # MNG 8-byte signature
MHDR maxwidth maxheight ... # MNG Header Chunk
IHDR width height ... # PNG Header Chunk
gAMA ... PLTE ... IDAT ... IEND # Define Image 0
CLON 0 1 DHDR 1 1 1 IDAT ... IEND # Define Image 1
CLON 1 2 DHDR 2 1 1 IDAT ... IEND # Define Image 2
CLON 2 3 DHDR 3 1 1 IDAT ... IEND # Define Image 3
CLON 3 4 DHDR 4 1 1 IDAT ... IEND # Define Image 4
LOOP 0 0 10 # Begin Loop
SHOW 3 1 SHOW 0 4 # Show images 3-1, 0-4
ENDL 0 # End Loop
MEND # End MNG
Composite Frames and Sprites
In addition to the simple single-image frames described thus far,
MNG can also describe composite images that are built up of two
or more PNG images. For example, one image could be a full-screen
background while others could be small sprites that are
moved around by means of the LOCA chunk. Examples that
demonstrate these capabilities and others (including scrolling, tiling,
storing 3-D tomographic data, and converting GIF animations
to MNG format) are given as appendices in the MNG proposal.
MNG provides several framing modes that can be used with
composite images. The modes are designed to work with either "draw
mode" or "sprite mode" viewers. "Draw mode" viewers composite the
frames by drawing the images in
order as they are encountered. "Sprite mode" viewers
accumulate the images and composite them all at once,
Such viewers can take advantage of hardware acceleration
if present. The framing modes include:
- Each image is a separate frame (as in the two examples shown
previously).
- A group of images makes up a "draw mode" frame. All images are
initially invisible and are made visible with explicit directives.
- A group of images makes up a series of "draw mode" frames.
All images are initially invisible and are made visible one at a time,
like cards being dealt.
- A group of images forms a "sprite
mode" frame, in which the images retain their visibility status
from the previous frame.
- A group of images is a "draw mode"
frame, but image identifiers are reused to conserve memory.
The MNG proposal explains how to render a "draw mode" frame
with a "sprite mode" viewer, and vice versa.
Status of MNG
The MNG proposal is being designed by the PNG developers and is being
discussed in the "mpng-list@dworkin.wustl.edu" mailing list.
Interested persons can subscribe by sending a message to
majordomo@dworkin.wustl.edu
that contains the line "subscribe mpng-list" (and nothing else) in
the body.
The MNG format specification has not yet been frozen, but it has reached
a state where test implementations are possible. There has been discussion
of MNG since the completion of the PNG design in March 1995, and the first
informal MNG drafts appeared on June 25, 1996. As of November 22, 1996,
25 drafts had been produced for review by the PNG group.
Several prototype MNG datastreams have been written, and a viewer has
been written that is able to process a subset of MNG datastreams (simple
movies without composite frames), including delta-encoded images. These
have already been used by the U. S. Army for real presentation work. The
prototype MNG files and viewer ("viewpng", written at the U.S. Army Research
Laboratory for use on SGI workstations running IRIX 5.3) and the latest
version of the MNG proposal from the PNG
Development Group are available at the MNG ftp site,
ftp://swrinde.nde.swri.edu/pub/mng/
References
1. PNG (Portable Network Graphics) Specification, Version 1.0,
http://www.w3.org/pub/WWW/TR/REC-png-multi.html.
2. MNG (Multiple-image Network Graphics) Proposal,
ftp://swrinde.nde.swri.edu/pub/mng/documents/.
Trademarks
- GIF is a service mark of CompuServe Incorporated.
- SGI and IRIX are trademarks of Silicon Graphics, Inc.
Request for Comments
Comments on the proposed MNG format are welcome and should be addressed to
mpng-list@dworkin.wustl.edu