summaryrefslogtreecommitdiff
path: root/apps/codecs/libpcm
diff options
context:
space:
mode:
authorYoshihisa Uchida <uchida@rockbox.org>2010-03-12 11:34:09 +0000
committerYoshihisa Uchida <uchida@rockbox.org>2010-03-12 11:34:09 +0000
commit2a9c42d1ed265f67d5dfb15b01c3ca1235127197 (patch)
tree70a1dd858a8aa85e9e12157cdce71ac5b196c3d9 /apps/codecs/libpcm
parentc7517f5662eda9af236e6206af6f8b02e77bf118 (diff)
downloadrockbox-2a9c42d1ed265f67d5dfb15b01c3ca1235127197.zip
rockbox-2a9c42d1ed265f67d5dfb15b01c3ca1235127197.tar.gz
rockbox-2a9c42d1ed265f67d5dfb15b01c3ca1235127197.tar.bz2
rockbox-2a9c42d1ed265f67d5dfb15b01c3ca1235127197.tar.xz
libpcm: output depth corrects for the sign 1bit. linear pcm corrects bits shift.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25131 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libpcm')
-rw-r--r--apps/codecs/libpcm/linear_pcm.c4
-rw-r--r--apps/codecs/libpcm/pcm_common.h4
2 files changed, 4 insertions, 4 deletions
diff --git a/apps/codecs/libpcm/linear_pcm.c b/apps/codecs/libpcm/linear_pcm.c
index 2a37f3d..82c70eb 100644
--- a/apps/codecs/libpcm/linear_pcm.c
+++ b/apps/codecs/libpcm/linear_pcm.c
@@ -95,7 +95,7 @@ static inline void decode_s16le(const uint8_t *inbuf, size_t inbufsize, int32_t
size_t i = 0;
for ( ; i < inbufsize; i += 2)
- outbuf[i/2] = (inbuf[i] << INC_DEPTH_16)|(SE(inbuf[i+1]) << INC_DEPTH_16);
+ outbuf[i/2] = (inbuf[i] << INC_DEPTH_16)|(SE(inbuf[i+1]) << INC_DEPTH_8);
}
static inline void decode_u16le(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf)
@@ -155,7 +155,7 @@ static inline void decode_u24be(const uint8_t *inbuf, size_t inbufsize, int32_t
size_t i = 0;
for ( ; i < inbufsize; i += 3)
- outbuf[i/3] = (inbuf[i+2] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_8)|
+ outbuf[i/3] = (inbuf[i+2] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_16)|
(SFT(inbuf[i]) << INC_DEPTH_8);
}
diff --git a/apps/codecs/libpcm/pcm_common.h b/apps/codecs/libpcm/pcm_common.h
index b303273..412ffbc 100644
--- a/apps/codecs/libpcm/pcm_common.h
+++ b/apps/codecs/libpcm/pcm_common.h
@@ -25,8 +25,8 @@
#include <stdbool.h>
#include <inttypes.h>
-/* decoded pcm sample depth */
-#define PCM_OUTPUT_DEPTH 28
+/* decoded pcm sample depth (sample 28bit + sign 1bit) */
+#define PCM_OUTPUT_DEPTH 29
/* Macro that sign extends an unsigned byte */
#define SE(x) ((int32_t)((int8_t)(x)))