00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef __CIO_H
00041 #define __CIO_H
00042
00051
00052 #include "opj_config_private.h"
00053
00054
00055
00056 #if defined(OPJ_BIG_ENDIAN)
00057 #define opj_write_bytes opj_write_bytes_BE
00058 #define opj_read_bytes opj_read_bytes_BE
00059 #define opj_write_double opj_write_double_BE
00060 #define opj_read_double opj_read_double_BE
00061 #define opj_write_float opj_write_float_BE
00062 #define opj_read_float opj_read_float_BE
00063 #else
00064 #define opj_write_bytes opj_write_bytes_LE
00065 #define opj_read_bytes opj_read_bytes_LE
00066 #define opj_write_double opj_write_double_LE
00067 #define opj_read_double opj_read_double_LE
00068 #define opj_write_float opj_write_float_LE
00069 #define opj_read_float opj_read_float_LE
00070 #endif
00071
00072
00073 #define OPJ_STREAM_STATUS_OUTPUT 0x1U
00074 #define OPJ_STREAM_STATUS_INPUT 0x2U
00075 #define OPJ_STREAM_STATUS_END 0x4U
00076 #define OPJ_STREAM_STATUS_ERROR 0x8U
00077
00081 typedef struct opj_stream_private
00082 {
00086 void * m_user_data;
00087
00093 opj_stream_free_user_data_fn m_free_user_data_fn;
00094
00098 OPJ_UINT64 m_user_data_length;
00099
00103 opj_stream_read_fn m_read_fn;
00104
00108 opj_stream_write_fn m_write_fn;
00109
00114 opj_stream_skip_fn m_skip_fn;
00115
00119 opj_stream_seek_fn m_seek_fn;
00120
00125 OPJ_BYTE * m_stored_data;
00126
00130 OPJ_BYTE * m_current_data;
00131
00135 OPJ_OFF_T (* m_opj_skip)(struct opj_stream_private * ,OPJ_OFF_T , struct opj_event_mgr *);
00136
00140 OPJ_BOOL (* m_opj_seek) (struct opj_stream_private * , OPJ_OFF_T , struct opj_event_mgr *);
00141
00145 OPJ_SIZE_T m_bytes_in_buffer;
00146
00150 OPJ_OFF_T m_byte_offset;
00151
00155 OPJ_SIZE_T m_buffer_size;
00156
00161 OPJ_UINT32 m_status;
00162
00163 }
00164 opj_stream_private_t;
00165
00168
00175 void opj_write_bytes_BE (OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes);
00176
00184 void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, OPJ_UINT32 p_nb_bytes);
00185
00193 void opj_write_bytes_LE (OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes);
00194
00202 void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, OPJ_UINT32 p_nb_bytes);
00203
00204
00210 void opj_write_double_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
00211
00212
00213
00214
00215
00216
00217 void opj_write_double_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
00218
00224 void opj_read_double_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
00225
00231 void opj_read_double_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
00232
00238 void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
00239
00245 void opj_read_float_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
00246
00252 void opj_write_float_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
00253
00254
00255
00256
00257
00258
00259 void opj_write_float_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
00260
00269 OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t * p_stream,OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr);
00270
00279 OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t * p_stream,const OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr);
00280
00287 OPJ_BOOL opj_stream_flush (opj_stream_private_t * p_stream, struct opj_event_mgr * p_event_mgr);
00288
00296 OPJ_OFF_T opj_stream_skip (opj_stream_private_t * p_stream,OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00297
00305 OPJ_OFF_T opj_stream_tell (const opj_stream_private_t * p_stream);
00306
00307
00315 OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t * p_stream);
00316
00324 OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00325
00333 OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00334
00342 OPJ_BOOL opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00343
00351 OPJ_BOOL opj_stream_write_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00352
00360 OPJ_BOOL opj_stream_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00361
00365 OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t * p_stream);
00366
00370 OPJ_SIZE_T opj_stream_default_read (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data);
00371
00375 OPJ_SIZE_T opj_stream_default_write (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data);
00376
00380 OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void * p_user_data);
00381
00385 OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void * p_user_data);
00386
00387
00391
00392
00393 #endif
00394