public void jpeg_save_markers(int marker_code, int length_limit)
{
/* Choose processor routine to use.
* APP0/APP14 have special requirements.
*/
jpeg_decompress_struct.jpeg_marker_parser_method processor;
if (length_limit != 0)
{
processor = save_marker;
/* If saving APP0/APP14, save at least enough for our internal use. */
if (marker_code == (int)JPEG_MARKER.APP0 && length_limit < APP0_DATA_LEN)
length_limit = APP0_DATA_LEN;
else if (marker_code == (int)JPEG_MARKER.APP14 && length_limit < APP14_DATA_LEN)
length_limit = APP14_DATA_LEN;
}
else
{
processor = skip_variable;
/* If discarding APP0/APP14, use our regular on-the-fly processor. */
if (marker_code == (int)JPEG_MARKER.APP0 || marker_code == (int)JPEG_MARKER.APP14)
processor = get_interesting_appn;
}
if (marker_code == (int)JPEG_MARKER.COM)
{
m_process_COM = processor;
m_length_limit_COM = length_limit;
}
else if (marker_code >= (int)JPEG_MARKER.APP0 && marker_code <= (int)JPEG_MARKER.APP15)
{
m_process_APPn[marker_code - (int)JPEG_MARKER.APP0] = processor;
m_length_limit_APPn[marker_code - (int)JPEG_MARKER.APP0] = length_limit;
}
else
m_cinfo.ERREXIT(J_MESSAGE_CODE.JERR_UNKNOWN_MARKER, marker_code);
}