ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

jcomapi.c
Go to the documentation of this file.
00001 /*
00002  * jcomapi.c
00003  *
00004  * Copyright (C) 1994-1997, Thomas G. Lane.
00005  * This file is part of the Independent JPEG Group's software.
00006  * For conditions of distribution and use, see the accompanying README file.
00007  *
00008  * This file contains application interface routines that are used for both
00009  * compression and decompression.
00010  */
00011 
00012 #define JPEG_INTERNALS
00013 #include "jinclude.h"
00014 #include "jpeglib.h"
00015 
00016 
00017 /*
00018  * Abort processing of a JPEG compression or decompression operation,
00019  * but don't destroy the object itself.
00020  *
00021  * For this, we merely clean up all the nonpermanent memory pools.
00022  * Note that temp files (virtual arrays) are not allowed to belong to
00023  * the permanent pool, so we will be able to close all temp files here.
00024  * Closing a data source or destination, if necessary, is the application's
00025  * responsibility.
00026  */
00027 
00028 GLOBAL(void)
00029 jpeg_abort (j_common_ptr cinfo)
00030 {
00031   int pool;
00032 
00033   /* Do nothing if called on a not-initialized or destroyed JPEG object. */
00034   if (cinfo->mem == NULL)
00035     return;
00036 
00037   /* Releasing pools in reverse order might help avoid fragmentation
00038    * with some (brain-damaged) malloc libraries.
00039    */
00040   for (pool = JPOOL_NUMPOOLS-1; pool > JPOOL_PERMANENT; pool--) {
00041     (*cinfo->mem->free_pool) (cinfo, pool);
00042   }
00043 
00044   /* Reset overall state for possible reuse of object */
00045   if (cinfo->is_decompressor) {
00046     cinfo->global_state = DSTATE_START;
00047     /* Try to keep application from accessing now-deleted marker list.
00048      * A bit kludgy to do it here, but this is the most central place.
00049      */
00050     ((j_decompress_ptr) cinfo)->marker_list = NULL;
00051   } else {
00052     cinfo->global_state = CSTATE_START;
00053   }
00054 }
00055 
00056 
00057 /*
00058  * Destruction of a JPEG object.
00059  *
00060  * Everything gets deallocated except the master jpeg_compress_struct itself
00061  * and the error manager struct.  Both of these are supplied by the application
00062  * and must be freed, if necessary, by the application.  (Often they are on
00063  * the stack and so don't need to be freed anyway.)
00064  * Closing a data source or destination, if necessary, is the application's
00065  * responsibility.
00066  */
00067 
00068 GLOBAL(void)
00069 jpeg_destroy (j_common_ptr cinfo)
00070 {
00071   /* We need only tell the memory manager to release everything. */
00072   /* NB: mem pointer is NULL if memory mgr failed to initialize. */
00073   if (cinfo->mem != NULL)
00074     (*cinfo->mem->self_destruct) (cinfo);
00075   cinfo->mem = NULL;        /* be safe if jpeg_destroy is called twice */
00076   cinfo->global_state = 0;  /* mark it destroyed */
00077 }
00078 
00079 
00080 /*
00081  * Convenience routines for allocating quantization and Huffman tables.
00082  * (Would jutils.c be a more reasonable place to put these?)
00083  */
00084 
00085 GLOBAL(JQUANT_TBL *)
00086 jpeg_alloc_quant_table (j_common_ptr cinfo)
00087 {
00088   JQUANT_TBL *tbl;
00089 
00090   tbl = (JQUANT_TBL *)
00091     (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JQUANT_TBL));
00092   tbl->sent_table = FALSE;  /* make sure this is false in any new table */
00093   return tbl;
00094 }
00095 
00096 
00097 GLOBAL(JHUFF_TBL *)
00098 jpeg_alloc_huff_table (j_common_ptr cinfo)
00099 {
00100   JHUFF_TBL *tbl;
00101 
00102   tbl = (JHUFF_TBL *)
00103     (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JHUFF_TBL));
00104   tbl->sent_table = FALSE;  /* make sure this is false in any new table */
00105   return tbl;
00106 }

Generated on Sun May 27 2012 04:19:23 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.