00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00037
00038 #include "musepack/musepack.h"
00039 #include "musepack/requant.h"
00040 #include "musepack/huffman.h"
00041
00042 void
00043 mpc_decoder_init_huffman_sv6(mpc_decoder *d)
00044 {
00045 mpc_decoder_init_huffman_sv6_tables(d);
00046 mpc_decoder_resort_huff_tables(16, d->Region_A , 0);
00047 mpc_decoder_resort_huff_tables( 8, d->Region_B , 0);
00048 mpc_decoder_resort_huff_tables( 4, d->Region_C , 0);
00049 mpc_decoder_resort_huff_tables( 8, d->SCFI_Bundle , 0);
00050 mpc_decoder_resort_huff_tables(13, d->DSCF_Entropie , 6);
00051 mpc_decoder_resort_huff_tables( 3, d->Entropie_1 , Dc[1]);
00052 mpc_decoder_resort_huff_tables( 5, d->Entropie_2 , Dc[2]);
00053 mpc_decoder_resort_huff_tables( 7, d->Entropie_3 , Dc[3]);
00054 mpc_decoder_resort_huff_tables( 9, d->Entropie_4 , Dc[4]);
00055 mpc_decoder_resort_huff_tables(15, d->Entropie_5 , Dc[5]);
00056 mpc_decoder_resort_huff_tables(31, d->Entropie_6 , Dc[6]);
00057 mpc_decoder_resort_huff_tables(63, d->Entropie_7 , Dc[7]);
00058 }
00059
00060 void
00061 mpc_decoder_init_huffman_sv6_tables(mpc_decoder *d)
00062 {
00063
00064 d->SCFI_Bundle[7].Code= 1; d->SCFI_Bundle[7].Length= 1;
00065 d->SCFI_Bundle[3].Code= 1; d->SCFI_Bundle[3].Length= 2;
00066 d->SCFI_Bundle[5].Code= 0; d->SCFI_Bundle[5].Length= 3;
00067 d->SCFI_Bundle[1].Code= 7; d->SCFI_Bundle[1].Length= 5;
00068 d->SCFI_Bundle[2].Code= 6; d->SCFI_Bundle[2].Length= 5;
00069 d->SCFI_Bundle[4].Code= 4; d->SCFI_Bundle[4].Length= 5;
00070 d->SCFI_Bundle[0].Code= 11; d->SCFI_Bundle[0].Length= 6;
00071 d->SCFI_Bundle[6].Code= 10; d->SCFI_Bundle[6].Length= 6;
00072
00073
00074 d->Region_A[ 1].Code= 1; d->Region_A[ 1].Length= 1;
00075 d->Region_A[ 2].Code= 0; d->Region_A[ 2].Length= 2;
00076 d->Region_A[ 0].Code= 2; d->Region_A[ 0].Length= 3;
00077 d->Region_A[ 3].Code= 15; d->Region_A[ 3].Length= 5;
00078 d->Region_A[ 5].Code= 13; d->Region_A[ 5].Length= 5;
00079 d->Region_A[ 6].Code= 12; d->Region_A[ 6].Length= 5;
00080 d->Region_A[ 4].Code= 29; d->Region_A[ 4].Length= 6;
00081 d->Region_A[ 7].Code= 57; d->Region_A[ 7].Length= 7;
00082 d->Region_A[ 8].Code= 113; d->Region_A[ 8].Length= 8;
00083 d->Region_A[ 9].Code= 225; d->Region_A[ 9].Length= 9;
00084 d->Region_A[10].Code= 449; d->Region_A[10].Length= 10;
00085 d->Region_A[11].Code= 897; d->Region_A[11].Length= 11;
00086 d->Region_A[12].Code= 1793; d->Region_A[12].Length= 12;
00087 d->Region_A[13].Code= 3585; d->Region_A[13].Length= 13;
00088 d->Region_A[14].Code= 7169; d->Region_A[14].Length= 14;
00089 d->Region_A[15].Code= 7168; d->Region_A[15].Length= 14;
00090
00091
00092 d->Region_B[1].Code= 1; d->Region_B[1].Length= 1;
00093 d->Region_B[0].Code= 1; d->Region_B[0].Length= 2;
00094 d->Region_B[2].Code= 1; d->Region_B[2].Length= 3;
00095 d->Region_B[3].Code= 1; d->Region_B[3].Length= 4;
00096 d->Region_B[4].Code= 1; d->Region_B[4].Length= 5;
00097 d->Region_B[5].Code= 1; d->Region_B[5].Length= 6;
00098 d->Region_B[6].Code= 1; d->Region_B[6].Length= 7;
00099 d->Region_B[7].Code= 0; d->Region_B[7].Length= 7;
00100
00101
00102 d->Region_C[0].Code= 1; d->Region_C[0].Length= 1;
00103 d->Region_C[1].Code= 1; d->Region_C[1].Length= 2;
00104 d->Region_C[2].Code= 1; d->Region_C[2].Length= 3;
00105 d->Region_C[3].Code= 0; d->Region_C[3].Length= 3;
00106
00107
00108 d->DSCF_Entropie[ 6].Code= 0; d->DSCF_Entropie[ 6].Length= 2;
00109 d->DSCF_Entropie[ 7].Code= 7; d->DSCF_Entropie[ 7].Length= 3;
00110 d->DSCF_Entropie[ 5].Code= 4; d->DSCF_Entropie[ 5].Length= 3;
00111 d->DSCF_Entropie[ 8].Code= 3; d->DSCF_Entropie[ 8].Length= 3;
00112 d->DSCF_Entropie[ 9].Code= 13; d->DSCF_Entropie[ 9].Length= 4;
00113 d->DSCF_Entropie[ 4].Code= 11; d->DSCF_Entropie[ 4].Length= 4;
00114 d->DSCF_Entropie[10].Code= 10; d->DSCF_Entropie[10].Length= 4;
00115 d->DSCF_Entropie[ 2].Code= 4; d->DSCF_Entropie[ 2].Length= 4;
00116 d->DSCF_Entropie[11].Code= 25; d->DSCF_Entropie[11].Length= 5;
00117 d->DSCF_Entropie[ 3].Code= 24; d->DSCF_Entropie[ 3].Length= 5;
00118 d->DSCF_Entropie[ 1].Code= 11; d->DSCF_Entropie[ 1].Length= 5;
00119 d->DSCF_Entropie[12].Code= 21; d->DSCF_Entropie[12].Length= 6;
00120 d->DSCF_Entropie[ 0].Code= 20; d->DSCF_Entropie[ 0].Length= 6;
00121
00122
00123 d->Entropie_1[1].Code= 1; d->Entropie_1[1].Length= 1;
00124 d->Entropie_1[0].Code= 1; d->Entropie_1[0].Length= 2;
00125 d->Entropie_1[2].Code= 0; d->Entropie_1[2].Length= 2;
00126
00127
00128 d->Entropie_2[2].Code= 3; d->Entropie_2[2].Length= 2;
00129 d->Entropie_2[3].Code= 1; d->Entropie_2[3].Length= 2;
00130 d->Entropie_2[1].Code= 0; d->Entropie_2[1].Length= 2;
00131 d->Entropie_2[4].Code= 5; d->Entropie_2[4].Length= 3;
00132 d->Entropie_2[0].Code= 4; d->Entropie_2[0].Length= 3;
00133
00134
00135 d->Entropie_3[3].Code= 3; d->Entropie_3[3].Length= 2;
00136 d->Entropie_3[2].Code= 1; d->Entropie_3[2].Length= 2;
00137 d->Entropie_3[4].Code= 0; d->Entropie_3[4].Length= 2;
00138 d->Entropie_3[1].Code= 5; d->Entropie_3[1].Length= 3;
00139 d->Entropie_3[5].Code= 9; d->Entropie_3[5].Length= 4;
00140 d->Entropie_3[0].Code= 17; d->Entropie_3[0].Length= 5;
00141 d->Entropie_3[6].Code= 16; d->Entropie_3[6].Length= 5;
00142
00143
00144 d->Entropie_4[4].Code= 0; d->Entropie_4[4].Length= 2;
00145 d->Entropie_4[5].Code= 6; d->Entropie_4[5].Length= 3;
00146 d->Entropie_4[3].Code= 5; d->Entropie_4[3].Length= 3;
00147 d->Entropie_4[6].Code= 4; d->Entropie_4[6].Length= 3;
00148 d->Entropie_4[2].Code= 3; d->Entropie_4[2].Length= 3;
00149 d->Entropie_4[7].Code= 15; d->Entropie_4[7].Length= 4;
00150 d->Entropie_4[1].Code= 14; d->Entropie_4[1].Length= 4;
00151 d->Entropie_4[0].Code= 5; d->Entropie_4[0].Length= 4;
00152 d->Entropie_4[8].Code= 4; d->Entropie_4[8].Length= 4;
00153
00154
00155 d->Entropie_5[7 ].Code= 4; d->Entropie_5[7 ].Length= 3;
00156 d->Entropie_5[8 ].Code= 3; d->Entropie_5[8 ].Length= 3;
00157 d->Entropie_5[6 ].Code= 2; d->Entropie_5[6 ].Length= 3;
00158 d->Entropie_5[9 ].Code= 0; d->Entropie_5[9 ].Length= 3;
00159 d->Entropie_5[5 ].Code= 15; d->Entropie_5[5 ].Length= 4;
00160 d->Entropie_5[4 ].Code= 13; d->Entropie_5[4 ].Length= 4;
00161 d->Entropie_5[10].Code= 12; d->Entropie_5[10].Length= 4;
00162 d->Entropie_5[11].Code= 10; d->Entropie_5[11].Length= 4;
00163 d->Entropie_5[3 ].Code= 3; d->Entropie_5[3 ].Length= 4;
00164 d->Entropie_5[12].Code= 2; d->Entropie_5[12].Length= 4;
00165 d->Entropie_5[2 ].Code= 29; d->Entropie_5[2 ].Length= 5;
00166 d->Entropie_5[1 ].Code= 23; d->Entropie_5[1 ].Length= 5;
00167 d->Entropie_5[13].Code= 22; d->Entropie_5[13].Length= 5;
00168 d->Entropie_5[0 ].Code= 57; d->Entropie_5[0 ].Length= 6;
00169 d->Entropie_5[14].Code= 56; d->Entropie_5[14].Length= 6;
00170
00171
00172 d->Entropie_6[15].Code= 9; d->Entropie_6[15].Length= 4;
00173 d->Entropie_6[16].Code= 8; d->Entropie_6[16].Length= 4;
00174 d->Entropie_6[14].Code= 7; d->Entropie_6[14].Length= 4;
00175 d->Entropie_6[18].Code= 6; d->Entropie_6[18].Length= 4;
00176 d->Entropie_6[17].Code= 5; d->Entropie_6[17].Length= 4;
00177 d->Entropie_6[12].Code= 3; d->Entropie_6[12].Length= 4;
00178 d->Entropie_6[13].Code= 2; d->Entropie_6[13].Length= 4;
00179 d->Entropie_6[19].Code= 0; d->Entropie_6[19].Length= 4;
00180 d->Entropie_6[11].Code= 31; d->Entropie_6[11].Length= 5;
00181 d->Entropie_6[20].Code= 30; d->Entropie_6[20].Length= 5;
00182 d->Entropie_6[10].Code= 29; d->Entropie_6[10].Length= 5;
00183 d->Entropie_6[9 ].Code= 27; d->Entropie_6[9 ].Length= 5;
00184 d->Entropie_6[21].Code= 26; d->Entropie_6[21].Length= 5;
00185 d->Entropie_6[22].Code= 25; d->Entropie_6[22].Length= 5;
00186 d->Entropie_6[8 ].Code= 24; d->Entropie_6[8 ].Length= 5;
00187 d->Entropie_6[7 ].Code= 23; d->Entropie_6[7 ].Length= 5;
00188 d->Entropie_6[23].Code= 21; d->Entropie_6[23].Length= 5;
00189 d->Entropie_6[6 ].Code= 9; d->Entropie_6[6 ].Length= 5;
00190 d->Entropie_6[24].Code= 3; d->Entropie_6[24].Length= 5;
00191 d->Entropie_6[25].Code= 57; d->Entropie_6[25].Length= 6;
00192 d->Entropie_6[5 ].Code= 56; d->Entropie_6[5 ].Length= 6;
00193 d->Entropie_6[4 ].Code= 45; d->Entropie_6[4 ].Length= 6;
00194 d->Entropie_6[26].Code= 41; d->Entropie_6[26].Length= 6;
00195 d->Entropie_6[2 ].Code= 40; d->Entropie_6[2 ].Length= 6;
00196 d->Entropie_6[27].Code= 17; d->Entropie_6[27].Length= 6;
00197 d->Entropie_6[28].Code= 16; d->Entropie_6[28].Length= 6;
00198 d->Entropie_6[3 ].Code= 5; d->Entropie_6[3 ].Length= 6;
00199 d->Entropie_6[29].Code= 89; d->Entropie_6[29].Length= 7;
00200 d->Entropie_6[1 ].Code= 88; d->Entropie_6[1 ].Length= 7;
00201 d->Entropie_6[30].Code= 9; d->Entropie_6[30].Length= 7;
00202 d->Entropie_6[0 ].Code= 8; d->Entropie_6[0 ].Length= 7;
00203
00204
00205 d->Entropie_7[25].Code= 0; d->Entropie_7[25].Length= 5;
00206 d->Entropie_7[37].Code= 1; d->Entropie_7[37].Length= 5;
00207 d->Entropie_7[62].Code= 16; d->Entropie_7[62].Length= 8;
00208 d->Entropie_7[ 0].Code= 17; d->Entropie_7[ 0].Length= 8;
00209 d->Entropie_7[ 3].Code= 9; d->Entropie_7[ 3].Length= 7;
00210 d->Entropie_7[ 5].Code= 10; d->Entropie_7[ 5].Length= 7;
00211 d->Entropie_7[ 6].Code= 11; d->Entropie_7[ 6].Length= 7;
00212 d->Entropie_7[38].Code= 3; d->Entropie_7[38].Length= 5;
00213 d->Entropie_7[35].Code= 4; d->Entropie_7[35].Length= 5;
00214 d->Entropie_7[33].Code= 5; d->Entropie_7[33].Length= 5;
00215 d->Entropie_7[24].Code= 6; d->Entropie_7[24].Length= 5;
00216 d->Entropie_7[27].Code= 7; d->Entropie_7[27].Length= 5;
00217 d->Entropie_7[26].Code= 8; d->Entropie_7[26].Length= 5;
00218 d->Entropie_7[12].Code= 18; d->Entropie_7[12].Length= 6;
00219 d->Entropie_7[50].Code= 19; d->Entropie_7[50].Length= 6;
00220 d->Entropie_7[29].Code= 10; d->Entropie_7[29].Length= 5;
00221 d->Entropie_7[31].Code= 11; d->Entropie_7[31].Length= 5;
00222 d->Entropie_7[36].Code= 12; d->Entropie_7[36].Length= 5;
00223 d->Entropie_7[34].Code= 13; d->Entropie_7[34].Length= 5;
00224 d->Entropie_7[28].Code= 14; d->Entropie_7[28].Length= 5;
00225 d->Entropie_7[49].Code= 30; d->Entropie_7[49].Length= 6;
00226 d->Entropie_7[56].Code= 62; d->Entropie_7[56].Length= 7;
00227 d->Entropie_7[ 7].Code= 63; d->Entropie_7[ 7].Length= 7;
00228 d->Entropie_7[32].Code= 16; d->Entropie_7[32].Length= 5;
00229 d->Entropie_7[30].Code= 17; d->Entropie_7[30].Length= 5;
00230 d->Entropie_7[13].Code= 36; d->Entropie_7[13].Length= 6;
00231 d->Entropie_7[55].Code= 74; d->Entropie_7[55].Length= 7;
00232 d->Entropie_7[61].Code= 150; d->Entropie_7[61].Length= 8;
00233 d->Entropie_7[ 1].Code= 151; d->Entropie_7[ 1].Length= 8;
00234 d->Entropie_7[14].Code= 38; d->Entropie_7[14].Length= 6;
00235 d->Entropie_7[48].Code= 39; d->Entropie_7[48].Length= 6;
00236 d->Entropie_7[ 4].Code= 80; d->Entropie_7[ 4].Length= 7;
00237 d->Entropie_7[58].Code= 81; d->Entropie_7[58].Length= 7;
00238 d->Entropie_7[47].Code= 41; d->Entropie_7[47].Length= 6;
00239 d->Entropie_7[15].Code= 42; d->Entropie_7[15].Length= 6;
00240 d->Entropie_7[16].Code= 43; d->Entropie_7[16].Length= 6;
00241 d->Entropie_7[54].Code= 88; d->Entropie_7[54].Length= 7;
00242 d->Entropie_7[ 8].Code= 89; d->Entropie_7[ 8].Length= 7;
00243 d->Entropie_7[17].Code= 45; d->Entropie_7[17].Length= 6;
00244 d->Entropie_7[46].Code= 46; d->Entropie_7[46].Length= 6;
00245 d->Entropie_7[45].Code= 47; d->Entropie_7[45].Length= 6;
00246 d->Entropie_7[53].Code= 96; d->Entropie_7[53].Length= 7;
00247 d->Entropie_7[ 9].Code= 97; d->Entropie_7[ 9].Length= 7;
00248 d->Entropie_7[43].Code= 49; d->Entropie_7[43].Length= 6;
00249 d->Entropie_7[19].Code= 50; d->Entropie_7[19].Length= 6;
00250 d->Entropie_7[18].Code= 51; d->Entropie_7[18].Length= 6;
00251 d->Entropie_7[44].Code= 52; d->Entropie_7[44].Length= 6;
00252 d->Entropie_7[ 2].Code= 212; d->Entropie_7[ 2].Length= 8;
00253 d->Entropie_7[60].Code= 213; d->Entropie_7[60].Length= 8;
00254 d->Entropie_7[10].Code= 107; d->Entropie_7[10].Length= 7;
00255 d->Entropie_7[42].Code= 54; d->Entropie_7[42].Length= 6;
00256 d->Entropie_7[41].Code= 55; d->Entropie_7[41].Length= 6;
00257 d->Entropie_7[20].Code= 56; d->Entropie_7[20].Length= 6;
00258 d->Entropie_7[21].Code= 57; d->Entropie_7[21].Length= 6;
00259 d->Entropie_7[52].Code= 116; d->Entropie_7[52].Length= 7;
00260 d->Entropie_7[51].Code= 117; d->Entropie_7[51].Length= 7;
00261 d->Entropie_7[40].Code= 59; d->Entropie_7[40].Length= 6;
00262 d->Entropie_7[22].Code= 60; d->Entropie_7[22].Length= 6;
00263 d->Entropie_7[23].Code= 61; d->Entropie_7[23].Length= 6;
00264 d->Entropie_7[39].Code= 62; d->Entropie_7[39].Length= 6;
00265 d->Entropie_7[11].Code= 126; d->Entropie_7[11].Length= 7;
00266 d->Entropie_7[57].Code= 254; d->Entropie_7[57].Length= 8;
00267 d->Entropie_7[59].Code= 255; d->Entropie_7[59].Length= 8;
00268 }