From c85056b3d5bcde151fbb92f22dcfb8d0638389aa Mon Sep 17 00:00:00 2001 From: Josh Coalson Date: Sun, 4 Feb 2007 02:57:48 +0000 Subject: [PATCH] use inline byte-swapping function for MSVC --- src/libFLAC/bitreader.c | 13 +++++++++++++ src/libFLAC/bitwriter.c | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/libFLAC/bitreader.c b/src/libFLAC/bitreader.c index f3a65d94..1c6cd829 100644 --- a/src/libFLAC/bitreader.c +++ b/src/libFLAC/bitreader.c @@ -66,8 +66,12 @@ typedef FLAC__uint32 brword; #if WORDS_BIGENDIAN #define SWAP_BE_WORD_TO_HOST(x) (x) #else +#ifdef _MSC_VER +#define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) +#else #define SWAP_BE_WORD_TO_HOST(x) ntohl(x) #endif +#endif /* counts the # of zero MSBs in a word */ #define ALIGNED_UNARY_BITS(word) ( \ (word) <= 0xffff ? \ @@ -147,6 +151,15 @@ struct FLAC__BitReader { void *client_data; }; +#ifdef _MSC_VER +/* OPT: an MSVC built-in would be better */ +static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x) +{ + x = ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF); + return (x>>16) | (x<<16); +} +#endif + static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word) { register unsigned crc = br->read_crc16; diff --git a/src/libFLAC/bitwriter.c b/src/libFLAC/bitwriter.c index e9962e97..ba2a9d79 100644 --- a/src/libFLAC/bitwriter.c +++ b/src/libFLAC/bitwriter.c @@ -58,8 +58,12 @@ typedef FLAC__uint32 bwword; #if WORDS_BIGENDIAN #define SWAP_BE_WORD_TO_HOST(x) (x) #else +#ifdef _MSC_VER +#define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) +#else #define SWAP_BE_WORD_TO_HOST(x) ntohl(x) #endif +#endif /* * The default capacity here doesn't matter too much. The buffer always grows @@ -98,6 +102,15 @@ struct FLAC__BitWriter { unsigned bits; /* # of used bits in accum */ }; +#ifdef _MSC_VER +/* OPT: an MSVC built-in would be better */ +static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x) +{ + x = ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF); + return (x>>16) | (x<<16); +} +#endif + /* * WATCHOUT: The current implementation only grows the buffer. */ static FLAC__bool bitwriter_grow_(FLAC__BitWriter *bw, unsigned bits_to_add) {