forked from len0rd/rockbox
Synced libmpcdec to musepack.net SVN.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8488 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
58231d50f2
commit
2b483958f9
16 changed files with 353 additions and 1025 deletions
|
|
@ -34,8 +34,8 @@
|
|||
|
||||
/// \file decoder.h
|
||||
|
||||
#ifndef _musepack_decoder_h_
|
||||
#define _musepack_decoder_h_
|
||||
#ifndef _mpcdec_decoder_h_
|
||||
#define _mpcdec_decoder_h_
|
||||
|
||||
#include "huffman.h"
|
||||
#include "math.h"
|
||||
|
|
@ -43,6 +43,8 @@
|
|||
#include "reader.h"
|
||||
#include "streaminfo.h"
|
||||
|
||||
#define MPC_SUPPORT_SV456
|
||||
|
||||
enum {
|
||||
MPC_V_MEM = 2304,
|
||||
MPC_DECODER_MEMSIZE = 16384, // overall buffer size
|
||||
|
|
@ -59,29 +61,28 @@ typedef struct mpc_decoder_t {
|
|||
/// @name internal state variables
|
||||
//@{
|
||||
|
||||
mpc_uint32_t dword; /// actually decoded 32bit-word
|
||||
mpc_uint32_t dword; /// currently decoded 32bit-word
|
||||
mpc_uint32_t pos; /// bit-position within dword
|
||||
mpc_uint32_t Speicher[MPC_DECODER_MEMSIZE]; /// read-buffer
|
||||
mpc_uint32_t Zaehler; /// actual index within read-buffer
|
||||
|
||||
mpc_uint32_t samples_to_skip;
|
||||
mpc_uint32_t samples_to_skip;
|
||||
|
||||
mpc_uint32_t FwdJumpInfo;
|
||||
mpc_uint32_t ActDecodePos;
|
||||
mpc_uint32_t FrameWasValid;
|
||||
|
||||
|
||||
mpc_uint32_t DecodedFrames;
|
||||
mpc_uint32_t OverallFrames;
|
||||
mpc_int32_t SampleRate; // Sample frequency
|
||||
|
||||
mpc_uint32_t StreamVersion; // version of bitstream
|
||||
mpc_uint32_t MS_used; // MS-coding used ?
|
||||
mpc_int32_t Max_Band;
|
||||
mpc_uint32_t MPCHeaderPos; // AB: needed to support ID3v2
|
||||
mpc_uint32_t LastValidSamples;
|
||||
mpc_uint32_t TrueGaplessPresent;
|
||||
|
||||
mpc_uint32_t EQ_activated;
|
||||
mpc_uint32_t FrameWasValid;
|
||||
mpc_uint32_t MS_used; // MS-coding used ?
|
||||
mpc_uint32_t TrueGaplessPresent;
|
||||
|
||||
mpc_uint32_t WordsRead; // counts amount of decoded dwords
|
||||
|
||||
|
|
@ -89,49 +90,18 @@ typedef struct mpc_decoder_t {
|
|||
mpc_uint32_t __r1;
|
||||
mpc_uint32_t __r2;
|
||||
|
||||
mpc_uint32_t Q_bit [32];
|
||||
mpc_uint32_t Q_res [32][16];
|
||||
|
||||
// huffman table stuff
|
||||
HuffmanTyp HuffHdr [10];
|
||||
HuffmanTyp HuffSCFI [ 4];
|
||||
HuffmanTyp HuffDSCF [16];
|
||||
HuffmanTyp* HuffQ [2] [8];
|
||||
|
||||
HuffmanTyp HuffQ1 [2] [3*3*3];
|
||||
HuffmanTyp HuffQ2 [2] [5*5];
|
||||
HuffmanTyp HuffQ3 [2] [ 7];
|
||||
HuffmanTyp HuffQ4 [2] [ 9];
|
||||
HuffmanTyp HuffQ5 [2] [15];
|
||||
HuffmanTyp HuffQ6 [2] [31];
|
||||
HuffmanTyp HuffQ7 [2] [63];
|
||||
const HuffmanTyp* SampleHuff [18];
|
||||
HuffmanTyp SCFI_Bundle [ 8];
|
||||
HuffmanTyp DSCF_Entropie [13];
|
||||
HuffmanTyp Region_A [16];
|
||||
HuffmanTyp Region_B [ 8];
|
||||
HuffmanTyp Region_C [ 4];
|
||||
|
||||
HuffmanTyp Entropie_1 [ 3];
|
||||
HuffmanTyp Entropie_2 [ 5];
|
||||
HuffmanTyp Entropie_3 [ 7];
|
||||
HuffmanTyp Entropie_4 [ 9];
|
||||
HuffmanTyp Entropie_5 [15];
|
||||
HuffmanTyp Entropie_6 [31];
|
||||
HuffmanTyp Entropie_7 [63];
|
||||
|
||||
mpc_int32_t SCF_Index_L [32] [3];
|
||||
mpc_int32_t SCF_Index_R [32] [3]; // holds scalefactor-indices
|
||||
QuantTyp Q [32]; // holds quantized samples
|
||||
mpc_int32_t Res_L [32];
|
||||
mpc_int32_t Res_R [32]; // holds the chosen quantizer for each subband
|
||||
mpc_int32_t DSCF_Flag_L [32];
|
||||
mpc_int32_t DSCF_Flag_R [32]; // differential SCF used?
|
||||
mpc_bool_t DSCF_Flag_L [32];
|
||||
mpc_bool_t DSCF_Flag_R [32]; // differential SCF used?
|
||||
mpc_int32_t SCFI_L [32];
|
||||
mpc_int32_t SCFI_R [32]; // describes order of transmitted SCF
|
||||
mpc_int32_t DSCF_Reference_L [32];
|
||||
mpc_int32_t DSCF_Reference_R [32]; // holds last frames SCF
|
||||
mpc_int32_t MS_Flag[32]; // MS used?
|
||||
mpc_bool_t MS_Flag[32]; // MS used?
|
||||
#ifdef MPC_FIXED_POINT
|
||||
unsigned char SCF_shift[256];
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue