A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 76 lines 3.0 kB view raw
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 */