break;
}
}else{
- fprintf(stderr,"Bits=%d, Only 8,12,16 bits implemented\n",image->comps[0].prec);
+ fprintf(stderr,"TIFF file creation. Bits=%d, Only 8,12,16 bits implemented\n",image->comps[0].prec);
fprintf(stderr,"Aborting\n");
return 1;
}
_TIFFfree(buf);
TIFFClose(tif);
}else{
- fprintf(stderr,"False color format. Only RGB & Grayscale has been implemented\n");
+ fprintf(stderr,"TIFF file creation. Bad color format. Only RGB & Grayscale has been implemented\n");
fprintf(stderr,"Aborting\n");
return 1;
}
}
}
else{
- fprintf(stderr,"Bits=%d, Only 8,12,16 bits implemented\n",Info.tiBps);
+ fprintf(stderr,"TIFF file creation. Bits=%d, Only 8,12,16 bits implemented\n",Info.tiBps);
fprintf(stderr,"Aborting\n");
return NULL;
}
}
}
else{
- fprintf(stderr,"Bits=%d, Only 8,12,16 bits implemented\n",Info.tiBps);
+ fprintf(stderr,"TIFF file creation. Bits=%d, Only 8,12,16 bits implemented\n",Info.tiBps);
fprintf(stderr,"Aborting\n");
return NULL;
}
_TIFFfree(buf);
TIFFClose(tif);
}else{
- fprintf(stderr,"False color format. Only RGB & Grayscale has been implemented\n");
+ fprintf(stderr,"TIFF file creation. Bad color format. Only RGB & Grayscale has been implemented\n");
fprintf(stderr,"Aborting\n");
return NULL;
}
@param size Bytes to allocate
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
*/
+/* FIXME: These should be set with cmake tests, but we're currently not requiring use of cmake */
#ifdef WIN32
-
-#ifdef __GNUC__
-#include <mm_malloc.h>
-#else /* MSVC, Intel C++ */
-#include <malloc.h>
-#endif
-
-#ifdef _mm_malloc
- #define opj_aligned_malloc(size) _mm_malloc(size, 16)
- #else
- #define opj_aligned_malloc(size) malloc(size)
- #endif
-
- #ifdef _mm_free
- #define opj_aligned_free(m) _mm_free(m)
- #else
- #define opj_aligned_free(m) free(m)
- #endif
-
+ /* Someone should tell the mingw people that their malloc.h ought to provide _mm_malloc() */
+ #ifdef __GNUC__
+ #include <mm_malloc.h>
+ #define HAVE_MM_MALLOC
+ #else /* MSVC, Intel C++ */
+ #include <malloc.h>
+ #ifdef _mm_malloc
+ #define HAVE_MM_MALLOC
+ #endif
+ #endif
#else /* Not WIN32 */
+ #if defined(__sun)
+ #define HAVE_MEMALIGN
+ /* Linux x86_64 and OSX always align allocations to 16 bytes */
+ #elif !defined(__amd64__) && !defined(__APPLE__)
+ /* FIXME: Yes, this is a big assumption */
+ #define HAVE_POSIX_MEMALIGN
+ #endif
+#endif
-/* Linux x86_64 and OSX always align allocations to 16 bytes */
-#if defined(__amd64__) || defined(__APPLE__)
#define opj_aligned_malloc(size) malloc(size)
-#else
-extern int posix_memalign (void **, size_t, size_t);
-
-static INLINE void* __attribute__ ((malloc)) opj_aligned_malloc(size_t size){
- void* mem = NULL;
- posix_memalign(&mem, 16, size);
- return mem;
-}
+#define opj_aligned_free(m) free(m)
+
+#ifdef HAVE_MM_MALLOC
+ #undef opj_aligned_malloc
+ #define opj_aligned_malloc(size) _mm_malloc(size, 16)
+ #undef opj_aligned_free
+ #define opj_aligned_free(m) _mm_free(m)
#endif
-#define opj_aligned_free(m) free(m)
+#ifdef HAVE_MEMALIGN
+ extern void* memalign(size_t, size_t);
+ #undef opj_aligned_malloc
+ #define opj_aligned_malloc(size) memalign(16, (size))
+ #undef opj_aligned_free
+ #define opj_aligned_free(m) free(m)
+#endif
+#ifdef HAVE_POSIX_MEMALIGN
+ #undef opj_aligned_malloc
+ extern int posix_memalign(void**, size_t, size_t);
+
+ static INLINE void* __attribute__ ((malloc)) opj_aligned_malloc(size_t size){
+ void* mem = NULL;
+ posix_memalign(&mem, 16, size);
+ return mem;
+ }
+ #undef opj_aligned_free
+ #define opj_aligned_free(m) free(m)
#endif
/**