Index: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	(revision 7)
+++ trunk/ChangeLog	(revision 10)
@@ -1,2 +1,5 @@
+1.2.3
+    * Reduced memory usage and code size. Patch by Peter Pawlowski
+
 1.2.2
     * Fixed compilation under OpenBSD
Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac	(revision 7)
+++ trunk/configure.ac	(revision 10)
@@ -2,5 +2,5 @@
 AC_INIT(src/mpc_decoder.c)
 AC_CONFIG_AUX_DIR(config)
-AM_INIT_AUTOMAKE(libmpcdec,1.2.2)
+AM_INIT_AUTOMAKE(libmpcdec,1.2.3)
 AM_CONFIG_HEADER(include/config.h)
 
Index: trunk/include/mpcdec/decoder.h
===================================================================
--- trunk/include/mpcdec/decoder.h	(revision 7)
+++ trunk/include/mpcdec/decoder.h	(revision 10)
@@ -44,4 +44,6 @@
 #include "streaminfo.h"
 
+#define MPC_SUPPORT_SV456
+
 enum {
     MPC_V_MEM = 2304,
@@ -60,14 +62,14 @@
     //@{
 
-    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;
@@ -76,11 +78,10 @@
 
     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  FrameWasValid;
+    mpc_uint32_t  MS_used;                    // MS-coding used ?
     mpc_uint32_t  TrueGaplessPresent;
-
-    mpc_uint32_t  EQ_activated;
 
     mpc_uint32_t  WordsRead;                  // counts amount of decoded dwords
@@ -90,35 +91,4 @@
     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
@@ -126,11 +96,11 @@
     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];
Index: trunk/include/mpcdec/huffman.h
===================================================================
--- trunk/include/mpcdec/huffman.h	(revision 7)
+++ trunk/include/mpcdec/huffman.h	(revision 10)
@@ -52,29 +52,7 @@
 typedef struct huffman_type_t {
     mpc_uint32_t  Code;
-    mpc_uint32_t  Length;
-    mpc_int32_t   Value;
+    mpc_uint16_t  Length;
+    mpc_int16_t   Value;
 } HuffmanTyp;
 
-//! \brief Sorts huffman-tables by codeword.
-//!
-//! offset resulting value.
-//! \param elements
-//! \param Table table to sort
-//! \param offset offset of resulting sort
-void
-mpc_decoder_resort_huff_tables(
-    const mpc_uint32_t elements, HuffmanTyp *Table, const mpc_int32_t offset);
-
-/// Initializes sv6 huffman decoding structures.
-void mpc_decoder_init_huffman_sv6(struct mpc_decoder_t *d);
-
-/// Initializes sv6 huffman decoding tables.
-void mpc_decoder_init_huffman_sv6_tables(struct mpc_decoder_t *d);
-
-/// Initializes sv7 huffman decoding structures.
-void mpc_decoder_init_huffman_sv7(struct mpc_decoder_t *d);
-
-/// Initializes sv7 huffman decoding tables.
-void mpc_decoder_init_huffman_sv7_tables(struct mpc_decoder_t *d);
-
 #endif // _mpcdec_huffman_h_
Index: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am	(revision 7)
+++ trunk/src/Makefile.am	(revision 10)
@@ -14,5 +14,5 @@
 	streaminfo.c \
 	synth_filter.c
-libmpcdec_la_LDFLAGS = -no-undefined -version-info 4:1:1
+libmpcdec_la_LDFLAGS = -no-undefined -version-info 4:2:1
 
 noinst_PROGRAMS = sample
Index: trunk/src/huffsv46.c
===================================================================
--- trunk/src/huffsv46.c	(revision 7)
+++ trunk/src/huffsv46.c	(revision 10)
@@ -40,229 +40,36 @@
 #include <mpcdec/huffman.h>
 
-void
-mpc_decoder_init_huffman_sv6(mpc_decoder *d) 
-{
-    mpc_decoder_init_huffman_sv6_tables(d);
-    mpc_decoder_resort_huff_tables(16, d->Region_A      , 0);
-    mpc_decoder_resort_huff_tables( 8, d->Region_B      , 0);
-    mpc_decoder_resort_huff_tables( 4, d->Region_C      , 0);
-    mpc_decoder_resort_huff_tables( 8, d->SCFI_Bundle   , 0);
-    mpc_decoder_resort_huff_tables(13, d->DSCF_Entropie , 6);
-    mpc_decoder_resort_huff_tables( 3, d->Entropie_1    , Dc[1]);
-    mpc_decoder_resort_huff_tables( 5, d->Entropie_2    , Dc[2]);
-    mpc_decoder_resort_huff_tables( 7, d->Entropie_3    , Dc[3]);
-    mpc_decoder_resort_huff_tables( 9, d->Entropie_4    , Dc[4]);
-    mpc_decoder_resort_huff_tables(15, d->Entropie_5    , Dc[5]);
-    mpc_decoder_resort_huff_tables(31, d->Entropie_6    , Dc[6]);
-    mpc_decoder_resort_huff_tables(63, d->Entropie_7    , Dc[7]);
-}
+#ifdef MPC_SUPPORT_SV456
 
-void 
-mpc_decoder_init_huffman_sv6_tables(mpc_decoder *d) 
-{
-    // SCFI-bundle
-    d->SCFI_Bundle[7].Code=  1; d->SCFI_Bundle[7].Length= 1;
-    d->SCFI_Bundle[3].Code=  1; d->SCFI_Bundle[3].Length= 2;
-    d->SCFI_Bundle[5].Code=  0; d->SCFI_Bundle[5].Length= 3;
-    d->SCFI_Bundle[1].Code=  7; d->SCFI_Bundle[1].Length= 5;
-    d->SCFI_Bundle[2].Code=  6; d->SCFI_Bundle[2].Length= 5;
-    d->SCFI_Bundle[4].Code=  4; d->SCFI_Bundle[4].Length= 5;
-    d->SCFI_Bundle[0].Code= 11; d->SCFI_Bundle[0].Length= 6;
-    d->SCFI_Bundle[6].Code= 10; d->SCFI_Bundle[6].Length= 6;
 
-    // region A (subbands  0..10)
-    d->Region_A[ 1].Code=    1; d->Region_A[ 1].Length=  1;
-    d->Region_A[ 2].Code=    0; d->Region_A[ 2].Length=  2;
-    d->Region_A[ 0].Code=    2; d->Region_A[ 0].Length=  3;
-    d->Region_A[ 3].Code=   15; d->Region_A[ 3].Length=  5;
-    d->Region_A[ 5].Code=   13; d->Region_A[ 5].Length=  5;
-    d->Region_A[ 6].Code=   12; d->Region_A[ 6].Length=  5;
-    d->Region_A[ 4].Code=   29; d->Region_A[ 4].Length=  6;
-    d->Region_A[ 7].Code=   57; d->Region_A[ 7].Length=  7;
-    d->Region_A[ 8].Code=  113; d->Region_A[ 8].Length=  8;
-    d->Region_A[ 9].Code=  225; d->Region_A[ 9].Length=  9;
-    d->Region_A[10].Code=  449; d->Region_A[10].Length= 10;
-    d->Region_A[11].Code=  897; d->Region_A[11].Length= 11;
-    d->Region_A[12].Code= 1793; d->Region_A[12].Length= 12;
-    d->Region_A[13].Code= 3585; d->Region_A[13].Length= 13;
-    d->Region_A[14].Code= 7169; d->Region_A[14].Length= 14;
-    d->Region_A[15].Code= 7168; d->Region_A[15].Length= 14;
+const HuffmanTyp    mpc_table_SCFI_Bundle   [ 8] = 
+{{2147483648u,1,7},{1073741824u,2,3},{939524096u,5,1},{805306368u,5,2},{738197504u,6,0},{671088640u,6,6},{536870912u,5,4},{0u,3,5},};
+const HuffmanTyp    mpc_table_DSCF_Entropie [13] = 
+{{3758096384u,3,1},{3489660928u,4,3},{3355443200u,5,5},{3221225472u,5,-3},{2952790016u,4,-2},{2684354560u,4,4},{2147483648u,3,-1},{1610612736u,3,2},{1476395008u,5,-5},{1409286144u,6,6},{1342177280u,6,-6},{1073741824u,4,-4},{0u,2,0},};
+const HuffmanTyp    mpc_table_Region_A [16] =
+{{2147483648u,1,1},{2013265920u,5,3},{1946157056u,6,4},{1912602624u,7,7},{1895825408u,8,8},{1887436800u,9,9},{1883242496u,10,10},{1881145344u,11,11},{1880096768u,12,12},{1879572480u,13,13},{1879310336u,14,14},{1879048192u,14,15},{1744830464u,5,5},{1610612736u,5,6},{1073741824u,3,0},{0u,2,2},};
+const HuffmanTyp    mpc_table_Region_B [ 8] = 
+{{2147483648u,1,1},{1073741824u,2,0},{536870912u,3,2},{268435456u,4,3},{134217728u,5,4},{67108864u,6,5},{33554432u,7,6},{0u,7,7},};
+const HuffmanTyp    mpc_table_Region_C [ 4] = 
+{{2147483648u,1,0},{1073741824u,2,1},{536870912u,3,2},{0u,3,3},};
 
-    // region B (subbands 11..22)
-    d->Region_B[1].Code= 1; d->Region_B[1].Length= 1;
-    d->Region_B[0].Code= 1; d->Region_B[0].Length= 2;
-    d->Region_B[2].Code= 1; d->Region_B[2].Length= 3;
-    d->Region_B[3].Code= 1; d->Region_B[3].Length= 4;
-    d->Region_B[4].Code= 1; d->Region_B[4].Length= 5;
-    d->Region_B[5].Code= 1; d->Region_B[5].Length= 6;
-    d->Region_B[6].Code= 1; d->Region_B[6].Length= 7;
-    d->Region_B[7].Code= 0; d->Region_B[7].Length= 7;
+static const HuffmanTyp    mpc_table_Entropie_1 [ 3] =
+{{2147483648u,1,0},{1073741824u,2,-1},{0u,2,1},};
+static const HuffmanTyp    mpc_table_Entropie_2 [ 5] = 
+{{3221225472u,2,0},{2684354560u,3,2},{2147483648u,3,-2},{1073741824u,2,1},{0u,2,-1},};
+static const HuffmanTyp    mpc_table_Entropie_3 [ 7] =
+{{3221225472u,2,0},{2684354560u,3,-2},{2415919104u,4,2},{2281701376u,5,-3},{2147483648u,5,3},{1073741824u,2,-1},{0u,2,1},};
+static const HuffmanTyp    mpc_table_Entropie_4 [ 9] = 
+{{4026531840u,4,3},{3758096384u,4,-3},{3221225472u,3,1},{2684354560u,3,-1},{2147483648u,3,2},{1610612736u,3,-2},{1342177280u,4,-4},{1073741824u,4,4},{0u,2,0},};
+static const HuffmanTyp    mpc_table_Entropie_5 [15] =
+{{4026531840u,4,-2},{3892314112u,5,-5},{3825205248u,6,-7},{3758096384u,6,7},{3489660928u,4,-3},{3221225472u,4,3},{3087007744u,5,-6},{2952790016u,5,6},{2684354560u,4,4},{2147483648u,3,0},{1610612736u,3,1},{1073741824u,3,-1},{805306368u,4,-4},{536870912u,4,5},{0u,3,2},};
+static const HuffmanTyp    mpc_table_Entropie_6 [31] =
+{{4160749568u,5,-4},{4026531840u,5,5},{3892314112u,5,-5},{3825205248u,6,10},{3758096384u,6,-10},{3623878656u,5,-6},{3489660928u,5,6},{3355443200u,5,7},{3221225472u,5,-7},{3087007744u,5,-8},{3019898880u,6,-11},{2986344448u,7,14},{2952790016u,7,-14},{2818572288u,5,8},{2751463424u,6,11},{2684354560u,6,-13},{2415919104u,4,0},{2147483648u,4,1},{1879048192u,4,-1},{1610612736u,4,3},{1342177280u,4,2},{1207959552u,5,-9},{1140850688u,6,12},{1073741824u,6,13},{805306368u,4,-3},{536870912u,4,-2},{402653184u,5,9},{335544320u,6,-12},{301989888u,7,15},{268435456u,7,-15},{0u,4,4},};
+static const HuffmanTyp    mpc_table_Entropie_7 [63] =
+{{4278190080u,8,28},{4261412864u,8,26},{4227858432u,7,-20},{4160749568u,6,8},{4093640704u,6,-8},{4026531840u,6,-9},{3959422976u,6,9},{3925868544u,7,20},{3892314112u,7,21},{3825205248u,6,-10},{3758096384u,6,-11},{3690987520u,6,10},{3623878656u,6,11},{3590324224u,7,-21},{3573547008u,8,29},{3556769792u,8,-29},{3489660928u,6,13},{3422552064u,6,-13},{3355443200u,6,-12},{3288334336u,6,12},{3254779904u,7,-22},{3221225472u,7,22},{3154116608u,6,14},{3087007744u,6,15},{3019898880u,6,-14},{2986344448u,7,-23},{2952790016u,7,23},{2885681152u,6,-15},{2818572288u,6,-16},{2751463424u,6,16},{2717908992u,7,27},{2684354560u,7,-27},{2617245696u,6,17},{2550136832u,6,-17},{2533359616u,8,-30},{2516582400u,8,30},{2483027968u,7,24},{2415919104u,6,-18},{2281701376u,5,-1},{2147483648u,5,1},{2113929216u,7,-24},{2080374784u,7,25},{2013265920u,6,18},{1879048192u,5,-3},{1744830464u,5,3},{1610612736u,5,5},{1476395008u,5,0},{1342177280u,5,-2},{1275068416u,6,19},{1207959552u,6,-19},{1073741824u,5,-5},{939524096u,5,-4},{805306368u,5,-7},{671088640u,5,2},{536870912u,5,4},{402653184u,5,7},{369098752u,7,-25},{335544320u,7,-26},{301989888u,7,-28},{285212672u,8,-31},{268435456u,8,31},{134217728u,5,6},{0u,5,-6},};
 
-    // region C (subbands 23..31)
-    d->Region_C[0].Code= 1; d->Region_C[0].Length= 1;
-    d->Region_C[1].Code= 1; d->Region_C[1].Length= 2;
-    d->Region_C[2].Code= 1; d->Region_C[2].Length= 3;
-    d->Region_C[3].Code= 0; d->Region_C[3].Length= 3;
+const HuffmanTyp*   mpc_table_SampleHuff [18] = {
+	NULL,mpc_table_Entropie_1,mpc_table_Entropie_2,mpc_table_Entropie_3,mpc_table_Entropie_4,mpc_table_Entropie_5,mpc_table_Entropie_6,mpc_table_Entropie_7,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
+};
 
-    // DSCF
-    d->DSCF_Entropie[ 6].Code=  0; d->DSCF_Entropie[ 6].Length= 2;
-    d->DSCF_Entropie[ 7].Code=  7; d->DSCF_Entropie[ 7].Length= 3;
-    d->DSCF_Entropie[ 5].Code=  4; d->DSCF_Entropie[ 5].Length= 3;
-    d->DSCF_Entropie[ 8].Code=  3; d->DSCF_Entropie[ 8].Length= 3;
-    d->DSCF_Entropie[ 9].Code= 13; d->DSCF_Entropie[ 9].Length= 4;
-    d->DSCF_Entropie[ 4].Code= 11; d->DSCF_Entropie[ 4].Length= 4;
-    d->DSCF_Entropie[10].Code= 10; d->DSCF_Entropie[10].Length= 4;
-    d->DSCF_Entropie[ 2].Code=  4; d->DSCF_Entropie[ 2].Length= 4;
-    d->DSCF_Entropie[11].Code= 25; d->DSCF_Entropie[11].Length= 5;
-    d->DSCF_Entropie[ 3].Code= 24; d->DSCF_Entropie[ 3].Length= 5;
-    d->DSCF_Entropie[ 1].Code= 11; d->DSCF_Entropie[ 1].Length= 5;
-    d->DSCF_Entropie[12].Code= 21; d->DSCF_Entropie[12].Length= 6;
-    d->DSCF_Entropie[ 0].Code= 20; d->DSCF_Entropie[ 0].Length= 6;
-
-    // first quantizer
-    d->Entropie_1[1].Code= 1; d->Entropie_1[1].Length= 1;
-    d->Entropie_1[0].Code= 1; d->Entropie_1[0].Length= 2;
-    d->Entropie_1[2].Code= 0; d->Entropie_1[2].Length= 2;
-
-    // second quantizer
-    d->Entropie_2[2].Code=  3; d->Entropie_2[2].Length= 2;
-    d->Entropie_2[3].Code=  1; d->Entropie_2[3].Length= 2;
-    d->Entropie_2[1].Code=  0; d->Entropie_2[1].Length= 2;
-    d->Entropie_2[4].Code=  5; d->Entropie_2[4].Length= 3;
-    d->Entropie_2[0].Code=  4; d->Entropie_2[0].Length= 3;
-
-    // third quantizer
-    d->Entropie_3[3].Code=  3; d->Entropie_3[3].Length= 2;
-    d->Entropie_3[2].Code=  1; d->Entropie_3[2].Length= 2;
-    d->Entropie_3[4].Code=  0; d->Entropie_3[4].Length= 2;
-    d->Entropie_3[1].Code=  5; d->Entropie_3[1].Length= 3;
-    d->Entropie_3[5].Code=  9; d->Entropie_3[5].Length= 4;
-    d->Entropie_3[0].Code= 17; d->Entropie_3[0].Length= 5;
-    d->Entropie_3[6].Code= 16; d->Entropie_3[6].Length= 5;
-
-    // forth quantizer
-    d->Entropie_4[4].Code=  0; d->Entropie_4[4].Length= 2;
-    d->Entropie_4[5].Code=  6; d->Entropie_4[5].Length= 3;
-    d->Entropie_4[3].Code=  5; d->Entropie_4[3].Length= 3;
-    d->Entropie_4[6].Code=  4; d->Entropie_4[6].Length= 3;
-    d->Entropie_4[2].Code=  3; d->Entropie_4[2].Length= 3;
-    d->Entropie_4[7].Code= 15; d->Entropie_4[7].Length= 4;
-    d->Entropie_4[1].Code= 14; d->Entropie_4[1].Length= 4;
-    d->Entropie_4[0].Code=  5; d->Entropie_4[0].Length= 4;
-    d->Entropie_4[8].Code=  4; d->Entropie_4[8].Length= 4;
-
-    // fifth quantizer
-    d->Entropie_5[7 ].Code=  4; d->Entropie_5[7 ].Length= 3;
-    d->Entropie_5[8 ].Code=  3; d->Entropie_5[8 ].Length= 3;
-    d->Entropie_5[6 ].Code=  2; d->Entropie_5[6 ].Length= 3;
-    d->Entropie_5[9 ].Code=  0; d->Entropie_5[9 ].Length= 3;
-    d->Entropie_5[5 ].Code= 15; d->Entropie_5[5 ].Length= 4;
-    d->Entropie_5[4 ].Code= 13; d->Entropie_5[4 ].Length= 4;
-    d->Entropie_5[10].Code= 12; d->Entropie_5[10].Length= 4;
-    d->Entropie_5[11].Code= 10; d->Entropie_5[11].Length= 4;
-    d->Entropie_5[3 ].Code=  3; d->Entropie_5[3 ].Length= 4;
-    d->Entropie_5[12].Code=  2; d->Entropie_5[12].Length= 4;
-    d->Entropie_5[2 ].Code= 29; d->Entropie_5[2 ].Length= 5;
-    d->Entropie_5[1 ].Code= 23; d->Entropie_5[1 ].Length= 5;
-    d->Entropie_5[13].Code= 22; d->Entropie_5[13].Length= 5;
-    d->Entropie_5[0 ].Code= 57; d->Entropie_5[0 ].Length= 6;
-    d->Entropie_5[14].Code= 56; d->Entropie_5[14].Length= 6;
-
-    // sixth quantizer
-    d->Entropie_6[15].Code=  9; d->Entropie_6[15].Length= 4;
-    d->Entropie_6[16].Code=  8; d->Entropie_6[16].Length= 4;
-    d->Entropie_6[14].Code=  7; d->Entropie_6[14].Length= 4;
-    d->Entropie_6[18].Code=  6; d->Entropie_6[18].Length= 4;
-    d->Entropie_6[17].Code=  5; d->Entropie_6[17].Length= 4;
-    d->Entropie_6[12].Code=  3; d->Entropie_6[12].Length= 4;
-    d->Entropie_6[13].Code=  2; d->Entropie_6[13].Length= 4;
-    d->Entropie_6[19].Code=  0; d->Entropie_6[19].Length= 4;
-    d->Entropie_6[11].Code= 31; d->Entropie_6[11].Length= 5;
-    d->Entropie_6[20].Code= 30; d->Entropie_6[20].Length= 5;
-    d->Entropie_6[10].Code= 29; d->Entropie_6[10].Length= 5;
-    d->Entropie_6[9 ].Code= 27; d->Entropie_6[9 ].Length= 5;
-    d->Entropie_6[21].Code= 26; d->Entropie_6[21].Length= 5;
-    d->Entropie_6[22].Code= 25; d->Entropie_6[22].Length= 5;
-    d->Entropie_6[8 ].Code= 24; d->Entropie_6[8 ].Length= 5;
-    d->Entropie_6[7 ].Code= 23; d->Entropie_6[7 ].Length= 5;
-    d->Entropie_6[23].Code= 21; d->Entropie_6[23].Length= 5;
-    d->Entropie_6[6 ].Code=  9; d->Entropie_6[6 ].Length= 5;
-    d->Entropie_6[24].Code=  3; d->Entropie_6[24].Length= 5;
-    d->Entropie_6[25].Code= 57; d->Entropie_6[25].Length= 6;
-    d->Entropie_6[5 ].Code= 56; d->Entropie_6[5 ].Length= 6;
-    d->Entropie_6[4 ].Code= 45; d->Entropie_6[4 ].Length= 6;
-    d->Entropie_6[26].Code= 41; d->Entropie_6[26].Length= 6;
-    d->Entropie_6[2 ].Code= 40; d->Entropie_6[2 ].Length= 6;
-    d->Entropie_6[27].Code= 17; d->Entropie_6[27].Length= 6;
-    d->Entropie_6[28].Code= 16; d->Entropie_6[28].Length= 6;
-    d->Entropie_6[3 ].Code=  5; d->Entropie_6[3 ].Length= 6;
-    d->Entropie_6[29].Code= 89; d->Entropie_6[29].Length= 7;
-    d->Entropie_6[1 ].Code= 88; d->Entropie_6[1 ].Length= 7;
-    d->Entropie_6[30].Code=  9; d->Entropie_6[30].Length= 7;
-    d->Entropie_6[0 ].Code=  8; d->Entropie_6[0 ].Length= 7;
-
-    // seventh quantizer
-    d->Entropie_7[25].Code=   0; d->Entropie_7[25].Length= 5;
-    d->Entropie_7[37].Code=   1; d->Entropie_7[37].Length= 5;
-    d->Entropie_7[62].Code=  16; d->Entropie_7[62].Length= 8;
-    d->Entropie_7[ 0].Code=  17; d->Entropie_7[ 0].Length= 8;
-    d->Entropie_7[ 3].Code=   9; d->Entropie_7[ 3].Length= 7;
-    d->Entropie_7[ 5].Code=  10; d->Entropie_7[ 5].Length= 7;
-    d->Entropie_7[ 6].Code=  11; d->Entropie_7[ 6].Length= 7;
-    d->Entropie_7[38].Code=   3; d->Entropie_7[38].Length= 5;
-    d->Entropie_7[35].Code=   4; d->Entropie_7[35].Length= 5;
-    d->Entropie_7[33].Code=   5; d->Entropie_7[33].Length= 5;
-    d->Entropie_7[24].Code=   6; d->Entropie_7[24].Length= 5;
-    d->Entropie_7[27].Code=   7; d->Entropie_7[27].Length= 5;
-    d->Entropie_7[26].Code=   8; d->Entropie_7[26].Length= 5;
-    d->Entropie_7[12].Code=  18; d->Entropie_7[12].Length= 6;
-    d->Entropie_7[50].Code=  19; d->Entropie_7[50].Length= 6;
-    d->Entropie_7[29].Code=  10; d->Entropie_7[29].Length= 5;
-    d->Entropie_7[31].Code=  11; d->Entropie_7[31].Length= 5;
-    d->Entropie_7[36].Code=  12; d->Entropie_7[36].Length= 5;
-    d->Entropie_7[34].Code=  13; d->Entropie_7[34].Length= 5;
-    d->Entropie_7[28].Code=  14; d->Entropie_7[28].Length= 5;
-    d->Entropie_7[49].Code=  30; d->Entropie_7[49].Length= 6;
-    d->Entropie_7[56].Code=  62; d->Entropie_7[56].Length= 7;
-    d->Entropie_7[ 7].Code=  63; d->Entropie_7[ 7].Length= 7;
-    d->Entropie_7[32].Code=  16; d->Entropie_7[32].Length= 5;
-    d->Entropie_7[30].Code=  17; d->Entropie_7[30].Length= 5;
-    d->Entropie_7[13].Code=  36; d->Entropie_7[13].Length= 6;
-    d->Entropie_7[55].Code=  74; d->Entropie_7[55].Length= 7;
-    d->Entropie_7[61].Code= 150; d->Entropie_7[61].Length= 8;
-    d->Entropie_7[ 1].Code= 151; d->Entropie_7[ 1].Length= 8;
-    d->Entropie_7[14].Code=  38; d->Entropie_7[14].Length= 6;
-    d->Entropie_7[48].Code=  39; d->Entropie_7[48].Length= 6;
-    d->Entropie_7[ 4].Code=  80; d->Entropie_7[ 4].Length= 7;
-    d->Entropie_7[58].Code=  81; d->Entropie_7[58].Length= 7;
-    d->Entropie_7[47].Code=  41; d->Entropie_7[47].Length= 6;
-    d->Entropie_7[15].Code=  42; d->Entropie_7[15].Length= 6;
-    d->Entropie_7[16].Code=  43; d->Entropie_7[16].Length= 6;
-    d->Entropie_7[54].Code=  88; d->Entropie_7[54].Length= 7;
-    d->Entropie_7[ 8].Code=  89; d->Entropie_7[ 8].Length= 7;
-    d->Entropie_7[17].Code=  45; d->Entropie_7[17].Length= 6;
-    d->Entropie_7[46].Code=  46; d->Entropie_7[46].Length= 6;
-    d->Entropie_7[45].Code=  47; d->Entropie_7[45].Length= 6;
-    d->Entropie_7[53].Code=  96; d->Entropie_7[53].Length= 7;
-    d->Entropie_7[ 9].Code=  97; d->Entropie_7[ 9].Length= 7;
-    d->Entropie_7[43].Code=  49; d->Entropie_7[43].Length= 6;
-    d->Entropie_7[19].Code=  50; d->Entropie_7[19].Length= 6;
-    d->Entropie_7[18].Code=  51; d->Entropie_7[18].Length= 6;
-    d->Entropie_7[44].Code=  52; d->Entropie_7[44].Length= 6;
-    d->Entropie_7[ 2].Code= 212; d->Entropie_7[ 2].Length= 8;
-    d->Entropie_7[60].Code= 213; d->Entropie_7[60].Length= 8;
-    d->Entropie_7[10].Code= 107; d->Entropie_7[10].Length= 7;
-    d->Entropie_7[42].Code=  54; d->Entropie_7[42].Length= 6;
-    d->Entropie_7[41].Code=  55; d->Entropie_7[41].Length= 6;
-    d->Entropie_7[20].Code=  56; d->Entropie_7[20].Length= 6;
-    d->Entropie_7[21].Code=  57; d->Entropie_7[21].Length= 6;
-    d->Entropie_7[52].Code= 116; d->Entropie_7[52].Length= 7;
-    d->Entropie_7[51].Code= 117; d->Entropie_7[51].Length= 7;
-    d->Entropie_7[40].Code=  59; d->Entropie_7[40].Length= 6;
-    d->Entropie_7[22].Code=  60; d->Entropie_7[22].Length= 6;
-    d->Entropie_7[23].Code=  61; d->Entropie_7[23].Length= 6;
-    d->Entropie_7[39].Code=  62; d->Entropie_7[39].Length= 6;
-    d->Entropie_7[11].Code= 126; d->Entropie_7[11].Length= 7;
-    d->Entropie_7[57].Code= 254; d->Entropie_7[57].Length= 8;
-    d->Entropie_7[59].Code= 255; d->Entropie_7[59].Length= 8;
-}
+#endif //#ifdef MPC_SUPPORT_SV456
Index: trunk/src/huffsv7.c
===================================================================
--- trunk/src/huffsv7.c	(revision 7)
+++ trunk/src/huffsv7.c	(revision 10)
@@ -40,461 +40,42 @@
 #include <mpcdec/requant.h>
 
-void
-mpc_decoder_init_huffman_sv7(mpc_decoder *d) 
-{
-    mpc_decoder_init_huffman_sv7_tables(d);
-    mpc_decoder_resort_huff_tables(10, &(d->HuffHdr[0])   , 5);
-    mpc_decoder_resort_huff_tables( 4, &(d->HuffSCFI[0])  , 0);
-    mpc_decoder_resort_huff_tables(16, &(d->HuffDSCF[0])  , 7);
-    mpc_decoder_resort_huff_tables(27, &(d->HuffQ1[0][0]) , 0);
-    mpc_decoder_resort_huff_tables(27, &(d->HuffQ1[1][0]) , 0);
-    mpc_decoder_resort_huff_tables(25, &(d->HuffQ2[0][0]) , 0);
-    mpc_decoder_resort_huff_tables(25, &(d->HuffQ2[1][0]) , 0);
-    mpc_decoder_resort_huff_tables( 7, &(d->HuffQ3[0][0]) , Dc[3]);
-    mpc_decoder_resort_huff_tables( 7, &(d->HuffQ3[1][0]) , Dc[3]);
-    mpc_decoder_resort_huff_tables( 9, &(d->HuffQ4[0][0]) , Dc[4]);
-    mpc_decoder_resort_huff_tables( 9, &(d->HuffQ4[1][0]) , Dc[4]);
-    mpc_decoder_resort_huff_tables(15, &(d->HuffQ5[0][0]) , Dc[5]);
-    mpc_decoder_resort_huff_tables(15, &(d->HuffQ5[1][0]) , Dc[5]);
-    mpc_decoder_resort_huff_tables(31, &(d->HuffQ6[0][0]) , Dc[6]);
-    mpc_decoder_resort_huff_tables(31, &(d->HuffQ6[1][0]) , Dc[6]);
-    mpc_decoder_resort_huff_tables(63, &(d->HuffQ7[0][0]) , Dc[7]);
-    mpc_decoder_resort_huff_tables(63, &(d->HuffQ7[1][0]) , Dc[7]);
-}
+const HuffmanTyp	mpc_table_HuffHdr  [10] = 
+{{2147483648u,1,0},{1610612736u,3,1},{1577058304u,7,-4},{1568669696u,9,3},{1560281088u,9,4},{1543503872u,8,-5},{1476395008u,6,2},{1342177280u,5,-3},{1073741824u,4,-2},{0u,2,-1},};
+const HuffmanTyp    mpc_table_HuffSCFI [ 4] =
+{{2147483648u,1,1},{1610612736u,3,2},{1073741824u,3,0},{0u,2,3},};
+const HuffmanTyp    mpc_table_HuffDSCF [16] = 
+{{4160749568u,5,5},{4026531840u,5,-4},{3758096384u,4,3},{3489660928u,4,-3},{3221225472u,4,8},{2684354560u,3,1},{2415919104u,4,0},{2281701376u,5,-5},{2214592512u,6,7},{2147483648u,6,-7},{1610612736u,3,-1},{1073741824u,3,2},{805306368u,4,4},{671088640u,5,6},{536870912u,5,-6},{0u,3,-2},};
 
-void 
-mpc_decoder_init_huffman_sv7_tables(mpc_decoder *d) 
-{
-    /***************************** SCFI *******************************/
-    d->HuffSCFI[0].Code = 2; d->HuffSCFI[0].Length = 3;
-    d->HuffSCFI[1].Code = 1; d->HuffSCFI[1].Length = 1;
-    d->HuffSCFI[2].Code = 3; d->HuffSCFI[2].Length = 3;
-    d->HuffSCFI[3].Code = 0; d->HuffSCFI[3].Length = 2;
+static const HuffmanTyp    mpc_table_HuffQ1 [2] [3*3*3] = {
+	{{3758096384u,3,13},{3690987520u,6,26},{3623878656u,6,0},{3556769792u,6,20},{3489660928u,6,6},{3221225472u,4,14},{2952790016u,4,12},{2684354560u,4,4},{2415919104u,4,22},{2348810240u,6,8},{2281701376u,6,18},{2214592512u,6,24},{2147483648u,6,2},{1879048192u,4,16},{1610612736u,4,10},{1476395008u,5,17},{1342177280u,5,9},{1207959552u,5,1},{1073741824u,5,25},{939524096u,5,5},{805306368u,5,21},{671088640u,5,3},{536870912u,5,11},{402653184u,5,15},{268435456u,5,23},{134217728u,5,19},{0u,5,7},},
+	{{2147483648u,1,13},{2113929216u,7,15},{2080374784u,7,1},{2046820352u,7,11},{2013265920u,7,7},{1979711488u,7,17},{1946157056u,7,25},{1912602624u,7,19},{1904214016u,9,8},{1895825408u,9,18},{1887436800u,9,2},{1879048192u,9,24},{1845493760u,7,3},{1811939328u,7,23},{1778384896u,7,21},{1744830464u,7,5},{1728053248u,8,0},{1711276032u,8,26},{1694498816u,8,6},{1677721600u,8,20},{1610612736u,6,9},{1342177280u,4,14},{1073741824u,4,12},{805306368u,4,4},{536870912u,4,22},{268435456u,4,16},{0u,4,10},},
+};
+static const HuffmanTyp    mpc_table_HuffQ2 [2] [5*5] = {
+	{{4026531840u,4,13},{3758096384u,4,17},{3489660928u,4,7},{3221225472u,4,11},{3154116608u,6,1},{3087007744u,6,23},{3053453312u,7,4},{3019898880u,7,20},{2986344448u,7,0},{2952790016u,7,24},{2818572288u,5,22},{2684354560u,5,10},{2147483648u,3,12},{2013265920u,5,2},{1879048192u,5,14},{1610612736u,4,6},{1342177280u,4,18},{1073741824u,4,8},{805306368u,4,16},{671088640u,5,9},{536870912u,5,5},{402653184u,5,15},{268435456u,5,21},{134217728u,5,19},{0u,5,3},},
+	{{4160749568u,5,18},{4026531840u,5,6},{3892314112u,5,8},{3875536896u,8,3},{3871342592u,10,24},{3867148288u,10,4},{3862953984u,10,0},{3858759680u,10,20},{3825205248u,7,23},{3791650816u,7,1},{3758096384u,7,19},{3623878656u,5,16},{3590324224u,7,15},{3556769792u,7,21},{3523215360u,7,9},{3489660928u,7,5},{3422552064u,6,2},{3355443200u,6,10},{3288334336u,6,14},{3221225472u,6,22},{2147483648u,2,12},{1610612736u,3,13},{1073741824u,3,17},{536870912u,3,11},{0u,3,7},},
+};
+static const HuffmanTyp    mpc_table_HuffQ3 [2] [ 7] = {
+	{{3758096384u,3,1},{3489660928u,4,3},{3221225472u,4,-3},{2684354560u,3,2},{2147483648u,3,-2},{1073741824u,2,0},{0u,2,-1},},
+	{{3221225472u,2,0},{2147483648u,2,-1},{1073741824u,2,1},{805306368u,4,-2},{671088640u,5,3},{536870912u,5,-3},{0u,3,2},},
+};
+static const HuffmanTyp    mpc_table_HuffQ4 [2] [ 9] = {
+	{{3758096384u,3,0},{3221225472u,3,-1},{2684354560u,3,1},{2147483648u,3,-2},{1610612736u,3,2},{1342177280u,4,-4},{1073741824u,4,4},{536870912u,3,3},{0u,3,-3},},
+	{{3758096384u,3,1},{3489660928u,4,2},{3221225472u,4,-3},{2147483648u,2,0},{1610612736u,3,-2},{1342177280u,4,3},{1207959552u,5,-4},{1073741824u,5,4},{0u,2,-1},},
+};
+static const HuffmanTyp    mpc_table_HuffQ5 [2] [15] = {
+	{{4026531840u,4,2},{3892314112u,5,5},{3825205248u,6,-7},{3758096384u,6,7},{3489660928u,4,-3},{3221225472u,4,3},{3087007744u,5,-6},{2952790016u,5,6},{2684354560u,4,-4},{2415919104u,4,4},{2147483648u,4,-5},{1610612736u,3,0},{1073741824u,3,-1},{536870912u,3,1},{0u,3,-2},},
+	{{4026531840u,4,3},{3892314112u,5,4},{3858759680u,7,6},{3841982464u,8,-7},{3825205248u,8,7},{3758096384u,6,-6},{3221225472u,3,0},{2684354560u,3,-1},{2147483648u,3,1},{1610612736u,3,-2},{1073741824u,3,2},{939524096u,5,-5},{805306368u,5,5},{536870912u,4,-4},{0u,3,-3},},
+};
+static const HuffmanTyp    mpc_table_HuffQ6 [2] [31] = {
+	{{4160749568u,5,3},{4026531840u,5,-4},{3959422976u,6,-11},{3892314112u,6,12},{3758096384u,5,4},{3623878656u,5,6},{3489660928u,5,-5},{3355443200u,5,5},{3221225472u,5,7},{3087007744u,5,-7},{3019898880u,6,-12},{2952790016u,6,-13},{2818572288u,5,-6},{2684354560u,5,8},{2550136832u,5,-8},{2415919104u,5,9},{2281701376u,5,-9},{2214592512u,6,13},{2181038080u,7,-15},{2147483648u,7,15},{1879048192u,4,0},{1744830464u,5,-10},{1610612736u,5,10},{1342177280u,4,-1},{1073741824u,4,2},{805306368u,4,1},{536870912u,4,-2},{469762048u,6,14},{402653184u,6,-14},{268435456u,5,11},{0u,4,-3},},
+	{{4160749568u,5,-6},{4026531840u,5,6},{3758096384u,4,1},{3489660928u,4,-1},{3456106496u,7,10},{3422552064u,7,-10},{3405774848u,8,-11},{3397386240u,9,-12},{3395289088u,11,13},{3394764800u,13,15},{3394240512u,13,-14},{3393716224u,13,14},{3393191936u,13,-15},{3388997632u,10,-13},{3372220416u,8,11},{3355443200u,8,12},{3288334336u,6,-9},{3221225472u,6,9},{2952790016u,4,-2},{2684354560u,4,2},{2415919104u,4,3},{2147483648u,4,-3},{2013265920u,5,-7},{1879048192u,5,7},{1610612736u,4,-4},{1342177280u,4,4},{1207959552u,5,-8},{1073741824u,5,8},{805306368u,4,5},{536870912u,4,-5},{0u,3,0},},
+};
+static const HuffmanTyp    mpc_table_HuffQ7 [2] [63] = {
+	{{4227858432u,6,7},{4160749568u,6,8},{4093640704u,6,9},{4026531840u,6,-8},{3959422976u,6,11},{3925868544u,7,21},{3909091328u,8,-28},{3892314112u,8,28},{3825205248u,6,-9},{3791650816u,7,-22},{3758096384u,7,-21},{3690987520u,6,-10},{3623878656u,6,-11},{3556769792u,6,10},{3489660928u,6,12},{3422552064u,6,-13},{3388997632u,7,22},{3355443200u,7,23},{3288334336u,6,-12},{3221225472u,6,13},{3154116608u,6,14},{3087007744u,6,-14},{3053453312u,7,-23},{3036676096u,8,-29},{3019898880u,8,29},{2952790016u,6,-15},{2885681152u,6,15},{2818572288u,6,16},{2751463424u,6,-16},{2717908992u,7,-24},{2684354560u,7,24},{2617245696u,6,17},{2583691264u,7,-25},{2566914048u,8,-30},{2550136832u,8,30},{2483027968u,6,-17},{2415919104u,6,18},{2348810240u,6,-18},{2315255808u,7,25},{2281701376u,7,26},{2214592512u,6,19},{2181038080u,7,-26},{2147483648u,7,-27},{2013265920u,5,2},{1946157056u,6,-19},{1879048192u,6,20},{1744830464u,5,-1},{1728053248u,8,-31},{1711276032u,8,31},{1677721600u,7,27},{1610612736u,6,-20},{1476395008u,5,1},{1342177280u,5,-5},{1207959552u,5,-3},{1073741824u,5,3},{939524096u,5,0},{805306368u,5,-2},{671088640u,5,-4},{536870912u,5,4},{402653184u,5,5},{268435456u,5,-6},{134217728u,5,6},{0u,5,-7},},
+	{{4160749568u,5,-1},{4026531840u,5,2},{3892314112u,5,-2},{3758096384u,5,3},{3741319168u,8,-20},{3737124864u,10,24},{3736862720u,14,28},{3736600576u,14,-28},{3736338432u,14,-30},{3736076288u,14,30},{3735027712u,12,-27},{3734765568u,14,29},{3734503424u,14,-29},{3734241280u,14,31},{3733979136u,14,-31},{3732930560u,12,27},{3724541952u,9,-22},{3690987520u,7,-17},{3623878656u,6,-11},{3489660928u,5,-3},{3355443200u,5,4},{3221225472u,5,-4},{3187671040u,7,17},{3170893824u,8,20},{3162505216u,9,22},{3158310912u,10,-25},{3154116608u,10,-26},{3087007744u,6,12},{2952790016u,5,5},{2818572288u,5,-5},{2684354560u,5,6},{2550136832u,5,-6},{2483027968u,6,-12},{2449473536u,7,-18},{2415919104u,7,18},{2348810240u,6,13},{2281701376u,6,-13},{2147483648u,5,-7},{2080374784u,6,14},{2063597568u,8,21},{2046820352u,8,-21},{2013265920u,7,-19},{1879048192u,5,7},{1744830464u,5,8},{1677721600u,6,-14},{1610612736u,6,-15},{1476395008u,5,-8},{1409286144u,6,15},{1375731712u,7,19},{1371537408u,10,25},{1367343104u,10,26},{1358954496u,9,-23},{1350565888u,9,23},{1342177280u,9,-24},{1207959552u,5,-9},{1073741824u,5,9},{1006632960u,6,16},{939524096u,6,-16},{805306368u,5,10},{536870912u,4,0},{402653184u,5,-10},{268435456u,5,11},{0u,4,1},},
+};
 
-    /***************************** DSCF *******************************/
-    d->HuffDSCF[ 0].Code = 32; d->HuffDSCF[ 0].Length = 6;
-    d->HuffDSCF[ 1].Code =  4; d->HuffDSCF[ 1].Length = 5;
-    d->HuffDSCF[ 2].Code = 17; d->HuffDSCF[ 2].Length = 5;
-    d->HuffDSCF[ 3].Code = 30; d->HuffDSCF[ 3].Length = 5;
-    d->HuffDSCF[ 4].Code = 13; d->HuffDSCF[ 4].Length = 4;
-    d->HuffDSCF[ 5].Code =  0; d->HuffDSCF[ 5].Length = 3;
-    d->HuffDSCF[ 6].Code =  3; d->HuffDSCF[ 6].Length = 3;
-    d->HuffDSCF[ 7].Code =  9; d->HuffDSCF[ 7].Length = 4;
-    d->HuffDSCF[ 8].Code =  5; d->HuffDSCF[ 8].Length = 3;
-    d->HuffDSCF[ 9].Code =  2; d->HuffDSCF[ 9].Length = 3;
-    d->HuffDSCF[10].Code = 14; d->HuffDSCF[10].Length = 4;
-    d->HuffDSCF[11].Code =  3; d->HuffDSCF[11].Length = 4;
-    d->HuffDSCF[12].Code = 31; d->HuffDSCF[12].Length = 5;
-    d->HuffDSCF[13].Code =  5; d->HuffDSCF[13].Length = 5;
-    d->HuffDSCF[14].Code = 33; d->HuffDSCF[14].Length = 6;
-    d->HuffDSCF[15].Code = 12; d->HuffDSCF[15].Length = 4;
-
-    /************************* frame-header ***************************/
-    /***************** differential quantizer indizes *****************/
-    d->HuffHdr[0].Code =  92; d->HuffHdr[0].Length = 8;
-    d->HuffHdr[1].Code =  47; d->HuffHdr[1].Length = 7;
-    d->HuffHdr[2].Code =  10; d->HuffHdr[2].Length = 5;
-    d->HuffHdr[3].Code =   4; d->HuffHdr[3].Length = 4;
-    d->HuffHdr[4].Code =   0; d->HuffHdr[4].Length = 2;
-    d->HuffHdr[5].Code =   1; d->HuffHdr[5].Length = 1;
-    d->HuffHdr[6].Code =   3; d->HuffHdr[6].Length = 3;
-    d->HuffHdr[7].Code =  22; d->HuffHdr[7].Length = 6;
-    d->HuffHdr[8].Code = 187; d->HuffHdr[8].Length = 9;
-    d->HuffHdr[9].Code = 186; d->HuffHdr[9].Length = 9;
-
-    /********************** 3-step quantizer **************************/
-    /********************* 3 bundled samples **************************/
-    //less shaped, book 0
-    d->HuffQ1[0][ 0].Code = 54; d->HuffQ1[0][ 0].Length = 6;
-    d->HuffQ1[0][ 1].Code =  9; d->HuffQ1[0][ 1].Length = 5;
-    d->HuffQ1[0][ 2].Code = 32; d->HuffQ1[0][ 2].Length = 6;
-    d->HuffQ1[0][ 3].Code =  5; d->HuffQ1[0][ 3].Length = 5;
-    d->HuffQ1[0][ 4].Code = 10; d->HuffQ1[0][ 4].Length = 4;
-    d->HuffQ1[0][ 5].Code =  7; d->HuffQ1[0][ 5].Length = 5;
-    d->HuffQ1[0][ 6].Code = 52; d->HuffQ1[0][ 6].Length = 6;
-    d->HuffQ1[0][ 7].Code =  0; d->HuffQ1[0][ 7].Length = 5;
-    d->HuffQ1[0][ 8].Code = 35; d->HuffQ1[0][ 8].Length = 6;
-    d->HuffQ1[0][ 9].Code = 10; d->HuffQ1[0][ 9].Length = 5;
-    d->HuffQ1[0][10].Code =  6; d->HuffQ1[0][10].Length = 4;
-    d->HuffQ1[0][11].Code =  4; d->HuffQ1[0][11].Length = 5;
-    d->HuffQ1[0][12].Code = 11; d->HuffQ1[0][12].Length = 4;
-    d->HuffQ1[0][13].Code =  7; d->HuffQ1[0][13].Length = 3;
-    d->HuffQ1[0][14].Code = 12; d->HuffQ1[0][14].Length = 4;
-    d->HuffQ1[0][15].Code =  3; d->HuffQ1[0][15].Length = 5;
-    d->HuffQ1[0][16].Code =  7; d->HuffQ1[0][16].Length = 4;
-    d->HuffQ1[0][17].Code = 11; d->HuffQ1[0][17].Length = 5;
-    d->HuffQ1[0][18].Code = 34; d->HuffQ1[0][18].Length = 6;
-    d->HuffQ1[0][19].Code =  1; d->HuffQ1[0][19].Length = 5;
-    d->HuffQ1[0][20].Code = 53; d->HuffQ1[0][20].Length = 6;
-    d->HuffQ1[0][21].Code =  6; d->HuffQ1[0][21].Length = 5;
-    d->HuffQ1[0][22].Code =  9; d->HuffQ1[0][22].Length = 4;
-    d->HuffQ1[0][23].Code =  2; d->HuffQ1[0][23].Length = 5;
-    d->HuffQ1[0][24].Code = 33; d->HuffQ1[0][24].Length = 6;
-    d->HuffQ1[0][25].Code =  8; d->HuffQ1[0][25].Length = 5;
-    d->HuffQ1[0][26].Code = 55; d->HuffQ1[0][26].Length = 6;
-
-    //more shaped, book 1
-    d->HuffQ1[1][ 0].Code = 103; d->HuffQ1[1][ 0].Length = 8;
-    d->HuffQ1[1][ 1].Code =  62; d->HuffQ1[1][ 1].Length = 7;
-    d->HuffQ1[1][ 2].Code = 225; d->HuffQ1[1][ 2].Length = 9;
-    d->HuffQ1[1][ 3].Code =  55; d->HuffQ1[1][ 3].Length = 7;
-    d->HuffQ1[1][ 4].Code =   3; d->HuffQ1[1][ 4].Length = 4;
-    d->HuffQ1[1][ 5].Code =  52; d->HuffQ1[1][ 5].Length = 7;
-    d->HuffQ1[1][ 6].Code = 101; d->HuffQ1[1][ 6].Length = 8;
-    d->HuffQ1[1][ 7].Code =  60; d->HuffQ1[1][ 7].Length = 7;
-    d->HuffQ1[1][ 8].Code = 227; d->HuffQ1[1][ 8].Length = 9;
-    d->HuffQ1[1][ 9].Code =  24; d->HuffQ1[1][ 9].Length = 6;
-    d->HuffQ1[1][10].Code =   0; d->HuffQ1[1][10].Length = 4;
-    d->HuffQ1[1][11].Code =  61; d->HuffQ1[1][11].Length = 7;
-    d->HuffQ1[1][12].Code =   4; d->HuffQ1[1][12].Length = 4;
-    d->HuffQ1[1][13].Code =   1; d->HuffQ1[1][13].Length = 1;
-    d->HuffQ1[1][14].Code =   5; d->HuffQ1[1][14].Length = 4;
-    d->HuffQ1[1][15].Code =  63; d->HuffQ1[1][15].Length = 7;
-    d->HuffQ1[1][16].Code =   1; d->HuffQ1[1][16].Length = 4;
-    d->HuffQ1[1][17].Code =  59; d->HuffQ1[1][17].Length = 7;
-    d->HuffQ1[1][18].Code = 226; d->HuffQ1[1][18].Length = 9;
-    d->HuffQ1[1][19].Code =  57; d->HuffQ1[1][19].Length = 7;
-    d->HuffQ1[1][20].Code = 100; d->HuffQ1[1][20].Length = 8;
-    d->HuffQ1[1][21].Code =  53; d->HuffQ1[1][21].Length = 7;
-    d->HuffQ1[1][22].Code =   2; d->HuffQ1[1][22].Length = 4;
-    d->HuffQ1[1][23].Code =  54; d->HuffQ1[1][23].Length = 7;
-    d->HuffQ1[1][24].Code = 224; d->HuffQ1[1][24].Length = 9;
-    d->HuffQ1[1][25].Code =  58; d->HuffQ1[1][25].Length = 7;
-    d->HuffQ1[1][26].Code = 102; d->HuffQ1[1][26].Length = 8;
-
-    /********************** 5-step quantizer **************************/
-    /********************* 2 bundled samples **************************/
-    //less shaped, book 0
-    d->HuffQ2[0][ 0].Code =  89; d->HuffQ2[0][ 0].Length = 7;
-    d->HuffQ2[0][ 1].Code =  47; d->HuffQ2[0][ 1].Length = 6;
-    d->HuffQ2[0][ 2].Code =  15; d->HuffQ2[0][ 2].Length = 5;
-    d->HuffQ2[0][ 3].Code =   0; d->HuffQ2[0][ 3].Length = 5;
-    d->HuffQ2[0][ 4].Code =  91; d->HuffQ2[0][ 4].Length = 7;
-    d->HuffQ2[0][ 5].Code =   4; d->HuffQ2[0][ 5].Length = 5;
-    d->HuffQ2[0][ 6].Code =   6; d->HuffQ2[0][ 6].Length = 4;
-    d->HuffQ2[0][ 7].Code =  13; d->HuffQ2[0][ 7].Length = 4;
-    d->HuffQ2[0][ 8].Code =   4; d->HuffQ2[0][ 8].Length = 4;
-    d->HuffQ2[0][ 9].Code =   5; d->HuffQ2[0][ 9].Length = 5;
-    d->HuffQ2[0][10].Code =  20; d->HuffQ2[0][10].Length = 5;
-    d->HuffQ2[0][11].Code =  12; d->HuffQ2[0][11].Length = 4;
-    d->HuffQ2[0][12].Code =   4; d->HuffQ2[0][12].Length = 3;
-    d->HuffQ2[0][13].Code =  15; d->HuffQ2[0][13].Length = 4;
-    d->HuffQ2[0][14].Code =  14; d->HuffQ2[0][14].Length = 5;
-    d->HuffQ2[0][15].Code =   3; d->HuffQ2[0][15].Length = 5;
-    d->HuffQ2[0][16].Code =   3; d->HuffQ2[0][16].Length = 4;
-    d->HuffQ2[0][17].Code =  14; d->HuffQ2[0][17].Length = 4;
-    d->HuffQ2[0][18].Code =   5; d->HuffQ2[0][18].Length = 4;
-    d->HuffQ2[0][19].Code =   1; d->HuffQ2[0][19].Length = 5;
-    d->HuffQ2[0][20].Code =  90; d->HuffQ2[0][20].Length = 7;
-    d->HuffQ2[0][21].Code =   2; d->HuffQ2[0][21].Length = 5;
-    d->HuffQ2[0][22].Code =  21; d->HuffQ2[0][22].Length = 5;
-    d->HuffQ2[0][23].Code =  46; d->HuffQ2[0][23].Length = 6;
-    d->HuffQ2[0][24].Code =  88; d->HuffQ2[0][24].Length = 7;
-
-    //more shaped, book 1
-    d->HuffQ2[1][ 0].Code =  921; d->HuffQ2[1][ 0].Length = 10;
-    d->HuffQ2[1][ 1].Code =  113; d->HuffQ2[1][ 1].Length =  7;
-    d->HuffQ2[1][ 2].Code =   51; d->HuffQ2[1][ 2].Length =  6;
-    d->HuffQ2[1][ 3].Code =  231; d->HuffQ2[1][ 3].Length =  8;
-    d->HuffQ2[1][ 4].Code =  922; d->HuffQ2[1][ 4].Length = 10;
-    d->HuffQ2[1][ 5].Code =  104; d->HuffQ2[1][ 5].Length =  7;
-    d->HuffQ2[1][ 6].Code =   30; d->HuffQ2[1][ 6].Length =  5;
-    d->HuffQ2[1][ 7].Code =    0; d->HuffQ2[1][ 7].Length =  3;
-    d->HuffQ2[1][ 8].Code =   29; d->HuffQ2[1][ 8].Length =  5;
-    d->HuffQ2[1][ 9].Code =  105; d->HuffQ2[1][ 9].Length =  7;
-    d->HuffQ2[1][10].Code =   50; d->HuffQ2[1][10].Length =  6;
-    d->HuffQ2[1][11].Code =    1; d->HuffQ2[1][11].Length =  3;
-    d->HuffQ2[1][12].Code =    2; d->HuffQ2[1][12].Length =  2;
-    d->HuffQ2[1][13].Code =    3; d->HuffQ2[1][13].Length =  3;
-    d->HuffQ2[1][14].Code =   49; d->HuffQ2[1][14].Length =  6;
-    d->HuffQ2[1][15].Code =  107; d->HuffQ2[1][15].Length =  7;
-    d->HuffQ2[1][16].Code =   27; d->HuffQ2[1][16].Length =  5;
-    d->HuffQ2[1][17].Code =    2; d->HuffQ2[1][17].Length =  3;
-    d->HuffQ2[1][18].Code =   31; d->HuffQ2[1][18].Length =  5;
-    d->HuffQ2[1][19].Code =  112; d->HuffQ2[1][19].Length =  7;
-    d->HuffQ2[1][20].Code =  920; d->HuffQ2[1][20].Length = 10;
-    d->HuffQ2[1][21].Code =  106; d->HuffQ2[1][21].Length =  7;
-    d->HuffQ2[1][22].Code =   48; d->HuffQ2[1][22].Length =  6;
-    d->HuffQ2[1][23].Code =  114; d->HuffQ2[1][23].Length =  7;
-    d->HuffQ2[1][24].Code =  923; d->HuffQ2[1][24].Length = 10;
-
-    /********************** 7-step quantizer **************************/
-    /*********************** single samples ***************************/
-    //less shaped, book 0
-    d->HuffQ3[0][0].Code = 12; d->HuffQ3[0][0].Length = 4;
-    d->HuffQ3[0][1].Code =  4; d->HuffQ3[0][1].Length = 3;
-    d->HuffQ3[0][2].Code =  0; d->HuffQ3[0][2].Length = 2;
-    d->HuffQ3[0][3].Code =  1; d->HuffQ3[0][3].Length = 2;
-    d->HuffQ3[0][4].Code =  7; d->HuffQ3[0][4].Length = 3;
-    d->HuffQ3[0][5].Code =  5; d->HuffQ3[0][5].Length = 3;
-    d->HuffQ3[0][6].Code = 13; d->HuffQ3[0][6].Length = 4;
-
-    //more shaped, book 1
-    d->HuffQ3[1][0].Code = 4; d->HuffQ3[1][0].Length = 5;
-    d->HuffQ3[1][1].Code = 3; d->HuffQ3[1][1].Length = 4;
-    d->HuffQ3[1][2].Code = 2; d->HuffQ3[1][2].Length = 2;
-    d->HuffQ3[1][3].Code = 3; d->HuffQ3[1][3].Length = 2;
-    d->HuffQ3[1][4].Code = 1; d->HuffQ3[1][4].Length = 2;
-    d->HuffQ3[1][5].Code = 0; d->HuffQ3[1][5].Length = 3;
-    d->HuffQ3[1][6].Code = 5; d->HuffQ3[1][6].Length = 5;
-
-    /********************** 9-step quantizer **************************/
-    /*********************** single samples ***************************/
-    //less shaped, book 0
-    d->HuffQ4[0][0].Code = 5; d->HuffQ4[0][0].Length = 4;
-    d->HuffQ4[0][1].Code = 0; d->HuffQ4[0][1].Length = 3;
-    d->HuffQ4[0][2].Code = 4; d->HuffQ4[0][2].Length = 3;
-    d->HuffQ4[0][3].Code = 6; d->HuffQ4[0][3].Length = 3;
-    d->HuffQ4[0][4].Code = 7; d->HuffQ4[0][4].Length = 3;
-    d->HuffQ4[0][5].Code = 5; d->HuffQ4[0][5].Length = 3;
-    d->HuffQ4[0][6].Code = 3; d->HuffQ4[0][6].Length = 3;
-    d->HuffQ4[0][7].Code = 1; d->HuffQ4[0][7].Length = 3;
-    d->HuffQ4[0][8].Code = 4; d->HuffQ4[0][8].Length = 4;
-
-    //more shaped, book 1
-    d->HuffQ4[1][0].Code =  9; d->HuffQ4[1][0].Length = 5;
-    d->HuffQ4[1][1].Code = 12; d->HuffQ4[1][1].Length = 4;
-    d->HuffQ4[1][2].Code =  3; d->HuffQ4[1][2].Length = 3;
-    d->HuffQ4[1][3].Code =  0; d->HuffQ4[1][3].Length = 2;
-    d->HuffQ4[1][4].Code =  2; d->HuffQ4[1][4].Length = 2;
-    d->HuffQ4[1][5].Code =  7; d->HuffQ4[1][5].Length = 3;
-    d->HuffQ4[1][6].Code = 13; d->HuffQ4[1][6].Length = 4;
-    d->HuffQ4[1][7].Code =  5; d->HuffQ4[1][7].Length = 4;
-    d->HuffQ4[1][8].Code =  8; d->HuffQ4[1][8].Length = 5;
-
-    /********************* 15-step quantizer **************************/
-    /*********************** single samples ***************************/
-    //less shaped, book 0
-    d->HuffQ5[0][ 0].Code = 57; d->HuffQ5[0][ 0].Length = 6;
-    d->HuffQ5[0][ 1].Code = 23; d->HuffQ5[0][ 1].Length = 5;
-    d->HuffQ5[0][ 2].Code =  8; d->HuffQ5[0][ 2].Length = 4;
-    d->HuffQ5[0][ 3].Code = 10; d->HuffQ5[0][ 3].Length = 4;
-    d->HuffQ5[0][ 4].Code = 13; d->HuffQ5[0][ 4].Length = 4;
-    d->HuffQ5[0][ 5].Code =  0; d->HuffQ5[0][ 5].Length = 3;
-    d->HuffQ5[0][ 6].Code =  2; d->HuffQ5[0][ 6].Length = 3;
-    d->HuffQ5[0][ 7].Code =  3; d->HuffQ5[0][ 7].Length = 3;
-    d->HuffQ5[0][ 8].Code =  1; d->HuffQ5[0][ 8].Length = 3;
-    d->HuffQ5[0][ 9].Code = 15; d->HuffQ5[0][ 9].Length = 4;
-    d->HuffQ5[0][10].Code = 12; d->HuffQ5[0][10].Length = 4;
-    d->HuffQ5[0][11].Code =  9; d->HuffQ5[0][11].Length = 4;
-    d->HuffQ5[0][12].Code = 29; d->HuffQ5[0][12].Length = 5;
-    d->HuffQ5[0][13].Code = 22; d->HuffQ5[0][13].Length = 5;
-    d->HuffQ5[0][14].Code = 56; d->HuffQ5[0][14].Length = 6;
-
-    //more shaped, book 1
-    d->HuffQ5[1][ 0].Code = 229; d->HuffQ5[1][ 0].Length = 8;
-    d->HuffQ5[1][ 1].Code =  56; d->HuffQ5[1][ 1].Length = 6;
-    d->HuffQ5[1][ 2].Code =   7; d->HuffQ5[1][ 2].Length = 5;
-    d->HuffQ5[1][ 3].Code =   2; d->HuffQ5[1][ 3].Length = 4;
-    d->HuffQ5[1][ 4].Code =   0; d->HuffQ5[1][ 4].Length = 3;
-    d->HuffQ5[1][ 5].Code =   3; d->HuffQ5[1][ 5].Length = 3;
-    d->HuffQ5[1][ 6].Code =   5; d->HuffQ5[1][ 6].Length = 3;
-    d->HuffQ5[1][ 7].Code =   6; d->HuffQ5[1][ 7].Length = 3;
-    d->HuffQ5[1][ 8].Code =   4; d->HuffQ5[1][ 8].Length = 3;
-    d->HuffQ5[1][ 9].Code =   2; d->HuffQ5[1][ 9].Length = 3;
-    d->HuffQ5[1][10].Code =  15; d->HuffQ5[1][10].Length = 4;
-    d->HuffQ5[1][11].Code =  29; d->HuffQ5[1][11].Length = 5;
-    d->HuffQ5[1][12].Code =   6; d->HuffQ5[1][12].Length = 5;
-    d->HuffQ5[1][13].Code = 115; d->HuffQ5[1][13].Length = 7;
-    d->HuffQ5[1][14].Code = 228; d->HuffQ5[1][14].Length = 8;
-
-    /********************* 31-step quantizer **************************/
-    /*********************** single samples ***************************/
-    //less shaped, book 0
-    d->HuffQ6[0][ 0].Code =  65; d->HuffQ6[0][ 0].Length = 7;
-    d->HuffQ6[0][ 1].Code =   6; d->HuffQ6[0][ 1].Length = 6;
-    d->HuffQ6[0][ 2].Code =  44; d->HuffQ6[0][ 2].Length = 6;
-    d->HuffQ6[0][ 3].Code =  45; d->HuffQ6[0][ 3].Length = 6;
-    d->HuffQ6[0][ 4].Code =  59; d->HuffQ6[0][ 4].Length = 6;
-    d->HuffQ6[0][ 5].Code =  13; d->HuffQ6[0][ 5].Length = 5;
-    d->HuffQ6[0][ 6].Code =  17; d->HuffQ6[0][ 6].Length = 5;
-    d->HuffQ6[0][ 7].Code =  19; d->HuffQ6[0][ 7].Length = 5;
-    d->HuffQ6[0][ 8].Code =  23; d->HuffQ6[0][ 8].Length = 5;
-    d->HuffQ6[0][ 9].Code =  21; d->HuffQ6[0][ 9].Length = 5;
-    d->HuffQ6[0][10].Code =  26; d->HuffQ6[0][10].Length = 5;
-    d->HuffQ6[0][11].Code =  30; d->HuffQ6[0][11].Length = 5;
-    d->HuffQ6[0][12].Code =   0; d->HuffQ6[0][12].Length = 4;
-    d->HuffQ6[0][13].Code =   2; d->HuffQ6[0][13].Length = 4;
-    d->HuffQ6[0][14].Code =   5; d->HuffQ6[0][14].Length = 4;
-    d->HuffQ6[0][15].Code =   7; d->HuffQ6[0][15].Length = 4;
-    d->HuffQ6[0][16].Code =   3; d->HuffQ6[0][16].Length = 4;
-    d->HuffQ6[0][17].Code =   4; d->HuffQ6[0][17].Length = 4;
-    d->HuffQ6[0][18].Code =  31; d->HuffQ6[0][18].Length = 5;
-    d->HuffQ6[0][19].Code =  28; d->HuffQ6[0][19].Length = 5;
-    d->HuffQ6[0][20].Code =  25; d->HuffQ6[0][20].Length = 5;
-    d->HuffQ6[0][21].Code =  27; d->HuffQ6[0][21].Length = 5;
-    d->HuffQ6[0][22].Code =  24; d->HuffQ6[0][22].Length = 5;
-    d->HuffQ6[0][23].Code =  20; d->HuffQ6[0][23].Length = 5;
-    d->HuffQ6[0][24].Code =  18; d->HuffQ6[0][24].Length = 5;
-    d->HuffQ6[0][25].Code =  12; d->HuffQ6[0][25].Length = 5;
-    d->HuffQ6[0][26].Code =   2; d->HuffQ6[0][26].Length = 5;
-    d->HuffQ6[0][27].Code =  58; d->HuffQ6[0][27].Length = 6;
-    d->HuffQ6[0][28].Code =  33; d->HuffQ6[0][28].Length = 6;
-    d->HuffQ6[0][29].Code =   7; d->HuffQ6[0][29].Length = 6;
-    d->HuffQ6[0][30].Code =  64; d->HuffQ6[0][30].Length = 7;
-
-    //more shaped, book 1
-    d->HuffQ6[1][ 0].Code = 6472; d->HuffQ6[1][ 0].Length = 13;
-    d->HuffQ6[1][ 1].Code = 6474; d->HuffQ6[1][ 1].Length = 13;
-    d->HuffQ6[1][ 2].Code =  808; d->HuffQ6[1][ 2].Length = 10;
-    d->HuffQ6[1][ 3].Code =  405; d->HuffQ6[1][ 3].Length =  9;
-    d->HuffQ6[1][ 4].Code =  203; d->HuffQ6[1][ 4].Length =  8;
-    d->HuffQ6[1][ 5].Code =  102; d->HuffQ6[1][ 5].Length =  7;
-    d->HuffQ6[1][ 6].Code =   49; d->HuffQ6[1][ 6].Length =  6;
-    d->HuffQ6[1][ 7].Code =    9; d->HuffQ6[1][ 7].Length =  5;
-    d->HuffQ6[1][ 8].Code =   15; d->HuffQ6[1][ 8].Length =  5;
-    d->HuffQ6[1][ 9].Code =   31; d->HuffQ6[1][ 9].Length =  5;
-    d->HuffQ6[1][10].Code =    2; d->HuffQ6[1][10].Length =  4;
-    d->HuffQ6[1][11].Code =    6; d->HuffQ6[1][11].Length =  4;
-    d->HuffQ6[1][12].Code =    8; d->HuffQ6[1][12].Length =  4;
-    d->HuffQ6[1][13].Code =   11; d->HuffQ6[1][13].Length =  4;
-    d->HuffQ6[1][14].Code =   13; d->HuffQ6[1][14].Length =  4;
-    d->HuffQ6[1][15].Code =    0; d->HuffQ6[1][15].Length =  3;
-    d->HuffQ6[1][16].Code =   14; d->HuffQ6[1][16].Length =  4;
-    d->HuffQ6[1][17].Code =   10; d->HuffQ6[1][17].Length =  4;
-    d->HuffQ6[1][18].Code =    9; d->HuffQ6[1][18].Length =  4;
-    d->HuffQ6[1][19].Code =    5; d->HuffQ6[1][19].Length =  4;
-    d->HuffQ6[1][20].Code =    3; d->HuffQ6[1][20].Length =  4;
-    d->HuffQ6[1][21].Code =   30; d->HuffQ6[1][21].Length =  5;
-    d->HuffQ6[1][22].Code =   14; d->HuffQ6[1][22].Length =  5;
-    d->HuffQ6[1][23].Code =    8; d->HuffQ6[1][23].Length =  5;
-    d->HuffQ6[1][24].Code =   48; d->HuffQ6[1][24].Length =  6;
-    d->HuffQ6[1][25].Code =  103; d->HuffQ6[1][25].Length =  7;
-    d->HuffQ6[1][26].Code =  201; d->HuffQ6[1][26].Length =  8;
-    d->HuffQ6[1][27].Code =  200; d->HuffQ6[1][27].Length =  8;
-    d->HuffQ6[1][28].Code = 1619; d->HuffQ6[1][28].Length = 11;
-    d->HuffQ6[1][29].Code = 6473; d->HuffQ6[1][29].Length = 13;
-    d->HuffQ6[1][30].Code = 6475; d->HuffQ6[1][30].Length = 13;
-
-    /********************* 63-step quantizer **************************/
-    /*********************** single samples ***************************/
-    //less shaped, book 0
-    d->HuffQ7[0][ 0].Code = 103; d->HuffQ7[0][ 0].Length = 8;    /* 0.003338  -          01100111  */
-    d->HuffQ7[0][ 1].Code = 153; d->HuffQ7[0][ 1].Length = 8;    /* 0.003766  -          10011001  */
-    d->HuffQ7[0][ 2].Code = 181; d->HuffQ7[0][ 2].Length = 8;    /* 0.004715  -          10110101  */
-    d->HuffQ7[0][ 3].Code = 233; d->HuffQ7[0][ 3].Length = 8;    /* 0.005528  -          11101001  */
-    d->HuffQ7[0][ 4].Code =  64; d->HuffQ7[0][ 4].Length = 7;    /* 0.006677  -           1000000  */
-    d->HuffQ7[0][ 5].Code =  65; d->HuffQ7[0][ 5].Length = 7;    /* 0.007041  -           1000001  */
-    d->HuffQ7[0][ 6].Code =  77; d->HuffQ7[0][ 6].Length = 7;    /* 0.007733  -           1001101  */
-    d->HuffQ7[0][ 7].Code =  81; d->HuffQ7[0][ 7].Length = 7;    /* 0.008296  -           1010001  */
-    d->HuffQ7[0][ 8].Code =  91; d->HuffQ7[0][ 8].Length = 7;    /* 0.009295  -           1011011  */
-    d->HuffQ7[0][ 9].Code = 113; d->HuffQ7[0][ 9].Length = 7;    /* 0.010814  -           1110001  */
-    d->HuffQ7[0][10].Code = 112; d->HuffQ7[0][10].Length = 7;    /* 0.010807  -           1110000  */
-    d->HuffQ7[0][11].Code =  24; d->HuffQ7[0][11].Length = 6;    /* 0.012748  -            011000  */
-    d->HuffQ7[0][12].Code =  29; d->HuffQ7[0][12].Length = 6;    /* 0.013390  -            011101  */
-    d->HuffQ7[0][13].Code =  35; d->HuffQ7[0][13].Length = 6;    /* 0.014224  -            100011  */
-    d->HuffQ7[0][14].Code =  37; d->HuffQ7[0][14].Length = 6;    /* 0.015201  -            100101  */
-    d->HuffQ7[0][15].Code =  41; d->HuffQ7[0][15].Length = 6;    /* 0.016642  -            101001  */
-    d->HuffQ7[0][16].Code =  44; d->HuffQ7[0][16].Length = 6;    /* 0.017292  -            101100  */
-    d->HuffQ7[0][17].Code =  46; d->HuffQ7[0][17].Length = 6;    /* 0.018647  -            101110  */
-    d->HuffQ7[0][18].Code =  51; d->HuffQ7[0][18].Length = 6;    /* 0.020473  -            110011  */
-    d->HuffQ7[0][19].Code =  49; d->HuffQ7[0][19].Length = 6;    /* 0.020152  -            110001  */
-    d->HuffQ7[0][20].Code =  54; d->HuffQ7[0][20].Length = 6;    /* 0.021315  -            110110  */
-    d->HuffQ7[0][21].Code =  55; d->HuffQ7[0][21].Length = 6;    /* 0.021358  -            110111  */
-    d->HuffQ7[0][22].Code =  57; d->HuffQ7[0][22].Length = 6;    /* 0.021700  -            111001  */
-    d->HuffQ7[0][23].Code =  60; d->HuffQ7[0][23].Length = 6;    /* 0.022449  -            111100  */
-    d->HuffQ7[0][24].Code =   0; d->HuffQ7[0][24].Length = 5;    /* 0.023063  -             00000  */
-    d->HuffQ7[0][25].Code =   2; d->HuffQ7[0][25].Length = 5;    /* 0.023854  -             00010  */
-    d->HuffQ7[0][26].Code =  10; d->HuffQ7[0][26].Length = 5;    /* 0.025481  -             01010  */
-    d->HuffQ7[0][27].Code =   5; d->HuffQ7[0][27].Length = 5;    /* 0.024867  -             00101  */
-    d->HuffQ7[0][28].Code =   9; d->HuffQ7[0][28].Length = 5;    /* 0.025352  -             01001  */
-    d->HuffQ7[0][29].Code =   6; d->HuffQ7[0][29].Length = 5;    /* 0.025074  -             00110  */
-    d->HuffQ7[0][30].Code =  13; d->HuffQ7[0][30].Length = 5;    /* 0.025745  -             01101  */
-    d->HuffQ7[0][31].Code =   7; d->HuffQ7[0][31].Length = 5;    /* 0.025195  -             00111  */
-    d->HuffQ7[0][32].Code =  11; d->HuffQ7[0][32].Length = 5;    /* 0.025502  -             01011  */
-    d->HuffQ7[0][33].Code =  15; d->HuffQ7[0][33].Length = 5;    /* 0.026251  -             01111  */
-    d->HuffQ7[0][34].Code =   8; d->HuffQ7[0][34].Length = 5;    /* 0.025260  -             01000  */
-    d->HuffQ7[0][35].Code =   4; d->HuffQ7[0][35].Length = 5;    /* 0.024418  -             00100  */
-    d->HuffQ7[0][36].Code =   3; d->HuffQ7[0][36].Length = 5;    /* 0.023983  -             00011  */
-    d->HuffQ7[0][37].Code =   1; d->HuffQ7[0][37].Length = 5;    /* 0.023697  -             00001  */
-    d->HuffQ7[0][38].Code =  63; d->HuffQ7[0][38].Length = 6;    /* 0.023041  -            111111  */
-    d->HuffQ7[0][39].Code =  62; d->HuffQ7[0][39].Length = 6;    /* 0.022656  -            111110  */
-    d->HuffQ7[0][40].Code =  61; d->HuffQ7[0][40].Length = 6;    /* 0.022549  -            111101  */
-    d->HuffQ7[0][41].Code =  53; d->HuffQ7[0][41].Length = 6;    /* 0.021151  -            110101  */
-    d->HuffQ7[0][42].Code =  59; d->HuffQ7[0][42].Length = 6;    /* 0.022042  -            111011  */
-    d->HuffQ7[0][43].Code =  52; d->HuffQ7[0][43].Length = 6;    /* 0.020837  -            110100  */
-    d->HuffQ7[0][44].Code =  48; d->HuffQ7[0][44].Length = 6;    /* 0.019446  -            110000  */
-    d->HuffQ7[0][45].Code =  47; d->HuffQ7[0][45].Length = 6;    /* 0.019189  -            101111  */
-    d->HuffQ7[0][46].Code =  43; d->HuffQ7[0][46].Length = 6;    /* 0.017177  -            101011  */
-    d->HuffQ7[0][47].Code =  42; d->HuffQ7[0][47].Length = 6;    /* 0.017035  -            101010  */
-    d->HuffQ7[0][48].Code =  39; d->HuffQ7[0][48].Length = 6;    /* 0.015287  -            100111  */
-    d->HuffQ7[0][49].Code =  36; d->HuffQ7[0][49].Length = 6;    /* 0.014559  -            100100  */
-    d->HuffQ7[0][50].Code =  33; d->HuffQ7[0][50].Length = 6;    /* 0.014117  -            100001  */
-    d->HuffQ7[0][51].Code =  28; d->HuffQ7[0][51].Length = 6;    /* 0.012776  -            011100  */
-    d->HuffQ7[0][52].Code = 117; d->HuffQ7[0][52].Length = 7;    /* 0.011107  -           1110101  */
-    d->HuffQ7[0][53].Code = 101; d->HuffQ7[0][53].Length = 7;    /* 0.010636  -           1100101  */
-    d->HuffQ7[0][54].Code = 100; d->HuffQ7[0][54].Length = 7;    /* 0.009751  -           1100100  */
-    d->HuffQ7[0][55].Code =  80; d->HuffQ7[0][55].Length = 7;    /* 0.008132  -           1010000  */
-    d->HuffQ7[0][56].Code =  69; d->HuffQ7[0][56].Length = 7;    /* 0.007091  -           1000101  */
-    d->HuffQ7[0][57].Code =  68; d->HuffQ7[0][57].Length = 7;    /* 0.007084  -           1000100  */
-    d->HuffQ7[0][58].Code =  50; d->HuffQ7[0][58].Length = 7;    /* 0.006277  -           0110010  */
-    d->HuffQ7[0][59].Code = 232; d->HuffQ7[0][59].Length = 8;    /* 0.005386  -          11101000  */
-    d->HuffQ7[0][60].Code = 180; d->HuffQ7[0][60].Length = 8;    /* 0.004408  -          10110100  */
-    d->HuffQ7[0][61].Code = 152; d->HuffQ7[0][61].Length = 8;    /* 0.003759  -          10011000  */
-    d->HuffQ7[0][62].Code = 102; d->HuffQ7[0][62].Length = 8;    /* 0.003160  -          01100110  */
-
-    //more shaped, book 1
-    d->HuffQ7[1][ 0].Code = 14244; d->HuffQ7[1][ 0].Length = 14;    /* 0.000059  -        11011110100100  */
-    d->HuffQ7[1][ 1].Code = 14253; d->HuffQ7[1][ 1].Length = 14;    /* 0.000098  -        11011110101101  */
-    d->HuffQ7[1][ 2].Code = 14246; d->HuffQ7[1][ 2].Length = 14;    /* 0.000078  -        11011110100110  */
-    d->HuffQ7[1][ 3].Code = 14254; d->HuffQ7[1][ 3].Length = 14;    /* 0.000111  -        11011110101110  */
-    d->HuffQ7[1][ 4].Code =  3562; d->HuffQ7[1][ 4].Length = 12;    /* 0.000320  -          110111101010  */
-    d->HuffQ7[1][ 5].Code =   752; d->HuffQ7[1][ 5].Length = 10;    /* 0.000920  -            1011110000  */
-    d->HuffQ7[1][ 6].Code =   753; d->HuffQ7[1][ 6].Length = 10;    /* 0.001057  -            1011110001  */
-    d->HuffQ7[1][ 7].Code =   160; d->HuffQ7[1][ 7].Length =  9;    /* 0.001403  -             010100000  */
-    d->HuffQ7[1][ 8].Code =   162; d->HuffQ7[1][ 8].Length =  9;    /* 0.001579  -             010100010  */
-    d->HuffQ7[1][ 9].Code =   444; d->HuffQ7[1][ 9].Length =  9;    /* 0.002486  -             110111100  */
-    d->HuffQ7[1][10].Code =   122; d->HuffQ7[1][10].Length =  8;    /* 0.003772  -              01111010  */
-    d->HuffQ7[1][11].Code =   223; d->HuffQ7[1][11].Length =  8;    /* 0.005710  -              11011111  */
-    d->HuffQ7[1][12].Code =    60; d->HuffQ7[1][12].Length =  7;    /* 0.006858  -               0111100  */
-    d->HuffQ7[1][13].Code =    73; d->HuffQ7[1][13].Length =  7;    /* 0.008033  -               1001001  */
-    d->HuffQ7[1][14].Code =   110; d->HuffQ7[1][14].Length =  7;    /* 0.009827  -               1101110  */
-    d->HuffQ7[1][15].Code =    14; d->HuffQ7[1][15].Length =  6;    /* 0.012601  -                001110  */
-    d->HuffQ7[1][16].Code =    24; d->HuffQ7[1][16].Length =  6;    /* 0.013194  -                011000  */
-    d->HuffQ7[1][17].Code =    25; d->HuffQ7[1][17].Length =  6;    /* 0.013938  -                011001  */
-    d->HuffQ7[1][18].Code =    34; d->HuffQ7[1][18].Length =  6;    /* 0.015693  -                100010  */
-    d->HuffQ7[1][19].Code =    37; d->HuffQ7[1][19].Length =  6;    /* 0.017846  -                100101  */
-    d->HuffQ7[1][20].Code =    54; d->HuffQ7[1][20].Length =  6;    /* 0.020078  -                110110  */
-    d->HuffQ7[1][21].Code =     3; d->HuffQ7[1][21].Length =  5;    /* 0.022975  -                 00011  */
-    d->HuffQ7[1][22].Code =     9; d->HuffQ7[1][22].Length =  5;    /* 0.025631  -                 01001  */
-    d->HuffQ7[1][23].Code =    11; d->HuffQ7[1][23].Length =  5;    /* 0.027021  -                 01011  */
-    d->HuffQ7[1][24].Code =    16; d->HuffQ7[1][24].Length =  5;    /* 0.031465  -                 10000  */
-    d->HuffQ7[1][25].Code =    19; d->HuffQ7[1][25].Length =  5;    /* 0.034244  -                 10011  */
-    d->HuffQ7[1][26].Code =    21; d->HuffQ7[1][26].Length =  5;    /* 0.035921  -                 10101  */
-    d->HuffQ7[1][27].Code =    24; d->HuffQ7[1][27].Length =  5;    /* 0.037938  -                 11000  */
-    d->HuffQ7[1][28].Code =    26; d->HuffQ7[1][28].Length =  5;    /* 0.039595  -                 11010  */
-    d->HuffQ7[1][29].Code =    29; d->HuffQ7[1][29].Length =  5;    /* 0.041546  -                 11101  */
-    d->HuffQ7[1][30].Code =    31; d->HuffQ7[1][30].Length =  5;    /* 0.042623  -                 11111  */
-    d->HuffQ7[1][31].Code =     2; d->HuffQ7[1][31].Length =  4;    /* 0.045180  -                  0010  */
-    d->HuffQ7[1][32].Code =     0; d->HuffQ7[1][32].Length =  4;    /* 0.043151  -                  0000  */
-    d->HuffQ7[1][33].Code =    30; d->HuffQ7[1][33].Length =  5;    /* 0.042538  -                 11110  */
-    d->HuffQ7[1][34].Code =    28; d->HuffQ7[1][34].Length =  5;    /* 0.041422  -                 11100  */
-    d->HuffQ7[1][35].Code =    25; d->HuffQ7[1][35].Length =  5;    /* 0.039145  -                 11001  */
-    d->HuffQ7[1][36].Code =    22; d->HuffQ7[1][36].Length =  5;    /* 0.036691  -                 10110  */
-    d->HuffQ7[1][37].Code =    20; d->HuffQ7[1][37].Length =  5;    /* 0.034955  -                 10100  */
-    d->HuffQ7[1][38].Code =    14; d->HuffQ7[1][38].Length =  5;    /* 0.029155  -                 01110  */
-    d->HuffQ7[1][39].Code =    13; d->HuffQ7[1][39].Length =  5;    /* 0.027921  -                 01101  */
-    d->HuffQ7[1][40].Code =     8; d->HuffQ7[1][40].Length =  5;    /* 0.025553  -                 01000  */
-    d->HuffQ7[1][41].Code =     6; d->HuffQ7[1][41].Length =  5;    /* 0.023093  -                 00110  */
-    d->HuffQ7[1][42].Code =     2; d->HuffQ7[1][42].Length =  5;    /* 0.021200  -                 00010  */
-    d->HuffQ7[1][43].Code =    46; d->HuffQ7[1][43].Length =  6;    /* 0.018134  -                101110  */
-    d->HuffQ7[1][44].Code =    35; d->HuffQ7[1][44].Length =  6;    /* 0.015824  -                100011  */
-    d->HuffQ7[1][45].Code =    31; d->HuffQ7[1][45].Length =  6;    /* 0.014701  -                011111  */
-    d->HuffQ7[1][46].Code =    21; d->HuffQ7[1][46].Length =  6;    /* 0.013187  -                010101  */
-    d->HuffQ7[1][47].Code =    15; d->HuffQ7[1][47].Length =  6;    /* 0.012776  -                001111  */
-    d->HuffQ7[1][48].Code =    95; d->HuffQ7[1][48].Length =  7;    /* 0.009664  -               1011111  */
-    d->HuffQ7[1][49].Code =    72; d->HuffQ7[1][49].Length =  7;    /* 0.007922  -               1001000  */
-    d->HuffQ7[1][50].Code =    41; d->HuffQ7[1][50].Length =  7;    /* 0.006838  -               0101001  */
-    d->HuffQ7[1][51].Code =   189; d->HuffQ7[1][51].Length =  8;    /* 0.005024  -              10111101  */
-    d->HuffQ7[1][52].Code =   123; d->HuffQ7[1][52].Length =  8;    /* 0.003830  -              01111011  */
-    d->HuffQ7[1][53].Code =   377; d->HuffQ7[1][53].Length =  9;    /* 0.002232  -             101111001  */
-    d->HuffQ7[1][54].Code =   161; d->HuffQ7[1][54].Length =  9;    /* 0.001566  -             010100001  */
-    d->HuffQ7[1][55].Code =   891; d->HuffQ7[1][55].Length = 10;    /* 0.001383  -            1101111011  */
-    d->HuffQ7[1][56].Code =   327; d->HuffQ7[1][56].Length = 10;    /* 0.000900  -            0101000111  */
-    d->HuffQ7[1][57].Code =   326; d->HuffQ7[1][57].Length = 10;    /* 0.000790  -            0101000110  */
-    d->HuffQ7[1][58].Code =  3560; d->HuffQ7[1][58].Length = 12;    /* 0.000254  -          110111101000  */
-    d->HuffQ7[1][59].Code = 14255; d->HuffQ7[1][59].Length = 14;    /* 0.000117  -        11011110101111  */
-    d->HuffQ7[1][60].Code = 14247; d->HuffQ7[1][60].Length = 14;    /* 0.000085  -        11011110100111  */
-    d->HuffQ7[1][61].Code = 14252; d->HuffQ7[1][61].Length = 14;    /* 0.000085  -        11011110101100  */
-    d->HuffQ7[1][62].Code = 14245; d->HuffQ7[1][62].Length = 14;    /* 0.000065  -        11011110100101  */
-}
+const HuffmanTyp*   mpc_table_HuffQ [2] [8] = {
+	{0,mpc_table_HuffQ1[0],mpc_table_HuffQ2[0],mpc_table_HuffQ3[0],mpc_table_HuffQ4[0],mpc_table_HuffQ5[0],mpc_table_HuffQ6[0],mpc_table_HuffQ7[0]},
+	{0,mpc_table_HuffQ1[1],mpc_table_HuffQ2[1],mpc_table_HuffQ3[1],mpc_table_HuffQ4[1],mpc_table_HuffQ5[1],mpc_table_HuffQ6[1],mpc_table_HuffQ7[1]},
+};
Index: trunk/src/mpc_decoder.c
===================================================================
--- trunk/src/mpc_decoder.c	(revision 7)
+++ trunk/src/mpc_decoder.c	(revision 10)
@@ -41,4 +41,22 @@
 #include <mpcdec/huffman.h>
 
+//SV7 tables
+extern const HuffmanTyp*   mpc_table_HuffQ [2] [8];
+extern const HuffmanTyp    mpc_table_HuffHdr  [10];
+extern const HuffmanTyp    mpc_table_HuffSCFI [ 4];
+extern const HuffmanTyp    mpc_table_HuffDSCF [16];
+
+
+#ifdef MPC_SUPPORT_SV456
+//SV4/5/6 tables
+extern const HuffmanTyp*   mpc_table_SampleHuff [18];
+extern const HuffmanTyp    mpc_table_SCFI_Bundle   [ 8];
+extern const HuffmanTyp    mpc_table_DSCF_Entropie [13];
+extern const HuffmanTyp    mpc_table_Region_A [16];
+extern const HuffmanTyp    mpc_table_Region_B [ 8];
+extern const HuffmanTyp    mpc_table_Region_C [ 4];
+
+#endif
+
 //------------------------------------------------------------------------------
 // types
@@ -57,6 +75,4 @@
 // forward declarations
 //------------------------------------------------------------------------------
-void mpc_decoder_init_huffman_sv6(mpc_decoder *d);
-void mpc_decoder_init_huffman_sv7(mpc_decoder *d);
 void mpc_decoder_read_bitstream_sv6(mpc_decoder *d);
 void mpc_decoder_read_bitstream_sv7(mpc_decoder *d);
@@ -152,5 +168,5 @@
 mpc_decoder_scfi_bundle_read(
     mpc_decoder *d,
-    HuffmanTyp* Table, mpc_int32_t* SCFI, mpc_int32_t* DSCF) 
+    const HuffmanTyp* Table, mpc_int32_t* SCFI, mpc_bool_t* DSCF) 
 {
     // load preview and decode
@@ -172,27 +188,4 @@
     *SCFI = Table->Value >> 1;
     *DSCF = Table->Value &  1;
-}
-
-static int
-mpc_decoder_huffman_typ_cmpfn(const void* p1, const void* p2)
-{
-    if (((HuffmanTyp*) p1)->Code < ((HuffmanTyp*) p2)->Code ) return +1;
-    if (((HuffmanTyp*) p1)->Code > ((HuffmanTyp*) p2)->Code ) return -1;
-    return 0;
-}
-
-// sort huffman-tables by codeword
-// offset resulting value
-void
-mpc_decoder_resort_huff_tables(
-    const mpc_uint32_t elements, HuffmanTyp* Table, const mpc_int32_t offset ) 
-{
-    mpc_uint32_t  i;
-
-    for ( i = 0; i < elements; i++ ) {
-        Table[i].Code <<= 32 - Table[i].Length;
-        Table[i].Value  =  i - offset;
-    }
-    qsort(Table, elements, sizeof(*Table), mpc_decoder_huffman_typ_cmpfn);
 }
 
@@ -328,4 +321,5 @@
   d->dword = d->Speicher[0];
   switch (d->StreamVersion) {
+#ifdef MPC_SUPPORT_SV456
     case 0x04:
     case 0x05:
@@ -333,4 +327,5 @@
         mpc_decoder_read_bitstream_sv6(d);
         break;
+#endif
     case 0x07:
     case 0x17:
@@ -364,4 +359,5 @@
     FrameBitCnt = mpc_decoder_bits_read(d);
     switch (d->StreamVersion) {
+#ifdef MPC_SUPPORT_SV456
     case 0x04:
     case 0x05:
@@ -369,4 +365,5 @@
         mpc_decoder_read_bitstream_sv6(d);
         break;
+#endif
     case 0x07:
     case 0x17:
@@ -402,24 +399,10 @@
         // additional FilterDecay samples are needed for decay of synthesis filter
         if (MPC_DECODER_SYNTH_DELAY + mod_block >= MPC_FRAME_LENGTH) {
-
-            // **********************************************************************
-            // Rhoades 4/16/2002
-            // Commented out are blocks of code which cause gapless playback to fail.
-            // Temporary fix...
-            // **********************************************************************
-
             if (!d->TrueGaplessPresent) {
                 mpc_decoder_reset_y(d);
-            } 
-            else {
-                //if ( MPC_FRAME_LENGTH != d->LastValidSamples ) {
+            } else {
                 mpc_decoder_bitstream_read(d, 20);
                 mpc_decoder_read_bitstream_sv7(d);
                 mpc_decoder_requantisierung(d, d->Max_Band);
-                //FilterDecay = d->LastValidSamples;
-                //}
-                //else {
-                //FilterDecay = 0;
-                //}
             }
 
@@ -652,4 +635,40 @@
 }
 
+#ifdef MPC_SUPPORT_SV456
+static const unsigned char Q_res[32][16] = {
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,3,4,5,6,17,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+{0,1,2,17,0,0,0,0,0,0,0,0,0,0,0,0},
+};
+
 /****************************************** SV 6 ******************************************/
 void
@@ -658,5 +677,5 @@
     mpc_int32_t n,k;
     mpc_int32_t Max_used_Band=0;
-    HuffmanTyp *Table;
+    const HuffmanTyp *Table;
     const HuffmanTyp *x1;
     const HuffmanTyp *x2;
@@ -671,13 +690,13 @@
     for (n=0; n <= d->Max_Band; ++n, ++ResL, ++ResR)
     {
-        if      (n<11)           Table = d->Region_A;
-        else if (n>=11 && n<=22) Table = d->Region_B;
-        else /*if (n>=23)*/      Table = d->Region_C;
-
-        *ResL = d->Q_res[n][mpc_decoder_huffman_decode(d, Table)];
+        if      (n<11)           Table = mpc_table_Region_A;
+        else if (n>=11 && n<=22) Table = mpc_table_Region_B;
+        else /*if (n>=23)*/      Table = mpc_table_Region_C;
+
+        *ResL = Q_res[n][mpc_decoder_huffman_decode(d, Table)];
         if (d->MS_used) {
             d->MS_Flag[n] = mpc_decoder_bitstream_read(d,  1);
         }
-        *ResR = d->Q_res[n][mpc_decoder_huffman_decode(d, Table)];
+        *ResR = Q_res[n][mpc_decoder_huffman_decode(d, Table)];
 
         // only perform the following procedure up to the maximum non-zero subband
@@ -689,6 +708,6 @@
     ResR = d->Res_R;
     for (n=0; n<=Max_used_Band; ++n, ++ResL, ++ResR) {
-        if (*ResL) mpc_decoder_scfi_bundle_read(d, d->SCFI_Bundle, &(d->SCFI_L[n]), &(d->DSCF_Flag_L[n]));
-        if (*ResR) mpc_decoder_scfi_bundle_read(d, d->SCFI_Bundle, &(d->SCFI_R[n]), &(d->DSCF_Flag_R[n]));
+        if (*ResL) mpc_decoder_scfi_bundle_read(d, mpc_table_SCFI_Bundle, &(d->SCFI_L[n]), &(d->DSCF_Flag_L[n]));
+        if (*ResR) mpc_decoder_scfi_bundle_read(d, mpc_table_SCFI_Bundle, &(d->SCFI_R[n]), &(d->DSCF_Flag_R[n]));
     }
 
@@ -709,22 +728,22 @@
                 {
                 case 3:
-                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     L[1] = L[0];
                     L[2] = L[1];
                     break;
                 case 1:
-                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    L[1] = L[0] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    L[1] = L[0] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     L[2] = L[1];
                     break;
                 case 2:
-                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     L[1] = L[0];
-                    L[2] = L[1] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    L[2] = L[1] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     break;
                 case 0:
-                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    L[1] = L[0] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    L[2] = L[1] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    L[0] = L[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    L[1] = L[0] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    L[2] = L[1] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     break;
                 default:
@@ -775,22 +794,22 @@
                 {
                 case 3:
-                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     R[1] = R[0];
                     R[2] = R[1];
                     break;
                 case 1:
-                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    R[1] = R[0] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    R[1] = R[0] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     R[2] = R[1];
                     break;
                 case 2:
-                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     R[1] = R[0];
-                    R[2] = R[1] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    R[2] = R[1] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     break;
                 case 0:
-                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    R[1] = R[0] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
-                    R[2] = R[1] + mpc_decoder_huffman_decode_fast(d,  d->DSCF_Entropie);
+                    R[0] = R[2] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    R[1] = R[0] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
+                    R[2] = R[1] + mpc_decoder_huffman_decode_fast(d,  mpc_table_DSCF_Entropie);
                     break;
                 default:
@@ -840,6 +859,6 @@
     {
         // setting pointers
-        x1 = d->SampleHuff[*ResL];
-        x2 = d->SampleHuff[*ResR];
+        x1 = mpc_table_SampleHuff[*ResL];
+        x2 = mpc_table_SampleHuff[*ResR];
         L = d->Q[n].L;
         R = d->Q[n].R;
@@ -860,5 +879,5 @@
     }
 }
-
+#endif //MPC_SUPPORT_SV456
 /****************************************** SV 7 ******************************************/
 void
@@ -895,8 +914,8 @@
     for (n=1; n <= d->Max_Band; ++n, ++ResL, ++ResR)
     {
-        idx   = mpc_decoder_huffman_decode_fast(d, d->HuffHdr);
+        idx   = mpc_decoder_huffman_decode_fast(d, mpc_table_HuffHdr);
         *ResL = (idx!=4) ? *(ResL-1) + idx : (int) mpc_decoder_bitstream_read(d, 4);
 
-        idx   = mpc_decoder_huffman_decode_fast(d, d->HuffHdr);
+        idx   = mpc_decoder_huffman_decode_fast(d, mpc_table_HuffHdr);
         *ResR = (idx!=4) ? *(ResR-1) + idx : (int) mpc_decoder_bitstream_read(d, 4);
 
@@ -916,6 +935,6 @@
     ResR  = d->Res_R;
     for (n=0; n <= Max_used_Band; ++n, ++L, ++R, ++ResL, ++ResR) {
-        if (*ResL) *L = mpc_decoder_huffman_decode_faster(d, d->HuffSCFI);
-        if (*ResR) *R = mpc_decoder_huffman_decode_faster(d, d->HuffSCFI);
+        if (*ResL) *L = mpc_decoder_huffman_decode_faster(d, mpc_table_HuffSCFI);
+        if (*ResR) *R = mpc_decoder_huffman_decode_faster(d, mpc_table_HuffSCFI);
     }
 
@@ -932,12 +951,12 @@
             {
             case 1:
-                idx  = mpc_decoder_huffman_decode_fast(d, d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d, mpc_table_HuffDSCF);
                 L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d, d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d, mpc_table_HuffDSCF);
                 L[1] = (idx!=8) ? L[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 L[2] = L[1];
                 break;
             case 3:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 L[1] = L[0];
@@ -945,16 +964,16 @@
                 break;
             case 2:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 L[1] = L[0];
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[2] = (idx!=8) ? L[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 break;
             case 0:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[0] = (idx!=8) ? L[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[1] = (idx!=8) ? L[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 L[2] = (idx!=8) ? L[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 break;
@@ -972,12 +991,12 @@
             {
             case 1:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[1] = (idx!=8) ? R[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 R[2] = R[1];
                 break;
             case 3:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 R[1] = R[0];
@@ -985,16 +1004,16 @@
                 break;
             case 2:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 R[1] = R[0];
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[2] = (idx!=8) ? R[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 break;
             case 0:
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[0] = (idx!=8) ? R[2] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[1] = (idx!=8) ? R[0] + idx : (int) mpc_decoder_bitstream_read(d, 6);
-                idx  = mpc_decoder_huffman_decode_fast(d,  d->HuffDSCF);
+                idx  = mpc_decoder_huffman_decode_fast(d,  mpc_table_HuffDSCF);
                 R[2] = (idx!=8) ? R[1] + idx : (int) mpc_decoder_bitstream_read(d, 6);
                 break;
@@ -1031,5 +1050,5 @@
             break;
         case 1:
-            Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][1];
+            Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][1];
             for (k=0; k<12; ++k)
             {
@@ -1041,5 +1060,5 @@
             break;
         case 2:
-            Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][2];
+            Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][2];
             for (k=0; k<18; ++k)
             {
@@ -1051,10 +1070,10 @@
         case 3:
         case 4:
-            Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
+            Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
             for (k=0; k<36; ++k)
                 *L++ = mpc_decoder_huffman_decode_faster(d, Table);
             break;
         case 5:
-            Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
+            Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
             for (k=0; k<36; ++k)
                 *L++ = mpc_decoder_huffman_decode_fast(d, Table);
@@ -1062,5 +1081,5 @@
         case 6:
         case 7:
-            Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
+            Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResL];
             for (k=0; k<36; ++k)
                 *L++ = mpc_decoder_huffman_decode(d, Table);
@@ -1091,5 +1110,5 @@
                 break;
             case 1:
-                Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][1];
+                Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][1];
                 for (k=0; k<12; ++k)
                 {
@@ -1101,5 +1120,5 @@
                 break;
             case 2:
-                Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][2];
+                Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][2];
                 for (k=0; k<18; ++k)
                 {
@@ -1111,10 +1130,10 @@
             case 3:
             case 4:
-                Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
+                Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
                 for (k=0; k<36; ++k)
                     *R++ = mpc_decoder_huffman_decode_faster(d, Table);
                 break;
             case 5:
-                Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
+                Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
                 for (k=0; k<36; ++k)
                     *R++ = mpc_decoder_huffman_decode_fast(d, Table);
@@ -1122,5 +1141,5 @@
             case 6:
             case 7:
-                Table = d->HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
+                Table = mpc_table_HuffQ[mpc_decoder_bitstream_read(d, 1)][*ResR];
                 for (k=0; k<36; ++k)
                     *R++ = mpc_decoder_huffman_decode(d, Table);
@@ -1141,41 +1160,4 @@
   d->r = r;
 
-  d->HuffQ[0][0] = 0;
-  d->HuffQ[1][0] = 0;
-  d->HuffQ[0][1] = d->HuffQ1[0];
-  d->HuffQ[1][1] = d->HuffQ1[1];
-  d->HuffQ[0][2] = d->HuffQ2[0];
-  d->HuffQ[1][2] = d->HuffQ2[1];
-  d->HuffQ[0][3] = d->HuffQ3[0];
-  d->HuffQ[1][3] = d->HuffQ3[1];
-  d->HuffQ[0][4] = d->HuffQ4[0];
-  d->HuffQ[1][4] = d->HuffQ4[1];
-  d->HuffQ[0][5] = d->HuffQ5[0];
-  d->HuffQ[1][5] = d->HuffQ5[1];
-  d->HuffQ[0][6] = d->HuffQ6[0];
-  d->HuffQ[1][6] = d->HuffQ6[1];
-  d->HuffQ[0][7] = d->HuffQ7[0];
-  d->HuffQ[1][7] = d->HuffQ7[1];
-
-  d->SampleHuff[0] = NULL;
-  d->SampleHuff[1] = d->Entropie_1;
-  d->SampleHuff[2] = d->Entropie_2;
-  d->SampleHuff[3] = d->Entropie_3;
-  d->SampleHuff[4] = d->Entropie_4;
-  d->SampleHuff[5] = d->Entropie_5;
-  d->SampleHuff[6] = d->Entropie_6;
-  d->SampleHuff[7] = d->Entropie_7;
-  d->SampleHuff[8] = NULL;
-  d->SampleHuff[9] = NULL;
-  d->SampleHuff[10] = NULL;
-  d->SampleHuff[11] = NULL;
-  d->SampleHuff[12] = NULL;
-  d->SampleHuff[13] = NULL;
-  d->SampleHuff[14] = NULL;
-  d->SampleHuff[15] = NULL;
-  d->SampleHuff[16] = NULL;
-  d->SampleHuff[17] = NULL;
-
-  d->EQ_activated = 0;
   d->MPCHeaderPos = 0;
   d->StreamVersion = 0;
@@ -1186,10 +1168,8 @@
   d->OverallFrames = 0;
   d->DecodedFrames = 0;
-  d->LastValidSamples = 0;
   d->TrueGaplessPresent = 0;
   d->WordsRead = 0;
   d->Max_Band = 0;
   d->SampleRate = 0;
-//  clips = 0;
   d->__r1 = 1;
   d->__r2 = 1;
@@ -1202,6 +1182,8 @@
 
   mpc_decoder_initialisiere_quantisierungstabellen(d, 1.0f);
+#if 0
   mpc_decoder_init_huffman_sv6(d);
   mpc_decoder_init_huffman_sv7(d);
+#endif
 }
 
@@ -1216,5 +1198,4 @@
     d->OverallFrames      = si->frames;
     d->MPCHeaderPos       = si->header_position;
-    d->LastValidSamples   = si->last_frame_samples;
     d->TrueGaplessPresent = si->is_true_gapless;
     d->SampleRate         = (mpc_int32_t)si->sample_freq;
@@ -1353,5 +1334,9 @@
         }
         else {
+#ifdef MPC_SUPPORT_SV456
             mpc_decoder_read_bitstream_sv6(d);
+#else
+            return FALSE;
+#endif
         }
         if (mpc_decoder_bits_read(d) - FrameBitCnt != d->FwdJumpInfo ) {
Index: trunk/src/requant.c
===================================================================
--- trunk/src/requant.c	(revision 7)
+++ trunk/src/requant.c	(revision 10)
@@ -73,7 +73,7 @@
 static mpc_uint32_t find_shift(double fval)
 {
-	mpc_int64_t val = (mpc_int64_t)fval;
+	mpc_int64_t  val = (mpc_int64_t)fval;
+	mpc_uint32_t ptr = 0;
 	if (val<0) val = -val;
-	mpc_uint32_t ptr = 0;
 	while(val) {val>>=1;ptr++;}
 
@@ -114,39 +114,7 @@
 }
 
-static void
-mpc_decoder_quantisierungsmodes(mpc_decoder *d) // conversion: index -> quantizer (bitstream reading)
-{                                               // conversion: quantizer -> index (bitstream writing)
-    mpc_int32_t  Band = 0;
-    mpc_int32_t  i;
-
-    do {
-        d->Q_bit [Band] = 4;
-        for ( i = 0; i < 16-1; i++ )
-            d->Q_res [Band] [i] = i;
-        d->Q_res [Band][i] = 17;
-        Band++;
-    } while ( Band < 11 );
-
-    do {
-        d->Q_bit [Band] = 3;
-        for ( i = 0; i < 8-1; i++ )
-            d->Q_res [Band] [i] = i;
-        d->Q_res [Band] [i] = 17;
-        Band++;
-    } while ( Band < 23 );
-
-    do {
-        d->Q_bit [Band] = 2;
-        for ( i = 0; i < 4-1; i++ )
-            d->Q_res [Band] [i] = i;
-        d->Q_res [Band] [i] = 17;
-        Band++;
-    } while ( Band < 32 );
-}
-
 void
 mpc_decoder_initialisiere_quantisierungstabellen(mpc_decoder *d, double scale_factor) 
 {
-    mpc_decoder_quantisierungsmodes(d);
     mpc_decoder_scale_output(d, scale_factor);
 }
Index: trunk/src/streaminfo.c
===================================================================
--- trunk/src/streaminfo.c	(revision 7)
+++ trunk/src/streaminfo.c	(revision 10)
@@ -57,14 +57,4 @@
 {
     memset(si, 0, sizeof(mpc_streaminfo));
-}
-
-// read information from SV8 header
-// not yet implemented
-static mpc_int32_t
-streaminfo_read_header_sv8(mpc_streaminfo * si, mpc_reader * fp)
-{
-    (void) si;
-    (void) fp;
-    return 0;
 }
 
@@ -143,4 +133,5 @@
 
 // read information from SV4-SV6 header
+#ifdef MPC_SUPPORT_SV456
 static mpc_int32_t
 streaminfo_read_header_sv6(mpc_streaminfo * si, mpc_uint32_t HeaderData[8])
@@ -199,5 +190,5 @@
     return ERROR_CODE_OK;
 }
-
+#endif
 // reads file header and tags
 mpc_int32_t
@@ -235,14 +226,18 @@
         // stream version 8
         if ((si->stream_version & 15) >= 8) {
-            Error = streaminfo_read_header_sv8(si, r);
+            return ERROR_CODE_INVALIDSV;
         }
         // stream version 7
         else if ((si->stream_version & 15) == 7) {
             Error = streaminfo_read_header_sv7(si, HeaderData);
-        }
-    }
-    else {
+            if (Error != ERROR_CODE_OK) return Error;
+        }
+    } else {
+#ifdef MPC_SUPPORT_SV456
         // stream version 4-6
         Error = streaminfo_read_header_sv6(si, HeaderData);
+#else
+        return ERROR_CODE_INVALIDSV;
+#endif
     }
 
@@ -259,5 +254,5 @@
     }
 
-    return Error;
+    return ERROR_CODE_OK;
 }
 
Index: trunk/src/synth_filter.c
===================================================================
--- trunk/src/synth_filter.c	(revision 7)
+++ trunk/src/synth_filter.c	(revision 10)
@@ -39,6 +39,4 @@
 #include <mpcdec/mpcdec.h>
 #include <mpcdec/internal.h>
-
-typedef mpc_int32_t ptrdiff_t;
 
 /* C O N S T A N T S */
