From 7c5146e89ee82289654c3435b0462872a4417dd0 Mon Sep 17 00:00:00 2001 From: uchida Date: Sat, 6 Mar 2010 05:51:24 +0000 Subject: [PATCH] libpcm: decoded pcm depth corrects. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25040 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/aiff.c | 2 +- apps/codecs/au.c | 2 +- apps/codecs/libpcm/dialogic_oki_adpcm.c | 5 ++-- apps/codecs/libpcm/dvi_adpcm.c | 31 ++++++++++++------------ apps/codecs/libpcm/ima_adpcm_common.h | 2 ++ apps/codecs/libpcm/itut_g711.c | 5 ++-- apps/codecs/libpcm/linear_pcm.c | 43 +++++++++++++++++++++------------ apps/codecs/libpcm/ms_adpcm.c | 5 ++-- apps/codecs/libpcm/pcm_common.h | 3 +++ apps/codecs/libpcm/qt_ima_adpcm.c | 5 ++-- apps/codecs/libpcm/swf_adpcm.c | 11 +++++---- apps/codecs/libpcm/yamaha_adpcm.c | 5 ++-- apps/codecs/smaf.c | 2 +- apps/codecs/vox.c | 2 +- apps/codecs/wav.c | 2 +- apps/codecs/wav64.c | 2 +- 16 files changed, 70 insertions(+), 57 deletions(-) diff --git a/apps/codecs/aiff.c b/apps/codecs/aiff.c index fbe814a64..e4d1059ed 100644 --- a/apps/codecs/aiff.c +++ b/apps/codecs/aiff.c @@ -87,7 +87,7 @@ enum codec_status codec_main(void) const struct pcm_codec *codec; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { diff --git a/apps/codecs/au.c b/apps/codecs/au.c index 924b29088..0f4da3d3b 100644 --- a/apps/codecs/au.c +++ b/apps/codecs/au.c @@ -138,7 +138,7 @@ enum codec_status codec_main(void) int offset = 0; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { diff --git a/apps/codecs/libpcm/dialogic_oki_adpcm.c b/apps/codecs/libpcm/dialogic_oki_adpcm.c index 5b643f0e3..62d092e67 100644 --- a/apps/codecs/libpcm/dialogic_oki_adpcm.c +++ b/apps/codecs/libpcm/dialogic_oki_adpcm.c @@ -19,7 +19,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "adpcm_seek.h" #include "support_formats.h" @@ -117,8 +116,8 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, while (inbufsize) { - *outbuf++ = create_pcmdata(*inbuf >> 4) << 17; - *outbuf++ = create_pcmdata(*inbuf ) << 17; + *outbuf++ = create_pcmdata(*inbuf >> 4) << (PCM_OUTPUT_DEPTH - 12); + *outbuf++ = create_pcmdata(*inbuf ) << (PCM_OUTPUT_DEPTH - 12); nsamples += 2; inbuf++; diff --git a/apps/codecs/libpcm/dvi_adpcm.c b/apps/codecs/libpcm/dvi_adpcm.c index c1b90e04e..6774b1447 100644 --- a/apps/codecs/libpcm/dvi_adpcm.c +++ b/apps/codecs/libpcm/dvi_adpcm.c @@ -20,7 +20,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "ima_adpcm_common.h" #include "support_formats.h" @@ -85,13 +84,13 @@ static inline void decode_2bit(const uint8_t **inbuf, pcmbuf = *outbuf + ch; for (i = 0; i < 4; i++) { - *pcmbuf = create_pcmdata(ch, **inbuf ) << 13; + *pcmbuf = create_pcmdata(ch, **inbuf ) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; - *pcmbuf = create_pcmdata(ch, **inbuf >> 2) << 13; + *pcmbuf = create_pcmdata(ch, **inbuf >> 2) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; - *pcmbuf = create_pcmdata(ch, **inbuf >> 4) << 13; + *pcmbuf = create_pcmdata(ch, **inbuf >> 4) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; - *pcmbuf = create_pcmdata(ch, **inbuf >> 6) << 13; + *pcmbuf = create_pcmdata(ch, **inbuf >> 6) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; (*inbuf)++; } @@ -123,7 +122,7 @@ static inline void decode_3bit(const uint8_t **inbuf, adpcms |= (*adpcmbuf++) << 16; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -132,7 +131,7 @@ static inline void decode_3bit(const uint8_t **inbuf, adpcms |= (*adpcmbuf++) << 16; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -141,7 +140,7 @@ static inline void decode_3bit(const uint8_t **inbuf, adpcms |= (*adpcmbuf++) << 16; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -149,7 +148,7 @@ static inline void decode_3bit(const uint8_t **inbuf, adpcms |= (*adpcmbuf++) << 16; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (3 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } } @@ -175,9 +174,9 @@ static inline void decode_4bit(const uint8_t **inbuf, pcmbuf = *outbuf + ch; for (i = 0; i < 4; i++) { - *pcmbuf = create_pcmdata_size4(ch, **inbuf ) << 13; + *pcmbuf = create_pcmdata_size4(ch, **inbuf ) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; - *pcmbuf = create_pcmdata_size4(ch, **inbuf >> 4) << 13; + *pcmbuf = create_pcmdata_size4(ch, **inbuf >> 4) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; (*inbuf)++; } @@ -212,7 +211,7 @@ static inline void decode_5bit(const uint8_t **inbuf, adpcms |= (uint64_t)(*adpcmbuf++) << 32; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -223,7 +222,7 @@ static inline void decode_5bit(const uint8_t **inbuf, adpcms |= (uint64_t)(*adpcmbuf++) << 32; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -234,7 +233,7 @@ static inline void decode_5bit(const uint8_t **inbuf, adpcms |= (uint64_t)(*adpcmbuf++) << 32; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } adpcms = *adpcmbuf++; @@ -245,7 +244,7 @@ static inline void decode_5bit(const uint8_t **inbuf, adpcms |= (uint64_t)(*adpcmbuf++) << 32; for (i = 0; i < 8; i++) { - *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << 13; + *pcmbuf = create_pcmdata(ch, adpcms >> (5 * i)) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; } } @@ -283,7 +282,7 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, } inbuf += 4; - *outbuf++ = init_pcmdata[ch] << 13; + *outbuf++ = init_pcmdata[ch] << IMA_ADPCM_INC_DEPTH; } *outbufcount += 1; diff --git a/apps/codecs/libpcm/ima_adpcm_common.h b/apps/codecs/libpcm/ima_adpcm_common.h index 65cfefcfa..0a2129bdf 100644 --- a/apps/codecs/libpcm/ima_adpcm_common.h +++ b/apps/codecs/libpcm/ima_adpcm_common.h @@ -25,6 +25,8 @@ #include #include +#define IMA_ADPCM_INC_DEPTH (PCM_OUTPUT_DEPTH - 16) + void init_ima_adpcm_decoder(int bit, const int *index_table); void set_decode_parameters(int channels, int32_t *init_pcmdata, int8_t *init_index); int16_t create_pcmdata(int ch, uint8_t nibble); diff --git a/apps/codecs/libpcm/itut_g711.c b/apps/codecs/libpcm/itut_g711.c index 9a3803188..4644a9c69 100644 --- a/apps/codecs/libpcm/itut_g711.c +++ b/apps/codecs/libpcm/itut_g711.c @@ -20,7 +20,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "support_formats.h" /* @@ -154,7 +153,7 @@ static int decode_alaw(const uint8_t *inbuf, size_t inbufsize, uint32_t i; for (i = 0; i < inbufsize; i++) - outbuf[i] = alaw2linear16[inbuf[i]] << 13; + outbuf[i] = alaw2linear16[inbuf[i]] << (PCM_OUTPUT_DEPTH - 16); *outbufsize = (fmt->channels == 2) ? (inbufsize >> 1) : inbufsize; @@ -167,7 +166,7 @@ static int decode_mulaw(const uint8_t *inbuf, size_t inbufsize, uint32_t i; for (i = 0; i < inbufsize; i++) - outbuf[i] = ulaw2linear16[inbuf[i]] << 13; + outbuf[i] = ulaw2linear16[inbuf[i]] << (PCM_OUTPUT_DEPTH - 16); *outbufsize = (fmt->channels == 2) ? (inbufsize >> 1) : inbufsize; diff --git a/apps/codecs/libpcm/linear_pcm.c b/apps/codecs/libpcm/linear_pcm.c index 451154cc9..2a37f3d2a 100644 --- a/apps/codecs/libpcm/linear_pcm.c +++ b/apps/codecs/libpcm/linear_pcm.c @@ -20,13 +20,18 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "support_formats.h" /* * Linear PCM */ +#define INC_DEPTH_8 (PCM_OUTPUT_DEPTH - 8) +#define INC_DEPTH_16 (PCM_OUTPUT_DEPTH - 16) +#define INC_DEPTH_24 (PCM_OUTPUT_DEPTH - 24) +#define DEC_DEPTH_32 (32 - PCM_OUTPUT_DEPTH) + + static struct pcm_format *fmt; static bool set_format(struct pcm_format *format) @@ -73,7 +78,7 @@ static inline void decode_s8(const uint8_t *inbuf, size_t inbufsize, int32_t *ou size_t i = 0; for ( ; i < inbufsize; i++) - outbuf[i] = SE(inbuf[i])<<21; + outbuf[i] = SE(inbuf[i]) << INC_DEPTH_8; } static inline void decode_u8(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -81,7 +86,7 @@ static inline void decode_u8(const uint8_t *inbuf, size_t inbufsize, int32_t *ou size_t i = 0; for ( ; i < inbufsize; i++) - outbuf[i] = SFT(inbuf[i])<<21; + outbuf[i] = SFT(inbuf[i]) << INC_DEPTH_8; } /* 16bit decode functions */ @@ -90,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]<<13)|(SE(inbuf[i+1])<<21); + outbuf[i/2] = (inbuf[i] << INC_DEPTH_16)|(SE(inbuf[i+1]) << INC_DEPTH_16); } static inline void decode_u16le(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -98,7 +103,7 @@ static inline void decode_u16le(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 2) - outbuf[i/2] = (inbuf[i]<<13)|(SFT(inbuf[i+1])<<21); + outbuf[i/2] = (inbuf[i] << INC_DEPTH_16)|(SFT(inbuf[i+1]) << INC_DEPTH_8); } static inline void decode_s16be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -106,7 +111,7 @@ static inline void decode_s16be(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 2) - outbuf[i/2] = (inbuf[i+1]<<13)|(SE(inbuf[i])<<21); + outbuf[i/2] = (inbuf[i+1] << INC_DEPTH_16)|(SE(inbuf[i]) << INC_DEPTH_8); } static inline void decode_u16be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -114,7 +119,7 @@ static inline void decode_u16be(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 2) - outbuf[i/2] = (inbuf[i+1]<<13)|(SFT(inbuf[i])<<21); + outbuf[i/2] = (inbuf[i+1] << INC_DEPTH_16)|(SFT(inbuf[i]) << INC_DEPTH_8); } /* 24bit decode functions */ @@ -123,7 +128,8 @@ static inline void decode_s24le(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 3) - outbuf[i/3] = (inbuf[i]<<5)|(inbuf[i+1]<<13)|(SE(inbuf[i+2])<<21); + outbuf[i/3] = (inbuf[i] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_16)| + (SE(inbuf[i+2]) << INC_DEPTH_8); } static inline void decode_u24le(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -131,7 +137,8 @@ static inline void decode_u24le(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 3) - outbuf[i/3] = (inbuf[i]<<5)|(inbuf[i+1]<<13)|(SFT(inbuf[i+2])<<21); + outbuf[i/3] = (inbuf[i] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_16)| + (SFT(inbuf[i+2]) << INC_DEPTH_8); } static inline void decode_s24be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -139,7 +146,8 @@ static inline void decode_s24be(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 3) - outbuf[i/3] = (inbuf[i+2]<<5)|(inbuf[i+1]<<13)|(SE(inbuf[i])<<21); + outbuf[i/3] = (inbuf[i+2] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_16)| + (SE(inbuf[i]) << INC_DEPTH_8); } static inline void decode_u24be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -147,7 +155,8 @@ 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]<<5)|(inbuf[i+1]<<13)|(SFT(inbuf[i])<<21); + outbuf[i/3] = (inbuf[i+2] << INC_DEPTH_24)|(inbuf[i+1] << INC_DEPTH_8)| + (SFT(inbuf[i]) << INC_DEPTH_8); } /* 32bit decode functions */ @@ -156,7 +165,8 @@ static inline void decode_s32le(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 4) - outbuf[i/4] = (inbuf[i]>>3)|(inbuf[i+1]<<5)|(inbuf[i+2]<<13)|(SE(inbuf[i+3])<<21); + outbuf[i/4] = (inbuf[i] >> DEC_DEPTH_32)|(inbuf[i+1] << INC_DEPTH_24)| + (inbuf[i+2] << INC_DEPTH_16)|(SE(inbuf[i+3]) << INC_DEPTH_8); } static inline void decode_u32le(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -164,7 +174,8 @@ static inline void decode_u32le(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 4) - outbuf[i/4] = (inbuf[i]>>3)|(inbuf[i+1]<<5)|(inbuf[i+2]<<13)|(SFT(inbuf[i+3])<<21); + outbuf[i/4] = (inbuf[i] >> DEC_DEPTH_32)|(inbuf[i+1] << INC_DEPTH_24)| + (inbuf[i+2] << INC_DEPTH_16)|(SFT(inbuf[i+3]) << INC_DEPTH_8); } static inline void decode_s32be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -172,7 +183,8 @@ static inline void decode_s32be(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 4) - outbuf[i/4] = (inbuf[i+3]>>3)|(inbuf[i+2]<<5)|(inbuf[i+1]<<13)|(SE(inbuf[i])<<21); + outbuf[i/4] = (inbuf[i+3] >> DEC_DEPTH_32)|(inbuf[i+2] << INC_DEPTH_24)| + (inbuf[i+1] << INC_DEPTH_16)|(SE(inbuf[i]) << INC_DEPTH_8); } static inline void decode_u32be(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf) @@ -180,7 +192,8 @@ static inline void decode_u32be(const uint8_t *inbuf, size_t inbufsize, int32_t size_t i = 0; for ( ; i < inbufsize; i += 4) - outbuf[i/4] = (inbuf[i+3]>>3)|(inbuf[i+2]<<5)|(inbuf[i+1]<<13)|(SFT(inbuf[i])<<21); + outbuf[i/4] = (inbuf[i+3] >> DEC_DEPTH_32)|(inbuf[i+2] << INC_DEPTH_24)| + (inbuf[i+1] << INC_DEPTH_16)|(SFT(inbuf[i]) << INC_DEPTH_8); } static int decode(const uint8_t *inbuf, size_t inbufsize, int32_t *outbuf, int *outbufcount) diff --git a/apps/codecs/libpcm/ms_adpcm.c b/apps/codecs/libpcm/ms_adpcm.c index 7f1cb1c81..79365807e 100644 --- a/apps/codecs/libpcm/ms_adpcm.c +++ b/apps/codecs/libpcm/ms_adpcm.c @@ -19,7 +19,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "support_formats.h" /* @@ -138,8 +137,8 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, while (size-- > 0) { - *outbuf++ = create_pcmdata(0, *inbuf >> 4 ) << 13; - *outbuf++ = create_pcmdata(ch, *inbuf & 0xf) << 13; + *outbuf++ = create_pcmdata(0, *inbuf >> 4 ) << (PCM_OUTPUT_DEPTH - 16); + *outbuf++ = create_pcmdata(ch, *inbuf & 0xf) << (PCM_OUTPUT_DEPTH - 16); nsamples += 2; inbuf++; diff --git a/apps/codecs/libpcm/pcm_common.h b/apps/codecs/libpcm/pcm_common.h index 7dcacbd19..b30327366 100644 --- a/apps/codecs/libpcm/pcm_common.h +++ b/apps/codecs/libpcm/pcm_common.h @@ -25,6 +25,9 @@ #include #include +/* decoded pcm sample depth */ +#define PCM_OUTPUT_DEPTH 28 + /* Macro that sign extends an unsigned byte */ #define SE(x) ((int32_t)((int8_t)(x))) diff --git a/apps/codecs/libpcm/qt_ima_adpcm.c b/apps/codecs/libpcm/qt_ima_adpcm.c index e99a91796..003de22dd 100644 --- a/apps/codecs/libpcm/qt_ima_adpcm.c +++ b/apps/codecs/libpcm/qt_ima_adpcm.c @@ -19,7 +19,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "ima_adpcm_common.h" #include "support_formats.h" @@ -107,9 +106,9 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, pcmbuf = outbuf + ch; for (block_size = 32; block_size > 0 && inbufsize > 0; block_size--, inbufsize--) { - *pcmbuf = create_pcmdata_size4(ch, *inbuf ) << 13; + *pcmbuf = create_pcmdata_size4(ch, *inbuf ) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; - *pcmbuf = create_pcmdata_size4(ch, *inbuf >> 4) << 13; + *pcmbuf = create_pcmdata_size4(ch, *inbuf >> 4) << IMA_ADPCM_INC_DEPTH; pcmbuf += fmt->channels; nsamples += 2; inbuf++; diff --git a/apps/codecs/libpcm/swf_adpcm.c b/apps/codecs/libpcm/swf_adpcm.c index 9acab5cb4..3441c667d 100644 --- a/apps/codecs/libpcm/swf_adpcm.c +++ b/apps/codecs/libpcm/swf_adpcm.c @@ -19,7 +19,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "ima_adpcm_common.h" #include "support_formats.h" @@ -193,18 +192,20 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, init_pcmdata[1] -= 65536; } - *outbuf++ = init_pcmdata[0] << 13; + *outbuf++ = init_pcmdata[0] << IMA_ADPCM_INC_DEPTH; if (ch > 0) - *outbuf++ = init_pcmdata[1] << 13; + *outbuf++ = init_pcmdata[1] << IMA_ADPCM_INC_DEPTH; set_decode_parameters(fmt->channels, init_pcmdata, init_index); /* read block data */ while (--count > 0) { - *outbuf++ = create_pcmdata(0, get_data(&inbuf, fmt->bitspersample)) << 13; + *outbuf++ = create_pcmdata(0, get_data(&inbuf, fmt->bitspersample)) + << IMA_ADPCM_INC_DEPTH; if (ch > 0) - *outbuf++ = create_pcmdata(ch, get_data(&inbuf, fmt->bitspersample)) << 13; + *outbuf++ = create_pcmdata(ch, get_data(&inbuf, fmt->bitspersample)) + << IMA_ADPCM_INC_DEPTH; } *outbufcount = fmt->samplesperblock; diff --git a/apps/codecs/libpcm/yamaha_adpcm.c b/apps/codecs/libpcm/yamaha_adpcm.c index 073a1dc70..9f1a4742e 100644 --- a/apps/codecs/libpcm/yamaha_adpcm.c +++ b/apps/codecs/libpcm/yamaha_adpcm.c @@ -19,7 +19,6 @@ * ****************************************************************************/ #include "codeclib.h" -#include "pcm_common.h" #include "adpcm_seek.h" #include "support_formats.h" @@ -173,8 +172,8 @@ static int decode(const uint8_t *inbuf, size_t inbufsize, ch = fmt->channels - 1; while (inbufsize) { - *outbuf++ = create_pcmdata(0, *inbuf ) << 13; - *outbuf++ = create_pcmdata(ch, *inbuf >> 4) << 13; + *outbuf++ = create_pcmdata(0, *inbuf ) << (PCM_OUTPUT_DEPTH - 16); + *outbuf++ = create_pcmdata(ch, *inbuf >> 4) << (PCM_OUTPUT_DEPTH - 16); nsamples += 2; inbuf++; diff --git a/apps/codecs/smaf.c b/apps/codecs/smaf.c index cd1155bf7..019552ed4 100644 --- a/apps/codecs/smaf.c +++ b/apps/codecs/smaf.c @@ -285,7 +285,7 @@ enum codec_status codec_main(void) const struct pcm_codec *codec; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { diff --git a/apps/codecs/vox.c b/apps/codecs/vox.c index 44701fafb..290fae080 100644 --- a/apps/codecs/vox.c +++ b/apps/codecs/vox.c @@ -57,7 +57,7 @@ enum codec_status codec_main(void) int offset = 0; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { diff --git a/apps/codecs/wav.c b/apps/codecs/wav.c index c2564231c..412d54881 100644 --- a/apps/codecs/wav.c +++ b/apps/codecs/wav.c @@ -165,7 +165,7 @@ enum codec_status codec_main(void) const struct pcm_codec *codec; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { diff --git a/apps/codecs/wav64.c b/apps/codecs/wav64.c index e607a86a9..bd2311cc8 100644 --- a/apps/codecs/wav64.c +++ b/apps/codecs/wav64.c @@ -174,7 +174,7 @@ enum codec_status codec_main(void) uint64_t size; /* Generic codec initialisation */ - ci->configure(DSP_SET_SAMPLE_DEPTH, 28); + ci->configure(DSP_SET_SAMPLE_DEPTH, PCM_OUTPUT_DEPTH); next_track: if (codec_init()) { -- 2.11.4.GIT