1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
11 * (This is a real mess if it has to be coded in one single C file)
13 * File scrolling addition (C) 2005 Alexander Spyridakis
14 * Copyright (C) 2004 Jörg Hohensohn aka [IDC]Dragon
15 * Heavily borrowed from the IJG implementation (C) Thomas G. Lane
16 * Small & fast downscaling IDCT (C) 2002 by Guido Vollbeding JPEGclub.org
18 * This program is free software; you can redistribute it and/or
19 * modify it under the terms of the GNU General Public License
20 * as published by the Free Software Foundation; either version 2
21 * of the License, or (at your option) any later version.
23 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
24 * KIND, either express or implied.
26 ****************************************************************************/
28 #ifndef _JPEG_JPEG_DECODER_H
29 #define _JPEG_JPEG_DECODER_H
30 #include "jpeg_common.h"
34 int x_size
, y_size
; /* size of image (can be less than block boundary) */
35 int x_phys
, y_phys
; /* physical size, block aligned */
36 int x_mbl
; /* x dimension of MBL */
37 int y_mbl
; /* y dimension of MBL */
38 int blocks
; /* blocks per MB */
39 int restart_interval
; /* number of MCUs between RSTm markers */
40 int store_pos
[4]; /* for Y block ordering */
42 unsigned char* p_entropy_data
;
43 unsigned char* p_entropy_end
;
45 int quanttable
[4][QUANT_TABLE_LENGTH
]; /* raw quantization tables 0-3 */
46 int qt_idct
[2][QUANT_TABLE_LENGTH
]; /* quantization tables for IDCT */
48 struct huffman_table hufftable
[2]; /* Huffman tables */
49 struct derived_tbl dc_derived_tbls
[2]; /* Huffman-LUTs */
50 struct derived_tbl ac_derived_tbls
[2];
52 struct frame_component frameheader
[3]; /* Component descriptor */
53 struct scan_component scanheader
[3]; /* currently not used */
55 int mcu_membership
[6]; /* info per block */
56 int tab_membership
[6];
57 int subsample_x
[3]; /* info per component */
61 /* various helper functions */
62 void default_huff_tbl(struct jpeg
* p_jpeg
);
63 void build_lut(struct jpeg
* p_jpeg
);
64 int process_markers(unsigned char* p_src
, long size
, struct jpeg
* p_jpeg
);
66 /* the main decode function */
68 int jpeg_decode(struct jpeg
* p_jpeg
, unsigned char* p_pixel
[3],
69 int downscale
, void (*pf_progress
)(int current
, int total
));
71 int jpeg_decode(struct jpeg
* p_jpeg
, unsigned char* p_pixel
[1], int downscale
,
72 void (*pf_progress
)(int current
, int total
));
76 #endif /* _JPEG_JPEG_DECODER_H */