From 2d66475bbe8360dcf7bc2a351bdc833c388c9169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Thu, 6 Mar 2014 12:52:23 +0000 Subject: [PATCH] restored some libflac code omitted in initial commit allowing big-endian compilation without hacks (nw) --- src/lib/libflac/libFLAC/bitreader.c | 23 +++++++++++++++-------- src/lib/libflac/libFLAC/bitwriter.c | 17 ++++++++++++----- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/lib/libflac/libFLAC/bitreader.c b/src/lib/libflac/libFLAC/bitreader.c index 10fbbade729..ca9ab161a98 100644 --- a/src/lib/libflac/libFLAC/bitreader.c +++ b/src/lib/libflac/libFLAC/bitreader.c @@ -35,7 +35,15 @@ #include /* for malloc() */ #include /* for memcpy(), memset() */ - +#ifdef _MSC_VER +#include /* for ntohl() */ +#elif defined FLAC__SYS_DARWIN +#include /* for ntohl() */ +#elif defined __MINGW32__ +#include /* for ntohl() */ +#else +#include /* for ntohl() */ +#endif #include "private/bitmath.h" #include "private/bitreader.h" #include "private/crc.h" @@ -56,7 +64,7 @@ typedef FLAC__uint32 brword; #ifdef _MSC_VER #define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) #else -#define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) +#define SWAP_BE_WORD_TO_HOST(x) ntohl(x) #endif #endif /* counts the # of zero MSBs in a word */ @@ -141,17 +149,15 @@ struct FLAC__BitReader { FLAC__CPUInfo cpu_info; }; - -#if !WORDS_BIGENDIAN -static FLAC__uint32 local_swap32_(FLAC__uint32 x) +#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 -#if defined(_MSC_VER) && defined(_M_IX86) -/* OPT: an MSVC built-in would be better */ +#if defined(_M_IX86) static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len) { __asm { @@ -170,6 +176,7 @@ done1: } } #endif +#endif static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word) { diff --git a/src/lib/libflac/libFLAC/bitwriter.c b/src/lib/libflac/libFLAC/bitwriter.c index 25d314049cf..e3e7ad164ef 100644 --- a/src/lib/libflac/libFLAC/bitwriter.c +++ b/src/lib/libflac/libFLAC/bitwriter.c @@ -35,7 +35,15 @@ #include /* for malloc() */ #include /* for memcpy(), memset() */ - +#ifdef _MSC_VER +#include /* for ntohl() */ +#elif defined FLAC__SYS_DARWIN +#include /* for ntohl() */ +#elif defined __MINGW32__ +#include /* for ntohl() */ +#else +#include /* for ntohl() */ +#endif #if 0 /* UNUSED */ #include "private/bitmath.h" #endif @@ -58,7 +66,7 @@ typedef FLAC__uint32 bwword; #ifdef _MSC_VER #define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) #else -#define SWAP_BE_WORD_TO_HOST(x) local_swap32_(x) +#define SWAP_BE_WORD_TO_HOST(x) ntohl(x) #endif #endif @@ -99,10 +107,9 @@ struct FLAC__BitWriter { unsigned bits; /* # of used bits in accum */ }; - +#ifdef _MSC_VER /* OPT: an MSVC built-in would be better */ -#if !WORDS_BIGENDIAN -static FLAC__uint32 local_swap32_(FLAC__uint32 x) +static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x) { x = ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF); return (x>>16) | (x<<16);