/* * This file was taken from RakNet 4.082 without any modifications. * Please see licenses/RakNet license.txt for the underlying license and related copyright. */ // From http://www.codeguru.com/forum/archive/index.php/t-378333.html #include "jpeglib.h" /* This a custom destination manager for jpeglib that enables the use of memory to memory compression. */ typedef struct { struct jpeg_destination_mgr pub; /* base class */ JOCTET* buffer; /* buffer start address */ int bufsize; /* size of buffer */ size_t datasize; /* final size of compressed data */ int* outsize; /* user pointer to datasize */ int errcount; /* counts up write errors due to buffer overruns */ } memory_destination_mgr; typedef memory_destination_mgr* mem_dest_ptr; METHODDEF(void) init_destination (j_compress_ptr cinfo); METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo); METHODDEF(void) term_destination (j_compress_ptr cinfo); GLOBAL(void) jpeg_memory_dest (j_compress_ptr cinfo, JOCTET* buffer, int bufsize, int* outsize); METHODDEF(void) init_source (j_decompress_ptr dinfo); METHODDEF(boolean) fill_input_buffer (j_decompress_ptr dinfo); METHODDEF(void) skip_input_data (j_decompress_ptr dinfo, INT32 num_bytes); METHODDEF(void) term_source (j_decompress_ptr dinfo); GLOBAL(void) jpeg_memory_src (j_decompress_ptr dinfo, unsigned char* buffer, size_t size);