PNG Proposed sTER chunk, draft 20060322

File: png-proposed-sTER-chunk-20060322.txt

Status of this Memo

   This document is an informal draft of the PNG development group.

   Comments on this document can be sent to the PNG specification
   maintainers at png-mng-misc@lists.sourceforge.net

   Distribution of this memo is unlimited.

   At present, the latest version of this document is available on the
   World Wide Web from
   ftp://ftp.simplesystems.org/pub/libpng/png-group/documents/.

Notices

   Copyright (C) 2006 Glenn Randers-Pehrson

   Permission is granted to copy and distribute this document for any
   purpose and without charge, provided that the copyright notice and
   this notice are preserved, and that any substantive changes or
   deletions from the original are clearly marked.

Abstract

   This document describes a special-purpose chunk type that has been
   proposed for use in various PNG (Portable Network Graphics) and
   related multi-image applications. It has not yet been approved for
   registration by the PNG developers, and therefore is experimental and
   its format is subject to change. The proposed chunk is (with an
   unregistered name that can be used in test implementations shown in
   parentheses): sTER (stER).

PNG sTER proposal

   It is proposed to add the following section to the document
   "Extensions to the PNG 1.2 Specification, Version 1.2.0"

  3.6. sTER Indicator of Stereo Image

   When present, the sTER chunk indicates that the datastream contains a
   stereo pair of subimages within a single PNG image.

   The sTER chunk contains:

         Mode: 1 byte
               0: cross-fuse layout
               1: diverging-fuse layout

   The sTER chunk with mode==0 or mode=1 indicates that the datastream
   contains two subimages, encoded within a single PNG image. They are
   arranged side-by-side, with one subimage intended for presentation to
   the right eye and the other subimage intended for presentation to the
   left eye. The left edge of the right subimage must be on a column that
   is evenly divisible by eight, so that if interlacing is employed the
   two images will have coordinated interlacing. Padding columns between
   the two subimages must be introduced by the encoder if necessary. The
   two subimages must have the same dimensions after removal of any
   padding.

   When mode==0, the right-eye image appears at the left and the left-eye
   image appears at the right, suitable for cross-eyed free viewing. When
   mode==1, the left-eye image appears at the left and the right-eye
   image appears at the right, suitable for divergent (wall-eyed) free
   viewing.

   Decoders that are aware of the sTER chunk may display the two images
   in any suitable manner. Decoders that are not aware of the sTER chunk,
   and those that recognize the chunk but choose not to treat stereo
   pairs differently from regular PNG images, will naturally display them
   side-by-side in a manner suitable for free viewing.

   If present, the sTER chunk must appear before the first IDAT chunk.

   In palette images, for compatibility with software not supporting the
   sTER chunk, the padding pixels must be valid palette indices.

   Given two subimages with width subimage_width, encoders can calculate
   the inter-subimage padding and total width W using the following
   pseudocode:

    padding        := 7 - ((subimage_width - 1) mod 8)
    W              := 2 * subimage_width + padding

   Given an image with width W, decoders can calculate the subimage width
   and inter-subimage padding using the following pseudocode:

    padding := 15 - ((W - 1) mod 16)
    if (padding > 7) then error
    subimage_width := (W - padding) / 2

   Decoders can assume that the samples in the left and right subimages
   are cosited, such that the subimages and their centers are coincident
   at the projection plane. Decoders can also assume that the left and
   right subimages are intended to be presented directly to the right and
   left eyes of the user/viewer without independent scaling, rotation or
   displacement. I.e., the subimages will be presented at the same size
   in the same relative position and orientation to each eye of the
   viewer.

   Encoders should use the pHYs chunk to indicate the pixel's size ratio
   when it is not 1:1.

   It is recommended that encoders use the cross-fusing layout (mode==0),
   especially when the image centers are separated by more than 65
   millimeters when displayed on a typical monitor.

MNG sTER proposal

   It is proposed to add the following paragraphs to the document "MNG
   (Multiple-image Network Graphics) Format, Version 1.0":

   At the end of the list in Paragraph 4.2.3, IHDR, PNG chunks, IEND, add
   another bullet:

     * If the PNG sTER chunk appears in the top-level MNG datastream with
       mode==0, any sTER chunk appearing in any embedded PNG or JNG
       datastream must be ignored. If not, then the decoder must handle
       the sTER chunk in the embedded datastream in the same manner as it
       handles them in standalone PNG or JNG datastreams.

   At the end of Paragraph 4.6, Ancillary PNG chunks, add another bullet:

     * sTER This PNG chunk is also defined at the MNG top level. When
       active, it takes precedence over any sTER chunk found in embedded
       PNG or JNG datastreams. It has the same meaning as a PNG sTER
       chunk except that it applies to each subsequent subframe rather
       than to a single PNG image, and the image dimensions and padding
       are determined from the subframe boundaries instead of from the
       PNG IHDR data. An empty top-level sTER chunk nullifies any prior
       top-level sTER chunk.
       Encoders should use the pHYg chunk or the MAGN chunk to indicate
       the pixel's size ratio when it is not 1:1.

   In paragraph 5.2, Ancillary JNG chunks, after the word "sCAL", add ",
   sTER".

   Add paragraph 10.8, Interlacing and the sTER chunk

   It is recommended that when the sTER chunk is active and the two
   images are conveyed in separate PNG or JNG datastreams, interlacing
   not be used.

Contributors

   Names of contributors not already listed in the PNG specification are
   presented in alphabetical order:

     * Adeluc, www.adeluc.com, png@adeluc.com

  Editor

     * Glenn Randers-Pehrson, glennrp@users.sourceforge.net

   End of PNG sTER Chunk Proposal. Expires 22 Sept 2006.