1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if !defined(_FX_JPEG_TURBO_) 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * jmemnobs.c 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (C) 1992-1996, Thomas G. Lane. 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This file is part of the Independent JPEG Group's software. 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * For conditions of distribution and use, see the accompanying README file. 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This file provides a really simple implementation of the system- 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * dependent portion of the JPEG memory manager. This implementation 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * assumes that no backing-store files are needed: all required space 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * can be obtained from malloc(). 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This is very portable in the sense that it'll compile on almost anything, 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * but you'd better have lots of main memory (or virtual memory) if you want 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * to process big images. 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that the max_memory_to_use option is ignored by this implementation. 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPEG_INTERNALS 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "jinclude.h" 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "jpeglib.h" 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "jmemsys.h" /* import the system-dependent declarations */ 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */ 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovextern void * malloc JPP((size_t size)); 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovextern void free JPP((void *ptr)); 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined(_FX_MANAGED_CODE_) && defined(__cplusplus) 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovextern "C" { 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid* FXMEM_DefaultAlloc(int byte_size, int); 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid FXMEM_DefaultFree(void* pointer, int); 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined(_FX_MANAGED_CODE_) && defined(__cplusplus) 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Memory allocation and freeing are controlled by the regular library 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * routines malloc() and free(). 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void *) 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_get_small (j_common_ptr cinfo, size_t sizeofobject) 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// return (void *) malloc(sizeofobject); 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FXMEM_DefaultAlloc(sizeofobject, 0); 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void) 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject) 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// free(object); 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FXMEM_DefaultFree(object, 0); 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * "Large" objects are treated the same as "small" ones. 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * NB: although we include FAR keywords in the routine declarations, 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * this file won't actually work in 80x86 small/medium model; at least, 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * you probably won't be able to process useful-size images in only 64KB. 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void FAR *) 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_get_large (j_common_ptr cinfo, size_t sizeofobject) 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// return (void FAR *) malloc(sizeofobject); 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FXMEM_DefaultAlloc(sizeofobject, 0); 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void) 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject) 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// free(object); 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FXMEM_DefaultFree(object, 0); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This routine computes the total memory space available for allocation. 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Here we always say, "we got all you want bud!" 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(long) 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed, 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov long max_bytes_needed, long already_allocated) 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return max_bytes_needed; 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Backing store (temporary file) management. 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Since jpeg_mem_available always promised the moon, 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * this should never be called and we can just error out. 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void) 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov long total_bytes_needed) 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ERREXIT(cinfo, JERR_NO_BACKING_STORE); 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * These routines take care of any system-dependent initialization and 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * cleanup required. Here, there isn't any. 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(long) 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_mem_init (j_common_ptr cinfo) 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; /* just set max_memory_to_use to 0 */ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovGLOBAL(void) 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovjpeg_mem_term (j_common_ptr cinfo) 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* no work */ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif //_FX_JPEG_TURBO_ 127