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