summaryrefslogtreecommitdiff
path: root/apps/plugins/imageviewer/jpeg/jpeg_decoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/imageviewer/jpeg/jpeg_decoder.h')
-rw-r--r--apps/plugins/imageviewer/jpeg/jpeg_decoder.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/apps/plugins/imageviewer/jpeg/jpeg_decoder.h b/apps/plugins/imageviewer/jpeg/jpeg_decoder.h
new file mode 100644
index 0000000000..b86bdaf001
--- /dev/null
+++ b/apps/plugins/imageviewer/jpeg/jpeg_decoder.h
@@ -0,0 +1,76 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8* $Id$
9*
10* JPEG image viewer
11* (This is a real mess if it has to be coded in one single C file)
12*
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
17*
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.
22*
23* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
24* KIND, either express or implied.
25*
26****************************************************************************/
27
28#ifndef _JPEG_JPEG_DECODER_H
29#define _JPEG_JPEG_DECODER_H
30#include "jpeg_common.h"
31
32struct jpeg
33{
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 */
41
42 unsigned char* p_entropy_data;
43 unsigned char* p_entropy_end;
44
45 int quanttable[4][QUANT_TABLE_LENGTH]; /* raw quantization tables 0-3 */
46 int qt_idct[2][QUANT_TABLE_LENGTH]; /* quantization tables for IDCT */
47
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];
51
52 struct frame_component frameheader[3]; /* Component descriptor */
53 struct scan_component scanheader[3]; /* currently not used */
54
55 int mcu_membership[6]; /* info per block */
56 int tab_membership[6];
57 int subsample_x[3]; /* info per component */
58 int subsample_y[3];
59};
60
61/* various helper functions */
62void default_huff_tbl(struct jpeg* p_jpeg);
63void build_lut(struct jpeg* p_jpeg);
64int process_markers(unsigned char* p_src, long size, struct jpeg* p_jpeg);
65
66/* the main decode function */
67#ifdef HAVE_LCD_COLOR
68int jpeg_decode(struct jpeg* p_jpeg, unsigned char* p_pixel[3],
69 int downscale, void (*pf_progress)(int current, int total));
70#else
71int jpeg_decode(struct jpeg* p_jpeg, unsigned char* p_pixel[1], int downscale,
72 void (*pf_progress)(int current, int total));
73#endif
74
75
76#endif /* _JPEG_JPEG_DECODER_H */