mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
198 lines
6.5 KiB
Diff
198 lines
6.5 KiB
Diff
diff --git a/jpeg.c b/jpeg.c
|
|
index 936bc55..7a83542 100644
|
|
--- a/jpeg.c
|
|
+++ b/jpeg.c
|
|
@@ -46,7 +46,7 @@ typedef unsigned char jboolean;
|
|
typedef int jboolean;
|
|
#endif
|
|
|
|
-#define JPEG_LIB_VERSION 62 // Version 6b
|
|
+#define JPEG_LIB_VERSION 70 // Version 7
|
|
|
|
typedef void *j_common_ptr;
|
|
typedef struct jpeg_compress_struct *j_compress_ptr;
|
|
@@ -130,6 +130,41 @@ struct jpeg_source_mgr
|
|
void (*term_source) (j_decompress_ptr cinfo);
|
|
};
|
|
|
|
+/* Types for JPEG compression parameters and working tables. */
|
|
+
|
|
+
|
|
+/* DCT coefficient quantization tables. */
|
|
+
|
|
+typedef struct {
|
|
+ /* This array gives the coefficient quantizers in natural array order
|
|
+ * (not the zigzag order in which they are stored in a JPEG DQT marker).
|
|
+ * CAUTION: IJG versions prior to v6a kept this array in zigzag order.
|
|
+ */
|
|
+ unsigned short quantval[DCTSIZE2]; /* quantization step for each coefficient */
|
|
+ /* This field is used only during compression. It's initialized FALSE when
|
|
+ * the table is created, and set TRUE when it's been output to the file.
|
|
+ * You could suppress output of a table by setting this to TRUE.
|
|
+ * (See jpeg_suppress_tables for an example.)
|
|
+ */
|
|
+ jboolean sent_table; /* TRUE when table has been output */
|
|
+} JQUANT_TBL;
|
|
+
|
|
+
|
|
+/* Huffman coding tables. */
|
|
+
|
|
+typedef struct {
|
|
+ /* These two fields directly represent the contents of a JPEG DHT marker */
|
|
+ unsigned char bits[17]; /* bits[k] = # of symbols with codes of */
|
|
+ /* length k bits; bits[0] is unused */
|
|
+ unsigned char huffval[256]; /* The symbols, in order of incr code length */
|
|
+ /* This field is used only during compression. It's initialized FALSE when
|
|
+ * the table is created, and set TRUE when it's been output to the file.
|
|
+ * You could suppress output of a table by setting this to TRUE.
|
|
+ * (See jpeg_suppress_tables for an example.)
|
|
+ */
|
|
+ jboolean sent_table; /* TRUE when table has been output */
|
|
+} JHUFF_TBL;
|
|
+
|
|
typedef struct {
|
|
/* These values are fixed over the whole image. */
|
|
/* For compression, they must be supplied by parameter setup; */
|
|
@@ -161,12 +196,13 @@ typedef struct {
|
|
* Values of 1,2,4,8 are likely to be supported. Note that different
|
|
* components may receive different IDCT scalings.
|
|
*/
|
|
- int DCT_scaled_size;
|
|
+ int DCT_h_scaled_size;
|
|
+ int DCT_v_scaled_size;
|
|
/* The downsampled dimensions are the component's actual, unpadded number
|
|
- * of samples at the main buffer (preprocessing/compression interface), thus
|
|
- * downsampled_width = ceil(image_width * Hi/Hmax)
|
|
- * and similarly for height. For decompression, IDCT scaling is included, so
|
|
- * downsampled_width = ceil(image_width * Hi/Hmax * DCT_scaled_size/DCTSIZE)
|
|
+ * of samples at the main buffer (preprocessing/compression interface);
|
|
+ * DCT scaling is included, so
|
|
+ * downsampled_width = ceil(image_width * Hi/Hmax * DCT_h_scaled_size/DCTSIZE)
|
|
+ * and similarly for height.
|
|
*/
|
|
JDIMENSION downsampled_width; /* actual width in samples */
|
|
JDIMENSION downsampled_height; /* actual height in samples */
|
|
@@ -195,6 +231,15 @@ typedef struct {
|
|
void * dct_table;
|
|
} jpeg_component_info;
|
|
|
|
+/* The script for encoding a multiple-scan file is an array of these: */
|
|
+
|
|
+typedef struct {
|
|
+ int comps_in_scan; /* number of components encoded in this scan */
|
|
+ int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
|
|
+ int Ss, Se; /* progressive JPEG spectral selection parms */
|
|
+ int Ah, Al; /* progressive JPEG successive approx. parms */
|
|
+} jpeg_scan_info;
|
|
+
|
|
struct jpeg_decompress_struct
|
|
{
|
|
struct jpeg_error_mgr *err; // USED
|
|
@@ -268,7 +313,8 @@ struct jpeg_decompress_struct
|
|
void *marker_list;
|
|
int max_h_samp_factor;
|
|
int max_v_samp_factor;
|
|
- int min_DCT_scaled_size;
|
|
+ int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
|
|
+ int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
|
|
JDIMENSION total_iMCU_rows;
|
|
void *sample_range_limit;
|
|
int comps_in_scan;
|
|
@@ -297,35 +343,45 @@ struct jpeg_compress_struct
|
|
{
|
|
struct jpeg_error_mgr *err;
|
|
struct jpeg_memory_mgr *mem;
|
|
- void *progress;
|
|
+ struct jpeg_profress_mgr *progress;
|
|
void *client_data;
|
|
jboolean is_decompressor;
|
|
int global_state;
|
|
|
|
- void *dest;
|
|
+ struct jpeg_destination_mgr *dest;
|
|
JDIMENSION image_width;
|
|
JDIMENSION image_height;
|
|
int input_components;
|
|
J_COLOR_SPACE in_color_space;
|
|
double input_gamma;
|
|
- int data_precision;
|
|
+ unsigned int scale_num, scale_denom;
|
|
+
|
|
+ JDIMENSION jpeg_width;
|
|
+ JDIMENSION jpeg_height;
|
|
|
|
+ int data_precision;
|
|
int num_components;
|
|
+
|
|
J_COLOR_SPACE jpeg_color_space;
|
|
jpeg_component_info *comp_info;
|
|
- void *quant_tbl_ptrs[NUM_QUANT_TBLS];
|
|
- void *dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
|
|
- void *ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
|
|
+
|
|
+ JQUANT_TBL *quant_tbl_ptrs[NUM_QUANT_TBLS];
|
|
+ int q_scale_factor[NUM_QUANT_TBLS];
|
|
+
|
|
+ JHUFF_TBL *dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
|
|
+ JHUFF_TBL *ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
|
|
+
|
|
unsigned char arith_dc_L[NUM_ARITH_TBLS];
|
|
unsigned char arith_dc_U[NUM_ARITH_TBLS];
|
|
unsigned char arith_ac_K[NUM_ARITH_TBLS];
|
|
|
|
int num_scans;
|
|
- const void *scan_info;
|
|
+ const jpeg_scan_info *scan_info;
|
|
jboolean raw_data_in;
|
|
jboolean arith_code;
|
|
jboolean optimize_coding;
|
|
jboolean CCIR601_sampling;
|
|
+ jboolean do_fancy_downsampling;
|
|
int smoothing_factor;
|
|
J_DCT_METHOD dct_method;
|
|
|
|
@@ -344,6 +400,8 @@ struct jpeg_compress_struct
|
|
jboolean progressive_mode;
|
|
int max_h_samp_factor;
|
|
int max_v_samp_factor;
|
|
+ int min_DCT_h_scaled_size; /* smallest DCT_h_scaled_size of any component */
|
|
+ int min_DCT_v_scaled_size; /* smallest DCT_v_scaled_size of any component */
|
|
JDIMENSION total_iMCU_rows;
|
|
int comps_in_scan;
|
|
jpeg_component_info *cur_comp_info[MAX_COMPS_IN_SCAN];
|
|
@@ -353,16 +411,16 @@ struct jpeg_compress_struct
|
|
int MCU_membership[C_MAX_BLOCKS_IN_MCU];
|
|
int Ss, Se, Ah, Al;
|
|
|
|
- void *master;
|
|
- void *main;
|
|
- void *prep;
|
|
- void *coef;
|
|
- void *marker;
|
|
- void *cconvert;
|
|
- void *downsample;
|
|
- void *fdct;
|
|
- void *entropy;
|
|
- void *script_space;
|
|
+ struct jpeg_comp_master * master;
|
|
+ struct jpeg_c_main_controller * main;
|
|
+ struct jpeg_c_prep_controller * prep;
|
|
+ struct jpeg_c_coef_controller * coef;
|
|
+ struct jpeg_marker_writer * marker;
|
|
+ struct jpeg_color_converter * cconvert;
|
|
+ struct jpeg_downsampler * downsample;
|
|
+ struct jpeg_forward_dct * fdct;
|
|
+ struct jpeg_entropy_encoder * entropy;
|
|
+ jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
|
|
int script_space_size;
|
|
};
|
|
|
|
@@ -473,7 +531,7 @@ qboolean JPEG_OpenLibrary (void)
|
|
#elif defined(MACOSX)
|
|
"libjpeg.62.dylib",
|
|
#else
|
|
- "libjpeg.so.62",
|
|
+ "libjpeg.so.7",
|
|
"libjpeg.so",
|
|
#endif
|
|
NULL
|