Home | History | Annotate | Download | only in libjpeg-turbo
      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