DRC | eb32cc1 | 2015-06-25 03:44:36 +0000 | [diff] [blame^] | 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 file. |
| 7 | */ |
| 8 | |
| 9 | #define JPEG_INTERNALS |
| 10 | #include "jinclude.h" |
| 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; |