jquant2.c File Reference

#include "jinclude.h"
#include "jpeglib.h"

Go to the source code of this file.

Classes

struct  my_cquantizer
struct  box

Defines

#define JPEG_INTERNALS
#define R_SCALE   2
#define G_SCALE   3
#define B_SCALE   1
#define C0_SCALE   R_SCALE
#define C1_SCALE   G_SCALE
#define C2_SCALE   B_SCALE
#define MAXNUMCOLORS   (MAXJSAMPLE+1)
#define HIST_C0_BITS   5
#define HIST_C1_BITS   6
#define HIST_C2_BITS   5
#define HIST_C0_ELEMS   (1<<HIST_C0_BITS)
#define HIST_C1_ELEMS   (1<<HIST_C1_BITS)
#define HIST_C2_ELEMS   (1<<HIST_C2_BITS)
#define C0_SHIFT   (BITS_IN_JSAMPLE-HIST_C0_BITS)
#define C1_SHIFT   (BITS_IN_JSAMPLE-HIST_C1_BITS)
#define C2_SHIFT   (BITS_IN_JSAMPLE-HIST_C2_BITS)
#define BOX_C0_LOG   (HIST_C0_BITS-3)
#define BOX_C1_LOG   (HIST_C1_BITS-3)
#define BOX_C2_LOG   (HIST_C2_BITS-3)
#define BOX_C0_ELEMS   (1<<BOX_C0_LOG)
#define BOX_C1_ELEMS   (1<<BOX_C1_LOG)
#define BOX_C2_ELEMS   (1<<BOX_C2_LOG)
#define BOX_C0_SHIFT   (C0_SHIFT + BOX_C0_LOG)
#define BOX_C1_SHIFT   (C1_SHIFT + BOX_C1_LOG)
#define BOX_C2_SHIFT   (C2_SHIFT + BOX_C2_LOG)
#define STEP_C0   ((1 << C0_SHIFT) * C0_SCALE)
#define STEP_C1   ((1 << C1_SHIFT) * C1_SCALE)
#define STEP_C2   ((1 << C2_SHIFT) * C2_SCALE)
#define STEPSIZE   ((MAXJSAMPLE+1)/16)

Typedefs

typedef UINT16 histcell
typedef histcell FAR * histptr
typedef histcell hist1d [HIST_C2_ELEMS]
typedef hist1d FAR * hist2d
typedef hist2dhist3d
typedef INT16 FSERROR
typedef int LOCFSERROR
typedef FSERROR FAR * FSERRPTR
typedef my_cquantizermy_cquantize_ptr
typedef boxboxptr

Functions

 prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
 find_biggest_color_pop (boxptr boxlist, int numboxes)
 find_biggest_volume (boxptr boxlist, int numboxes)
 update_box (j_decompress_ptr cinfo, boxptr boxp)
 median_cut (j_decompress_ptr cinfo, boxptr boxlist, int numboxes, int desired_colors)
 compute_color (j_decompress_ptr cinfo, boxptr boxp, int icolor)
 select_colors (j_decompress_ptr cinfo, int desired_colors)
 find_nearby_colors (j_decompress_ptr cinfo, int minc0, int minc1, int minc2, JSAMPLE colorlist[])
 find_best_colors (j_decompress_ptr cinfo, int minc0, int minc1, int minc2, int numcolors, JSAMPLE colorlist[], JSAMPLE bestcolor[])
 fill_inverse_cmap (j_decompress_ptr cinfo, int c0, int c1, int c2)
 pass2_no_dither (j_decompress_ptr cinfo, JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
 pass2_fs_dither (j_decompress_ptr cinfo, JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
 init_error_limit (j_decompress_ptr cinfo)
 finish_pass1 (j_decompress_ptr cinfo)
 finish_pass2 (j_decompress_ptr cinfo)
 start_pass_2_quant (j_decompress_ptr cinfo, boolean is_pre_scan)
 new_color_map_2_quant (j_decompress_ptr cinfo)
 jinit_2pass_quantizer (j_decompress_ptr cinfo)


Define Documentation

#define B_SCALE   1

Definition at line 75 of file jquant2.c.

#define BOX_C0_ELEMS   (1<<BOX_C0_LOG)

Definition at line 628 of file jquant2.c.

Referenced by fill_inverse_cmap(), and find_best_colors().

#define BOX_C0_LOG   (HIST_C0_BITS-3)

Definition at line 624 of file jquant2.c.

Referenced by fill_inverse_cmap().

#define BOX_C0_SHIFT   (C0_SHIFT + BOX_C0_LOG)

Definition at line 632 of file jquant2.c.

Referenced by fill_inverse_cmap(), and find_nearby_colors().

#define BOX_C1_ELEMS   (1<<BOX_C1_LOG)

Definition at line 629 of file jquant2.c.

Referenced by fill_inverse_cmap(), and find_best_colors().

#define BOX_C1_LOG   (HIST_C1_BITS-3)

Definition at line 625 of file jquant2.c.

Referenced by fill_inverse_cmap().

#define BOX_C1_SHIFT   (C1_SHIFT + BOX_C1_LOG)

Definition at line 633 of file jquant2.c.

Referenced by find_nearby_colors().

#define BOX_C2_ELEMS   (1<<BOX_C2_LOG)

Definition at line 630 of file jquant2.c.

Referenced by fill_inverse_cmap(), and find_best_colors().

#define BOX_C2_LOG   (HIST_C2_BITS-3)

Definition at line 626 of file jquant2.c.

Referenced by fill_inverse_cmap().

#define BOX_C2_SHIFT   (C2_SHIFT + BOX_C2_LOG)

Definition at line 634 of file jquant2.c.

Referenced by find_nearby_colors().

#define C0_SCALE   R_SCALE

Definition at line 85 of file jquant2.c.

Referenced by find_best_colors(), find_nearby_colors(), median_cut(), and update_box().

#define C0_SHIFT   (BITS_IN_JSAMPLE-HIST_C0_BITS)

Definition at line 142 of file jquant2.c.

Referenced by fill_inverse_cmap(), find_nearby_colors(), median_cut(), pass2_fs_dither(), pass2_no_dither(), prescan_quantize(), select_colors(), and update_box().

#define C1_SCALE   G_SCALE

Definition at line 91 of file jquant2.c.

Referenced by find_best_colors(), find_nearby_colors(), median_cut(), and update_box().

#define C1_SHIFT   (BITS_IN_JSAMPLE-HIST_C1_BITS)

Definition at line 143 of file jquant2.c.

Referenced by find_nearby_colors(), median_cut(), pass2_fs_dither(), pass2_no_dither(), prescan_quantize(), select_colors(), and update_box().

#define C2_SCALE   B_SCALE

Definition at line 97 of file jquant2.c.

Referenced by find_best_colors(), find_nearby_colors(), median_cut(), and update_box().

#define C2_SHIFT   (BITS_IN_JSAMPLE-HIST_C2_BITS)

Definition at line 144 of file jquant2.c.

Referenced by find_nearby_colors(), median_cut(), pass2_fs_dither(), pass2_no_dither(), prescan_quantize(), select_colors(), and update_box().

#define G_SCALE   3

Definition at line 74 of file jquant2.c.

#define HIST_C0_BITS   5

Definition at line 132 of file jquant2.c.

#define HIST_C0_ELEMS   (1<<HIST_C0_BITS)

Definition at line 137 of file jquant2.c.

Referenced by jinit_2pass_quantizer(), and start_pass_2_quant().

#define HIST_C1_BITS   6

Definition at line 133 of file jquant2.c.

#define HIST_C1_ELEMS   (1<<HIST_C1_BITS)

Definition at line 138 of file jquant2.c.

Referenced by jinit_2pass_quantizer(), and start_pass_2_quant().

#define HIST_C2_BITS   5

Definition at line 134 of file jquant2.c.

#define HIST_C2_ELEMS   (1<<HIST_C2_BITS)

Definition at line 139 of file jquant2.c.

Referenced by jinit_2pass_quantizer(), start_pass_2_quant(), and update_box().

#define JPEG_INTERNALS

Definition at line 20 of file jquant2.c.

#define MAXNUMCOLORS   (MAXJSAMPLE+1)

Definition at line 127 of file jquant2.c.

Referenced by fill_inverse_cmap(), find_nearby_colors(), jinit_2pass_quantizer(), and start_pass_2_quant().

#define R_SCALE   2

Definition at line 73 of file jquant2.c.

#define STEP_C0   ((1 << C0_SHIFT) * C0_SCALE)

Referenced by find_best_colors().

#define STEP_C1   ((1 << C1_SHIFT) * C1_SCALE)

Referenced by find_best_colors().

#define STEP_C2   ((1 << C2_SHIFT) * C2_SCALE)

Referenced by find_best_colors().

#define STEPSIZE   ((MAXJSAMPLE+1)/16)

Referenced by init_error_limit().


Typedef Documentation

typedef box* boxptr

Definition at line 269 of file jquant2.c.

typedef INT16 FSERROR

Definition at line 181 of file jquant2.c.

typedef FSERROR FAR* FSERRPTR

Definition at line 188 of file jquant2.c.

typedef histcell hist1d[HIST_C2_ELEMS]

Definition at line 151 of file jquant2.c.

typedef hist1d FAR* hist2d

Definition at line 152 of file jquant2.c.

typedef hist2d* hist3d

Definition at line 153 of file jquant2.c.

typedef UINT16 histcell

Definition at line 147 of file jquant2.c.

typedef histcell FAR* histptr

Definition at line 149 of file jquant2.c.

typedef int LOCFSERROR

Definition at line 182 of file jquant2.c.

typedef my_cquantizer* my_cquantize_ptr

Definition at line 211 of file jquant2.c.


Function Documentation

compute_color ( j_decompress_ptr  cinfo,
boxptr  boxp,
int  icolor 
)

Definition at line 499 of file jquant2.c.

References c1, for(), my_cquantizer::histogram, histogram, and total.

Referenced by select_colors().

fill_inverse_cmap ( j_decompress_ptr  cinfo,
int  c0,
int  c1,
int  c2 
)

Definition at line 855 of file jquant2.c.

References BOX_C0_ELEMS, BOX_C0_LOG, BOX_C0_SHIFT, BOX_C1_ELEMS, BOX_C1_LOG, BOX_C2_ELEMS, BOX_C2_LOG, C0_SHIFT, find_best_colors(), find_nearby_colors(), GETJSAMPLE, my_cquantizer::histogram, histogram, and MAXNUMCOLORS.

Referenced by pass2_fs_dither(), and pass2_no_dither().

find_best_colors ( j_decompress_ptr  cinfo,
int  minc0,
int  minc1,
int  minc2,
int  numcolors,
JSAMPLE  colorlist[],
JSAMPLE  bestcolor[] 
)

Definition at line 775 of file jquant2.c.

References BOX_C0_ELEMS, BOX_C1_ELEMS, BOX_C2_ELEMS, C0_SCALE, C1_SCALE, C2_SCALE, GETJSAMPLE, i, STEP_C0, STEP_C1, and STEP_C2.

Referenced by fill_inverse_cmap().

find_biggest_color_pop ( boxptr  boxlist,
int  numboxes 
)

Definition at line 273 of file jquant2.c.

References box::colorcount, i, NULL, and box::volume.

Referenced by median_cut().

find_biggest_volume ( boxptr  boxlist,
int  numboxes 
)

Definition at line 293 of file jquant2.c.

References i, NULL, and box::volume.

Referenced by median_cut().

find_nearby_colors ( j_decompress_ptr  cinfo,
int  minc0,
int  minc1,
int  minc2,
JSAMPLE  colorlist[] 
)

Definition at line 646 of file jquant2.c.

References BOX_C0_SHIFT, BOX_C1_SHIFT, BOX_C2_SHIFT, C0_SCALE, C0_SHIFT, C1_SCALE, C1_SHIFT, C2_SCALE, C2_SHIFT, GETJSAMPLE, i, if(), RooFitShortHand::L(), MAXNUMCOLORS, and x.

Referenced by fill_inverse_cmap().

finish_pass1 ( j_decompress_ptr  cinfo  ) 

Definition at line 1143 of file jquant2.c.

References my_cquantizer::desired, my_cquantizer::needs_zeroed, select_colors(), my_cquantizer::sv_colormap, and TRUE.

Referenced by start_pass_2_quant().

finish_pass2 ( j_decompress_ptr  cinfo  ) 

Definition at line 1156 of file jquant2.c.

Referenced by start_pass_2_quant().

init_error_limit ( j_decompress_ptr  cinfo  ) 

Definition at line 1108 of file jquant2.c.

References my_cquantizer::error_limiter, JPOOL_IMAGE, MAXJSAMPLE, out, SIZEOF, and STEPSIZE.

Referenced by start_pass_2_quant().

jinit_2pass_quantizer ( j_decompress_ptr  cinfo  ) 

Definition at line 1244 of file jquant2.c.

References my_cquantizer::desired, desired, ERREXIT, ERREXIT1, my_cquantizer::error_limiter, my_cquantizer::fserrors, HIST_C0_ELEMS, HIST_C1_ELEMS, HIST_C2_ELEMS, my_cquantizer::histogram, i, if(), JPOOL_IMAGE, MAXNUMCOLORS, my_cquantizer::needs_zeroed, new_color_map_2_quant(), NULL, my_cquantizer::pub, SIZEOF, start_pass_2_quant(), my_cquantizer::sv_colormap, and TRUE.

Referenced by master_selection().

median_cut ( j_decompress_ptr  cinfo,
boxptr  boxlist,
int  numboxes,
int  desired_colors 
)

Definition at line 424 of file jquant2.c.

References C0_SCALE, C0_SHIFT, box::c0max, box::c0min, c1, C1_SCALE, C1_SHIFT, box::c1max, box::c1min, C2_SCALE, C2_SHIFT, box::c2max, box::c2min, find_biggest_color_pop(), find_biggest_volume(), n, NULL, and update_box().

Referenced by select_colors().

new_color_map_2_quant ( j_decompress_ptr  cinfo  ) 

Definition at line 1230 of file jquant2.c.

References my_cquantizer::needs_zeroed, and TRUE.

Referenced by jinit_2pass_quantizer().

pass2_fs_dither ( j_decompress_ptr  cinfo,
JSAMPARRAY  input_buf,
JSAMPARRAY  output_buf,
int  num_rows 
)

Definition at line 949 of file jquant2.c.

References C0_SHIFT, C1_SHIFT, C2_SHIFT, dir(), my_cquantizer::error_limiter, FALSE, fill_inverse_cmap(), for(), my_cquantizer::fserrors, GETJSAMPLE, my_cquantizer::histogram, histogram, my_cquantizer::on_odd_row, RIGHT_SHIFT, row, SHIFT_TEMPS, TRUE, and width.

Referenced by start_pass_2_quant().

pass2_no_dither ( j_decompress_ptr  cinfo,
JSAMPARRAY  input_buf,
JSAMPARRAY  output_buf,
int  num_rows 
)

Definition at line 915 of file jquant2.c.

References C0_SHIFT, c1, C1_SHIFT, C2_SHIFT, fill_inverse_cmap(), for(), GETJSAMPLE, my_cquantizer::histogram, histogram, row, and width.

Referenced by start_pass_2_quant().

prescan_quantize ( j_decompress_ptr  cinfo,
JSAMPARRAY  input_buf,
JSAMPARRAY  output_buf,
int  num_rows 
)

Definition at line 224 of file jquant2.c.

References C0_SHIFT, C1_SHIFT, C2_SHIFT, for(), GETJSAMPLE, my_cquantizer::histogram, histogram, ptr, row, and width.

Referenced by start_pass_2_quant().

select_colors ( j_decompress_ptr  cinfo,
int  desired_colors 
)

Definition at line 539 of file jquant2.c.

References C0_SHIFT, box::c0max, box::c0min, C1_SHIFT, box::c1max, box::c1min, C2_SHIFT, box::c2max, box::c2min, compute_color(), i, JPOOL_IMAGE, MAXJSAMPLE, median_cut(), SIZEOF, TRACEMS1, and update_box().

Referenced by finish_pass1().

start_pass_2_quant ( j_decompress_ptr  cinfo,
boolean  is_pre_scan 
)

Definition at line 1167 of file jquant2.c.

References arraysize, ERREXIT1, my_cquantizer::error_limiter, FALSE, FAR, finish_pass1(), finish_pass2(), my_cquantizer::fserrors, HIST_C0_ELEMS, HIST_C1_ELEMS, HIST_C2_ELEMS, my_cquantizer::histogram, histogram, i, if(), init_error_limit(), JDITHER_FS, JDITHER_NONE, JPOOL_IMAGE, jzero_far(), MAXNUMCOLORS, my_cquantizer::needs_zeroed, NULL, my_cquantizer::on_odd_row, pass2_fs_dither(), pass2_no_dither(), prescan_quantize(), my_cquantizer::pub, size_t, SIZEOF, and TRUE.

Referenced by jinit_2pass_quantizer().

update_box ( j_decompress_ptr  cinfo,
boxptr  boxp 
)

Definition at line 313 of file jquant2.c.

References C0_SCALE, C0_SHIFT, c1, C1_SCALE, C1_SHIFT, C2_SCALE, C2_SHIFT, HIST_C2_ELEMS, my_cquantizer::histogram, histogram, and if().

Referenced by median_cut(), and select_colors().


Generated on Tue Jul 5 15:57:57 2011 for ROOT_528-00b_version by  doxygen 1.5.1