2013-06-06 07:40:01 -07:00
|
|
|
diff -up8 jchuff.c jchuff.c
|
|
|
|
--- jchuff.c 2012-12-30 21:42:18 -0500
|
|
|
|
+++ jchuff.c 2013-02-16 19:37:01 -0500
|
|
|
|
@@ -17,18 +17,20 @@
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define JPEG_INTERNALS
|
|
|
|
#include "jinclude.h"
|
|
|
|
#include "jpeglib.h"
|
|
|
|
#include "jchuff.h" /* Declarations shared with jcphuff.c */
|
|
|
|
#include <limits.h>
|
|
|
|
|
|
|
|
-static unsigned char jpeg_nbits_table[65536];
|
|
|
|
-static int jpeg_nbits_table_init = 0;
|
|
|
|
+static const unsigned char jpeg_nbits_table[65536] = {
|
|
|
|
+/* Number i needs jpeg_nbits_table[i] bits to be represented. */
|
|
|
|
+#include "jpeg_nbits_table.h"
|
|
|
|
+};
|
|
|
|
|
|
|
|
#ifndef min
|
|
|
|
#define min(a,b) ((a)<(b)?(a):(b))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/* Expanded entropy encoder object for Huffman encoding.
|
|
|
|
*
|
|
|
|
@@ -266,25 +268,16 @@ jpeg_make_c_derived_tbl (j_compress_ptr
|
|
|
|
|
|
|
|
for (p = 0; p < lastp; p++) {
|
|
|
|
i = htbl->huffval[p];
|
|
|
|
if (i < 0 || i > maxsymbol || dtbl->ehufsi[i])
|
|
|
|
ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
|
|
|
|
dtbl->ehufco[i] = huffcode[p];
|
|
|
|
dtbl->ehufsi[i] = huffsize[p];
|
|
|
|
}
|
|
|
|
-
|
|
|
|
- if(!jpeg_nbits_table_init) {
|
|
|
|
- for(i = 0; i < 65536; i++) {
|
|
|
|
- int nbits = 0, temp = i;
|
|
|
|
- while (temp) {temp >>= 1; nbits++;}
|
|
|
|
- jpeg_nbits_table[i] = nbits;
|
|
|
|
- }
|
|
|
|
- jpeg_nbits_table_init = 1;
|
|
|
|
- }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Outputting bytes to the file */
|
|
|
|
|
|
|
|
/* Emit a byte, taking 'action' if must suspend. */
|
|
|
|
#define emit_byte(state,val,action) \
|
|
|
|
{ *(state)->next_output_byte++ = (JOCTET) (val); \
|
|
|
|
diff -up8 jmorecfg.h jmorecfg.h
|
|
|
|
--- jmorecfg.h 2013-01-06 12:59:42 -0500
|
|
|
|
+++ jmorecfg.h 2013-02-16 19:37:01 -0500
|
|
|
|
@@ -7,16 +7,17 @@
|
|
|
|
* Copyright (C) 2009, 2011, D. R. Commander.
|
2012-02-11 00:34:00 -08:00
|
|
|
* For conditions of distribution and use, see the accompanying README file.
|
|
|
|
*
|
|
|
|
* This file contains additional configuration options that customize the
|
|
|
|
* JPEG software for special applications or support machine-dependent
|
|
|
|
* optimizations. Most users will not need to touch this file.
|
|
|
|
*/
|
|
|
|
|
2013-07-30 07:25:31 -07:00
|
|
|
+#include <stdint.h>
|
2012-02-11 00:34:00 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Define BITS_IN_JSAMPLE as either
|
|
|
|
* 8 for 8-bit sample values (the usual setting)
|
|
|
|
* 12 for 12-bit sample values
|
|
|
|
* Only 8 and 12 are legal data precisions for lossy JPEG according to the
|
|
|
|
* JPEG standard, and the IJG code does not support anything else!
|
|
|
|
* We do not support run-time selection of data precision, sorry.
|
2013-06-06 07:40:01 -07:00
|
|
|
@@ -128,45 +129,29 @@ typedef char JOCTET;
|
2012-02-11 00:34:00 -08:00
|
|
|
* They must be at least as wide as specified; but making them too big
|
|
|
|
* won't cost a huge amount of memory, so we don't provide special
|
|
|
|
* extraction code like we did for JSAMPLE. (In other words, these
|
|
|
|
* typedefs live at a different point on the speed/space tradeoff curve.)
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* UINT8 must hold at least the values 0..255. */
|
|
|
|
|
|
|
|
-#ifdef HAVE_UNSIGNED_CHAR
|
|
|
|
-typedef unsigned char UINT8;
|
|
|
|
-#else /* not HAVE_UNSIGNED_CHAR */
|
|
|
|
-#ifdef __CHAR_UNSIGNED__
|
|
|
|
-typedef char UINT8;
|
|
|
|
-#else /* not __CHAR_UNSIGNED__ */
|
|
|
|
-typedef short UINT8;
|
|
|
|
-#endif /* __CHAR_UNSIGNED__ */
|
|
|
|
-#endif /* HAVE_UNSIGNED_CHAR */
|
2012-08-22 08:59:54 -07:00
|
|
|
+typedef uint8_t UINT8;
|
2012-02-11 00:34:00 -08:00
|
|
|
|
|
|
|
/* UINT16 must hold at least the values 0..65535. */
|
|
|
|
|
|
|
|
-#ifdef HAVE_UNSIGNED_SHORT
|
|
|
|
-typedef unsigned short UINT16;
|
|
|
|
-#else /* not HAVE_UNSIGNED_SHORT */
|
|
|
|
-typedef unsigned int UINT16;
|
|
|
|
-#endif /* HAVE_UNSIGNED_SHORT */
|
2012-08-22 08:59:54 -07:00
|
|
|
+typedef uint16_t UINT16;
|
2012-02-11 00:34:00 -08:00
|
|
|
|
|
|
|
/* INT16 must hold at least the values -32768..32767. */
|
|
|
|
|
|
|
|
-#ifndef XMD_H /* X11/xmd.h correctly defines INT16 */
|
|
|
|
-typedef short INT16;
|
|
|
|
-#endif
|
2012-08-22 08:59:54 -07:00
|
|
|
+typedef int16_t INT16;
|
2012-02-11 00:34:00 -08:00
|
|
|
|
|
|
|
/* INT32 must hold at least signed 32-bit values. */
|
|
|
|
|
|
|
|
-#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */
|
|
|
|
-typedef long INT32;
|
|
|
|
-#endif
|
2012-08-22 08:59:54 -07:00
|
|
|
+typedef int32_t INT32;
|
2012-02-11 00:34:00 -08:00
|
|
|
|
|
|
|
/* Datatype used for image dimensions. The JPEG standard only supports
|
|
|
|
* images up to 64K*64K due to 16-bit fields in SOF markers. Therefore
|
|
|
|
* "unsigned int" is sufficient on all machines. However, if you need to
|
|
|
|
* handle larger images and you don't mind deviating from the spec, you
|
|
|
|
* can change this datatype.
|
|
|
|
*/
|
|
|
|
|