aboutsummaryrefslogtreecommitdiff
path: root/libplatform/platform_win32.h
diff options
context:
space:
mode:
Diffstat (limited to 'libplatform/platform_win32.h')
-rw-r--r--libplatform/platform_win32.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/libplatform/platform_win32.h b/libplatform/platform_win32.h
new file mode 100644
index 0000000..7cbd507
--- /dev/null
+++ b/libplatform/platform_win32.h
@@ -0,0 +1,101 @@
+#ifndef MP4V2_PLATFORM_WIN32_H
+#define MP4V2_PLATFORM_WIN32_H
+
+///////////////////////////////////////////////////////////////////////////////
+
+// mingw needs this to enable some newer 64-bit functions
+#ifdef __MINGW32__
+# undef __MSVCRT_VERSION__
+# define __MSVCRT_VERSION__ 0x800
+#endif
+
+// set minimum win32 API requirement to Windows 2000 or higher
+#ifndef _WIN32_WINNT
+# define _WIN32_WINNT 0x0500
+#endif
+#ifndef WINVER
+# define WINVER 0x0500
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+
+#include "libplatform/platform_base.h"
+#include <windows.h>
+
+#include <mp4v2/mp4v2.h>
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace mp4v2 { namespace platform {
+ using namespace std;
+
+ using ::int8_t;
+ using ::int16_t;
+ using ::int32_t;
+ using ::int64_t;
+
+ using ::uint8_t;
+ using ::uint16_t;
+ using ::uint32_t;
+ using ::uint64_t;
+}} // namespace mp4v2::platform
+
+///////////////////////////////////////////////////////////////////////////////
+
+#define MP4V2_PATH_MAX (_MAX_PATH + 1)
+
+///////////////////////////////////////////////////////////////////////////////
+
+// fprintf macros for unsigned types - mingw32 is a good source if more needed
+#define PRId8 "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 "I64d"
+
+#define PRIu8 "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 "I64u"
+
+#define PRIx8 "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 "I64x"
+
+///////////////////////////////////////////////////////////////////////////////
+
+// some macros for constant expressions
+#define INT8_C(x) x
+#define INT16_C(x) x
+#define INT32_C(x) x ## L
+#define INT64_C(x) x ## LL
+
+#define UINT8_C(x) x
+#define UINT16_C(x) x
+#define UINT32_C(x) x ## UL
+#define UINT64_C(x) x ## ULL
+
+///////////////////////////////////////////////////////////////////////////////
+
+#ifdef min
+# undef min
+#endif
+
+#ifdef max
+# undef max
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+
+#define snprintf(s,n,...) _snprintf(s,n,__VA_ARGS__)
+#define strcasecmp(s1,s2) _stricmp(s1,s2)
+#define strdup(s) _strdup(s)
+
+///////////////////////////////////////////////////////////////////////////////
+
+// macro clashes with symbol
+#undef LC_NONE
+
+///////////////////////////////////////////////////////////////////////////////
+
+#endif // MP4V2_PLATFORM_WIN32_H