forked from OSGeo/gdal
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
libjpeg: switch internal libjpeg internal memory allocator to default…
… (malloc/free) (OSGeo#3601) There is no reason to use temp files in libjpeg anymore. - Memory consumption inside the library is pretty small compared with current memory sizes - Setting the max memory to 500MB eliminates the use of tmp file swap - OS provided swap space is faster anyhow
- Loading branch information
Showing
5 changed files
with
121 additions
and
243 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
/* | ||
* jmemnobs.c | ||
* | ||
* Copyright (C) 1992-1996, Thomas G. Lane. | ||
* This file is part of the Independent JPEG Group's software. | ||
* For conditions of distribution and use, see the accompanying README file. | ||
* | ||
* This file provides a really simple implementation of the system- | ||
* dependent portion of the JPEG memory manager. This implementation | ||
* assumes that no backing-store files are needed: all required space | ||
* can be obtained from malloc(). | ||
* This is very portable in the sense that it'll compile on almost anything, | ||
* but you'd better have lots of main memory (or virtual memory) if you want | ||
* to process big images. | ||
* Note that the max_memory_to_use option is ignored by this implementation. | ||
*/ | ||
|
||
#define JPEG_INTERNALS | ||
#include "jinclude.h" | ||
#include "jpeglib.h" | ||
#include "jmemsys.h" /* import the system-dependent declarations */ | ||
|
||
#include "cpl_port.h" | ||
|
||
#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */ | ||
extern void * malloc JPP((size_t size)); | ||
extern void free JPP((void *ptr)); | ||
#endif | ||
|
||
|
||
/* | ||
* Memory allocation and freeing are controlled by the regular library | ||
* routines malloc() and free(). | ||
*/ | ||
|
||
GLOBAL(void *) | ||
jpeg_get_small (CPL_UNUSED j_common_ptr cinfo, size_t sizeofobject) | ||
{ | ||
return (void *) malloc(sizeofobject); | ||
} | ||
|
||
GLOBAL(void) | ||
jpeg_free_small (CPL_UNUSED j_common_ptr cinfo, void * object, CPL_UNUSED size_t sizeofobject) | ||
{ | ||
free(object); | ||
} | ||
|
||
|
||
/* | ||
* "Large" objects are treated the same as "small" ones. | ||
* NB: although we include FAR keywords in the routine declarations, | ||
* this file won't actually work in 80x86 small/medium model; at least, | ||
* you probably won't be able to process useful-size images in only 64KB. | ||
*/ | ||
|
||
GLOBAL(void FAR *) | ||
jpeg_get_large (CPL_UNUSED j_common_ptr cinfo, size_t sizeofobject) | ||
{ | ||
return (void FAR *) malloc(sizeofobject); | ||
} | ||
|
||
GLOBAL(void) | ||
jpeg_free_large (CPL_UNUSED j_common_ptr cinfo, void FAR * object, CPL_UNUSED size_t sizeofobject) | ||
{ | ||
free(object); | ||
} | ||
|
||
|
||
/* | ||
* This routine computes the total memory space available for allocation. | ||
* Here we always say, "we got all you want bud!" | ||
*/ | ||
|
||
GLOBAL(long) | ||
jpeg_mem_available (CPL_UNUSED j_common_ptr cinfo, CPL_UNUSED long min_bytes_needed, | ||
long max_bytes_needed, CPL_UNUSED long already_allocated) | ||
{ | ||
return max_bytes_needed; | ||
} | ||
|
||
|
||
/* | ||
* Backing store (temporary file) management. | ||
* Since jpeg_mem_available always promised the moon, | ||
* this should never be called and we can just error out. | ||
*/ | ||
|
||
GLOBAL(void) | ||
jpeg_open_backing_store (j_common_ptr cinfo, CPL_UNUSED backing_store_ptr info, | ||
CPL_UNUSED long total_bytes_needed) | ||
{ | ||
ERREXIT(cinfo, JERR_NO_BACKING_STORE); | ||
} | ||
|
||
|
||
/* | ||
* These routines take care of any system-dependent initialization and | ||
* cleanup required. Here, there isn't any. | ||
*/ | ||
|
||
GLOBAL(long) | ||
jpeg_mem_init (CPL_UNUSED j_common_ptr cinfo) | ||
{ | ||
return 0; /* just set max_memory_to_use to 0 */ | ||
} | ||
|
||
GLOBAL(void) | ||
jpeg_mem_term (CPL_UNUSED j_common_ptr cinfo) | ||
{ | ||
/* no work */ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.