1*3ac0a46fSAndroid Build Coastguard Worker /* 2*3ac0a46fSAndroid Build Coastguard Worker * The copyright in this software is being made available under the 2-clauses 3*3ac0a46fSAndroid Build Coastguard Worker * BSD License, included below. This software may be subject to other third 4*3ac0a46fSAndroid Build Coastguard Worker * party and contributor rights, including patent rights, and no such rights 5*3ac0a46fSAndroid Build Coastguard Worker * are granted under this license. 6*3ac0a46fSAndroid Build Coastguard Worker * 7*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium 8*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2014, Professor Benoit Macq 9*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2001-2003, David Janssens 10*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2002-2003, Yannick Verschueren 11*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2003-2007, Francois-Olivier Devaux 12*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2003-2014, Antonin Descampe 13*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2005, Herve Drolon, FreeImage Team 14*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR 15*3ac0a46fSAndroid Build Coastguard Worker * Copyright (c) 2012, CS Systemes d'Information, France 16*3ac0a46fSAndroid Build Coastguard Worker * All rights reserved. 17*3ac0a46fSAndroid Build Coastguard Worker * 18*3ac0a46fSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 19*3ac0a46fSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 20*3ac0a46fSAndroid Build Coastguard Worker * are met: 21*3ac0a46fSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright 22*3ac0a46fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 23*3ac0a46fSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 24*3ac0a46fSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 25*3ac0a46fSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 26*3ac0a46fSAndroid Build Coastguard Worker * 27*3ac0a46fSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 28*3ac0a46fSAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 29*3ac0a46fSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 30*3ac0a46fSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 31*3ac0a46fSAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 32*3ac0a46fSAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 33*3ac0a46fSAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 34*3ac0a46fSAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 35*3ac0a46fSAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 36*3ac0a46fSAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 37*3ac0a46fSAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE. 38*3ac0a46fSAndroid Build Coastguard Worker */ 39*3ac0a46fSAndroid Build Coastguard Worker 40*3ac0a46fSAndroid Build Coastguard Worker #ifndef OPJ_CIO_H 41*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_CIO_H 42*3ac0a46fSAndroid Build Coastguard Worker /** 43*3ac0a46fSAndroid Build Coastguard Worker @file cio.h 44*3ac0a46fSAndroid Build Coastguard Worker @brief Implementation of a byte input-output process (CIO) 45*3ac0a46fSAndroid Build Coastguard Worker 46*3ac0a46fSAndroid Build Coastguard Worker The functions in CIO.C have for goal to realize a byte input / output process. 47*3ac0a46fSAndroid Build Coastguard Worker */ 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker /** @defgroup CIO CIO - byte input-output stream */ 50*3ac0a46fSAndroid Build Coastguard Worker /*@{*/ 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker #include "opj_config_private.h" 53*3ac0a46fSAndroid Build Coastguard Worker 54*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */ 55*3ac0a46fSAndroid Build Coastguard Worker 56*3ac0a46fSAndroid Build Coastguard Worker #if defined(OPJ_BIG_ENDIAN) 57*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_bytes opj_write_bytes_BE 58*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_bytes opj_read_bytes_BE 59*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_double opj_write_double_BE 60*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_double opj_read_double_BE 61*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_float opj_write_float_BE 62*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_float opj_read_float_BE 63*3ac0a46fSAndroid Build Coastguard Worker #else 64*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_bytes opj_write_bytes_LE 65*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_bytes opj_read_bytes_LE 66*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_double opj_write_double_LE 67*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_double opj_read_double_LE 68*3ac0a46fSAndroid Build Coastguard Worker #define opj_write_float opj_write_float_LE 69*3ac0a46fSAndroid Build Coastguard Worker #define opj_read_float opj_read_float_LE 70*3ac0a46fSAndroid Build Coastguard Worker #endif 71*3ac0a46fSAndroid Build Coastguard Worker 72*3ac0a46fSAndroid Build Coastguard Worker 73*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_STREAM_STATUS_OUTPUT 0x1U 74*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_STREAM_STATUS_INPUT 0x2U 75*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_STREAM_STATUS_END 0x4U 76*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_STREAM_STATUS_ERROR 0x8U 77*3ac0a46fSAndroid Build Coastguard Worker 78*3ac0a46fSAndroid Build Coastguard Worker /** 79*3ac0a46fSAndroid Build Coastguard Worker Byte input-output stream. 80*3ac0a46fSAndroid Build Coastguard Worker */ 81*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_stream_private { 82*3ac0a46fSAndroid Build Coastguard Worker /** 83*3ac0a46fSAndroid Build Coastguard Worker * User data, be it files, ... The actual data depends on the type of the stream. 84*3ac0a46fSAndroid Build Coastguard Worker */ 85*3ac0a46fSAndroid Build Coastguard Worker void * m_user_data; 86*3ac0a46fSAndroid Build Coastguard Worker 87*3ac0a46fSAndroid Build Coastguard Worker /** 88*3ac0a46fSAndroid Build Coastguard Worker * Pointer to function to free m_user_data (NULL at initialization) 89*3ac0a46fSAndroid Build Coastguard Worker * when destroying the stream. If pointer is NULL the function is not 90*3ac0a46fSAndroid Build Coastguard Worker * called and the m_user_data is not freed (even if non-NULL). 91*3ac0a46fSAndroid Build Coastguard Worker */ 92*3ac0a46fSAndroid Build Coastguard Worker opj_stream_free_user_data_fn m_free_user_data_fn; 93*3ac0a46fSAndroid Build Coastguard Worker 94*3ac0a46fSAndroid Build Coastguard Worker /** 95*3ac0a46fSAndroid Build Coastguard Worker * User data length 96*3ac0a46fSAndroid Build Coastguard Worker */ 97*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT64 m_user_data_length; 98*3ac0a46fSAndroid Build Coastguard Worker 99*3ac0a46fSAndroid Build Coastguard Worker /** 100*3ac0a46fSAndroid Build Coastguard Worker * Pointer to actual read function (NULL at the initialization of the cio. 101*3ac0a46fSAndroid Build Coastguard Worker */ 102*3ac0a46fSAndroid Build Coastguard Worker opj_stream_read_fn m_read_fn; 103*3ac0a46fSAndroid Build Coastguard Worker 104*3ac0a46fSAndroid Build Coastguard Worker /** 105*3ac0a46fSAndroid Build Coastguard Worker * Pointer to actual write function (NULL at the initialization of the cio. 106*3ac0a46fSAndroid Build Coastguard Worker */ 107*3ac0a46fSAndroid Build Coastguard Worker opj_stream_write_fn m_write_fn; 108*3ac0a46fSAndroid Build Coastguard Worker 109*3ac0a46fSAndroid Build Coastguard Worker /** 110*3ac0a46fSAndroid Build Coastguard Worker * Pointer to actual skip function (NULL at the initialization of the cio. 111*3ac0a46fSAndroid Build Coastguard Worker * There is no seek function to prevent from back and forth slow procedures. 112*3ac0a46fSAndroid Build Coastguard Worker */ 113*3ac0a46fSAndroid Build Coastguard Worker opj_stream_skip_fn m_skip_fn; 114*3ac0a46fSAndroid Build Coastguard Worker 115*3ac0a46fSAndroid Build Coastguard Worker /** 116*3ac0a46fSAndroid Build Coastguard Worker * Pointer to actual seek function (if available). 117*3ac0a46fSAndroid Build Coastguard Worker */ 118*3ac0a46fSAndroid Build Coastguard Worker opj_stream_seek_fn m_seek_fn; 119*3ac0a46fSAndroid Build Coastguard Worker 120*3ac0a46fSAndroid Build Coastguard Worker /** 121*3ac0a46fSAndroid Build Coastguard Worker * Actual data stored into the stream if read from. Data is read by chunk of fixed size. 122*3ac0a46fSAndroid Build Coastguard Worker * you should never access this data directly. 123*3ac0a46fSAndroid Build Coastguard Worker */ 124*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE * m_stored_data; 125*3ac0a46fSAndroid Build Coastguard Worker 126*3ac0a46fSAndroid Build Coastguard Worker /** 127*3ac0a46fSAndroid Build Coastguard Worker * Pointer to the current read data. 128*3ac0a46fSAndroid Build Coastguard Worker */ 129*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE * m_current_data; 130*3ac0a46fSAndroid Build Coastguard Worker 131*3ac0a46fSAndroid Build Coastguard Worker /** 132*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 133*3ac0a46fSAndroid Build Coastguard Worker */ 134*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T(* m_opj_skip)(struct opj_stream_private *, OPJ_OFF_T, 135*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr *); 136*3ac0a46fSAndroid Build Coastguard Worker 137*3ac0a46fSAndroid Build Coastguard Worker /** 138*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 139*3ac0a46fSAndroid Build Coastguard Worker */ 140*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL(* m_opj_seek)(struct opj_stream_private *, OPJ_OFF_T, 141*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr *); 142*3ac0a46fSAndroid Build Coastguard Worker 143*3ac0a46fSAndroid Build Coastguard Worker /** 144*3ac0a46fSAndroid Build Coastguard Worker * number of bytes containing in the buffer. 145*3ac0a46fSAndroid Build Coastguard Worker */ 146*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T m_bytes_in_buffer; 147*3ac0a46fSAndroid Build Coastguard Worker 148*3ac0a46fSAndroid Build Coastguard Worker /** 149*3ac0a46fSAndroid Build Coastguard Worker * The number of bytes read/written from the beginning of the stream 150*3ac0a46fSAndroid Build Coastguard Worker */ 151*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T m_byte_offset; 152*3ac0a46fSAndroid Build Coastguard Worker 153*3ac0a46fSAndroid Build Coastguard Worker /** 154*3ac0a46fSAndroid Build Coastguard Worker * The size of the buffer. 155*3ac0a46fSAndroid Build Coastguard Worker */ 156*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T m_buffer_size; 157*3ac0a46fSAndroid Build Coastguard Worker 158*3ac0a46fSAndroid Build Coastguard Worker /** 159*3ac0a46fSAndroid Build Coastguard Worker * Flags to tell the status of the stream. 160*3ac0a46fSAndroid Build Coastguard Worker * Used with OPJ_STREAM_STATUS_* defines. 161*3ac0a46fSAndroid Build Coastguard Worker */ 162*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 m_status; 163*3ac0a46fSAndroid Build Coastguard Worker 164*3ac0a46fSAndroid Build Coastguard Worker } 165*3ac0a46fSAndroid Build Coastguard Worker opj_stream_private_t; 166*3ac0a46fSAndroid Build Coastguard Worker 167*3ac0a46fSAndroid Build Coastguard Worker /** @name Exported functions (see also openjpeg.h) */ 168*3ac0a46fSAndroid Build Coastguard Worker /*@{*/ 169*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */ 170*3ac0a46fSAndroid Build Coastguard Worker /** 171*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Big Endian cpus. 172*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 173*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 174*3ac0a46fSAndroid Build Coastguard Worker * @param p_nb_bytes the number of bytes to write 175*3ac0a46fSAndroid Build Coastguard Worker */ 176*3ac0a46fSAndroid Build Coastguard Worker void opj_write_bytes_BE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, 177*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 p_nb_bytes); 178*3ac0a46fSAndroid Build Coastguard Worker 179*3ac0a46fSAndroid Build Coastguard Worker /** 180*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Big Endian cpus. 181*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 182*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 183*3ac0a46fSAndroid Build Coastguard Worker * @param p_nb_bytes the nb bytes to read. 184*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes read or -1 if an error occurred. 185*3ac0a46fSAndroid Build Coastguard Worker */ 186*3ac0a46fSAndroid Build Coastguard Worker void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, 187*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 p_nb_bytes); 188*3ac0a46fSAndroid Build Coastguard Worker 189*3ac0a46fSAndroid Build Coastguard Worker /** 190*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Little Endian cpus. 191*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 192*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 193*3ac0a46fSAndroid Build Coastguard Worker * @param p_nb_bytes the number of bytes to write 194*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes written or -1 if an error occurred 195*3ac0a46fSAndroid Build Coastguard Worker */ 196*3ac0a46fSAndroid Build Coastguard Worker void opj_write_bytes_LE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, 197*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 p_nb_bytes); 198*3ac0a46fSAndroid Build Coastguard Worker 199*3ac0a46fSAndroid Build Coastguard Worker /** 200*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Little Endian cpus. 201*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 202*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 203*3ac0a46fSAndroid Build Coastguard Worker * @param p_nb_bytes the nb bytes to read. 204*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes read or -1 if an error occurred. 205*3ac0a46fSAndroid Build Coastguard Worker */ 206*3ac0a46fSAndroid Build Coastguard Worker void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, 207*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 p_nb_bytes); 208*3ac0a46fSAndroid Build Coastguard Worker 209*3ac0a46fSAndroid Build Coastguard Worker 210*3ac0a46fSAndroid Build Coastguard Worker /** 211*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Little Endian cpus. 212*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 213*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 214*3ac0a46fSAndroid Build Coastguard Worker */ 215*3ac0a46fSAndroid Build Coastguard Worker void opj_write_double_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value); 216*3ac0a46fSAndroid Build Coastguard Worker 217*3ac0a46fSAndroid Build Coastguard Worker /*** 218*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Big Endian cpus. 219*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 220*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 221*3ac0a46fSAndroid Build Coastguard Worker */ 222*3ac0a46fSAndroid Build Coastguard Worker void opj_write_double_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value); 223*3ac0a46fSAndroid Build Coastguard Worker 224*3ac0a46fSAndroid Build Coastguard Worker /** 225*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Little Endian cpus. 226*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 227*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 228*3ac0a46fSAndroid Build Coastguard Worker */ 229*3ac0a46fSAndroid Build Coastguard Worker void opj_read_double_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value); 230*3ac0a46fSAndroid Build Coastguard Worker 231*3ac0a46fSAndroid Build Coastguard Worker /** 232*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Big Endian cpus. 233*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 234*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 235*3ac0a46fSAndroid Build Coastguard Worker */ 236*3ac0a46fSAndroid Build Coastguard Worker void opj_read_double_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value); 237*3ac0a46fSAndroid Build Coastguard Worker 238*3ac0a46fSAndroid Build Coastguard Worker /** 239*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Little Endian cpus. 240*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 241*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 242*3ac0a46fSAndroid Build Coastguard Worker */ 243*3ac0a46fSAndroid Build Coastguard Worker void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value); 244*3ac0a46fSAndroid Build Coastguard Worker 245*3ac0a46fSAndroid Build Coastguard Worker /** 246*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the given data buffer, this function is used in Big Endian cpus. 247*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to read data from. 248*3ac0a46fSAndroid Build Coastguard Worker * @param p_value pointer to the value that will store the data. 249*3ac0a46fSAndroid Build Coastguard Worker */ 250*3ac0a46fSAndroid Build Coastguard Worker void opj_read_float_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value); 251*3ac0a46fSAndroid Build Coastguard Worker 252*3ac0a46fSAndroid Build Coastguard Worker /** 253*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Little Endian cpus. 254*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 255*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 256*3ac0a46fSAndroid Build Coastguard Worker */ 257*3ac0a46fSAndroid Build Coastguard Worker void opj_write_float_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value); 258*3ac0a46fSAndroid Build Coastguard Worker 259*3ac0a46fSAndroid Build Coastguard Worker /*** 260*3ac0a46fSAndroid Build Coastguard Worker * Write some bytes to the given data buffer, this function is used in Big Endian cpus. 261*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer the data buffer to write data to. 262*3ac0a46fSAndroid Build Coastguard Worker * @param p_value the value to write 263*3ac0a46fSAndroid Build Coastguard Worker */ 264*3ac0a46fSAndroid Build Coastguard Worker void opj_write_float_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value); 265*3ac0a46fSAndroid Build Coastguard Worker 266*3ac0a46fSAndroid Build Coastguard Worker /** 267*3ac0a46fSAndroid Build Coastguard Worker * Reads some bytes from the stream. 268*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to read data from. 269*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer to the data buffer that will receive the data. 270*3ac0a46fSAndroid Build Coastguard Worker * @param p_size number of bytes to read. 271*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 272*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes read, or -1 if an error occurred or if the stream is at the end. 273*3ac0a46fSAndroid Build Coastguard Worker */ 274*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t * p_stream, 275*3ac0a46fSAndroid Build Coastguard Worker OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr); 276*3ac0a46fSAndroid Build Coastguard Worker 277*3ac0a46fSAndroid Build Coastguard Worker /** 278*3ac0a46fSAndroid Build Coastguard Worker * Writes some bytes to the stream. 279*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to write data to. 280*3ac0a46fSAndroid Build Coastguard Worker * @param p_buffer pointer to the data buffer holds the data to be writtent. 281*3ac0a46fSAndroid Build Coastguard Worker * @param p_size number of bytes to write. 282*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 283*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes writtent, or -1 if an error occurred. 284*3ac0a46fSAndroid Build Coastguard Worker */ 285*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t * p_stream, 286*3ac0a46fSAndroid Build Coastguard Worker const OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, 287*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr * p_event_mgr); 288*3ac0a46fSAndroid Build Coastguard Worker 289*3ac0a46fSAndroid Build Coastguard Worker /** 290*3ac0a46fSAndroid Build Coastguard Worker * Writes the content of the stream buffer to the stream. 291*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to write data to. 292*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 293*3ac0a46fSAndroid Build Coastguard Worker * @return true if the data could be flushed, false else. 294*3ac0a46fSAndroid Build Coastguard Worker */ 295*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_flush(opj_stream_private_t * p_stream, 296*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr * p_event_mgr); 297*3ac0a46fSAndroid Build Coastguard Worker 298*3ac0a46fSAndroid Build Coastguard Worker /** 299*3ac0a46fSAndroid Build Coastguard Worker * Skips a number of bytes from the stream. 300*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 301*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 302*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 303*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes skipped, or -1 if an error occurred. 304*3ac0a46fSAndroid Build Coastguard Worker */ 305*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_skip(opj_stream_private_t * p_stream, OPJ_OFF_T p_size, 306*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr * p_event_mgr); 307*3ac0a46fSAndroid Build Coastguard Worker 308*3ac0a46fSAndroid Build Coastguard Worker /** 309*3ac0a46fSAndroid Build Coastguard Worker * Tells the byte offset on the stream (similar to ftell). 310*3ac0a46fSAndroid Build Coastguard Worker * 311*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to get the information from. 312*3ac0a46fSAndroid Build Coastguard Worker * 313*3ac0a46fSAndroid Build Coastguard Worker * @return the current position o fthe stream. 314*3ac0a46fSAndroid Build Coastguard Worker */ 315*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_tell(const opj_stream_private_t * p_stream); 316*3ac0a46fSAndroid Build Coastguard Worker 317*3ac0a46fSAndroid Build Coastguard Worker 318*3ac0a46fSAndroid Build Coastguard Worker /** 319*3ac0a46fSAndroid Build Coastguard Worker * Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). 320*3ac0a46fSAndroid Build Coastguard Worker * 321*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to get the information from. 322*3ac0a46fSAndroid Build Coastguard Worker * 323*3ac0a46fSAndroid Build Coastguard Worker * @return Number of bytes left before the end of the stream. 324*3ac0a46fSAndroid Build Coastguard Worker */ 325*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t * 326*3ac0a46fSAndroid Build Coastguard Worker p_stream); 327*3ac0a46fSAndroid Build Coastguard Worker 328*3ac0a46fSAndroid Build Coastguard Worker /** 329*3ac0a46fSAndroid Build Coastguard Worker * Skips a number of bytes from the stream. 330*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 331*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 332*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 333*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes skipped, or -1 if an error occurred. 334*3ac0a46fSAndroid Build Coastguard Worker */ 335*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t * p_stream, 336*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr); 337*3ac0a46fSAndroid Build Coastguard Worker 338*3ac0a46fSAndroid Build Coastguard Worker /** 339*3ac0a46fSAndroid Build Coastguard Worker * Skips a number of bytes from the stream. 340*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 341*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 342*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 343*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes skipped, or -1 if an error occurred. 344*3ac0a46fSAndroid Build Coastguard Worker */ 345*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t * p_stream, 346*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr); 347*3ac0a46fSAndroid Build Coastguard Worker 348*3ac0a46fSAndroid Build Coastguard Worker /** 349*3ac0a46fSAndroid Build Coastguard Worker * Skips a number of bytes from the stream. 350*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 351*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 352*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 353*3ac0a46fSAndroid Build Coastguard Worker * @return OPJ_TRUE if success, or OPJ_FALSE if an error occurred. 354*3ac0a46fSAndroid Build Coastguard Worker */ 355*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_read_seek(opj_stream_private_t * p_stream, OPJ_OFF_T p_size, 356*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr * p_event_mgr); 357*3ac0a46fSAndroid Build Coastguard Worker 358*3ac0a46fSAndroid Build Coastguard Worker /** 359*3ac0a46fSAndroid Build Coastguard Worker * Skips a number of bytes from the stream. 360*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 361*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 362*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 363*3ac0a46fSAndroid Build Coastguard Worker * @return the number of bytes skipped, or -1 if an error occurred. 364*3ac0a46fSAndroid Build Coastguard Worker */ 365*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_write_seek(opj_stream_private_t * p_stream, 366*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr); 367*3ac0a46fSAndroid Build Coastguard Worker 368*3ac0a46fSAndroid Build Coastguard Worker /** 369*3ac0a46fSAndroid Build Coastguard Worker * Seeks a number of bytes from the stream. 370*3ac0a46fSAndroid Build Coastguard Worker * @param p_stream the stream to skip data from. 371*3ac0a46fSAndroid Build Coastguard Worker * @param p_size the number of bytes to skip. 372*3ac0a46fSAndroid Build Coastguard Worker * @param p_event_mgr the user event manager to be notified of special events. 373*3ac0a46fSAndroid Build Coastguard Worker * @return true if the stream is seekable. 374*3ac0a46fSAndroid Build Coastguard Worker */ 375*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_seek(opj_stream_private_t * p_stream, OPJ_OFF_T p_size, 376*3ac0a46fSAndroid Build Coastguard Worker struct opj_event_mgr * p_event_mgr); 377*3ac0a46fSAndroid Build Coastguard Worker 378*3ac0a46fSAndroid Build Coastguard Worker /** 379*3ac0a46fSAndroid Build Coastguard Worker * Tells if the given stream is seekable. 380*3ac0a46fSAndroid Build Coastguard Worker */ 381*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t * p_stream); 382*3ac0a46fSAndroid Build Coastguard Worker 383*3ac0a46fSAndroid Build Coastguard Worker /** 384*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 385*3ac0a46fSAndroid Build Coastguard Worker */ 386*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T opj_stream_default_read(void * p_buffer, OPJ_SIZE_T p_nb_bytes, 387*3ac0a46fSAndroid Build Coastguard Worker void * p_user_data); 388*3ac0a46fSAndroid Build Coastguard Worker 389*3ac0a46fSAndroid Build Coastguard Worker /** 390*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 391*3ac0a46fSAndroid Build Coastguard Worker */ 392*3ac0a46fSAndroid Build Coastguard Worker OPJ_SIZE_T opj_stream_default_write(void * p_buffer, OPJ_SIZE_T p_nb_bytes, 393*3ac0a46fSAndroid Build Coastguard Worker void * p_user_data); 394*3ac0a46fSAndroid Build Coastguard Worker 395*3ac0a46fSAndroid Build Coastguard Worker /** 396*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 397*3ac0a46fSAndroid Build Coastguard Worker */ 398*3ac0a46fSAndroid Build Coastguard Worker OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void * p_user_data); 399*3ac0a46fSAndroid Build Coastguard Worker 400*3ac0a46fSAndroid Build Coastguard Worker /** 401*3ac0a46fSAndroid Build Coastguard Worker * FIXME DOC. 402*3ac0a46fSAndroid Build Coastguard Worker */ 403*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void * p_user_data); 404*3ac0a46fSAndroid Build Coastguard Worker 405*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */ 406*3ac0a46fSAndroid Build Coastguard Worker /*@}*/ 407*3ac0a46fSAndroid Build Coastguard Worker 408*3ac0a46fSAndroid Build Coastguard Worker /*@}*/ 409*3ac0a46fSAndroid Build Coastguard Worker 410*3ac0a46fSAndroid Build Coastguard Worker 411*3ac0a46fSAndroid Build Coastguard Worker #endif /* OPJ_CIO_H */ 412*3ac0a46fSAndroid Build Coastguard Worker 413