Skip to content

Commit

Permalink
Eliminate all of the __memalign() mess and just handle the alignment …
Browse files Browse the repository at this point in the history
…ourselves

git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@317 632fc199-4ca6-4c93-a231-07263d6284db
  • Loading branch information
dcommander committed Jan 5, 2011
1 parent 2a2e451 commit 5742307
Showing 1 changed file with 18 additions and 36 deletions.
54 changes: 18 additions & 36 deletions turbojpegl.c
Expand Up @@ -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))
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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]);
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 5742307

Please sign in to comment.