"L. Spiro Engine"
|
00001 /* 00002 * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium 00003 * Copyright (c) 2002-2007, Professor Benoit Macq 00004 * Copyright (c) 2001-2003, David Janssens 00005 * Copyright (c) 2002-2003, Yannick Verschueren 00006 * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe 00007 * Copyright (c) 2005, Herve Drolon, FreeImage Team 00008 * All rights reserved. 00009 * 00010 * Redistribution and use in source and binary forms, with or without 00011 * modification, are permitted provided that the following conditions 00012 * are met: 00013 * 1. Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in the 00017 * documentation and/or other materials provided with the distribution. 00018 * 00019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 00020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00029 * POSSIBILITY OF SUCH DAMAGE. 00030 */ 00031 00032 00033 #ifndef __LSI_T2_H__ 00034 #define __LSI_T2_H__ 00035 00036 #include "../LSIImageLib.h" 00037 #include "LSIJ2k.h" 00038 #include "LSIJpegCommonStructs.h" 00039 #include "LSIJpegImage.h" 00040 #include "LSIPi.h" 00041 #include "LSITcd.h" 00042 00043 namespace lsi { 00044 00051 class CT2 { 00052 public : 00053 // == Types. 00057 typedef struct opj_t2 { 00059 CJpegCommonStructs::opj_common_ptr cinfo; 00060 00062 CJpegImage::opj_image_t * image; 00063 00065 CJ2k::opj_cp_t * cp; 00066 } opj_t2_t; 00067 00068 00069 // == Functions. 00087 static LSINT32 LSE_CALL t2_encode_packets( opj_t2_t * _ptT2, LSINT32 _i32TileNo, CTcd::opj_tcd_tile_t * _pttTile, LSINT32 _i32MaxLayers, LSUINT8 * _pui8Dest, LSINT32 _i32Len, CJpegCommonStructs::opj_codestream_info_t * _pciInfoC, LSINT32 _i32TpNum, LSINT32 _i32TpPos, LSINT32 _i32PiNo, CJ2k::J2K_T2_MODE _tmT2Mode, LSINT32 _i32CurTotalTp ); 00088 00100 static LSINT32 LSE_CALL t2_decode_packets( opj_t2_t * _ptT2, LSUINT8 * _pui8Src, LSINT32 _ui32Len, LSINT32 _i32TileNo, CTcd::opj_tcd_tile_t * _pttTile, CJpegCommonStructs::opj_codestream_info_t * _pciInfoC ); 00101 00110 static opj_t2_t * LSE_CALL t2_create( CJpegCommonStructs::opj_common_ptr _cpInfo, CJpegImage::opj_image_t * _piImage, CJ2k::opj_cp_t * _pcCp ); 00111 00117 static LSVOID LSE_CALL t2_destroy( opj_t2_t * _ptT2 ); 00118 00119 00120 protected : 00121 // == Functions. 00128 static LSVOID LSE_CALL t2_putcommacode( CBio::opj_bio_t * _pbBio, LSINT32 _i32N ); 00129 00136 static LSINT32 LSE_CALL t2_getcommacode( CBio::opj_bio_t * _pbBio ); 00137 00144 static LSVOID LSE_CALL t2_putnumpasses( CBio::opj_bio_t * _pbBio, LSINT32 _i32N ); 00145 00152 static LSINT32 LSE_CALL t2_getnumpasses( CBio::opj_bio_t * _pbBio ); 00153 00166 static LSINT32 LSE_CALL t2_encode_packet( CTcd::opj_tcd_tile_t * _pttTile, CJ2k::opj_tcp_t * _ptTcp, CPi::opj_pi_iterator_t * _ppiPi, LSUINT8 * _pui8Dest, LSINT32 _ui32Len, CJpegCommonStructs::opj_codestream_info_t * _pciInfoC, LSINT32 _i32TileNo ); 00167 00176 static LSVOID LSE_CALL t2_init_seg( CTcd::opj_tcd_cblk_dec_t * _ptcdCodeBlock, LSINT32 _i32Index, LSINT32 _i32CodeBlockStY, LSINT32 _i32First ); 00177 00190 static LSINT32 LSE_CALL t2_decode_packet( opj_t2_t * _ptT2, LSUINT8 * _pui8Src, LSINT32 _ui32Len, CTcd::opj_tcd_tile_t * _pttTile, 00191 CJ2k::opj_tcp_t * _ptTcp, CPi::opj_pi_iterator_t * _ppiPi, CJpegCommonStructs::opj_packet_info_t * _ppiPackInfo ); 00192 }; 00193 00194 } // namespace lsi 00195 00196 #endif // __LSI_T2_H__