diff options
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/x86/bswap.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/libavutil/x86/bswap.h b/libavutil/x86/bswap.h index 3efd578b29..11d143b9c9 100644 --- a/libavutil/x86/bswap.h +++ b/libavutil/x86/bswap.h @@ -28,7 +28,30 @@ #include "config.h" #include "libavutil/attributes.h" -#if HAVE_INLINE_ASM +#if defined(_MSC_VER) + +#define av_bswap16 av_bswap16 +static av_always_inline av_const uint16_t av_bswap16(uint16_t x) +{ + return _rotr16(x, 8); +} + +#define av_bswap32 av_bswap32 +static av_always_inline av_const uint32_t av_bswap32(uint32_t x) +{ + return _byteswap_ulong(x); +} + +#if ARCH_X86_64 +#define av_bswap64 av_bswap64 +static inline uint64_t av_const av_bswap64(uint64_t x) +{ + return _byteswap_uint64(x); +} +#endif + + +#elif HAVE_INLINE_ASM #if AV_GCC_VERSION_AT_MOST(4,0) #define av_bswap16 av_bswap16 |