summaryrefslogtreecommitdiff
path: root/trunk/turbojpegl.c
diff options
context:
space:
mode:
authordcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519>2011-01-05 23:35:53 +0000
committerdcommander <dcommander@3789f03b-4d11-0410-bbf8-ca57d06f2519>2011-01-05 23:35:53 +0000
commit312755c35e3f78a6680f417c2fabecb1bef86d4f (patch)
tree7547f4ba47ca939a368d5158dcdc5eff9d0d31e8 /trunk/turbojpegl.c
parent224af798a2c5ddcc7684a8b3173ad7f9612f43b4 (diff)
Eliminate all of the __memalign() mess and just handle the alignment ourselves
git-svn-id: https://libjpeg-turbo.svn.sourceforge.net/svnroot/libjpeg-turbo@317 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'trunk/turbojpegl.c')
-rw-r--r--trunk/turbojpegl.c54
1 files changed, 18 insertions, 36 deletions
diff --git a/trunk/turbojpegl.c b/trunk/turbojpegl.c
index 7e812fc..9dd6eb6 100644
--- a/trunk/turbojpegl.c
+++ b/trunk/turbojpegl.c
@@ -23,32 +23,6 @@
#include <jerror.h>
#include <setjmp.h>
#include "./turbojpeg.h"
-#ifdef sun
-#include <malloc.h>
-#endif
-
-void *__memalign(size_t boundary, size_t size)
-{
- #ifdef _WIN32
- return _aligned_malloc(size, boundary);
- #else
- #ifdef __APPLE__
- return malloc(size);
- #else
- #ifdef sun
- return memalign(boundary, size);
- #else
- void *ptr=NULL;
- posix_memalign(&ptr, boundary, size);
- return ptr;
- #endif
- #endif
- #endif
-}
-
-#ifndef _WIN32
-#define _aligned_free(addr) free(addr)
-#endif
#ifndef min
#define min(a,b) ((a)<(b)?(a):(b))
@@ -204,9 +178,9 @@ DLLEXPORT int DLLCALL tjCompress(tjhandle h,
for(i=0; i<MAX_COMPONENTS; i++)
{
if(tmpbuf[i]!=NULL) free(tmpbuf[i]);
- if(_tmpbuf[i]!=NULL) _aligned_free(_tmpbuf[i]);
+ if(_tmpbuf[i]!=NULL) free(_tmpbuf[i]);
if(tmpbuf2[i]!=NULL) free(tmpbuf2[i]);
- if(_tmpbuf2[i]!=NULL) _aligned_free(_tmpbuf2[i]);
+ if(_tmpbuf2[i]!=NULL) free(_tmpbuf2[i]);
if(outbuf[i]!=NULL) free(outbuf[i]);
}
return -1;
@@ -255,24 +229,32 @@ DLLEXPORT int DLLCALL tjCompress(tjhandle h,
for(i=0; i<cinfo->num_components; i++)
{
compptr=&cinfo->comp_info[i];
- _tmpbuf[i]=(JSAMPLE *)__memalign(16,
+ _tmpbuf[i]=(JSAMPLE *)malloc(
PAD((compptr->width_in_blocks*cinfo->max_h_samp_factor*DCTSIZE)
- /compptr->h_samp_factor, 16) * cinfo->max_v_samp_factor);
+ /compptr->h_samp_factor, 16) * cinfo->max_v_samp_factor + 16);
if(!_tmpbuf[i]) _throw("Memory allocation failure");
tmpbuf[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*cinfo->max_v_samp_factor);
if(!tmpbuf[i]) _throw("Memory allocation failure");
for(row=0; row<cinfo->max_v_samp_factor; row++)
- tmpbuf[i][row]=&_tmpbuf[i][
+ {
+ unsigned char *_tmpbuf_aligned=
+ (unsigned char *)PAD((size_t)_tmpbuf[i], 16);
+ tmpbuf[i][row]=&_tmpbuf_aligned[
PAD((compptr->width_in_blocks*cinfo->max_h_samp_factor*DCTSIZE)
/compptr->h_samp_factor, 16) * row];
- _tmpbuf2[i]=(JSAMPLE *)__memalign(16,
- PAD(compptr->width_in_blocks*DCTSIZE, 16) * compptr->v_samp_factor);
+ }
+ _tmpbuf2[i]=(JSAMPLE *)malloc(PAD(compptr->width_in_blocks*DCTSIZE, 16)
+ * compptr->v_samp_factor + 16);
if(!_tmpbuf2[i]) _throw("Memory allocation failure");
tmpbuf2[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*compptr->v_samp_factor);
if(!tmpbuf2[i]) _throw("Memory allocation failure");
for(row=0; row<compptr->v_samp_factor; row++)
- tmpbuf2[i][row]=&_tmpbuf2[i][
+ {
+ unsigned char *_tmpbuf2_aligned=
+ (unsigned char *)PAD((size_t)_tmpbuf2[i], 16);
+ tmpbuf2[i][row]=&_tmpbuf2_aligned[
PAD(compptr->width_in_blocks*DCTSIZE, 16) * row];
+ }
cw[i]=pw*compptr->h_samp_factor/cinfo->max_h_samp_factor;
ch[i]=ph*compptr->v_samp_factor/cinfo->max_v_samp_factor;
outbuf[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*ch[i]);
@@ -323,9 +305,9 @@ DLLEXPORT int DLLCALL tjCompress(tjhandle h,
for(i=0; i<MAX_COMPONENTS; i++)
{
if(tmpbuf[i]!=NULL) free(tmpbuf[i]);
- if(_tmpbuf[i]!=NULL) _aligned_free(_tmpbuf[i]);
+ if(_tmpbuf[i]!=NULL) free(_tmpbuf[i]);
if(tmpbuf2[i]!=NULL) free(tmpbuf2[i]);
- if(_tmpbuf2[i]!=NULL) _aligned_free(_tmpbuf2[i]);
+ if(_tmpbuf2[i]!=NULL) free(_tmpbuf2[i]);
if(outbuf[i]!=NULL) free(outbuf[i]);
}
return 0;