[devel] Documented the pngvalid gamma error summary with additional comments
and print statements.
diff --git a/ANNOUNCE b/ANNOUNCE
index 791b183..65780e6 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -460,6 +460,8 @@
Included documentation of changes in 1.5.0 from 1.4.x in libpng-manual.txt
Version 1.5.0beta57 [December 7, 2010]
+ Documented the pngvalid gamma error summary with additional comments and
+ print statements.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit
diff --git a/CHANGES b/CHANGES
index 7e76db4..5617f94 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3098,6 +3098,8 @@
Included documentation of changes in 1.5.0 from 1.4.x in libpng-manual.txt
Version 1.5.0beta57 [December 7, 2010]
+ Documented the pngvalid gamma error summary with additional comments and
+ print statements.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
diff --git a/pngvalid.c b/pngvalid.c
index aa9207b..a545594 100644
--- a/pngvalid.c
+++ b/pngvalid.c
@@ -3463,7 +3463,19 @@
if (summary)
{
- printf("Gamma correction error summary (output value error):\n");
+ printf("Gamma correction error summary\n\n");
+ printf("The printed value is the maximum error in the pixel values\n");
+ printf("calculated by the libpng gamma correction code. The error\n");
+ printf("is calculated as the difference between the output pixel\n");
+ printf("value (always an integer) and the ideal value from the\n");
+ printf("libpng specification (typically not an integer).\n\n");
+
+ printf("Expect this value to be less than .5 for 8 bit formats,\n");
+ printf("less than 1 for formats with fewer than 8 bits and a small\n");
+ printf("number (typically less than 5) for the 16 bit formats.\n");
+ printf("For performance reasons the value for 16 bit formats\n");
+ printf("increases when the image file includes an sBIT chunk.\n\n");
+
printf(" 2 bit gray: %.5f\n", pm->error_gray_2);
printf(" 4 bit gray: %.5f\n", pm->error_gray_4);
printf(" 8 bit gray: %.5f\n", pm->error_gray_8);
@@ -3556,7 +3568,13 @@
pm.sbitlow = 8U; /* because libpng doesn't do sBIT below 8! */
pm.use_input_precision_16to8 = 1U; /* Because of the way libpng does it */
- /* Some default values (set the behavior for 'make check' here) */
+ /* Some default values (set the behavior for 'make check' here).
+ * These values simply control the maximum error permitted in the gamma
+ * transformations. The practial limits for human perception are described
+ * below (the setting for maxpc16), however for 8 bit encodings it isn't
+ * possible to meet the accepted capabilities of human vision - i.e. 8 bit
+ * images can never be good enough (regardless of encoding.)
+ */
pm.maxout8 = .1; /* Arithmetic error in *encoded* value */
pm.maxabs8 = .00005; /* 1/20000 */
pm.maxpc8 = .499; /* I.e. .499% fractional error */