Author: mike
Date: 2011-02-15 07:28:27 -0800 (Tue, 15 Feb 2011)
New Revision: 8426
Log:
Merge changes from JPEG 8c (released Jan 16, 2011)


Modified:
   branches/branch-1.3/jpeg/README
   branches/branch-1.3/jpeg/change.log
   branches/branch-1.3/jpeg/jcmarker.c
   branches/branch-1.3/jpeg/jcmaster.c
   branches/branch-1.3/jpeg/jpeglib.h
   branches/branch-1.3/jpeg/jversion.h
   branches/branch-1.3/jpeg/libjpeg.txt
   branches/branch-1.3/jpeg/usage.txt

Modified: branches/branch-1.3/jpeg/README
===================================================================
--- branches/branch-1.3/jpeg/README     2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/README     2011-02-15 15:28:27 UTC (rev 8426)
@@ -1,7 +1,7 @@
 The Independent JPEG Group's JPEG software
 ==========================================
 
-README for release 8b of 16-May-2010
+README for release 8c of 16-Jan-2011
 ====================================
 
 This distribution contains the eighth public release of the Independent JPEG
@@ -114,7 +114,7 @@
 fitness for a particular purpose.  This software is provided "AS IS", and you,
 its user, assume the entire risk as to its quality and accuracy.
 
-This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
+This software is copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding.
 All Rights Reserved except as specified below.
 
 Permission is hereby granted to use, copy, modify, and distribute this
@@ -254,8 +254,8 @@
 The "official" archive site for this software is www.ijg.org.
 The most recent released version can always be found there in
 directory "files".  This particular version will be archived as
-http://www.ijg.org/files/jpegsrc.v8b.tar.gz, and in Windows-compatible
-"zip" archive format as http://www.ijg.org/files/jpegsr8b.zip.
+http://www.ijg.org/files/jpegsrc.v8c.tar.gz, and in Windows-compatible
+"zip" archive format as http://www.ijg.org/files/jpegsr8c.zip.
 
 The JPEG FAQ (Frequently Asked Questions) article is a source of some
 general information about JPEG.
@@ -285,8 +285,8 @@
 fruitful consultations in Boston, MA and Milan, Italy.
 
 Thank to Hendrik Elstner, Roland Fassauer, Simone Zuck, Guenther
-Maier-Gerber, Walter Stoeber, and Fred Schmitz for corresponding
-business development.
+Maier-Gerber, Walter Stoeber, Fred Schmitz, and Norbert Braunagel
+for corresponding business development.
 
 Thank to Nico Zschach and Dirk Stelling of the technical support team
 at the Digital Images company in Halle for providing me with extra

Modified: branches/branch-1.3/jpeg/change.log
===================================================================
--- branches/branch-1.3/jpeg/change.log 2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/change.log 2011-02-15 15:28:27 UTC (rev 8426)
@@ -1,6 +1,17 @@
 CHANGE LOG for Independent JPEG Group's JPEG software
 
 
+Version 8c  16-Jan-2011
+-----------------------
+
+Add option to compression library and cjpeg (-block N) to use
+different DCT block size.
+All N from 1 to 16 are possible.  Default is 8 (baseline format).
+Larger values produce higher compression,
+smaller values produce higher quality.
+SmartScale capable decoder (introduced with IJG JPEG 8) required.
+
+
 Version 8b  16-May-2010
 -----------------------
 

Modified: branches/branch-1.3/jpeg/jcmarker.c
===================================================================
--- branches/branch-1.3/jpeg/jcmarker.c 2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/jcmarker.c 2011-02-15 15:28:27 UTC (rev 8426)
@@ -2,7 +2,7 @@
  * jcmarker.c
  *
  * Copyright (C) 1991-1998, Thomas G. Lane.
- * Modified 2003-2009 by Guido Vollbeding.
+ * Modified 2003-2010 by Guido Vollbeding.
  * This file is part of the Independent JPEG Group's software.
  * For conditions of distribution and use, see the accompanying README file.
  *
@@ -231,10 +231,10 @@
   char ac_in_use[NUM_ARITH_TBLS];
   int length, i;
   jpeg_component_info *compptr;
-  
+
   for (i = 0; i < NUM_ARITH_TBLS; i++)
     dc_in_use[i] = ac_in_use[i] = 0;
-  
+
   for (i = 0; i < cinfo->comps_in_scan; i++) {
     compptr = cinfo->cur_comp_info[i];
     /* DC needs no table for refinement scan */
@@ -244,24 +244,26 @@
     if (cinfo->Se)
       ac_in_use[compptr->ac_tbl_no] = 1;
   }
-  
+
   length = 0;
   for (i = 0; i < NUM_ARITH_TBLS; i++)
     length += dc_in_use[i] + ac_in_use[i];
-  
-  emit_marker(cinfo, M_DAC);
-  
-  emit_2bytes(cinfo, length*2 + 2);
-  
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    if (dc_in_use[i]) {
-      emit_byte(cinfo, i);
-      emit_byte(cinfo, cinfo->arith_dc_L[i] + (cinfo->arith_dc_U[i]<<4));
+
+  if (length) {
+    emit_marker(cinfo, M_DAC);
+
+    emit_2bytes(cinfo, length*2 + 2);
+
+    for (i = 0; i < NUM_ARITH_TBLS; i++) {
+      if (dc_in_use[i]) {
+       emit_byte(cinfo, i);
+       emit_byte(cinfo, cinfo->arith_dc_L[i] + (cinfo->arith_dc_U[i]<<4));
+      }
+      if (ac_in_use[i]) {
+       emit_byte(cinfo, i + 0x10);
+       emit_byte(cinfo, cinfo->arith_ac_K[i]);
+      }
     }
-    if (ac_in_use[i]) {
-      emit_byte(cinfo, i + 0x10);
-      emit_byte(cinfo, cinfo->arith_ac_K[i]);
-    }
   }
 #endif /* C_ARITH_CODING_SUPPORTED */
 }

Modified: branches/branch-1.3/jpeg/jcmaster.c
===================================================================
--- branches/branch-1.3/jpeg/jcmaster.c 2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/jcmaster.c 2011-02-15 15:28:27 UTC (rev 8426)
@@ -2,7 +2,7 @@
  * jcmaster.c
  *
  * Copyright (C) 1991-1997, Thomas G. Lane.
- * Modified 2003-2010 by Guido Vollbeding.
+ * Modified 2003-2011 by Guido Vollbeding.
  * This file is part of the Independent JPEG Group's software.
  * For conditions of distribution and use, see the accompanying README file.
  *
@@ -55,125 +55,140 @@
 {
 #ifdef DCT_SCALING_SUPPORTED
 
+  /* Sanity check on input image dimensions to prevent overflow in
+   * following calculation.
+   * We do check jpeg_width and jpeg_height in initial_setup below,
+   * but image_width and image_height can come from arbitrary data,
+   * and we need some space for multiplication by block_size.
+   */
+  if (((long) cinfo->image_width >> 24) || ((long) cinfo->image_height >> 24))
+    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION);
+
   /* Compute actual JPEG image dimensions and DCT scaling choices. */
-  if (cinfo->scale_num >= cinfo->scale_denom * 8) {
-    /* Provide 8/1 scaling */
-    cinfo->jpeg_width = cinfo->image_width << 3;
-    cinfo->jpeg_height = cinfo->image_height << 3;
+  if (cinfo->scale_num >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/1 scaling */
+    cinfo->jpeg_width = cinfo->image_width * cinfo->block_size;
+    cinfo->jpeg_height = cinfo->image_height * cinfo->block_size;
     cinfo->min_DCT_h_scaled_size = 1;
     cinfo->min_DCT_v_scaled_size = 1;
-  } else if (cinfo->scale_num >= cinfo->scale_denom * 4) {
-    /* Provide 4/1 scaling */
-    cinfo->jpeg_width = cinfo->image_width << 2;
-    cinfo->jpeg_height = cinfo->image_height << 2;
+  } else if (cinfo->scale_num * 2 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/2 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 2L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 2L);
     cinfo->min_DCT_h_scaled_size = 2;
     cinfo->min_DCT_v_scaled_size = 2;
-  } else if (cinfo->scale_num * 3 >= cinfo->scale_denom * 8) {
-    /* Provide 8/3 scaling */
-    cinfo->jpeg_width = (cinfo->image_width << 1) + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 2, 3L);
-    cinfo->jpeg_height = (cinfo->image_height << 1) + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 2, 3L);
+  } else if (cinfo->scale_num * 3 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/3 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 3L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 3L);
     cinfo->min_DCT_h_scaled_size = 3;
     cinfo->min_DCT_v_scaled_size = 3;
-  } else if (cinfo->scale_num >= cinfo->scale_denom * 2) {
-    /* Provide 2/1 scaling */
-    cinfo->jpeg_width = cinfo->image_width << 1;
-    cinfo->jpeg_height = cinfo->image_height << 1;
+  } else if (cinfo->scale_num * 4 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/4 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 4L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 4L);
     cinfo->min_DCT_h_scaled_size = 4;
     cinfo->min_DCT_v_scaled_size = 4;
-  } else if (cinfo->scale_num * 5 >= cinfo->scale_denom * 8) {
-    /* Provide 8/5 scaling */
-    cinfo->jpeg_width = cinfo->image_width + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 3, 5L);
-    cinfo->jpeg_height = cinfo->image_height + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 3, 5L);
+  } else if (cinfo->scale_num * 5 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/5 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 5L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 5L);
     cinfo->min_DCT_h_scaled_size = 5;
     cinfo->min_DCT_v_scaled_size = 5;
-  } else if (cinfo->scale_num * 3 >= cinfo->scale_denom * 4) {
-    /* Provide 4/3 scaling */
-    cinfo->jpeg_width = cinfo->image_width + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 3L);
-    cinfo->jpeg_height = cinfo->image_height + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 3L);
+  } else if (cinfo->scale_num * 6 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/6 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 6L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 6L);
     cinfo->min_DCT_h_scaled_size = 6;
     cinfo->min_DCT_v_scaled_size = 6;
-  } else if (cinfo->scale_num * 7 >= cinfo->scale_denom * 8) {
-    /* Provide 8/7 scaling */
-    cinfo->jpeg_width = cinfo->image_width + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 7L);
-    cinfo->jpeg_height = cinfo->image_height + (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 7L);
+  } else if (cinfo->scale_num * 7 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/7 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 7L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 7L);
     cinfo->min_DCT_h_scaled_size = 7;
     cinfo->min_DCT_v_scaled_size = 7;
-  } else if (cinfo->scale_num >= cinfo->scale_denom) {
-    /* Provide 1/1 scaling */
-    cinfo->jpeg_width = cinfo->image_width;
-    cinfo->jpeg_height = cinfo->image_height;
+  } else if (cinfo->scale_num * 8 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/8 scaling */
+    cinfo->jpeg_width = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 8L);
+    cinfo->jpeg_height = (JDIMENSION)
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 8L);
     cinfo->min_DCT_h_scaled_size = 8;
     cinfo->min_DCT_v_scaled_size = 8;
-  } else if (cinfo->scale_num * 9 >= cinfo->scale_denom * 8) {
-    /* Provide 8/9 scaling */
+  } else if (cinfo->scale_num * 9 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/9 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 8, 9L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 9L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 8, 9L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 9L);
     cinfo->min_DCT_h_scaled_size = 9;
     cinfo->min_DCT_v_scaled_size = 9;
-  } else if (cinfo->scale_num * 5 >= cinfo->scale_denom * 4) {
-    /* Provide 4/5 scaling */
+  } else if (cinfo->scale_num * 10 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/10 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 4, 5L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 10L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 4, 5L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 10L);
     cinfo->min_DCT_h_scaled_size = 10;
     cinfo->min_DCT_v_scaled_size = 10;
-  } else if (cinfo->scale_num * 11 >= cinfo->scale_denom * 8) {
-    /* Provide 8/11 scaling */
+  } else if (cinfo->scale_num * 11 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/11 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 8, 11L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 11L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 8, 11L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 11L);
     cinfo->min_DCT_h_scaled_size = 11;
     cinfo->min_DCT_v_scaled_size = 11;
-  } else if (cinfo->scale_num * 3 >= cinfo->scale_denom * 2) {
-    /* Provide 2/3 scaling */
+  } else if (cinfo->scale_num * 12 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/12 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 2, 3L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 12L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 2, 3L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 12L);
     cinfo->min_DCT_h_scaled_size = 12;
     cinfo->min_DCT_v_scaled_size = 12;
-  } else if (cinfo->scale_num * 13 >= cinfo->scale_denom * 8) {
-    /* Provide 8/13 scaling */
+  } else if (cinfo->scale_num * 13 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/13 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 8, 13L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 13L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 8, 13L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 13L);
     cinfo->min_DCT_h_scaled_size = 13;
     cinfo->min_DCT_v_scaled_size = 13;
-  } else if (cinfo->scale_num * 7 >= cinfo->scale_denom * 4) {
-    /* Provide 4/7 scaling */
+  } else if (cinfo->scale_num * 14 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/14 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 4, 7L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 14L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 4, 7L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 14L);
     cinfo->min_DCT_h_scaled_size = 14;
     cinfo->min_DCT_v_scaled_size = 14;
-  } else if (cinfo->scale_num * 15 >= cinfo->scale_denom * 8) {
-    /* Provide 8/15 scaling */
+  } else if (cinfo->scale_num * 15 >= cinfo->scale_denom * cinfo->block_size) {
+    /* Provide block_size/15 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * 8, 15L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 15L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * 8, 15L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 15L);
     cinfo->min_DCT_h_scaled_size = 15;
     cinfo->min_DCT_v_scaled_size = 15;
   } else {
-    /* Provide 1/2 scaling */
+    /* Provide block_size/16 scaling */
     cinfo->jpeg_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 2L);
+      jdiv_round_up((long) cinfo->image_width * cinfo->block_size, 16L);
     cinfo->jpeg_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 2L);
+      jdiv_round_up((long) cinfo->image_height * cinfo->block_size, 16L);
     cinfo->min_DCT_h_scaled_size = 16;
     cinfo->min_DCT_v_scaled_size = 16;
   }
@@ -193,25 +208,11 @@
 LOCAL(void)
 jpeg_calc_trans_dimensions (j_compress_ptr cinfo)
 {
-  if (cinfo->min_DCT_h_scaled_size < 1 || cinfo->min_DCT_h_scaled_size > 16
-      || cinfo->min_DCT_h_scaled_size != cinfo->min_DCT_v_scaled_size)
+  if (cinfo->min_DCT_h_scaled_size != cinfo->min_DCT_v_scaled_size)
     ERREXIT2(cinfo, JERR_BAD_DCTSIZE,
             cinfo->min_DCT_h_scaled_size, cinfo->min_DCT_v_scaled_size);
 
   cinfo->block_size = cinfo->min_DCT_h_scaled_size;
-
-  switch (cinfo->block_size) {
-  case 2: cinfo->natural_order = jpeg_natural_order2; break;
-  case 3: cinfo->natural_order = jpeg_natural_order3; break;
-  case 4: cinfo->natural_order = jpeg_natural_order4; break;
-  case 5: cinfo->natural_order = jpeg_natural_order5; break;
-  case 6: cinfo->natural_order = jpeg_natural_order6; break;
-  case 7: cinfo->natural_order = jpeg_natural_order7; break;
-  default: cinfo->natural_order = jpeg_natural_order; break;
-  }
-
-  cinfo->lim_Se = cinfo->block_size < DCTSIZE ?
-    cinfo->block_size * cinfo->block_size - 1 : DCTSIZE2-1;
 }
 
 
@@ -229,6 +230,25 @@
   else
     jpeg_calc_jpeg_dimensions(cinfo);
 
+  /* Sanity check on block_size */
+  if (cinfo->block_size < 1 || cinfo->block_size > 16)
+    ERREXIT2(cinfo, JERR_BAD_DCTSIZE, cinfo->block_size, cinfo->block_size);
+
+  /* Derive natural_order from block_size */
+  switch (cinfo->block_size) {
+  case 2: cinfo->natural_order = jpeg_natural_order2; break;
+  case 3: cinfo->natural_order = jpeg_natural_order3; break;
+  case 4: cinfo->natural_order = jpeg_natural_order4; break;
+  case 5: cinfo->natural_order = jpeg_natural_order5; break;
+  case 6: cinfo->natural_order = jpeg_natural_order6; break;
+  case 7: cinfo->natural_order = jpeg_natural_order7; break;
+  default: cinfo->natural_order = jpeg_natural_order; break;
+  }
+
+  /* Derive lim_Se from block_size */
+  cinfo->lim_Se = cinfo->block_size < DCTSIZE ?
+    cinfo->block_size * cinfo->block_size - 1 : DCTSIZE2-1;
+
   /* Sanity check on image dimensions */
   if (cinfo->jpeg_height <= 0 || cinfo->jpeg_width <= 0 ||
       cinfo->num_components <= 0 || cinfo->input_components <= 0)

Modified: branches/branch-1.3/jpeg/jpeglib.h
===================================================================
--- branches/branch-1.3/jpeg/jpeglib.h  2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/jpeglib.h  2011-02-15 15:28:27 UTC (rev 8426)
@@ -2,7 +2,7 @@
  * jpeglib.h
  *
  * Copyright (C) 1991-1998, Thomas G. Lane.
- * Modified 2002-2009 by Guido Vollbeding.
+ * Modified 2002-2010 by Guido Vollbeding.
  * This file is part of the Independent JPEG Group's software.
  * For conditions of distribution and use, see the accompanying README file.
  *
@@ -33,11 +33,13 @@
 #endif
 #endif
 
-/* Version ID for the JPEG library.
+/* Version IDs for the JPEG library.
  * Might be useful for tests like "#if JPEG_LIB_VERSION >= 80".
  */
 
-#define JPEG_LIB_VERSION  80   /* Version 8.0 */
+#define JPEG_LIB_VERSION        80     /* Compatibility version 8.0 */
+#define JPEG_LIB_VERSION_MAJOR  8
+#define JPEG_LIB_VERSION_MINOR  3
 
 
 /* Various constants determining the sizes of things.

Modified: branches/branch-1.3/jpeg/jversion.h
===================================================================
--- branches/branch-1.3/jpeg/jversion.h 2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/jversion.h 2011-02-15 15:28:27 UTC (rev 8426)
@@ -1,7 +1,7 @@
 /*
  * jversion.h
  *
- * Copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
+ * Copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding.
  * This file is part of the Independent JPEG Group's software.
  * For conditions of distribution and use, see the accompanying README file.
  *
@@ -9,6 +9,6 @@
  */
 
 
-#define JVERSION       "8b  16-May-2010"
+#define JVERSION       "8c  16-Jan-2011"
 
-#define JCOPYRIGHT     "Copyright (C) 2010, Thomas G. Lane, Guido Vollbeding"
+#define JCOPYRIGHT     "Copyright (C) 2011, Thomas G. Lane, Guido Vollbeding"

Modified: branches/branch-1.3/jpeg/libjpeg.txt
===================================================================
--- branches/branch-1.3/jpeg/libjpeg.txt        2011-02-15 15:25:53 UTC (rev 
8425)
+++ branches/branch-1.3/jpeg/libjpeg.txt        2011-02-15 15:28:27 UTC (rev 
8426)
@@ -1,6 +1,6 @@
 USING THE IJG JPEG LIBRARY
 
-Copyright (C) 1994-2009, Thomas G. Lane, Guido Vollbeding.
+Copyright (C) 1994-2010, Thomas G. Lane, Guido Vollbeding.
 This file is part of the Independent JPEG Group's software.
 For conditions of distribution and use, see the accompanying README file.
 
@@ -876,6 +876,18 @@
 
 Compression parameters (cinfo fields) include:
 
+int block_size
+       Set DCT block size.  All N from 1 to 16 are possible.
+       Default is 8 (baseline format).
+       Larger values produce higher compression,
+       smaller values produce higher quality.
+       An exact DCT stage is possible with 1 or 2.
+       With the default quality of 75 and default Luminance qtable
+       the DCT+Quantization stage is lossless for value 1.
+       Note that values other than 8 require a SmartScale capable decoder,
+       introduced with IJG JPEG 8.  Setting the block_size parameter for
+       compression works with version 8c and later.
+
 J_DCT_METHOD dct_method
        Selects the algorithm used for the DCT step.  Choices are:
                JDCT_ISLOW: slow but accurate integer algorithm
@@ -895,8 +907,10 @@
 unsigned int scale_num, scale_denom
        Scale the image by the fraction scale_num/scale_denom.  Default is
        1/1, or no scaling.  Currently, the supported scaling ratios are
-       8/N with all N from 1 to 16.  (The library design allows for arbitrary
-       scaling ratios but this is not likely to be implemented any time soon.)
+       M/N with all N from 1 to 16, where M is the destination DCT size,
+       which is 8 by default (see block_size parameter above).
+       (The library design allows for arbitrary scaling ratios but this
+       is not likely to be implemented any time soon.)
 
 J_COLOR_SPACE jpeg_color_space
 int num_components

Modified: branches/branch-1.3/jpeg/usage.txt
===================================================================
--- branches/branch-1.3/jpeg/usage.txt  2011-02-15 15:25:53 UTC (rev 8425)
+++ branches/branch-1.3/jpeg/usage.txt  2011-02-15 15:28:27 UTC (rev 8426)
@@ -87,8 +87,9 @@
        -progressive    Create progressive JPEG file (see below).
 
        -scale M/N      Scale the output image by a factor M/N.  Currently
-                       supported scale factors are 8/N with all N from 1 to
-                       16.
+                       supported scale factors are M/N with all N from 1 to
+                       16, where M is the destination DCT size, which is 8 by
+                       default (see -block N switch below).
 
        -targa          Input file is Targa format.  Targa files that contain
                        an "identification" field will not be automatically
@@ -150,6 +151,19 @@
 
 Switches for advanced users:
 
+       -block N        Set DCT block size.  All N from 1 to 16 are possible.
+                       Default is 8 (baseline format).
+                       Larger values produce higher compression,
+                       smaller values produce higher quality
+                       (exact DCT stage possible with 1 or 2; with the
+                       default quality of 75 and default Luminance qtable
+                       the DCT+Quantization stage is lossless for N=1).
+                       CAUTION: An implementation of the JPEG SmartScale
+                       extension is required for this feature.  SmartScale
+                       enabled JPEG is not yet widely implemented, so many
+                       decoders will be unable to view a SmartScale extended
+                       JPEG file at all.
+
        -dct int        Use integer DCT method (default).
        -dct fast       Use fast integer DCT (less accurate).
        -dct float      Use floating-point DCT method.

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to