15 # include <vcl_msvc_warnings.h> 27 #define SIZEOF(object) ((std::size_t) sizeof(object)) 32 #define vil_jpeg_INPUT_BUF_SIZE 4096 // choose an efficiently fread'able size 45 std::cerr <<
"vil_jpeg_init_source() " << src <<
'\n';
51 src->start_of_file = TRUE;
93 if (src->start_of_file)
94 ERREXIT(cinfo, JERR_INPUT_EMPTY);
95 WARNMS(cinfo, JWRN_JPEG_EOF);
97 src->buffer[0] = (JOCTET) 0xFF;
98 src->buffer[1] = (JOCTET) JPEG_EOI;
102 src->base.next_input_byte = src->buffer;
105 assert( (std::size_t)nbytes <= std::numeric_limits< std::size_t >::max() );
106 src->base.bytes_in_buffer = (std::size_t)nbytes;
107 src->start_of_file = FALSE;
131 while (num_bytes > (
long) src->base.bytes_in_buffer) {
132 num_bytes -= (long) src->base.bytes_in_buffer;
137 src->base.next_input_byte += (std::size_t) num_bytes;
138 src->base.bytes_in_buffer -= (std::size_t) num_bytes;
168 std::cerr <<
"vil_jpeg_stream_src_set() : creating new data source\n";
172 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
176 cinfo->src = reinterpret_cast<struct jpeg_source_mgr *>(src);
181 src->buffer = (JOCTET *)
182 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
186 src->start_of_file = TRUE;
192 src->base.resync_to_restart = jpeg_resync_to_restart;
204 cinfo->src->bytes_in_buffer = 0;
205 cinfo->src->next_input_byte =
nullptr;
Stream interface for VIL image loaders.
vil_jpeg_stream_source_mgr * vil_jpeg_srcptr
STATIC void vil_jpeg_stream_src_set(j_decompress_ptr cinfo, vil_stream *vs)
virtual void seek(vil_streampos position)=0
Goto file pointer.
this is the data source structure which allows JPEG to read from a vil_stream.
Stream interface for VIL image loaders.
STATIC jpeg_boolean vil_jpeg_fill_input_buffer(j_decompress_ptr cinfo)
Fill the input buffer — called whenever buffer is emptied.
STATIC void vil_jpeg_stream_src_rewind(j_decompress_ptr cinfo, vil_stream *vs)
STATIC void vil_jpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
Skip data — used to skip over a potentially large amount of uninteresting data (such as an APPn marke...
#define vil_jpeg_INPUT_BUF_SIZE
STATIC void vil_jpeg_init_source(j_decompress_ptr cinfo)
STATIC void vil_jpeg_term_source(j_decompress_ptr)
Terminate source — called by jpeg_finish_decompress after all data has been read. Often a no-op.