1 | /* |
2 | * jdsample.h |
3 | * |
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 |
7 | * file. |
8 | */ |
9 | |
10 | #define JPEG_INTERNALS |
11 | #include "jpeglib.h" |
12 | |
13 | |
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); |
19 | |
20 | /* Private subobject */ |
21 | |
22 | typedef struct { |
23 | struct jpeg_upsampler pub; /* public fields */ |
24 | |
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. |
31 | */ |
32 | JSAMPARRAY color_buf[MAX_COMPONENTS]; |
33 | |
34 | /* Per-component upsampling method pointers */ |
35 | upsample1_ptr methods[MAX_COMPONENTS]; |
36 | |
37 | int next_row_out; /* counts rows emitted from color_buf */ |
38 | JDIMENSION rows_to_go; /* counts rows remaining in image */ |
39 | |
40 | /* Height of an input row group for each component. */ |
41 | int rowgroup_height[MAX_COMPONENTS]; |
42 | |
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. |
45 | */ |
46 | UINT8 h_expand[MAX_COMPONENTS]; |
47 | UINT8 v_expand[MAX_COMPONENTS]; |
48 | } my_upsampler; |
49 | |
50 | typedef my_upsampler *my_upsample_ptr; |
51 | |