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
00074 typedef enum
00075 {
00076 opj_signed_sentinel = -1,
00077 opj_stream_e_output = 0x1,
00078 opj_stream_e_input = 0x2,
00079 opj_stream_e_end = 0x4,
00080 opj_stream_e_error = 0x8
00081 }
00082 opj_stream_flag ;
00083
00087 typedef struct opj_stream_private
00088 {
00092 void * m_user_data;
00093
00099 opj_stream_free_user_data_fn m_free_user_data_fn;
00100
00104 OPJ_UINT64 m_user_data_length;
00105
00109 opj_stream_read_fn m_read_fn;
00110
00114 opj_stream_write_fn m_write_fn;
00115
00120 opj_stream_skip_fn m_skip_fn;
00121
00125 opj_stream_seek_fn m_seek_fn;
00126
00131 OPJ_BYTE * m_stored_data;
00132
00136 OPJ_BYTE * m_current_data;
00137
00141 OPJ_OFF_T (* m_opj_skip)(struct opj_stream_private * ,OPJ_OFF_T , struct opj_event_mgr *);
00142
00146 OPJ_BOOL (* m_opj_seek) (struct opj_stream_private * , OPJ_OFF_T , struct opj_event_mgr *);
00147
00151 OPJ_SIZE_T m_bytes_in_buffer;
00152
00156 OPJ_OFF_T m_byte_offset;
00157
00161 OPJ_SIZE_T m_buffer_size;
00162
00166 opj_stream_flag m_status;
00167
00168 }
00169 opj_stream_private_t;
00170
00173
00180 void opj_write_bytes_BE (OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes);
00181
00189 void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, OPJ_UINT32 p_nb_bytes);
00190
00198 void opj_write_bytes_LE (OPJ_BYTE * p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes);
00199
00207 void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value, OPJ_UINT32 p_nb_bytes);
00208
00209
00215 void opj_write_double_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
00216
00217
00218
00219
00220
00221
00222 void opj_write_double_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
00223
00229 void opj_read_double_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
00230
00236 void opj_read_double_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
00237
00243 void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
00244
00250 void opj_read_float_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
00251
00257 void opj_write_float_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
00258
00259
00260
00261
00262
00263
00264 void opj_write_float_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
00265
00274 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);
00275
00284 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);
00285
00292 OPJ_BOOL opj_stream_flush (opj_stream_private_t * p_stream, struct opj_event_mgr * p_event_mgr);
00293
00301 OPJ_OFF_T opj_stream_skip (opj_stream_private_t * p_stream,OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00302
00310 OPJ_OFF_T opj_stream_tell (const opj_stream_private_t * p_stream);
00311
00312
00320 OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t * p_stream);
00321
00329 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);
00330
00338 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);
00339
00347 OPJ_BOOL opj_stream_read_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00348
00356 OPJ_BOOL opj_stream_write_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00357
00365 OPJ_BOOL opj_stream_seek (opj_stream_private_t * p_stream, OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00366
00370 OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t * p_stream);
00371
00375 OPJ_SIZE_T opj_stream_default_read (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data);
00376
00380 OPJ_SIZE_T opj_stream_default_write (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data);
00381
00385 OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void * p_user_data);
00386
00390 OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void * p_user_data);
00391
00392
00396
00397
00398 #endif
00399