#include "vil_jpeg_source_mgr.h"
#include <vcl_cassert.h>
#include <vcl_cstddef.h>
#include <vcl_limits.h>
#include <vil/vil_stream.h>
Go to the source code of this file.
Defines | |
#define | STATIC |
#define | SIZEOF(object) ((vcl_size_t) sizeof(object)) |
#define | vil_jpeg_INPUT_BUF_SIZE 4096 |
Typedefs | |
typedef vil_jpeg_stream_source_mgr * | vil_jpeg_srcptr |
Functions | |
STATIC void | vil_jpeg_init_source (j_decompress_ptr cinfo) |
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_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 marker). | |
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. | |
STATIC void | vil_jpeg_stream_src_set (j_decompress_ptr cinfo, vil_stream *vs) |
STATIC void | vil_jpeg_stream_src_rewind (j_decompress_ptr cinfo, vil_stream *vs) |
Definition in file vil_jpeg_source_mgr.cxx.
#define SIZEOF | ( | object | ) | ((vcl_size_t) sizeof(object)) |
Definition at line 27 of file vil_jpeg_source_mgr.cxx.
#define STATIC |
Definition at line 19 of file vil_jpeg_source_mgr.cxx.
#define vil_jpeg_INPUT_BUF_SIZE 4096 |
Definition at line 32 of file vil_jpeg_source_mgr.cxx.
Definition at line 33 of file vil_jpeg_source_mgr.cxx.
STATIC jpeg_boolean vil_jpeg_fill_input_buffer | ( | j_decompress_ptr | cinfo | ) |
Fill the input buffer --- called whenever buffer is emptied.
In typical applications, this should read fresh data into the buffer (ignoring the current state of next_input_byte & bytes_in_buffer), reset the pointer & count to the start of the buffer, and return TRUE indicating that the buffer has been reloaded. It is not necessary to fill the buffer entirely, only to obtain at least one more byte.
There is no such thing as an EOF return. If the end of the file has been reached, the routine has a choice of ERREXIT() or inserting fake data into the buffer. In most cases, generating a warning message and inserting a fake EOI marker is the best course of action --- this will allow the decompressor to output however much of the image is there. However, the resulting error message is misleading if the real problem is an empty input file, so we handle that case specially.
In applications that need to be able to suspend compression due to input not being available yet, a FALSE return indicates that no more data can be obtained right now, but more may be forthcoming later. In this situation, the decompressor will return to its caller (with an indication of the number of scanlines it has read, if any). The application should resume decompression after it has loaded more data into the input buffer. Note that there are substantial restrictions on the use of suspension --- see the documentation.
When suspending, the decompressor will back up to a convenient restart point (typically the start of the current MCU). next_input_byte & bytes_in_buffer indicate where the restart point will be if the current call returns FALSE. Data beyond this point must be rescanned after resumption, so move it to the front of the buffer rather than discarding it.
Definition at line 86 of file vil_jpeg_source_mgr.cxx.
STATIC void vil_jpeg_init_source | ( | j_decompress_ptr | cinfo | ) |
Definition at line 40 of file vil_jpeg_source_mgr.cxx.
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 marker).
Writers of suspendable-input applications must note that skip_input_data is not granted the right to give a suspension return. If the skip extends beyond the data currently in the buffer, the buffer can be marked empty so that the next read will cause a fill_input_buffer call that can suspend. Arranging for additional bytes to be discarded before reloading the input buffer is the application writer's problem.
Definition at line 122 of file vil_jpeg_source_mgr.cxx.
STATIC void vil_jpeg_stream_src_rewind | ( | j_decompress_ptr | cinfo, |
vil_stream * | vs | ||
) |
Definition at line 198 of file vil_jpeg_source_mgr.cxx.
STATIC void vil_jpeg_stream_src_set | ( | j_decompress_ptr | cinfo, |
vil_stream * | vs | ||
) |
Definition at line 157 of file vil_jpeg_source_mgr.cxx.
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.
Definition at line 150 of file vil_jpeg_source_mgr.cxx.