forked from len0rd/rockbox
libpcm: decoded pcm depth corrects.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25040 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
f1b209c057
commit
ff733b5f89
16 changed files with 70 additions and 57 deletions
|
@ -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()) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include <stdbool.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
#include <stdbool.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
/* decoded pcm sample depth */
|
||||
#define PCM_OUTPUT_DEPTH 28
|
||||
|
||||
/* Macro that sign extends an unsigned byte */
|
||||
#define SE(x) ((int32_t)((int8_t)(x)))
|
||||
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue