OpenJPEG  2.5.0
Data Structures | Macros | Typedefs
cio.h File Reference

Implementation of a byte input-output process (CIO) More...

#include "opj_config_private.h"

Go to the source code of this file.

Data Structures

struct  opj_stream_private
 Byte input-output stream. More...
 

Macros

#define opj_write_bytes   opj_write_bytes_LE
 
#define opj_read_bytes   opj_read_bytes_LE
 
#define opj_write_double   opj_write_double_LE
 
#define opj_read_double   opj_read_double_LE
 
#define opj_write_float   opj_write_float_LE
 
#define opj_read_float   opj_read_float_LE
 
#define OPJ_STREAM_STATUS_OUTPUT   0x1U
 
#define OPJ_STREAM_STATUS_INPUT   0x2U
 
#define OPJ_STREAM_STATUS_END   0x4U
 
#define OPJ_STREAM_STATUS_ERROR   0x8U
 

Typedefs

typedef struct opj_stream_private opj_stream_private_t
 Byte input-output stream. More...
 

Functions

Exported functions (see also openjpeg.h)
void opj_write_bytes_BE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
 Write some bytes to the given data buffer, this function is used in Big Endian cpus. More...
 
void opj_read_bytes_BE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
 Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
 
void opj_write_bytes_LE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
 Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_read_bytes_LE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
 Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_write_double_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
 Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_write_double_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
 
void opj_read_double_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
 Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_read_double_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
 Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
 
void opj_read_float_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
 Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_read_float_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
 Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
 
void opj_write_float_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
 Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
 
void opj_write_float_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
 
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)
 Reads some bytes from the stream. More...
 
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)
 Writes some bytes to the stream. More...
 
OPJ_BOOL opj_stream_flush (opj_stream_private_t *p_stream, struct opj_event_mgr *p_event_mgr)
 Writes the content of the stream buffer to the stream. More...
 
OPJ_OFF_T opj_stream_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
 Skips a number of bytes from the stream. More...
 
OPJ_OFF_T opj_stream_tell (const opj_stream_private_t *p_stream)
 Tells the byte offset on the stream (similar to ftell). More...
 
OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t *p_stream)
 Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). More...
 
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)
 Skips a number of bytes from the stream. More...
 
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)
 Skips a number of bytes from the stream. More...
 
OPJ_BOOL opj_stream_read_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
 Skips a number of bytes from the stream. More...
 
OPJ_BOOL opj_stream_write_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
 Skips a number of bytes from the stream. More...
 
OPJ_BOOL opj_stream_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
 Seeks a number of bytes from the stream. More...
 
OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t *p_stream)
 Tells if the given stream is seekable. More...
 
OPJ_SIZE_T opj_stream_default_read (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
 FIXME DOC. More...
 
OPJ_SIZE_T opj_stream_default_write (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
 FIXME DOC. More...
 
OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void *p_user_data)
 FIXME DOC. More...
 
OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void *p_user_data)
 FIXME DOC. More...
 

Detailed Description

Implementation of a byte input-output process (CIO)

The functions in CIO.C have for goal to realize a byte input / output process.

Macro Definition Documentation

◆ opj_read_bytes

#define opj_read_bytes   opj_read_bytes_LE

◆ opj_read_double

#define opj_read_double   opj_read_double_LE

◆ opj_read_float

#define opj_read_float   opj_read_float_LE

◆ OPJ_STREAM_STATUS_END

#define OPJ_STREAM_STATUS_END   0x4U

◆ OPJ_STREAM_STATUS_ERROR

#define OPJ_STREAM_STATUS_ERROR   0x8U

◆ OPJ_STREAM_STATUS_INPUT

#define OPJ_STREAM_STATUS_INPUT   0x2U

◆ OPJ_STREAM_STATUS_OUTPUT

#define OPJ_STREAM_STATUS_OUTPUT   0x1U

◆ opj_write_bytes

#define opj_write_bytes   opj_write_bytes_LE

◆ opj_write_double

#define opj_write_double   opj_write_double_LE

◆ opj_write_float

#define opj_write_float   opj_write_float_LE

Typedef Documentation

◆ opj_stream_private_t

Byte input-output stream.

Function Documentation

◆ opj_read_bytes_BE()

void opj_read_bytes_BE ( const OPJ_BYTE p_buffer,
OPJ_UINT32 p_value,
OPJ_UINT32  p_nb_bytes 
)

Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.
p_nb_bytesthe nb bytes to read.
Returns
the number of bytes read or -1 if an error occurred.

◆ opj_read_bytes_LE()

void opj_read_bytes_LE ( const OPJ_BYTE p_buffer,
OPJ_UINT32 p_value,
OPJ_UINT32  p_nb_bytes 
)

Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.
p_nb_bytesthe nb bytes to read.
Returns
the number of bytes read or -1 if an error occurred.

◆ opj_read_double_BE()

void opj_read_double_BE ( const OPJ_BYTE p_buffer,
OPJ_FLOAT64 p_value 
)

Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.

◆ opj_read_double_LE()

void opj_read_double_LE ( const OPJ_BYTE p_buffer,
OPJ_FLOAT64 p_value 
)

Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.

◆ opj_read_float_BE()

void opj_read_float_BE ( const OPJ_BYTE p_buffer,
OPJ_FLOAT32 p_value 
)

Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.

◆ opj_read_float_LE()

void opj_read_float_LE ( const OPJ_BYTE p_buffer,
OPJ_FLOAT32 p_value 
)

Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to read data from.
p_valuepointer to the value that will store the data.

◆ opj_stream_default_read()

OPJ_SIZE_T opj_stream_default_read ( void *  p_buffer,
OPJ_SIZE_T  p_nb_bytes,
void *  p_user_data 
)

FIXME DOC.

References OPJ_ARG_NOT_USED.

Referenced by opj_stream_create().

◆ opj_stream_default_seek()

OPJ_BOOL opj_stream_default_seek ( OPJ_OFF_T  p_nb_bytes,
void *  p_user_data 
)

FIXME DOC.

References OPJ_ARG_NOT_USED, and OPJ_FALSE.

Referenced by opj_stream_create(), and opj_stream_has_seek().

◆ opj_stream_default_skip()

OPJ_OFF_T opj_stream_default_skip ( OPJ_OFF_T  p_nb_bytes,
void *  p_user_data 
)

FIXME DOC.

References OPJ_ARG_NOT_USED.

Referenced by opj_stream_create().

◆ opj_stream_default_write()

OPJ_SIZE_T opj_stream_default_write ( void *  p_buffer,
OPJ_SIZE_T  p_nb_bytes,
void *  p_user_data 
)

FIXME DOC.

References OPJ_ARG_NOT_USED.

Referenced by opj_stream_create().

◆ opj_stream_flush()

OPJ_BOOL opj_stream_flush ( opj_stream_private_t p_stream,
struct opj_event_mgr p_event_mgr 
)

Writes the content of the stream buffer to the stream.

Parameters
p_streamthe stream to write data to.
p_event_mgrthe user event manager to be notified of special events.
Returns
true if the data could be flushed, false else.

References EVT_INFO, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_write_fn, opj_event_msg(), OPJ_FALSE, OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

Referenced by opj_j2k_write_eoc(), opj_stream_write_data(), opj_stream_write_seek(), and opj_stream_write_skip().

◆ opj_stream_get_number_byte_left()

OPJ_OFF_T opj_stream_get_number_byte_left ( const opj_stream_private_t p_stream)

Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).

Parameters
p_streamthe stream to get the information from.
Returns
Number of bytes left before the end of the stream.

References opj_stream_private::m_byte_offset, and opj_stream_private::m_user_data_length.

Referenced by opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

◆ opj_stream_has_seek()

OPJ_BOOL opj_stream_has_seek ( const opj_stream_private_t p_stream)

◆ opj_stream_read_data()

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 
)

Reads some bytes from the stream.

Parameters
p_streamthe stream to read data from.
p_bufferpointer to the data buffer that will receive the data.
p_sizenumber of bytes to read.
p_event_mgrthe user event manager to be notified of special events.
Returns
the number of bytes read, or -1 if an error occurred or if the stream is at the end.

References EVT_INFO, opj_stream_private::m_buffer_size, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_read_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_event_msg(), and OPJ_STREAM_STATUS_END.

Referenced by opj_check_EPHuse(), opj_j2k_decode_tile(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_header_procedure(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

◆ opj_stream_read_seek()

OPJ_BOOL opj_stream_read_seek ( opj_stream_private_t p_stream,
OPJ_OFF_T  p_size,
struct opj_event_mgr p_event_mgr 
)

Skips a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
OPJ_TRUE if success, or OPJ_FALSE if an error occurred.

References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_ARG_NOT_USED, OPJ_FALSE, OPJ_STREAM_STATUS_END, and OPJ_TRUE.

Referenced by opj_j2k_decode_one_tile(), opj_stream_create(), and opj_stream_read_skip().

◆ opj_stream_read_skip()

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 
)

Skips a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
the number of bytes skipped, or -1 if an error occurred.

References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_user_data_length, opj_event_msg(), opj_stream_read_seek(), and OPJ_STREAM_STATUS_END.

Referenced by opj_stream_create().

◆ opj_stream_seek()

OPJ_BOOL opj_stream_seek ( opj_stream_private_t p_stream,
OPJ_OFF_T  p_size,
struct opj_event_mgr p_event_mgr 
)

Seeks a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
true if the stream is seekable.

References opj_stream_private::m_opj_seek.

Referenced by opj_check_EPHuse(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_write_updated_tlm(), opj_jp2_write_jp2c(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

◆ opj_stream_skip()

OPJ_OFF_T opj_stream_skip ( opj_stream_private_t p_stream,
OPJ_OFF_T  p_size,
struct opj_event_mgr p_event_mgr 
)

Skips a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
the number of bytes skipped, or -1 if an error occurred.

References opj_stream_private::m_opj_skip.

Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_tile_header(), opj_jp2_read_header_procedure(), opj_jp2_skip_jp2c(), opj_jpip_skip_iptr(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

◆ opj_stream_tell()

OPJ_OFF_T opj_stream_tell ( const opj_stream_private_t p_stream)

◆ opj_stream_write_data()

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 
)

◆ opj_stream_write_seek()

OPJ_BOOL opj_stream_write_seek ( opj_stream_private_t p_stream,
OPJ_OFF_T  p_size,
struct opj_event_mgr p_event_mgr 
)

Skips a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
the number of bytes skipped, or -1 if an error occurred.

References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_FALSE, opj_stream_flush(), OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

Referenced by opj_stream_create().

◆ opj_stream_write_skip()

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 
)

Skips a number of bytes from the stream.

Parameters
p_streamthe stream to skip data from.
p_sizethe number of bytes to skip.
p_event_mgrthe user event manager to be notified of special events.
Returns
the number of bytes skipped, or -1 if an error occurred.

References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_user_data, opj_event_msg(), opj_stream_flush(), and OPJ_STREAM_STATUS_ERROR.

Referenced by opj_stream_create().

◆ opj_write_bytes_BE()

void opj_write_bytes_BE ( OPJ_BYTE p_buffer,
OPJ_UINT32  p_value,
OPJ_UINT32  p_nb_bytes 
)

Write some bytes to the given data buffer, this function is used in Big Endian cpus.

Parameters
p_bufferpointer the data buffer to write data to.
p_valuethe value to write
p_nb_bytesthe number of bytes to write

◆ opj_write_bytes_LE()

void opj_write_bytes_LE ( OPJ_BYTE p_buffer,
OPJ_UINT32  p_value,
OPJ_UINT32  p_nb_bytes 
)

Write some bytes to the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to write data to.
p_valuethe value to write
p_nb_bytesthe number of bytes to write
Returns
the number of bytes written or -1 if an error occurred

◆ opj_write_double_BE()

void opj_write_double_BE ( OPJ_BYTE p_buffer,
OPJ_FLOAT64  p_value 
)

◆ opj_write_double_LE()

void opj_write_double_LE ( OPJ_BYTE p_buffer,
OPJ_FLOAT64  p_value 
)

Write some bytes to the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to write data to.
p_valuethe value to write

◆ opj_write_float_BE()

void opj_write_float_BE ( OPJ_BYTE p_buffer,
OPJ_FLOAT32  p_value 
)

◆ opj_write_float_LE()

void opj_write_float_LE ( OPJ_BYTE p_buffer,
OPJ_FLOAT32  p_value 
)

Write some bytes to the given data buffer, this function is used in Little Endian cpus.

Parameters
p_bufferpointer the data buffer to write data to.
p_valuethe value to write