22#include "grk_config_private.h"
45#define GRK_JPEG_2000_NUM_IDENTIFIER_BYTES 22
54 streamParams_.initial_double_buffer_len = src->initial_double_buffer_len;
76 for(uint8_t i = 0; i < src->num_custom_headers; ++i)
82 streamParams_.s3_use_virtual_hosting = src->s3_use_virtual_hosting;
103 bool isNetwork = file.starts_with(
"http://") || file.starts_with(
"https://") ||
104 file.starts_with(
"/vsis3/") || file.starts_with(
"/vsicurl/") ||
105 file.starts_with(
"/vsiaz/") || file.starts_with(
"/vsiadls/") ||
106 file.starts_with(
"/vsigs/");
113 grklog.error(
"Invalid stream parameters: no valid stream source specified.");
142 GRK_CODEC_FORMAT::GRK_CODEC_UNK, isReadStream);
145 grklog.error(
"Unable to create memory stream.");
162 grklog.error(
"Unable to detect codec format.");
174 return fread(buffer, 1, numBytes, (FILE*)p_file);
179 auto file = (FILE*)filePtr;
181 int64_t file_length = (int64_t)
GRK_FTELL(file);
183 return (uint64_t)file_length;
186 static size_t grkWriteToFile(
const uint8_t* buffer,
size_t numBytes,
void* p_file)
188 return fwrite(buffer, 1, numBytes, (FILE*)p_file);
193 if(numBytes > INT64_MAX)
195 return GRK_FSEEK((FILE*)p_user_data, (int64_t)numBytes, SEEK_SET) ? false :
true;
201 fclose((FILE*)p_user_data);
212 size_t len = strnlen(src, N - 1);
213 memcpy(dest, src, len);
#define GRK_FSEEK(stream, offset, whence)
Definition CodingParams.cpp:26
#define GRK_FTELL(stream)
Definition CodingParams.cpp:27
#define GRK_JPEG_2000_NUM_IDENTIFIER_BYTES
Definition StreamGenerator.h:45
StreamGenerator(grk_stream_params *src)
Definition StreamGenerator.h:50
grk_stream_params streamParams_
Definition StreamGenerator.h:205
static constexpr size_t DEFAULT_INITIAL_BUFFER_LEN
Definition StreamGenerator.h:119
IStream * createCallbackStream(void)
Definition StreamGenerator.cpp:36
void safe_strcpy(char(&dest)[N], const char *src)
Definition StreamGenerator.h:208
size_t getDoubleBufferLength(size_t configuredLength)
Definition StreamGenerator.h:122
static bool grkSeekInFile(uint64_t numBytes, void *p_user_data)
Definition StreamGenerator.h:191
static uint64_t getDataLengthFromFile(void *filePtr)
Definition StreamGenerator.h:177
static size_t grkWriteToFile(const uint8_t *buffer, size_t numBytes, void *p_file)
Definition StreamGenerator.h:186
static constexpr bool useCallbacks
Definition StreamGenerator.h:120
IStream * createCurlFetchStream(void)
Definition StreamGenerator.cpp:113
IStream * create(void)
Definition StreamGenerator.h:86
size_t getInitialDoubleBufferLength(size_t configuredLength)
Definition StreamGenerator.h:127
IStream * createBufferStream(bool isReadStream)
Definition StreamGenerator.h:139
IStream * createFileStream(void)
Definition StreamGenerator.cpp:71
static size_t grkReadFromFile(uint8_t *buffer, size_t numBytes, void *p_file)
Definition StreamGenerator.h:172
static void grkFreeFile(void *p_user_data)
Definition StreamGenerator.h:198
static constexpr size_t DEFAULT_BUFFER_LEN
Definition StreamGenerator.h:118
bool validateStream(IStream *stream)
Definition StreamGenerator.h:150
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Grok Supported JPEG 2000 formats.
ResWindow.
Definition CompressedChunkCache.h:36
ILogger & grklog
Definition Logger.cpp:24
IStream * memStreamCreate(uint8_t *buf, size_t len, bool ownsBuffer, grk_stream_free_user_data_fn freeCallback, GRK_CODEC_FORMAT format, bool isReadStream)
Create stream from buffer.
Definition MemStream.cpp:153
bool detectFormat(const uint8_t *buffer, GRK_CODEC_FORMAT *fmt)
Detect JPEG 2000 format from buffer Format is either GRK_FMT_J2K or GRK_FMT_JP2.
Definition MemStream.cpp:39
virtual bool seek(uint64_t offset)=0
Seek bytes from the stream (absolute).
virtual size_t read(uint8_t *buffer, uint8_t **zero_copy_buffer, size_t len)=0
Read bytes from stream.
virtual void setFormat(GRK_CODEC_FORMAT format)=0
Stores codec format J2K/JP2/MJ2.
JPEG 2000 stream parameters There are three methods of streaming: by file, buffer or callback Client ...