summaryrefslogtreecommitdiff
path: root/apps/plugins/imageviewer/jpeg/jpeg_decoder.h
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2010-01-18 12:46:19 +0000
committerTeruaki Kawashima <teru@rockbox.org>2010-01-18 12:46:19 +0000
commit5bd08237499dfc66309ba2a5a4dac75018e794ac (patch)
treefe742342707b8789ce0dbf1a18e5a8346ae2601d /apps/plugins/imageviewer/jpeg/jpeg_decoder.h
parent135d983433e741cf9658ff5d7457bdf37ef48ce0 (diff)
downloadrockbox-5bd08237499dfc66309ba2a5a4dac75018e794ac.zip
rockbox-5bd08237499dfc66309ba2a5a4dac75018e794ac.tar.gz
rockbox-5bd08237499dfc66309ba2a5a4dac75018e794ac.tar.bz2
rockbox-5bd08237499dfc66309ba2a5a4dac75018e794ac.tar.xz
jpeg,png: Merge user interface code and plugin entry point of the two plugins (part of FS#6321).
* Created new directory, imageviewer/ and moved both jpeg/ and png/ under it. - this still doesn't merge the two plugins. i.e. both jpeg.rock and png.rock will be made for color targets. - I'm thinking to merge the two plugins to single image viewer later. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24272 a1c6a512-1295-4272-9138-f99709370657
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 0000000..b86bdaf
--- /dev/null
+++ b/apps/plugins/imageviewer/jpeg/jpeg_decoder.h
@@ -0,0 +1,76 @@
+/***************************************************************************
+* __________ __ ___.
+* Open \______ \ ____ ____ | | _\_ |__ _______ ___
+* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+* \/ \/ \/ \/ \/
+* $Id$
+*
+* JPEG image viewer
+* (This is a real mess if it has to be coded in one single C file)
+*
+* File scrolling addition (C) 2005 Alexander Spyridakis
+* Copyright (C) 2004 Jörg Hohensohn aka [IDC]Dragon
+* Heavily borrowed from the IJG implementation (C) Thomas G. Lane
+* Small & fast downscaling IDCT (C) 2002 by Guido Vollbeding JPEGclub.org
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+* KIND, either express or implied.
+*
+****************************************************************************/
+
+#ifndef _JPEG_JPEG_DECODER_H
+#define _JPEG_JPEG_DECODER_H
+#include "jpeg_common.h"
+
+struct jpeg
+{
+ int x_size, y_size; /* size of image (can be less than block boundary) */
+ int x_phys, y_phys; /* physical size, block aligned */
+ int x_mbl; /* x dimension of MBL */
+ int y_mbl; /* y dimension of MBL */
+ int blocks; /* blocks per MB */
+ int restart_interval; /* number of MCUs between RSTm markers */
+ int store_pos[4]; /* for Y block ordering */
+
+ unsigned char* p_entropy_data;
+ unsigned char* p_entropy_end;
+
+ int quanttable[4][QUANT_TABLE_LENGTH]; /* raw quantization tables 0-3 */
+ int qt_idct[2][QUANT_TABLE_LENGTH]; /* quantization tables for IDCT */
+
+ struct huffman_table hufftable[2]; /* Huffman tables */
+ struct derived_tbl dc_derived_tbls[2]; /* Huffman-LUTs */
+ struct derived_tbl ac_derived_tbls[2];
+
+ struct frame_component frameheader[3]; /* Component descriptor */
+ struct scan_component scanheader[3]; /* currently not used */
+
+ int mcu_membership[6]; /* info per block */
+ int tab_membership[6];
+ int subsample_x[3]; /* info per component */
+ int subsample_y[3];
+};
+
+/* various helper functions */
+void default_huff_tbl(struct jpeg* p_jpeg);
+void build_lut(struct jpeg* p_jpeg);
+int process_markers(unsigned char* p_src, long size, struct jpeg* p_jpeg);
+
+/* the main decode function */
+#ifdef HAVE_LCD_COLOR
+int jpeg_decode(struct jpeg* p_jpeg, unsigned char* p_pixel[3],
+ int downscale, void (*pf_progress)(int current, int total));
+#else
+int jpeg_decode(struct jpeg* p_jpeg, unsigned char* p_pixel[1], int downscale,
+ void (*pf_progress)(int current, int total));
+#endif
+
+
+#endif /* _JPEG_JPEG_DECODER_H */