24#include "grk_config_private.h"
29#define GROK_STREAM_STATUS_OUTPUT 0x1U
30#define GROK_STREAM_STATUS_INPUT 0x2U
31#define GROK_STREAM_STATUS_END 0x4U
32#define GROK_STREAM_STATUS_ERROR 0x8U
154 template<
typename TYPE>
216template<
typename TYPE>
222#if defined(GROK_BIG_ENDIAN)
232template<
typename TYPE>
238template<
typename TYPE>
241 assert(numBytes > 0 && numBytes <=
sizeof(
TYPE));
242#if defined(GROK_BIG_ENDIAN)
254template<
typename TYPE>
Definition GrkObjectWrapper.h:23
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
size_t(* grk_stream_read_fn)(uint8_t *buffer, size_t numBytes, void *user_data)
read stream callback
Definition grok.h:492
bool(* grk_stream_seek_fn)(uint64_t offset, void *user_data)
seek (absolute) callback
Definition grok.h:511
void(* grk_stream_free_user_data_fn)(void *user_data)
free user data callback
Definition grok.h:519
size_t(* grk_stream_write_fn)(const uint8_t *buffer, size_t numBytes, void *user_data)
write stream callback
Definition grok.h:502
Copyright (C) 2016-2024 Grok Image Compression Inc.
Definition ICacheable.h:20
void grk_read(const uint8_t *buffer, TYPE *value, uint32_t numBytes)
Definition BufferedStream.h:239
size_t(* grk_stream_zero_copy_read_fn)(uint8_t **buffer, size_t numBytes, void *user_data)
Definition MemStream.h:30
void grk_write(uint8_t *buffer, TYPE value, uint32_t numBytes)
Definition BufferedStream.h:217
Grok ref-counted object.
Definition grok.h:144
Definition BufferedStream.h:35
uint8_t * getZeroCopyPtr()
Definition BufferedStream.cpp:356
uint32_t status_
Stream status flags.
Definition BufferedStream.h:197
void setUserData(void *data, grk_stream_free_user_data_fn freeUserDataFun)
Definition BufferedStream.cpp:55
void setReadFunction(grk_stream_read_fn fn)
Definition BufferedStream.cpp:72
grk_buf8 * buf_
Definition BufferedStream.h:199
GRK_CODEC_FORMAT getFormat(void)
Definition BufferedStream.cpp:51
bool write24(uint32_t value)
Definition BufferedStream.cpp:218
uint32_t getStatus(void)
Definition BufferedStream.cpp:68
void * getUserData(void)
Definition BufferedStream.cpp:60
grk_object obj
Definition BufferedStream.h:160
bool write_skip(int64_t p_size)
Skip bytes in write stream.
Definition BufferedStream.cpp:371
bool flush()
Flush stream to disk.
Definition BufferedStream.cpp:318
grk_stream_seek_fn seek_fn_
Pointer to actual seek function (if available).
Definition BufferedStream.h:193
grk_stream * getWrapper(void)
Definition BufferedStream.cpp:487
bool writeShort(uint16_t value)
Definition BufferedStream.cpp:214
size_t read_bytes_seekable_
Definition BufferedStream.h:208
bool write64(uint64_t value)
Definition BufferedStream.cpp:226
bool writeInt(uint32_t value)
Definition BufferedStream.cpp:222
bool skip(int64_t p_size)
Skip bytes in stream.
Definition BufferedStream.cpp:387
void invalidate_buffer()
Definition BufferedStream.cpp:345
bool seek(uint64_t offset)
Seek bytes from the stream (absolute)
Definition BufferedStream.cpp:465
bool writeByte(uint8_t value)
Definition BufferedStream.cpp:210
bool isMemStream()
Definition BufferedStream.cpp:477
~BufferedStream()
Definition BufferedStream.cpp:41
bool read_seek(uint64_t offset)
Absolute seek in read stream.
Definition BufferedStream.cpp:395
bool read_skip(int64_t p_size)
Skip bytes in read stream.
Definition BufferedStream.cpp:361
uint64_t stream_offset_
Definition BufferedStream.h:211
void writeIncrement(size_t p_size)
Definition BufferedStream.cpp:307
grk_stream_zero_copy_read_fn zero_copy_read_fn_
Pointer to actual zero copy read function (nullptr at initialization).
Definition BufferedStream.h:185
void setWriteFunction(grk_stream_write_fn fn)
Definition BufferedStream.cpp:80
void setUserDataLength(uint64_t len)
Definition BufferedStream.cpp:64
bool supportsZeroCopy()
Definition BufferedStream.cpp:352
bool write_seek(uint64_t offset)
Absolute seek in write stream.
Definition BufferedStream.cpp:441
void setSeekFunction(grk_stream_seek_fn fn)
Definition BufferedStream.cpp:84
size_t buffered_bytes_
Definition BufferedStream.h:202
void setFormat(GRK_CODEC_FORMAT format)
Definition BufferedStream.cpp:47
bool hasSeek()
Check if stream is seekable.
Definition BufferedStream.cpp:472
size_t writeBytes(const uint8_t *buffer, size_t p_size)
Write bytes to stream (no correction for endian!).
Definition BufferedStream.cpp:258
grk_stream_write_fn write_fn_
Pointer to actual write function (nullptr at initialization).
Definition BufferedStream.h:189
uint64_t user_data_length_
User data length.
Definition BufferedStream.h:177
void setZeroCopyReadFunction(grk_stream_zero_copy_read_fn fn)
Definition BufferedStream.cpp:76
size_t read(uint8_t *buffer, size_t p_size)
Reads some bytes from the stream.
Definition BufferedStream.cpp:89
bool write(TYPE value, uint8_t numBytes)
Definition BufferedStream.cpp:231
void * user_data_
user data
Definition BufferedStream.h:165
grk_stream_read_fn read_fn_
Pointer to actual read function (nullptr at initialization).
Definition BufferedStream.h:181
uint64_t numBytesLeft(void)
Get the number of bytes left before end of stream.
Definition BufferedStream.cpp:382
GRK_CODEC_FORMAT format_
Definition BufferedStream.h:213
BufferedStream(uint8_t *buffer, size_t buffer_size, bool l_is_input)
Definition BufferedStream.cpp:30
grk_stream_free_user_data_fn free_user_data_fn_
Pointer to function to free user_data_ (nullptr at initialization) when destroying the stream.
Definition BufferedStream.h:171
uint64_t tell(void)
Tells byte offset of stream (similar to ftell).
Definition BufferedStream.cpp:378
static BufferedStream * getImpl(grk_stream *stream)
Definition BufferedStream.cpp:482