
Known bugs and suggested enhancements in libpng-1.0.4


1. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey

   Loops need to be optimized everywhere

   Make them count down instead of up -- Kevin Bracey

   Optimizing compilers don't need this, and making
   the change would be error prone -- Tom Lane, Glenn R-P

   Question whether i-- or --i is better.

   STATUS: Under investigation, postponed until after
   libpng-1.0.5.  About 160 loops will be turned around
   in libpng-1.0.Nn, for testing.

2. July 4, 1998 -- ENHANCEMENT -- Glenn R-P

   libpng-1.0.5 and earlier transform colors to gamma=1.0 space for
   merging with background, and then back to the image's gamma.  The
   bit_depth of the intermediate (gamma=1.0) representation is probably
   not sufficient.  In the typical gamma=1/2.2 situation, the linear
   pixels need about 4 more bits than the gamma-encoded ones, to avoid
   loss of precision.  A similar situation exists with the rgb_to_gray
   operation.

   STATUS: under development.

3. September 1999 -- ENHANCEMENT --

   It should be possible to use libpng without floating-point aritmetic.

   STATUS: Under investigation, implementation postponed until after
   libpng-1.0.5.  The application interface will change because replacements
   for the png_set_gAMA(), png_set_cHRM(), and corresponding png_get_()
   functions will be needed.

4. September 1999 -- BUG [FIXED] --

   Portions of the new MMX code in pngvcrd.c were ifdef'd out because they
   didn't work properly, but the bug appears to have been found and fixed.
   As a result, all parts of the code are once again enabled.  If you think
   there's still a problem, you can recompile with one of the following two
   macros defined and see if the problem goes away:

	DISABLE_PNGVCRD_COMBINE
	DISABLE_PNGVCRD_INTERLACE

   The second one is in the function where the bug was; as far as we are
   aware, there was never any bug in the other function.  Please notify us
   if you find any problems in libpng, regardless of whether the two macros
   make any difference:  png-implement@ccrc.wustl.edu

   Again, we believe the MMX code in pngvcrd.c is 100% correct, but it has
   not yet been tested extensively.
