#define PRIo64 "llo"
#undef PRIx64
#define PRIx64 "llx"
- #define snprintf __mingw_snprintf
- #define vsnprintf __mingw_vsnprintf
+ #define snprintf __mingw_snprintf
+ #define vsnprintf __mingw_vsnprintf
#endif
/* Function attributes for compiler warnings */
# include <windows.h>
#endif
+#ifdef __OS2__
+# define OS2EMX_PLAIN_CHAR
+# define INCL_BASE
+# define INCL_PM
+# include <os2.h>
+#endif
+
#include "vlc_mtime.h"
#include "vlc_threads.h"
#endif
}
+#ifdef __OS2__
+# undef bswap16
+# undef bswap32
+# undef bswap64
+#endif
+
/** Byte swap (16 bits) */
VLC_USED
static inline uint16_t bswap16 (uint16_t x)
VLC_API bool vlc_ureduce( unsigned *, unsigned *, uint64_t, uint64_t, uint64_t );
/* Aligned memory allocator */
-VLC_API void *vlc_memalign(size_t align, size_t size);
+#ifdef __APPLE__
+#include <AvailabilityMacros.h>
+#endif
+
#ifdef WIN32
-# define vlc_aligned_free(base) (__mingw_aligned_free(base))
+# include <malloc.h>
+# define vlc_memalign(align, size) (__mingw_aligned_malloc(size, align))
+# define vlc_free(base) (__mingw_aligned_free(base))
+#elif defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6)
+static inline void *vlc_memalign(size_t align, size_t size)
+{
+ long diff;
+ void *ptr;
+
+ ptr = malloc(size+align);
+ if(!ptr)
+ return ptr;
+ diff = ((-(long)ptr - 1)&(align-1)) + 1;
+ ptr = (char*)ptr + diff;
+ ((char*)ptr)[-1]= diff;
+ return ptr;
+}
+
+static void vlc_free(void *ptr)
+{
+ if (ptr)
+ free((char*)ptr - ((char*)ptr)[-1]);
+}
+#elif defined(__ANDROID__)
+# define vlc_memalign(align, size) memalign(align, size)
+# define vlc_free(base) free(base)
#else
-# define vlc_aligned_free(base) free(base)
+static inline void *vlc_memalign(size_t align, size_t size)
+{
+ void *base;
+ if (unlikely(posix_memalign(&base, align, size)))
+ base = NULL;
+ return base;
+}
+# define vlc_free(base) free(base)
#endif
VLC_API void vlc_tdestroy( void *, void (*)(void *) );