1 | /* |
2 | * jdmerge.h |
3 | * |
4 | * This file was part of the Independent JPEG Group's software: |
5 | * Copyright (C) 1994-1996, Thomas G. Lane. |
6 | * libjpeg-turbo Modifications: |
7 | * Copyright (C) 2020, D. R. Commander. |
8 | * For conditions of distribution and use, see the accompanying README.ijg |
9 | * file. |
10 | */ |
11 | |
12 | #define JPEG_INTERNALS |
13 | #include "jpeglib.h" |
14 | |
15 | #ifdef UPSAMPLE_MERGING_SUPPORTED |
16 | |
17 | |
18 | /* Private subobject */ |
19 | |
20 | typedef struct { |
21 | struct jpeg_upsampler pub; /* public fields */ |
22 | |
23 | /* Pointer to routine to do actual upsampling/conversion of one row group */ |
24 | void (*upmethod) (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, |
25 | JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf); |
26 | |
27 | /* Private state for YCC->RGB conversion */ |
28 | int *Cr_r_tab; /* => table for Cr to R conversion */ |
29 | int *Cb_b_tab; /* => table for Cb to B conversion */ |
30 | JLONG *Cr_g_tab; /* => table for Cr to G conversion */ |
31 | JLONG *Cb_g_tab; /* => table for Cb to G conversion */ |
32 | |
33 | /* For 2:1 vertical sampling, we produce two output rows at a time. |
34 | * We need a "spare" row buffer to hold the second output row if the |
35 | * application provides just a one-row buffer; we also use the spare |
36 | * to discard the dummy last row if the image height is odd. |
37 | */ |
38 | JSAMPROW spare_row; |
39 | boolean spare_full; /* T if spare buffer is occupied */ |
40 | |
41 | JDIMENSION out_row_width; /* samples per output row */ |
42 | JDIMENSION rows_to_go; /* counts rows remaining in image */ |
43 | } my_merged_upsampler; |
44 | |
45 | typedef my_merged_upsampler *my_merged_upsample_ptr; |
46 | |
47 | #endif /* UPSAMPLE_MERGING_SUPPORTED */ |
48 | |