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 OPJ_CIO_H
00041 #define OPJ_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 {
00085 void * m_user_data;
00086
00092 opj_stream_free_user_data_fn m_free_user_data_fn;
00093
00097 OPJ_UINT64 m_user_data_length;
00098
00102 opj_stream_read_fn m_read_fn;
00103
00107 opj_stream_write_fn m_write_fn;
00108
00113 opj_stream_skip_fn m_skip_fn;
00114
00118 opj_stream_seek_fn m_seek_fn;
00119
00124 OPJ_BYTE * m_stored_data;
00125
00129 OPJ_BYTE * m_current_data;
00130
00134 OPJ_OFF_T(* m_opj_skip)(struct opj_stream_private *, OPJ_OFF_T,
00135 struct opj_event_mgr *);
00136
00140 OPJ_BOOL(* m_opj_seek)(struct opj_stream_private *, OPJ_OFF_T,
00141 struct opj_event_mgr *);
00142
00146 OPJ_SIZE_T m_bytes_in_buffer;
00147
00151 OPJ_OFF_T m_byte_offset;
00152
00156 OPJ_SIZE_T m_buffer_size;
00157
00162 OPJ_UINT32 m_status;
00163
00164 }
00165 opj_stream_private_t;
00166
00169
00176 void opj_write_bytes_BE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
00177 OPJ_UINT32 p_nb_bytes);
00178
00186 void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
00187 OPJ_UINT32 p_nb_bytes);
00188
00196 void opj_write_bytes_LE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
00197 OPJ_UINT32 p_nb_bytes);
00198
00206 void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
00207 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,
00275 OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr);
00276
00285 OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t * p_stream,
00286 const OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size,
00287 struct opj_event_mgr * p_event_mgr);
00288
00295 OPJ_BOOL opj_stream_flush(opj_stream_private_t * p_stream,
00296 struct opj_event_mgr * p_event_mgr);
00297
00305 OPJ_OFF_T opj_stream_skip(opj_stream_private_t * p_stream, OPJ_OFF_T p_size,
00306 struct opj_event_mgr * p_event_mgr);
00307
00315 OPJ_OFF_T opj_stream_tell(const opj_stream_private_t * p_stream);
00316
00317
00325 OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *
00326 p_stream);
00327
00335 OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t * p_stream,
00336 OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00337
00345 OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t * p_stream,
00346 OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00347
00355 OPJ_BOOL opj_stream_read_seek(opj_stream_private_t * p_stream, OPJ_OFF_T p_size,
00356 struct opj_event_mgr * p_event_mgr);
00357
00365 OPJ_BOOL opj_stream_write_seek(opj_stream_private_t * p_stream,
00366 OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
00367
00375 OPJ_BOOL opj_stream_seek(opj_stream_private_t * p_stream, OPJ_OFF_T p_size,
00376 struct opj_event_mgr * p_event_mgr);
00377
00381 OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t * p_stream);
00382
00386 OPJ_SIZE_T opj_stream_default_read(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
00387 void * p_user_data);
00388
00392 OPJ_SIZE_T opj_stream_default_write(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
00393 void * p_user_data);
00394
00398 OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void * p_user_data);
00399
00403 OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void * p_user_data);
00404
00405
00409
00410
00411 #endif
00412