 frontend/mp4read.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/frontend/mp4read.c b/frontend/mp4read.c
index 9d92bf5..c8ca530 100644
--- a/frontend/mp4read.c
+++ b/frontend/mp4read.c
@@ -45,17 +45,29 @@ mp4config_t mp4config = { 0 };
 
 static FILE *g_fin = NULL;
 
-static inline uint32_t bswap32(uint32_t u32)
+static inline uint32_t bswap32(const uint32_t u32)
 {
 #ifndef WORDS_BIGENDIAN
+#ifdef _MSC_VER
+	return _byteswap_ulong(u32);
+#else
     return __builtin_bswap32(u32);
 #endif
+#else
+	return u32;
+#endif
 }
 
-static inline uint16_t bswap16(uint16_t u16)
+static inline uint16_t bswap16(const uint16_t u16)
 {
 #ifndef WORDS_BIGENDIAN
-    return __builtin_bswap16(u16);
+#ifdef _MSC_VER
+	return _byteswap_ushort(u16);
+#else
+	return __builtin_bswap16(u16);
+#endif
+#else
+	return u16;
 #endif
 }
 
