#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))
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;
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]);
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;