4 * This file was part of the Independent JPEG Group's software:
5 * Copyright (C) 1991-1996, Thomas G. Lane.
6 * For conditions of distribution and use, see the accompanying README.ijg
10 #define JPEG_INTERNALS
14 /* Pointer to routine to upsample a single component */
15 typedef void (*upsample1_ptr
) (j_decompress_ptr cinfo
,
16 jpeg_component_info
*compptr
,
17 JSAMPARRAY input_data
,
18 JSAMPARRAY
*output_data_ptr
);
20 /* Private subobject */
23 struct jpeg_upsampler pub
; /* public fields */
25 /* Color conversion buffer. When using separate upsampling and color
26 * conversion steps, this buffer holds one upsampled row group until it
27 * has been color converted and output.
28 * Note: we do not allocate any storage for component(s) which are full-size,
29 * ie do not need rescaling. The corresponding entry of color_buf[] is
30 * simply set to point to the input data array, thereby avoiding copying.
32 JSAMPARRAY color_buf
[MAX_COMPONENTS
];
34 /* Per-component upsampling method pointers */
35 upsample1_ptr methods
[MAX_COMPONENTS
];
37 int next_row_out
; /* counts rows emitted from color_buf */
38 JDIMENSION rows_to_go
; /* counts rows remaining in image */
40 /* Height of an input row group for each component. */
41 int rowgroup_height
[MAX_COMPONENTS
];
43 /* These arrays save pixel expansion factors so that int_expand need not
44 * recompute them each time. They are unused for other upsampling methods.
46 UINT8 h_expand
[MAX_COMPONENTS
];
47 UINT8 v_expand
[MAX_COMPONENTS
];
50 typedef my_upsampler
*my_upsample_ptr
;