summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/demac.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/demac/demac.c')
-rw-r--r--apps/codecs/demac/demac.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/apps/codecs/demac/demac.c b/apps/codecs/demac/demac.c
index da132ff248..5e9893687d 100644
--- a/apps/codecs/demac/demac.c
+++ b/apps/codecs/demac/demac.c
@@ -2,7 +2,7 @@
2 2
3demac - A Monkey's Audio decoder 3demac - A Monkey's Audio decoder
4 4
5$Id:$ 5$Id$
6 6
7Copyright (C) Dave Chapman 2007 7Copyright (C) Dave Chapman 2007
8 8
@@ -180,17 +180,27 @@ int ape_decode(char* infile, char* outfile)
180 180
181 /* Convert the output samples to WAV format and write to output file */ 181 /* Convert the output samples to WAV format and write to output file */
182 p = wavbuffer; 182 p = wavbuffer;
183 if (ape_ctx.bps == 16) { 183 if (ape_ctx.bps == 8) {
184 for (i = 0 ; i < blockstodecode ; i++)
185 {
186 /* 8 bit WAV uses unsigned samples */
187 *(p++) = (decoded0[i] + 0x80) & 0xff;
188
189 if (ape_ctx.channels == 2) {
190 *(p++) = (decoded1[i] + 0x80) & 0xff;
191 }
192 }
193 } else if (ape_ctx.bps == 16) {
184 for (i = 0 ; i < blockstodecode ; i++) 194 for (i = 0 ; i < blockstodecode ; i++)
185 { 195 {
186 sample16 = decoded0[i]; 196 sample16 = decoded0[i];
187 *(p++) = sample16 & 0xff; 197 *(p++) = sample16 & 0xff;
188 *(p++) = (sample16&0xff00) >> 8; 198 *(p++) = (sample16 >> 8) & 0xff;
189 199
190 if (ape_ctx.channels == 2) { 200 if (ape_ctx.channels == 2) {
191 sample16 = decoded1[i]; 201 sample16 = decoded1[i];
192 *(p++) = sample16 & 0xff; 202 *(p++) = sample16 & 0xff;
193 *(p++) = (sample16&0xff00) >> 8; 203 *(p++) = (sample16 >> 8) & 0xff;
194 } 204 }
195 } 205 }
196 } else if (ape_ctx.bps == 24) { 206 } else if (ape_ctx.bps == 24) {
@@ -198,14 +208,14 @@ int ape_decode(char* infile, char* outfile)
198 { 208 {
199 sample32 = decoded0[i]; 209 sample32 = decoded0[i];
200 *(p++) = sample32 & 0xff; 210 *(p++) = sample32 & 0xff;
201 *(p++) = (sample32&0xff00) >> 8; 211 *(p++) = (sample32 >> 8) & 0xff;
202 *(p++) = (sample32&0xff0000) >> 16; 212 *(p++) = (sample32 >> 16) & 0xff;
203 213
204 if (ape_ctx.channels == 2) { 214 if (ape_ctx.channels == 2) {
205 sample32 = decoded1[i]; 215 sample32 = decoded1[i];
206 *(p++) = sample32 & 0xff; 216 *(p++) = sample32 & 0xff;
207 *(p++) = (sample32&0xff00) >> 8; 217 *(p++) = (sample32 >> 8) & 0xff;
208 *(p++) = (sample32&0xff0000) >> 16; 218 *(p++) = (sample32 >> 16) & 0xff;
209 } 219 }
210 } 220 }
211 } 221 }