Grok
7.6.3
|
Byte input-output stream. More...
#include <BufferedStream.h>
Public Member Functions | |
BufferedStream (uint8_t *buffer, size_t buffer_size, bool l_is_input) | |
~BufferedStream () | |
size_t | read (uint8_t *p_buffer, size_t p_size) |
Reads some bytes from the stream. More... | |
size_t | read_data_zero_copy (uint8_t **p_buffer, size_t p_size) |
bool | write_byte (uint8_t value) |
bool | write_short (uint16_t value) |
bool | write_24 (uint32_t value) |
bool | write_int (uint32_t value) |
bool | write_64 (uint64_t value) |
size_t | write_bytes (const uint8_t *p_buffer, size_t p_size) |
Write bytes to stream (no correction for endian!). More... | |
bool | flush () |
Flush stream to disk. More... | |
bool | skip (int64_t p_size) |
Skip bytes in stream. More... | |
uint64_t | tell (void) |
Tells byte offset of stream (similar to ftell). More... | |
uint64_t | get_number_byte_left (void) |
Get the number of bytes left before end of stream. More... | |
bool | seek (uint64_t offset) |
Seek bytes from the stream (absolute) More... | |
bool | has_seek () |
Check if stream is seekable. More... | |
bool | supportsZeroCopy () |
uint8_t * | getCurrentPtr () |
![]() | |
virtual | ~IBufferedStream () |
Public Attributes | |
void * | m_user_data |
user data More... | |
grk_stream_free_user_data_fn | m_free_user_data_fn |
Pointer to function to free m_user_data (nullptr at initialization) when destroying the stream. More... | |
uint64_t | m_user_data_length |
User data length. More... | |
grk_stream_read_fn | m_read_fn |
Pointer to actual read function (nullptr at initialization). More... | |
grk_stream_zero_copy_read_fn | m_zero_copy_read_fn |
Pointer to actual zero copy read function (nullptr at initialization). More... | |
grk_stream_write_fn | m_write_fn |
Pointer to actual write function (nullptr at initialization). More... | |
grk_stream_seek_fn | m_seek_fn |
Pointer to actual seek function (if available). More... | |
uint32_t | m_status |
Stream status flags. More... | |
Private Member Functions | |
bool | write_skip (int64_t p_size) |
Skip bytes in write stream. More... | |
bool | read_skip (int64_t p_size) |
Skip bytes in read stream. More... | |
bool | read_seek (uint64_t offset) |
Absolute seek in read stream. More... | |
bool | write_seek (uint64_t offset) |
Absolute seek in write stream. More... | |
void | write_increment (size_t p_size) |
template<typename TYPE > | |
bool | write (TYPE value, uint8_t numBytes) |
void | invalidate_buffer () |
bool | isMemStream () |
Private Attributes | |
grk_buf * | m_buf |
size_t | m_buffered_bytes |
size_t | m_read_bytes_seekable |
uint64_t | m_stream_offset |
Byte input-output stream.
grk::BufferedStream::BufferedStream | ( | uint8_t * | buffer, |
size_t | buffer_size, | ||
bool | l_is_input | ||
) |
References m_buf.
grk::BufferedStream::~BufferedStream | ( | ) |
References m_buf, m_free_user_data_fn, and m_user_data.
|
virtual |
Flush stream to disk.
Implements grk::IBufferedStream.
References grk::grk_buffer< T >::buf, grk::grk_buffer< T >::curr_ptr(), grk::GRK_ERROR(), GROK_STREAM_STATUS_ERROR, grk::grk_buffer< T >::incr_offset(), isMemStream(), m_buf, m_buffered_bytes, m_read_bytes_seekable, m_status, m_user_data, m_write_fn, and grk::grk_buffer< T >::offset.
Referenced by grk::j2k_write_eoc(), write(), write_bytes(), and write_seek().
|
virtual |
Get the number of bytes left before end of stream.
Implements grk::IBufferedStream.
References m_stream_offset, and m_user_data_length.
Referenced by grk::jp2_read_box_hdr(), and grk::TileProcessor::prepare_sod_decoding().
uint8_t * grk::BufferedStream::getCurrentPtr | ( | ) |
References grk::grk_buffer< T >::curr_ptr(), and m_buf.
Referenced by grk::TileProcessor::prepare_sod_decoding().
|
virtual |
|
private |
References GROK_STREAM_STATUS_INPUT, m_buf, m_buffered_bytes, m_read_bytes_seekable, m_status, and grk::grk_buffer< T >::offset.
Referenced by read(), read_seek(), and write_seek().
|
private |
References m_buf, and grk::grk_buffer< T >::owns_data.
Referenced by flush(), supportsZeroCopy(), write(), write_bytes(), write_increment(), and write_seek().
size_t grk::BufferedStream::read | ( | uint8_t * | p_buffer, |
size_t | p_size | ||
) |
Reads some bytes from the stream.
p_buffer | pointer to the data buffer that will receive the data. |
p_size | number of bytes to read. |
References grk::grk_buffer< T >::buf, grk::grk_buffer< T >::curr_ptr(), grk::GRK_ERROR(), GROK_STREAM_STATUS_END, grk::grk_buffer< T >::incr_offset(), invalidate_buffer(), grk::grk_buffer< T >::len, m_buf, m_buffered_bytes, m_read_bytes_seekable, m_read_fn, m_status, m_stream_offset, m_user_data, m_user_data_length, and supportsZeroCopy().
Referenced by grk::jp2_read_box_hdr(), and grk::TileProcessor::prepare_sod_decoding().
size_t grk::BufferedStream::read_data_zero_copy | ( | uint8_t ** | p_buffer, |
size_t | p_size | ||
) |
References GROK_STREAM_STATUS_END, m_status, m_stream_offset, m_user_data, m_user_data_length, and m_zero_copy_read_fn.
|
private |
Absolute seek in read stream.
offset | absolute offset |
References grk::grk_buffer< T >::buf, grk::grk_buffer< T >::curr_ptr(), GROK_STREAM_STATUS_END, GROK_STREAM_STATUS_ERROR, grk::grk_buffer< T >::incr_offset(), invalidate_buffer(), m_buf, m_buffered_bytes, m_read_bytes_seekable, m_seek_fn, m_status, m_stream_offset, m_user_data, and m_user_data_length.
Referenced by read_skip(), and seek().
|
private |
Skip bytes in read stream.
p_size | the number of bytes to skip. |
References m_stream_offset, and read_seek().
Referenced by skip().
|
virtual |
Seek bytes from the stream (absolute)
offset | the number of bytes to skip. |
Implements grk::IBufferedStream.
References GROK_STREAM_STATUS_INPUT, m_status, read_seek(), and write_seek().
Referenced by grk::TileLengthMarkers::write_end(), and grk::PacketLengthMarkers::write_marker_length().
|
virtual |
Skip bytes in stream.
p_size | the number of bytes to skip. |
Implements grk::IBufferedStream.
References GROK_STREAM_STATUS_INPUT, m_status, read_skip(), and write_skip().
Referenced by grk::TileLengthMarkers::write_begin(), and grk::PacketLengthMarkers::write_marker_header().
bool grk::BufferedStream::supportsZeroCopy | ( | ) |
References GROK_STREAM_STATUS_INPUT, isMemStream(), and m_status.
Referenced by grk::TileProcessor::prepare_sod_decoding(), and read().
|
virtual |
Tells byte offset of stream (similar to ftell).
Implements grk::IBufferedStream.
References m_stream_offset.
Referenced by grk::T2Compress::compress_packet(), grk::TileProcessor::prepare_sod_decoding(), grk::TileLengthMarkers::write_begin(), grk::TileLengthMarkers::write_end(), grk::PacketLengthMarkers::write_marker_header(), grk::PacketLengthMarkers::write_marker_length(), and grk::SOTMarker::write_psot().
|
private |
|
virtual |
Implements grk::IBufferedStream.
Referenced by grk::j2k_write_mcc_record().
bool grk::BufferedStream::write_64 | ( | uint64_t | value | ) |
|
virtual |
Implements grk::IBufferedStream.
References write_bytes().
Referenced by grk::T2Compress::compress_packet(), grk::j2k_write_mcc_record(), grk::j2k_write_rgn(), grk::PacketLengthMarkers::write(), grk::SIZMarker::write(), grk::TileLengthMarkers::write_begin(), grk::TileLengthMarkers::write_end(), and grk::Quantizer::write_SQcd_SQcc().
|
virtual |
Write bytes to stream (no correction for endian!).
p_buffer | pointer to the data buffer holds the data to be written. |
p_size | number of bytes to write. |
Implements grk::IBufferedStream.
References grk::grk_buffer< T >::curr_ptr(), flush(), GROK_STREAM_STATUS_ERROR, isMemStream(), grk::grk_buffer< T >::len, m_buf, m_buffered_bytes, m_status, m_stream_offset, m_user_data, m_write_fn, grk::grk_buffer< T >::offset, and write_increment().
Referenced by grk::T2Compress::compress_packet(), grk::j2k_write_mct_record(), grk::PacketLengthMarkers::write(), and write_byte().
|
private |
References grk::grk_buffer< T >::incr_offset(), isMemStream(), m_buf, m_buffered_bytes, and m_stream_offset.
Referenced by write(), and write_bytes().
|
virtual |
Implements grk::IBufferedStream.
Referenced by grk::SIZMarker::write(), and grk::TileLengthMarkers::write_end().
|
private |
Absolute seek in write stream.
offset | absolute offset |
References flush(), GROK_STREAM_STATUS_ERROR, invalidate_buffer(), isMemStream(), m_buf, m_seek_fn, m_status, m_stream_offset, m_user_data, and grk::grk_buffer< T >::offset.
Referenced by seek(), and write_skip().
|
virtual |
Implements grk::IBufferedStream.
Referenced by grk::TileProcessor::compress_tile_part(), grk::j2k_write_mcc_record(), grk::j2k_write_mct_record(), grk::SIZMarker::write(), grk::TileLengthMarkers::write_begin(), grk::PacketLengthMarkers::write_marker_header(), grk::PacketLengthMarkers::write_marker_length(), and grk::Quantizer::write_SQcd_SQcc().
|
private |
Skip bytes in write stream.
p_size | the number of bytes to skip. |
References m_stream_offset, and write_seek().
Referenced by skip().
|
private |
Referenced by BufferedStream(), flush(), getCurrentPtr(), invalidate_buffer(), isMemStream(), read(), read_seek(), write(), write_bytes(), write_increment(), write_seek(), and ~BufferedStream().
|
private |
Referenced by flush(), invalidate_buffer(), read(), read_seek(), write(), write_bytes(), and write_increment().
grk_stream_free_user_data_fn grk::BufferedStream::m_free_user_data_fn |
Pointer to function to free m_user_data (nullptr at initialization) when destroying the stream.
If pointer is nullptr the function is not called and the m_user_data is not freed (even if it isn't nullptr).
Referenced by ~BufferedStream().
|
private |
Referenced by flush(), invalidate_buffer(), read(), and read_seek().
grk_stream_read_fn grk::BufferedStream::m_read_fn |
Pointer to actual read function (nullptr at initialization).
Referenced by read().
grk_stream_seek_fn grk::BufferedStream::m_seek_fn |
Pointer to actual seek function (if available).
Referenced by has_seek(), read_seek(), write(), and write_seek().
uint32_t grk::BufferedStream::m_status |
Stream status flags.
Referenced by flush(), invalidate_buffer(), read(), read_data_zero_copy(), read_seek(), seek(), skip(), supportsZeroCopy(), write(), write_bytes(), and write_seek().
|
private |
Referenced by get_number_byte_left(), read(), read_data_zero_copy(), read_seek(), read_skip(), tell(), write(), write_bytes(), write_increment(), write_seek(), and write_skip().
void* grk::BufferedStream::m_user_data |
user data
Referenced by flush(), read(), read_data_zero_copy(), read_seek(), write(), write_bytes(), write_seek(), and ~BufferedStream().
uint64_t grk::BufferedStream::m_user_data_length |
User data length.
Currently set to size of file for file read stream, and size of buffer for buffer read/write stream
Referenced by get_number_byte_left(), read(), read_data_zero_copy(), and read_seek().
grk_stream_write_fn grk::BufferedStream::m_write_fn |
Pointer to actual write function (nullptr at initialization).
Referenced by flush(), and write_bytes().
grk_stream_zero_copy_read_fn grk::BufferedStream::m_zero_copy_read_fn |
Pointer to actual zero copy read function (nullptr at initialization).
Referenced by read_data_zero_copy().