Author: titmuss
Date: Wed May 7 05:36:58 2008
New Revision: 2429
URL: http://svn.slimdevices.com?rev=2429&root=Jive&view=rev
Log:
Bug: N/A
Description:
Fix WMA/AIFF playback (not all tested).
Modified:
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_pcm.c
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_pcm.c
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_pcm.c?rev=2429&root=Jive&r1=2428&r2=2429&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_pcm.c
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_pcm.c Wed May
7 05:36:58 2008
@@ -40,100 +40,106 @@
static sample_t pcm_read8bitBE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
+ sample_t sample;
struct { s32_t sign_extend:8; } s;
- s32_t sample = s.sign_extend = mem_read_u8(MEM_DATA, pos+offset);
- sample <<= 16;
+
+ /* XXXX: REVIEW */
+
+ sample = *pos;
+
+ sample = s.sign_extend = sample;
+ return sample << 16;
+}
+
+
+static sample_t pcm_read8bitLE(u8_t *pos) {
+ sample_t sample;
+ struct { s32_t sign_extend:8; } s;
+
+ /* XXXX: REVIEW */
+
+ sample = *pos;
+
+ sample = s.sign_extend = sample;
+ return sample << 16;
+}
+
+
+static sample_t pcm_read16bitBE(u8_t *pos) {
+ sample_t sample;
+ struct { s32_t sign_extend:16; } s;
+
+ /* XXXX: REVIEW */
+
+ sample = *pos++ << 8;
+ sample = *pos;
+
+ sample = s.sign_extend = sample;
+ return sample << 8;
+}
+
+
+static sample_t pcm_read16bitLE(u8_t *pos) {
+ sample_t sample;
+ struct { s32_t sign_extend:16; } s;
+
+ sample = *pos++;
+ sample = *pos << 8;
+
+ sample = s.sign_extend = sample;
+ return sample << 8;
+}
+
+
+static sample_t pcm_read24bitBE(u8_t *pos) {
+ sample_t sample;
+ struct { s32_t sign_extend:24; } s;
+
+ /* XXXX: REVIEW */
+
+ sample = *pos++ << 16;
+ sample |= *pos++ << 8;
+ sample |= *pos;
+
+ sample = s.sign_extend = sample;
return sample;
-*/
-}
-
-
-static sample_t pcm_read8bitLE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
- struct { s32_t sign_extend:8; } s;
- s32_t sample = s.sign_extend = mem_read_u8(MEM_DATA, pos+3-offset);
- return sample << 16;
-*/
-}
-
-
-static sample_t pcm_read16bitBE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
- struct { s32_t sign_extend:16; } s;
- s32_t sample = s.sign_extend = mem_read_u16(MEM_DATA, pos+(offset *
sizeof(u16_t)));
- return sample << 8;
-*/
-}
-
-
-static sample_t pcm_read16bitLE(u8_t *pos) {
- return ((*pos << 16) | (*(pos + 1) << 8));
-}
-
-
-static sample_t pcm_read24bitBE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
+}
+
+
+static sample_t pcm_read24bitLE(u8_t *pos) {
+ sample_t sample;
struct { s32_t sign_extend:24; } s;
- s32_t sample = mem_read_u8(MEM_DATA, pos) << 16;
- sample |= mem_read_u8(MEM_DATA, pos+1) << 8;
- sample |= mem_read_u8(MEM_DATA, pos+2);
+ sample = *pos++;
+ sample |= *pos++ << 8;
+ sample |= *pos << 16;
sample = s.sign_extend = sample;
return sample;
-*/
-}
-
-
-static sample_t pcm_read24bitLE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
- struct { s32_t sign_extend:24; } s;
-
- s32_t sample = mem_read_u8(MEM_DATA, pos);
- sample |= mem_read_u8(MEM_DATA, pos+1) << 8;
- sample |= mem_read_u8(MEM_DATA, pos+2) << 16;
-
- sample = s.sign_extend = sample;
- return sample;
-*/
}
static sample_t pcm_read32bitBE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
- s32_t sample = mem_read_u32(MEM_DATA, pos);
+ sample_t sample;
+ struct { s32_t sign_extend:32; } s;
+
+ /* XXXX: REVIEW */
+
+ sample = *pos++ << 24;
+ sample |= *pos++ << 16;
+ sample |= *pos++ << 8;
+ sample |= *pos;
+
+ sample = s.sign_extend = sample;
return sample >> 8;
-*/
}
static sample_t pcm_read32bitLE(u8_t *pos) {
- DEBUG_ERROR("here!");
- return 0;
-
-/*
- s32_t sample = le_u32_to_arch_u32(mem_read_u32(MEM_DATA, pos));
+ sample_t sample;
+
+ sample = *((s32_t *)pos);
return sample >> 8;
-*/
}
@@ -214,7 +220,7 @@
return 8;
}
else {
- return 4;
+ return 1;
}
}
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins