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;
51