Classes | Functions
core/vil/file_formats/vil_jpeg_source_mgr.h File Reference
#include <vil/file_formats/vil_jpeglib.h>

Go to the source code of this file.

Classes

struct  vil_jpeg_stream_source_mgr
 this is the data source structure which allows JPEG to read from a vil_stream. More...

Functions

void vil_jpeg_init_source (j_decompress_ptr cinfo)
jpeg_boolean vil_jpeg_fill_input_buffer (j_decompress_ptr cinfo)
 Fill the input buffer --- called whenever buffer is emptied.
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).
void vil_jpeg_term_source (j_decompress_ptr cinfo)
 Terminate source --- called by jpeg_finish_decompress after all data has been read. Often a no-op.
void vil_jpeg_stream_src_set (j_decompress_ptr cinfo, vil_stream *vs)
void vil_jpeg_stream_src_rewind (j_decompress_ptr cinfo, vil_stream *vs)

Detailed Description

Author:
fsm
    Modifications
       11 Oct 2002 Ian Scott - converted to vil
  

Definition in file vil_jpeg_source_mgr.h.


Function Documentation

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.

void vil_jpeg_init_source ( j_decompress_ptr  cinfo)

Definition at line 40 of file vil_jpeg_source_mgr.cxx.

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.

void vil_jpeg_stream_src_rewind ( j_decompress_ptr  cinfo,
vil_stream vs 
)

Definition at line 198 of file vil_jpeg_source_mgr.cxx.

void vil_jpeg_stream_src_set ( j_decompress_ptr  cinfo,
vil_stream vs 
)

Definition at line 157 of file vil_jpeg_source_mgr.cxx.

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.

Note:
not called by jpeg_abort or jpeg_destroy; surrounding application must deal with any cleanup that should happen even for error exit.

Definition at line 150 of file vil_jpeg_source_mgr.cxx.