sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: #ifndef _JPEG_INTERNAL_H_ sl@0: #define _JPEG_INTERNAL_H_ sl@0: sl@0: #include "jpeg.h" sl@0: #include "jpeg_huffman.h" sl@0: #include "jpeg_bits.h" sl@0: #include "jpeg_debug.h" sl@0: sl@0: #ifndef TRUE sl@0: #define TRUE 1 sl@0: #endif sl@0: #ifndef FALSE sl@0: #define FALSE 0 sl@0: #endif sl@0: sl@0: sl@0: #define JPEG_MAX_COMPONENTS 256 sl@0: sl@0: typedef struct _JpegScan JpegScan; sl@0: typedef struct _JpegQuantTable JpegQuantTable; sl@0: sl@0: #define JPEG_ENTROPY_SEGMENT 0x0001 sl@0: #define JPEG_LENGTH 0x0002 sl@0: sl@0: struct _JpegQuantTable { sl@0: int pq; sl@0: int16_t quantizer[64]; sl@0: }; sl@0: sl@0: struct _JpegDecoder { sl@0: int width; sl@0: int height; sl@0: int depth; sl@0: int n_components; sl@0: JpegBits bits; sl@0: int error; sl@0: char *error_message; sl@0: sl@0: int sof_type; sl@0: sl@0: int width_blocks; sl@0: int height_blocks; sl@0: sl@0: int restart_interval; sl@0: sl@0: unsigned char *data; sl@0: unsigned int data_len; sl@0: sl@0: struct{ sl@0: int id; sl@0: int h_sample; sl@0: int v_sample; sl@0: int quant_table; sl@0: sl@0: int h_subsample; sl@0: int v_subsample; sl@0: unsigned char *image; sl@0: int rowstride; sl@0: } components[JPEG_MAX_COMPONENTS]; sl@0: sl@0: JpegQuantTable quant_tables[4]; sl@0: HuffmanTable dc_huff_table[4]; sl@0: HuffmanTable ac_huff_table[4]; sl@0: sl@0: int scan_list_length; sl@0: struct{ sl@0: int component_index; sl@0: int dc_table; sl@0: int ac_table; sl@0: int quant_table; sl@0: int x; sl@0: int y; sl@0: int offset; sl@0: }scan_list[10]; sl@0: int scan_h_subsample; sl@0: int scan_v_subsample; sl@0: sl@0: /* scan state */ sl@0: int x,y; sl@0: int dc[4]; sl@0: }; sl@0: sl@0: struct _JpegScan { sl@0: int length; sl@0: sl@0: int n_components; sl@0: struct { sl@0: int index; sl@0: int dc_table; sl@0: int ac_table; sl@0: }block_list[10]; sl@0: }; sl@0: sl@0: sl@0: /* jpeg.c */ sl@0: sl@0: int jpeg_decoder_sof_baseline_dct(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_define_quant_table(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_define_huffman_table(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_sos(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_soi(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_eoi(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_application0(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_application_misc(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_comment(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_restart_interval(JpegDecoder *dec, JpegBits *bits); sl@0: int jpeg_decoder_restart(JpegDecoder *dec, JpegBits *bits); sl@0: void jpeg_decoder_decode_entropy_segment(JpegDecoder *dec); sl@0: sl@0: sl@0: #endif sl@0: sl@0: