OFFIS DCMTK  Version 3.6.0
jlossls8.h
1 /*
2  * jlossls.h
3  *
4  * Copyright (C) 1998, Thomas G. Lane.
5  * This file is part of the Independent JPEG Group's software.
6  * For conditions of distribution and use, see the accompanying README file.
7  *
8  * This include file contains common declarations for the lossless JPEG
9  * codec modules.
10  */
11 
12 #ifndef JLOSSLS_H
13 #define JLOSSLS_H
14 
15 
16 /*
17  * Table H.1: Predictors for lossless coding.
18  */
19 
20 #define PREDICTOR1 Ra
21 #define PREDICTOR2 Rb
22 #define PREDICTOR3 Rc
23 #define PREDICTOR4 (int) ((IJG_INT32) Ra + (IJG_INT32) Rb - (IJG_INT32) Rc)
24 #define PREDICTOR5 (int) ((IJG_INT32) Ra + RIGHT_SHIFT((IJG_INT32) Rb - (IJG_INT32) Rc, 1))
25 #define PREDICTOR6 (int) ((IJG_INT32) Rb + RIGHT_SHIFT((IJG_INT32) Ra - (IJG_INT32) Rc, 1))
26 #define PREDICTOR7 (int) RIGHT_SHIFT((IJG_INT32) Ra + (IJG_INT32) Rb, 1)
27 
28 
29 typedef JMETHOD(void, predict_difference_method_ptr,
30  (j_compress_ptr cinfo, int ci,
31  JSAMPROW input_buf, JSAMPROW prev_row,
32  JDIFFROW diff_buf, JDIMENSION width));
33 
34 typedef JMETHOD(void, scaler_method_ptr,
35  (j_compress_ptr cinfo, int ci,
36  JSAMPROW input_buf, JSAMPROW output_buf,
37  JDIMENSION width));
38 
39 /* Lossless-specific compression codec (compressor proper) */
40 typedef struct {
41  struct jpeg_c_codec pub; /* public fields */
42 
43 
44  /* Difference buffer control */
45  JMETHOD(void, diff_start_pass, (j_compress_ptr cinfo,
46  J_BUF_MODE pass_mode));
47 
48  /* Pointer to data which is private to diff controller */
49  void *diff_private;
50 
51 
52  /* Entropy encoding */
53  JMETHOD(JDIMENSION, entropy_encode_mcus, (j_compress_ptr cinfo,
54  JDIFFIMAGE diff_buf,
55  JDIMENSION MCU_row_num,
56  JDIMENSION MCU_col_num,
57  JDIMENSION nMCU));
58 
59  /* Pointer to data which is private to entropy module */
60  void *entropy_private;
61 
62 
63  /* Prediction, differencing */
64  JMETHOD(void, predict_start_pass, (j_compress_ptr cinfo));
65 
66  /* It is useful to allow each component to have a separate diff method. */
67  predict_difference_method_ptr predict_difference[MAX_COMPONENTS];
68 
69  /* Pointer to data which is private to predictor module */
70  void *pred_private;
71 
72  /* Sample scaling */
73  JMETHOD(void, scaler_start_pass, (j_compress_ptr cinfo));
74  JMETHOD(void, scaler_scale, (j_compress_ptr cinfo,
75  JSAMPROW input_buf, JSAMPROW output_buf,
76  JDIMENSION width));
77 
78  /* Pointer to data which is private to scaler module */
79  void *scaler_private;
80 
82 
84 
85 
86 typedef JMETHOD(void, predict_undifference_method_ptr,
87  (j_decompress_ptr cinfo, int comp_index,
88  JDIFFROW diff_buf, JDIFFROW prev_row,
89  JDIFFROW undiff_buf, JDIMENSION width));
90 
91 /* Lossless-specific decompression codec (decompressor proper) */
92 typedef struct {
93  struct jpeg_d_codec pub; /* public fields */
94 
95 
96  /* Difference buffer control */
97  JMETHOD(void, diff_start_input_pass, (j_decompress_ptr cinfo));
98 
99  /* Pointer to data which is private to diff controller */
100  void *diff_private;
101 
102 
103  /* Entropy decoding */
104  JMETHOD(void, entropy_start_pass, (j_decompress_ptr cinfo));
105  JMETHOD(boolean, entropy_process_restart, (j_decompress_ptr cinfo));
106  JMETHOD(JDIMENSION, entropy_decode_mcus, (j_decompress_ptr cinfo,
107  JDIFFIMAGE diff_buf,
108  JDIMENSION MCU_row_num,
109  JDIMENSION MCU_col_num,
110  JDIMENSION nMCU));
111 
112  /* Pointer to data which is private to entropy module */
113  void *entropy_private;
114 
115 
116  /* Prediction, undifferencing */
117  JMETHOD(void, predict_start_pass, (j_decompress_ptr cinfo));
118  JMETHOD(void, predict_process_restart, (j_decompress_ptr cinfo));
119 
120  /* It is useful to allow each component to have a separate undiff method. */
121  predict_undifference_method_ptr predict_undifference[MAX_COMPONENTS];
122 
123  /* Pointer to data which is private to predictor module */
124  void *pred_private;
125 
126  /* Sample scaling */
127  JMETHOD(void, scaler_start_pass, (j_decompress_ptr cinfo));
128  JMETHOD(void, scaler_scale, (j_decompress_ptr cinfo,
129  JDIFFROW diff_buf, JSAMPROW output_buf,
130  JDIMENSION width));
131 
132  /* Pointer to data which is private to scaler module */
133  void *scaler_private;
134 
136 
138 
139 
140 /* Compression module initialization routines */
141 EXTERN(void) jinit_lossless_c_codec JPP((j_compress_ptr cinfo));
142 EXTERN(void) jinit_lhuff_encoder JPP((j_compress_ptr cinfo));
143 EXTERN(void) jinit_differencer JPP((j_compress_ptr cinfo));
144 EXTERN(void) jinit_c_scaler JPP((j_compress_ptr cinfo));
145 /* Decompression module initialization routines */
146 EXTERN(void) jinit_lossless_d_codec JPP((j_decompress_ptr cinfo));
147 EXTERN(void) jinit_lhuff_decoder JPP((j_decompress_ptr cinfo));
148 EXTERN(void) jinit_undifferencer JPP((j_decompress_ptr cinfo));
149 EXTERN(void) jinit_d_scaler JPP((j_decompress_ptr cinfo));
150 
151 #endif /* JLOSSLS_H */


Generated on Thu Dec 20 2012 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.8.2