19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jmemsys.h 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Copyright (C) 1992-1997, Thomas G. Lane. 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file is part of the Independent JPEG Group's software. 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * For conditions of distribution and use, see the accompanying README file. 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This include file defines the interface between the system-independent 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and system-dependent portions of the JPEG memory manager. No other 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * modules need include it. (The system-independent portion is jmemmgr.c; 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * there are several different versions of the system-dependent portion.) 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file works as-is for the system-dependent memory managers supplied 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * in the IJG distribution. You may need to modify it if you write a 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * custom memory manager. If system-dependent changes are needed in 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * this file, the best method is to #ifdef them based on a configuration 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * symbol supplied in jconfig.h, as we have done with USE_MSDOS_MEMMGR 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and USE_MAC_MEMMGR. 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* Short forms of external names for systems with brain-damaged linkers. */ 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_SHORT_EXTERNAL_NAMES 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_get_small jGetSmall 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_free_small jFreeSmall 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_get_large jGetLarge 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_free_large jFreeLarge 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_mem_available jMemAvail 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_open_backing_store jOpenBackStore 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_mem_init jMemInit 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_mem_term jMemTerm 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* NEED_SHORT_EXTERNAL_NAMES */ 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These two functions are used to allocate and release small chunks of 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * memory. (Typically the total amount requested through jpeg_get_small is 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * no more than 20K or so; this will be requested in chunks of a few K each.) 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Behavior should be the same as for the standard library functions malloc 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * and free; in particular, jpeg_get_small must return NULL on failure. 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On most systems, these ARE malloc and free. jpeg_free_small is passed the 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * size of the object being freed, just in case it's needed. 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On an 80x86 machine using small-data memory model, these manage near heap. 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void *) jpeg_get_small JPP((j_common_ptr cinfo, size_t sizeofobject)); 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_free_small JPP((j_common_ptr cinfo, void * object, 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t sizeofobject)); 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These two functions are used to allocate and release large chunks of 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * memory (up to the total free space designated by jpeg_mem_available). 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The interface is the same as above, except that on an 80x86 machine, 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * far pointers are used. On most other machines these are identical to 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the jpeg_get/free_small routines; but we keep them separate anyway, 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * in case a different allocation strategy is desirable for large chunks. 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void FAR *) jpeg_get_large JPP((j_common_ptr cinfo, 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t sizeofobject)); 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_free_large JPP((j_common_ptr cinfo, void FAR * object, 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project size_t sizeofobject)); 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The macro MAX_ALLOC_CHUNK designates the maximum number of bytes that may 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * be requested in a single call to jpeg_get_large (and jpeg_get_small for that 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * matter, but that case should never come into play). This macro is needed 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * to model the 64Kb-segment-size limit of far addressing on 80x86 machines. 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On those machines, we expect that jconfig.h will provide a proper value. 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On machines with 32-bit flat address spaces, any large constant may be used. 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NB: jmemmgr.c expects that MAX_ALLOC_CHUNK will be representable as type 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * size_t and will be a multiple of sizeof(align_type). 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef MAX_ALLOC_CHUNK /* may be overridden in jconfig.h */ 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define MAX_ALLOC_CHUNK 1000000000L 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This routine computes the total space still available for allocation by 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_get_large. If more space than this is needed, backing store will be 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * used. NOTE: any memory already allocated must not be counted. 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * There is a minimum space requirement, corresponding to the minimum 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * feasible buffer sizes; jmemmgr.c will request that much space even if 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_mem_available returns zero. The maximum space needed, enough to hold 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * all working storage in memory, is also passed in case it is useful. 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Finally, the total space already allocated is passed. If no better 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * method is available, cinfo->mem->max_memory_to_use - already_allocated 929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * is often a suitable calculation. 939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It is OK for jpeg_mem_available to underestimate the space available 959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (that'll just lead to more backing-store access than is really necessary). 969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * However, an overestimate will lead to failure. Hence it's wise to subtract 979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * a slop factor from the true available space. 5% should be enough. 989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On machines with lots of virtual memory, any large constant may be returned. 1009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Conversely, zero may be returned to always use the minimum amount of memory. 1019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(long) jpeg_mem_available JPP((j_common_ptr cinfo, 1049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long min_bytes_needed, 1059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long max_bytes_needed, 1069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long already_allocated)); 1079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 1109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This structure holds whatever state is needed to access a single 1119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * backing-store object. The read/write/close method pointers are called 1129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * by jmemmgr.c to manipulate the backing-store object; all other fields 1139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * are private to the system-dependent backing store routines. 1149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define TEMP_NAME_LENGTH 64 /* max length of a temporary file's name */ 1179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_MSDOS_MEMMGR /* DOS-specific junk */ 1209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef unsigned short XMSH; /* type of extended-memory handles */ 1229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef unsigned short EMSH; /* type of expanded-memory handles */ 1239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef union { 1259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project short file_handle; /* DOS file handle if it's a temp file */ 1269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project XMSH xms_handle; /* handle if it's a chunk of XMS */ 1279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project EMSH ems_handle; /* handle if it's a chunk of EMS */ 1289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} handle_union; 1299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* USE_MSDOS_MEMMGR */ 1319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_MAC_MEMMGR /* Mac-specific junk */ 1339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <Files.h> 1349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif /* USE_MAC_MEMMGR */ 1359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct backing_store_struct * backing_store_ptr; 1389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttypedef struct backing_store_struct { 1409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Methods for reading/writing/closing this backing-store object */ 1419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, read_backing_store, (j_common_ptr cinfo, 1429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project backing_store_ptr info, 1439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project void FAR * buffer_address, 1449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long file_offset, long byte_count)); 1459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, write_backing_store, (j_common_ptr cinfo, 1469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project backing_store_ptr info, 1479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project void FAR * buffer_address, 1489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long file_offset, long byte_count)); 1499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project JMETHOD(void, close_backing_store, (j_common_ptr cinfo, 1509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project backing_store_ptr info)); 1519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Private fields for system-dependent backing-store management */ 1539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_MSDOS_MEMMGR 1549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For the MS-DOS manager (jmemdos.c), we need: */ 1559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project handle_union handle; /* reference to backing-store storage object */ 1569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */ 1579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else 1589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_MAC_MEMMGR 1599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For the Mac manager (jmemmac.c), we need: */ 1609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project short temp_file; /* file reference number to temp file */ 1619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project FSSpec tempSpec; /* the FSSpec for the temp file */ 1629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */ 1639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else 1647b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen#ifdef USE_ANDROID_ASHMEM 1657b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen short temp_file; /* file reference number to temp file */ 1667b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen unsigned char* addr; /* the memory address mapped to ashmem */ 1677b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen long size; /* the requested ashmem size */ 1687b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen#else 1699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* For a typical implementation with temp files, we need: */ 1709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project FILE * temp_file; /* stdio reference to temp file */ 1719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char temp_name[TEMP_NAME_LENGTH]; /* name of temp file */ 1729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 1739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 1747b6961ad552a5f748fbf4b287e8838c7495dacb5Joseph Wen#endif 1759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} backing_store_info; 1769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 1799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Initial opening of a backing-store object. This must fill in the 1809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * read/write/close pointers in the object. The read/write routines 1819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * may take an error exit if the specified maximum file size is exceeded. 1829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * (If jpeg_mem_available always returns a large value, this routine can 1839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * just take an error exit.) 1849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_open_backing_store JPP((j_common_ptr cinfo, 1879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project backing_store_ptr info, 1889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project long total_bytes_needed)); 1899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 1929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These routines take care of any system-dependent initialization and 1939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * cleanup required. jpeg_mem_init will be called before anything is 1949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * allocated (and, therefore, nothing in cinfo is of use except the error 1959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * manager pointer). It should return a suitable default value for 1969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * max_memory_to_use; this may subsequently be overridden by the surrounding 1979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * application. (Note that max_memory_to_use is only important if 1989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_mem_available chooses to consult it ... no one else will.) 1999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jpeg_mem_term may assume that all requested memory has been freed and that 2009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * all opened backing-store objects have been closed. 2019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(long) jpeg_mem_init JPP((j_common_ptr cinfo)); 2049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectEXTERN(void) jpeg_mem_term JPP((j_common_ptr cinfo)); 205