diff options
Diffstat (limited to 'apps/codecs/libfaad/bits.h')
-rw-r--r-- | apps/codecs/libfaad/bits.h | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/apps/codecs/libfaad/bits.h b/apps/codecs/libfaad/bits.h index 0ebe04b03f..815db59c68 100644 --- a/apps/codecs/libfaad/bits.h +++ b/apps/codecs/libfaad/bits.h | |||
@@ -55,15 +55,11 @@ typedef struct _bitfile | |||
55 | void *buffer; | 55 | void *buffer; |
56 | } bitfile; | 56 | } bitfile; |
57 | 57 | ||
58 | 58 | /* rockbox: use asm optimized swap32() | |
59 | #if defined (_WIN32) && !defined(_WIN32_WCE) && !defined(__MINGW32__) | ||
60 | #define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax | ||
61 | #elif defined(LINUX) || defined(DJGPP) || defined(__MINGW32__) | ||
62 | #define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) ) | ||
63 | #else | ||
64 | #define BSWAP(a) \ | 59 | #define BSWAP(a) \ |
65 | ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff)) | 60 | ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff)) |
66 | #endif | 61 | */ |
62 | #define BSWAP(a) swap32(a) | ||
67 | 63 | ||
68 | static uint32_t bitmask[] = { | 64 | static uint32_t bitmask[] = { |
69 | 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, | 65 | 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, |
@@ -81,7 +77,7 @@ void faad_initbits_rev(bitfile *ld, void *buffer, | |||
81 | uint32_t bits_in_buffer); | 77 | uint32_t bits_in_buffer); |
82 | uint8_t faad_byte_align(bitfile *ld); | 78 | uint8_t faad_byte_align(bitfile *ld); |
83 | uint32_t faad_get_processed_bits(bitfile *ld); | 79 | uint32_t faad_get_processed_bits(bitfile *ld); |
84 | void faad_flushbits_ex(bitfile *ld, uint32_t bits); | 80 | INLINE void faad_flushbits_ex(bitfile *ld, uint32_t bits); |
85 | void faad_rewindbits(bitfile *ld); | 81 | void faad_rewindbits(bitfile *ld); |
86 | uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits | 82 | uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits |
87 | DEBUGDEC); | 83 | DEBUGDEC); |
@@ -93,28 +89,10 @@ uint32_t faad_origbitbuffer_size(bitfile *ld); | |||
93 | /* circumvent memory alignment errors on ARM */ | 89 | /* circumvent memory alignment errors on ARM */ |
94 | static INLINE uint32_t getdword(void *mem) | 90 | static INLINE uint32_t getdword(void *mem) |
95 | { | 91 | { |
96 | #ifdef ARM | ||
97 | uint32_t tmp; | ||
98 | #ifndef ARCH_IS_BIG_ENDIAN | 92 | #ifndef ARCH_IS_BIG_ENDIAN |
99 | ((uint8_t*)&tmp)[0] = ((uint8_t*)mem)[3]; | 93 | return BSWAP(*(uint32_t*)mem); |
100 | ((uint8_t*)&tmp)[1] = ((uint8_t*)mem)[2]; | ||
101 | ((uint8_t*)&tmp)[2] = ((uint8_t*)mem)[1]; | ||
102 | ((uint8_t*)&tmp)[3] = ((uint8_t*)mem)[0]; | ||
103 | #else | ||
104 | ((uint8_t*)&tmp)[0] = ((uint8_t*)mem)[0]; | ||
105 | ((uint8_t*)&tmp)[1] = ((uint8_t*)mem)[1]; | ||
106 | ((uint8_t*)&tmp)[2] = ((uint8_t*)mem)[2]; | ||
107 | ((uint8_t*)&tmp)[3] = ((uint8_t*)mem)[3]; | ||
108 | #endif | ||
109 | |||
110 | return tmp; | ||
111 | #else | 94 | #else |
112 | uint32_t tmp; | 95 | return *(uint32_t*)mem; |
113 | tmp = *(uint32_t*)mem; | ||
114 | #ifndef ARCH_IS_BIG_ENDIAN | ||
115 | BSWAP(tmp); | ||
116 | #endif | ||
117 | return tmp; | ||
118 | #endif | 96 | #endif |
119 | } | 97 | } |
120 | 98 | ||