| 284 | |
| 285 | GLOBAL(void) |
| 286 | devil_jpeg_read_init (j_decompress_ptr cinfo) |
| 287 | { |
| 288 | iread_ptr src; |
| 289 | |
| 290 | if ( cinfo->src == NULL ) { // first time for this JPEG object? |
| 291 | cinfo->src = (struct jpeg_source_mgr *) |
| 292 | (*cinfo->mem->alloc_small)( (j_common_ptr)cinfo, JPOOL_PERMANENT, sizeof(iread_mgr) ); |
| 293 | src = (iread_ptr) cinfo->src; |
| 294 | src->buffer = (JOCTET *) |
| 295 | (*cinfo->mem->alloc_small)( (j_common_ptr)cinfo, JPOOL_PERMANENT, |
| 296 | INPUT_BUF_SIZE * sizeof(JOCTET) ); |
| 297 | } |
| 298 | |
| 299 | src = (iread_ptr) cinfo->src; |
| 300 | src->pub.init_source = init_source; |
| 301 | src->pub.fill_input_buffer = fill_input_buffer; |
| 302 | src->pub.skip_input_data = skip_input_data; |
| 303 | src->pub.resync_to_restart = jpeg_resync_to_restart; // use default method |
| 304 | src->pub.term_source = term_source; |
| 305 | src->pub.bytes_in_buffer = 0; // forces fill_input_buffer on first read |
| 306 | src->pub.next_input_byte = NULL; // until buffer loaded |
| 307 | } |
| 308 | |
| 309 | |
| 310 | jmp_buf JpegJumpBuffer; |