This file contains the differences between MNG-0.97 and MNG-0.97a, for the purposes of voting. There are three proposals: 1. To change "Repeat count" to "Iteration count" in the LOOP chunk specification, and "times to repeat" to "times to execute" in the description of the "Iteration max" field in the TERM chunk, to add a statement about representing infinity, and to add a definition of "iteration" in the terminology section. This is a minor proposal that can be handled by informal consensus. 2. To separates the "transparency" profile bit into "transparency" and "background transparency", and adds discussion of "background transparency" to the BACK and FRAM chunk specifications. This is a proposal will require a formal vote. 3. To add a "stored objects" flag to promise that even of "complex MNG features" are present, it is not necessary to create object buffers. This proposal requires a formal vote. Proposals 2 and 3 both add a "validity" flag to maintain backward compatibility of the simplicity profile. If it is zero, then the "background transparency" and "stored objects" flags do not make any promises if they are zero. This is not a separate proposal but is required for accomplishing either of the "background transparency" or "stored objects" proposals. Note: don't apply this diff to the *.txt file at Swrinde. It was made against a new *.txt file that I saved from Netscape 4.7 while viewing the mng-0.97-20000227-pdg-h20.html file. *** mng-0.97-20000227-pdg-h20.txt Mon Aug 21 15:50:40 2000 --- mng-0.97a-20000821-pdg-h20.txt Mon Aug 21 15:47:09 2000 *************** *** 1,4 **** ! MNG (Multiple-image Network Graphics) Format Version 0.97 For list of authors, see Credits (Chapter 18). --- 1,4 ---- ! MNG (Multiple-image Network Graphics) Format Version 0.97a For list of authors, see Credits (Chapter 18). *************** *** 26,44 **** ftp://swrinde.nde.swri.edu/pub/mng/documents/. ! Changes from sixty-ninth MNG draft (mng-0.96-19990717) ! * Revised wording about frame count and layer count in MNG-VLC ! datastreams. ! * Clarified that the BACK chunk components are always written as though ! for an RGBA PNG with 16-bit sample depth. ! * Added a statement that MNG editors that create a series of PNG or JNG ! files are expected to execute loops, including the TERM-created loop, ! only "iteration_min" times. ! * Clarified that show_mode 6 and 7 causes the cycle to jump back to the ! beginning when the end of the range is reached. An example of how to ! create forward and back-and-forth cycles with SHOW has been inserted. ! * Fixed some typos. Abstract --- 26,41 ---- ftp://swrinde.nde.swri.edu/pub/mng/documents/. ! Changes from seventieth MNG draft (mng-0.97-20000228) ! * Added "background transparency" and "stored objects" flags to the ! simplicity profile. ! * Added some discussion of background transparency when the MNG is being ! displayed over a changing scene. ! * Mentioned possibility of infinity as value of Iteration max in TERM ! chunk. ! * Changed "Repeat count" to "Iteration count" in LOOP chunk ! specification. Abstract *************** *** 172,180 **** o 12.3. Uniform Resource Identifier (URI) * 13. Rationale * 14. Revision History ! o 14.1. Version 0.97 ! o 14.2. Version 0.96 ! o 14.3. Version 0.95 * 15. References * 16. Security Considerations * 17. Appendix: Examples --- 169,178 ---- o 12.3. Uniform Resource Identifier (URI) * 13. Rationale * 14. Revision History ! o 14.1. Version 0.97a ! o 14.2. Version 0.97 ! o 14.3. Version 0.96 ! o 14.4. Version 0.95 * 15. References * 16. Security Considerations * 17. Appendix: Examples *************** *** 390,396 **** abstract image or object An image whose pixels have a hidden representation, and which does not necessarily carry PNG or JNG chunk data. An image delta cannot be ! applied to an abstract image. All abstract objects are viewable. child, or child image An image produced by applying an image delta to a parent object. --- 388,395 ---- abstract image or object An image whose pixels have a hidden representation, and which does not necessarily carry PNG or JNG chunk data. An image delta cannot be ! applied to an abstract image. All abstract objects are viewable. Object ! 0 is always abstract, since it is never stored. child, or child image An image produced by applying an image delta to a parent object. *************** *** 693,698 **** --- 692,702 ---- be made available to the rest of the MNG datastream or be considered viewable after it has been processed. + When the "stored objects" flag (bit 8 of the simplicity profile) is 0 and + valid (i.e., bit 6 is 1 and bit 8 is 0), an object buffer need not be + created even when an embedded object with a nonzero object_id appears, since + the flag promises that the object buffer will never be used. + Object buffer is viewable. Any object that points to a viewable object buffer can be displayed, but one that points to a nonviewable one cannot. Any attempt to do so *************** *** 839,847 **** (must be 0 in MNG-LC and MNG-VLC datastreams) bit 3: ! 0: transparency is absent or can be ! ignored. ! 1: transparency is present and is essential (critical) for proper display of the images. bit 4: --- 843,853 ---- (must be 0 in MNG-LC and MNG-VLC datastreams) bit 3: ! 0: Transparency is absent (i.e., ! every subframe is opaque and ! fills the entire MNG frame ! or can be ignored). ! 1: Transparency is present and is essential (critical) for proper display of the images. bit 4: *************** *** 854,860 **** 1: Delta-PNG is present. (must be 0 in MNG-LC and MNG-VLC datastreams) ! bits 6-15: Reserved for public expansion. Must be zero in this version. bits 16-30: --- 860,888 ---- 1: Delta-PNG is present. (must be 0 in MNG-LC and MNG-VLC datastreams) ! bit 6: Validity flag for bits 7 and 8 ! 0: Background transparency is ! expressed by bit 3 and presence ! of stored objects is expressed ! by bit 2. ! 1: Background transparency is ! expressed by bit 7 and the ! presence of stored objects is ! expressed by bit 8. ! bit 7: ! 0: Background transparency is absent ! (i.e., the first layer fills the ! entire MNG frame with opaque pixels) ! or can be ignored. ! 1: Background transparency is present ! and is essential (critical) for ! proper display of the images. ! bit 8: ! 0: Stored objects are not present. ! 1: Stored objects are present. ! (must be 0 in MNG-LC and MNG-VLC ! datastreams) ! bits 9-15: Reserved for public expansion. Must be zero in this version. bits 16-30: *************** *** 921,934 **** If the simplicity profile is nonzero, it can be regarded as a 32-bit profile, with bit 0 (the least significant bit) being a "profile-validity" ! flag, bit 1 being a "simple MNG" flag, bit 2 being a "complex MNG" flag, bit ! 3 being a "transparency" flag, bit 4 being a "JNG" flag, and bit 5 being a ! "Delta-PNG" flag. The upper 15 bits (except for the most significant bit, ! which must be zero) are available for private test or experimental versions, ! and the remaining bits are reserved for future MNG versions, and must be ! zero in this version. If a bit is zero, the corresponding feature is ! guaranteed to be absent, and if a bit is one, the corresponding feature may ! be present in the MNG datastream. When bit 1 is zero ("simple" MNG features are absent), the datastream does not contain the DEFI, FRAM, or global PLTE and tRNS chunks. --- 949,962 ---- If the simplicity profile is nonzero, it can be regarded as a 32-bit profile, with bit 0 (the least significant bit) being a "profile-validity" ! flag, bit 1 being a "simple MNG" flag, bit 2 being a "complex MNG" flag, ! bits 3 and 7 being a "transparency" flags, bit 4 being a "JNG" flag, bit 5 ! being a "Delta-PNG" flag, and bit 8 being a "stored objects" flag. The upper ! 15 bits (except for the most significant bit, which must be zero) are ! available for private test or experimental versions, and the remaining bits ! are reserved for future MNG versions, and must be zero in this version. If a ! bit is zero, the corresponding feature is guaranteed to be absent, and if a ! bit is one, the corresponding feature may be present in the MNG datastream. When bit 1 is zero ("simple" MNG features are absent), the datastream does not contain the DEFI, FRAM, or global PLTE and tRNS chunks. *************** *** 948,965 **** if they are present they are not essential (or critical) for displaying the images. A MNG-LC (i.e., a "low-complexity MNG") datastream must have a simplicity ! profile with bit 0 equal to 1 and all other bits except possibly for bits 1 ! and 3 ("simple MNG" MNG features and transparency) equal to zero. If bit 4 ! (JNG) is 1, the datastream is a "MNG-LC with JNG" datastream. MNG-LC decoders are allowed to reject such datastreams unless they have been enhanced with JNG capability. A MNG-VLC (i.e., a "very low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly ! for bit 3 (transparency) equal to 0. If bit 4 (JNG) is 1, the datastream is ! a "MNG-VLC with JNG" datastream. MNG-VLC decoders are allowed to reject such ! datastreams unless they have been enhanced with JNG capability. Encoders that write a nonzero simplicity profile should endeavor to be accurate, so that decoders that process it will not unnecessarily reject --- 976,1015 ---- if they are present they are not essential (or critical) for displaying the images. + "Background transparency is absent or can be ignored" means that the first + layer fills the entire frame with opaque pixels, or if any part of the first + layer is not filled with an opaque pixel, the application is free to fill it + with a color of its own choosing. Whatever is behind the first layer need + not show through, or it is not essential (or critical) that it do so. + + When "Background transparency" is present, the application is responsible + for supplying a background color or image against which the MNG background + layer is composited, and if the MNG is being displayed against a changing + scene, the application should update the background layer each time it uses + it. The "background transparency" flag means nothing and must be 0 if bit 6 + is 0. + + The "stored objects" flag is only useful when bit 2 is nonzero (i.e., + "complex MNG features" are present). This flag promises that even though + such features are present, it is never necessary to store an object buffer + for any object. An object attributes set is necessary for each object, + however. Therefore, the MOVE, CLIP, DISC, deterministic LOOP, partial CLON, + and immediately-displayed BASI chunk are permissible. The "stored objects" + flag means nothing and must be 0 if bit 6 is 0. + A MNG-LC (i.e., a "low-complexity MNG") datastream must have a simplicity ! profile with bit 0 equal to 1 and all other bits except possibly for bits 1, ! 3, 6, and 7 ("simple MNG" MNG features and transparency) equal to zero. If ! bit 4 (JNG) is 1, the datastream is a "MNG-LC with JNG" datastream. MNG-LC decoders are allowed to reject such datastreams unless they have been enhanced with JNG capability. A MNG-VLC (i.e., a "very low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly ! for bits 3, 6, and 7 (transparency) equal to 0. If bit 4 (JNG) is 1, the ! datastream is a "MNG-VLC with JNG" datastream. MNG-VLC decoders are allowed ! to reject such datastreams unless they have been enhanced with JNG ! capability. Encoders that write a nonzero simplicity profile should endeavor to be accurate, so that decoders that process it will not unnecessarily reject *************** *** 983,989 **** contents are the first two or more of the following fields: Nest level: 1 byte (unsigned integer). ! Repeat count: 4 bytes (unsigned integer), range [0..2^31-1]. Termination condition: 1 byte (unsigned integer). --- 1033,1039 ---- contents are the first two or more of the following fields: Nest level: 1 byte (unsigned integer). ! Iteration count: 4 bytes (unsigned integer), range [0..2^31-1]. Termination condition: 1 byte (unsigned integer). *************** *** 2053,2058 **** --- 2103,2116 ---- each image appears. Otherwise, framing_mode=3 is identical to framing_mode=1. + When the background layer is transparent or does not fill the clipping + boundaries of the image layer, the application is responsible for + supplying a background color or image against which the image layer is + composited, and if the MNG is being displayed against a changing scene, + the application should update the background layer before compositing + the image layer against it (see the "background transparency" bit of + the simplicity profile). + Framing mode 4. When framing_mode=4, the background layer is displayed before each frame, i.e., after each FRAM chunk, with no interframe delay before *************** *** 2060,2065 **** --- 2118,2131 ---- elapsed before displaying the background layer. Otherwise, framing_mode=4 is identical to framing_mode=2. + When the background layer is transparent or does not fill the clipping + boundaries of the frame, the application is responsible for supplying a + background color or image against which the subframes are composited, + and if the MNG is being displayed against a changing scene, the + application should update the background layer before compositing the + subframes against it (see the "background transparency" bit of the + simplicity profile). + The subframe name must conform to the same formatting rules as those for a PNG tEXt keyword: It must consist only of printable Latin-1 characters and must not have leading or trailing blanks, but can have single embedded *************** *** 2470,2476 **** ticks, before repeating the animation. Iteration max: 4 bytes (unsigned integer). Maximum ! number of times to repeat the animation. The loop created by processing a TERM must always be treated by the decoder as if it were a cacheable loop, with iteration_min=1. --- 2536,2543 ---- ticks, before repeating the animation. Iteration max: 4 bytes (unsigned integer). Maximum ! number of times to execute the animation. ! Infinity is represented by 0x7fffffff. The loop created by processing a TERM must always be treated by the decoder as if it were a cacheable loop, with iteration_min=1. *************** *** 4651,4657 **** 13. Rationale ! This (incomplete as of version 0.96) section does not form a part of the specification. It provides the rationale behind some of the design decisions in MNG. --- 4718,4724 ---- 13. Rationale ! This (incomplete as of version 0.97) section does not form a part of the specification. It provides the rationale behind some of the design decisions in MNG. *************** *** 4686,4697 **** 14. Revision History ! 14.1. Version 0.97 Released 28 February 2000. Minor editorial changes only. A new example was added. ! 14.2. Version 0.96 Released 18 July 1999. The changes that are not simple editorial changes were approved by votes of the PNG Development group that closed 16 July 1999 --- 4753,4786 ---- 14. Revision History ! 14.1. Version 0.97a ! ! Proposed 21 August 2000. ! ! Changed "Repeat count" to "Iteration count" in the LOOP chunk specification, ! and "times to repeat" to "times to execute" in the description of the ! "Iteration max" field in the TERM chunk, and added a statement about ! representing infinity. This is a minor proposal that will be handled by ! informal consensus. ! ! Separates the "transparency" profile bit into "transparency" and "background ! transparency", and adds discussion of "background transparency" to the BACK ! and FRAM chunk specifications. This proposal requires a formal vote. ! ! Adds a "stored objects" flag to promise that even of "complex MNG features" ! are present, it is not necessary to create object buffers. This proposal ! requires a formal vote. ! ! Adds a "validity" flag to maintain backward compatibility of the simplicity ! profile. If it is zero, then the "background transparency" and "stored ! objects" flags do not make any promises. ! ! 14.2. Version 0.97 Released 28 February 2000. Minor editorial changes only. A new example was added. ! 14.3. Version 0.96 Released 18 July 1999. The changes that are not simple editorial changes were approved by votes of the PNG Development group that closed 16 July 1999 *************** *** 4744,4750 **** * Added the global bKGD and sBIT chunks. ! 14.3. Version 0.95 Initial public release, approved by the PNG Development Group on 11 May 1999. --- 4833,4839 ---- * Added the global bKGD and sBIT chunks. ! 14.4. Version 0.95 Initial public release, approved by the PNG Development Group on 11 May 1999. *************** *** 5542,5549 **** Document source ! This document was built from the file mng-master-20000228 on 29 February ! 2000. Copyright Notice --- 5631,5637 ---- Document source ! This document was built from the file mng-master-20000821 on 21 August 2000. Copyright Notice ----end of diff--- In addition to the diffs above, the following item is added to the Terminology section: + iteration + + One cycle of a loop. In this document, as is customary among + mathematicians and computer programmers, the number of iterations of + a loop includes the first cycle. A loop can have zero iterations, + which means it is not executed at all. Also, all instances of "cdrom.com" are changed to "libpng.org".