diff options
Diffstat (limited to 'apps/codecs/libwavpack/bits.c')
-rw-r--r-- | apps/codecs/libwavpack/bits.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/apps/codecs/libwavpack/bits.c b/apps/codecs/libwavpack/bits.c index 0a148e123f..0f0e79c292 100644 --- a/apps/codecs/libwavpack/bits.c +++ b/apps/codecs/libwavpack/bits.c | |||
@@ -15,6 +15,7 @@ | |||
15 | // the malloc() system is provided. | 15 | // the malloc() system is provided. |
16 | 16 | ||
17 | #include "wavpack.h" | 17 | #include "wavpack.h" |
18 | #include "system.h" | ||
18 | 19 | ||
19 | #include <string.h> | 20 | #include <string.h> |
20 | 21 | ||
@@ -118,19 +119,16 @@ uint32_t bs_close_write (Bitstream *bs) | |||
118 | void little_endian_to_native (void *data, char *format) | 119 | void little_endian_to_native (void *data, char *format) |
119 | { | 120 | { |
120 | uchar *cp = (uchar *) data; | 121 | uchar *cp = (uchar *) data; |
121 | int32_t temp; | ||
122 | 122 | ||
123 | while (*format) { | 123 | while (*format) { |
124 | switch (*format) { | 124 | switch (*format) { |
125 | case 'L': | 125 | case 'L': |
126 | temp = cp [0] + ((int32_t) cp [1] << 8) + ((int32_t) cp [2] << 16) + ((int32_t) cp [3] << 24); | 126 | *(long *)cp = letoh32(*(long *)cp); |
127 | * (int32_t *) cp = temp; | ||
128 | cp += 4; | 127 | cp += 4; |
129 | break; | 128 | break; |
130 | 129 | ||
131 | case 'S': | 130 | case 'S': |
132 | temp = cp [0] + (cp [1] << 8); | 131 | *(short *)cp = letoh16(*(short *)cp); |
133 | * (short *) cp = (short) temp; | ||
134 | cp += 2; | 132 | cp += 2; |
135 | break; | 133 | break; |
136 | 134 | ||
@@ -148,28 +146,22 @@ void little_endian_to_native (void *data, char *format) | |||
148 | void native_to_little_endian (void *data, char *format) | 146 | void native_to_little_endian (void *data, char *format) |
149 | { | 147 | { |
150 | uchar *cp = (uchar *) data; | 148 | uchar *cp = (uchar *) data; |
151 | int32_t temp; | ||
152 | 149 | ||
153 | while (*format) { | 150 | while (*format) { |
154 | switch (*format) { | 151 | switch (*format) { |
155 | case 'L': | 152 | case 'L': |
156 | temp = * (int32_t *) cp; | 153 | *(long *)cp = htole32(*(long *)cp); |
157 | *cp++ = (uchar) temp; | 154 | cp += 4; |
158 | *cp++ = (uchar) (temp >> 8); | ||
159 | *cp++ = (uchar) (temp >> 16); | ||
160 | *cp++ = (uchar) (temp >> 24); | ||
161 | break; | 155 | break; |
162 | 156 | ||
163 | case 'S': | 157 | case 'S': |
164 | temp = * (short *) cp; | 158 | *(short *)cp = htole16(*(short *)cp); |
165 | *cp++ = (uchar) temp; | 159 | cp += 2; |
166 | *cp++ = (uchar) (temp >> 8); | ||
167 | break; | 160 | break; |
168 | 161 | ||
169 | default: | 162 | default: |
170 | if (*format >= '0' && *format <= '9') | 163 | if (*format >= '0' && *format <= '9') |
171 | cp += *format - '0'; | 164 | cp += *format - '0'; |
172 | |||
173 | break; | 165 | break; |
174 | } | 166 | } |
175 | 167 | ||