#pragma once // mp3enc-tables.h // Numerical constants for the MP3 encoder. // Extracted from minimp3 (CC0, github.com/lieff/minimp3). // Values match ISO 11172-3 Annex B+C. // MIT license. #include // Layer III bitrates in kbps, indexed by bitrate_index 0..14 // Index 0 = free format, index 15 = forbidden static const int mp3enc_bitrate_kbps[15] = { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 }; // MPEG1 sample rates, indexed by sampling_frequency field (2 bits) static const int mp3enc_samplerate[3] = { 44100, 48000, 32000 }; // slen1 and slen2 from scalefac_compress (0..15) // slen1 = mp3enc_slen[0][i], slen2 = mp3enc_slen[1][i] static const uint8_t mp3enc_slen[2][16] = { { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }, { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 } }; // Pretab values added to scalefactors when preflag=1 (ISO Table B.6) static const uint8_t mp3enc_pretab[22] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 }; // SFB boundaries: long blocks (ISO Table B.8, from minimp3 CC0) // MPEG1 only: [0]=44100Hz, [1]=48000Hz, [2]=32000Hz // These correspond to minimp3 g_scf_long[5..7]. static const uint8_t mp3enc_sfb_long[3][23] = { { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10, 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, 0 }, { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10, 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, 0 }, { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12, 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, 0 } }; // SFB boundaries: short blocks (ISO Table B.8, from minimp3 CC0) // [sr_index][band_width] // SFB boundaries: short blocks (ISO Table B.8, from minimp3 CC0) // MPEG1 only: [0]=44100Hz, [1]=48000Hz, [2]=32000Hz static const uint8_t mp3enc_sfb_short[3][40] = { { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, 18, 22, 22, 22, 30, 30, 30, 56, 56, 56, 0 }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 10, 10, 10, 12, 12, 12, 14, 14, 14, 16, 16, 16, 20, 20, 20, 26, 26, 26, 66, 66, 66, 0 }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 8, 8, 12, 12, 12, 16, 16, 16, 20, 20, 20, 26, 26, 26, 34, 34, 34, 42, 42, 42, 12, 12, 12, 0 } }; // SFB boundaries: mixed blocks (ISO Table B.8, from minimp3 CC0) // [sr_index][band_width] static const uint8_t mp3enc_sfb_mixed[8][40] = { { 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, 18, 24, 24, 24, 30, 30, 30, 40, 40, 40, 18, 18, 18, 0 }, { 12, 12, 12, 4, 4, 4, 8, 8, 8, 12, 12, 12, 16, 16, 16, 20, 20, 20, 24, 24, 24, 28, 28, 28, 36, 36, 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 26, 26, 0 }, { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 10, 10, 10, 14, 14, 14, 18, 18, 18, 26, 26, 26, 32, 32, 32, 42, 42, 42, 18, 18, 18, 0 }, { 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, 18, 24, 24, 24, 32, 32, 32, 44, 44, 44, 12, 12, 12, 0 }, { 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, 18, 24, 24, 24, 30, 30, 30, 40, 40, 40, 18, 18, 18, 0 }, { 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18, 18, 22, 22, 22, 30, 30, 30, 56, 56, 56, 0 }, { 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 6, 6, 6, 6, 6, 6, 10, 10, 10, 12, 12, 12, 14, 14, 14, 16, 16, 16, 20, 20, 20, 26, 26, 26, 66, 66, 66, 0 }, { 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 6, 6, 6, 8, 8, 8, 12, 12, 12, 16, 16, 16, 20, 20, 20, 26, 26, 26, 34, 34, 34, 42, 42, 42, 12, 12, 12, 0 } }; // Alias reduction butterfly coefficients (ISO Table B.9, from minimp3 CC0) // cs[i] = 1/sqrt(1 + ci^2), ca[i] = ci/sqrt(1 + ci^2) static const float mp3enc_cs[8] = { 0.85749293f, 0.88174200f, 0.94962865f, 0.98331459f, 0.99551782f, 0.99916056f, 0.99989920f, 0.99999316f }; static const float mp3enc_ca[8] = { 0.51449576f, 0.47173197f, 0.31337745f, 0.18191320f, 0.09457419f, 0.04096558f, 0.01419856f, 0.00369997f }; // MDCT window shapes for overlap add (from minimp3 CC0) // [0] = normal/start, [1] = stop block // First 9 values: sin(pi/36 * (i + 0.5)) for i=0..8 // Last 9 values: sin(pi/36 * (i + 18.5)) for i=0..8 static const float mp3enc_mdct_win[2][18] = { { 0.99904822f, 0.99144486f, 0.97629601f, 0.95371695f, 0.92387953f, 0.88701083f, 0.84339145f, 0.79335334f, 0.73727734f, 0.04361938f, 0.13052619f, 0.21643961f, 0.30070580f, 0.38268343f, 0.46174861f, 0.53729961f, 0.60876143f, 0.67559021f }, { 1, 1, 1, 1, 1, 1, 0.99144486f, 0.92387953f, 0.79335334f, 0, 0, 0, 0, 0, 0, 0.13052619f, 0.38268343f, 0.60876143f } }; // MDCT twiddle factors for 18 point and 6 point transforms (from minimp3 CC0) static const float mp3enc_twid9[18] = { 0.73727734f, 0.79335334f, 0.84339145f, 0.88701083f, 0.92387953f, 0.95371695f, 0.97629601f, 0.99144486f, 0.99904822f, 0.67559021f, 0.60876143f, 0.53729961f, 0.46174861f, 0.38268343f, 0.30070580f, 0.21643961f, 0.13052619f, 0.04361938f }; static const float mp3enc_twid3[6] = { 0.79335334f, 0.92387953f, 0.99144486f, 0.60876143f, 0.38268343f, 0.13052619f }; // Analysis filterbank window, 512 coefficients. // Ci coefficients for the polyphase analysis filter (ISO 11172-3 Table C.1). // Extracted from minimp3 (CC0). static const float mp3enc_enwindow[512] = { 0.000000e+00f, -0.000000e+00f, -0.000000e+00f, -0.000000e+00f, -0.000000e+00f, -0.000000e+00f, -0.000000e+00f, -1.000000e-06f, -1.000000e-06f, -1.000000e-06f, -1.000000e-06f, -1.000000e-06f, -1.000000e-06f, -2.000000e-06f, -2.000000e-06f, -2.000000e-06f, -2.000000e-06f, -3.000000e-06f, -3.000000e-06f, -3.000000e-06f, -4.000000e-06f, -4.000000e-06f, -5.000000e-06f, -5.000000e-06f, -6.000000e-06f, -7.000000e-06f, -8.000000e-06f, -8.000000e-06f, -9.000000e-06f, -1.000000e-05f, -1.100000e-05f, -1.200000e-05f, -1.400000e-05f, -1.500000e-05f, -1.700000e-05f, -1.800000e-05f, -2.000000e-05f, -2.100000e-05f, -2.300000e-05f, -2.500000e-05f, -2.800000e-05f, -3.000000e-05f, -3.200000e-05f, -3.500000e-05f, -3.800000e-05f, -4.100000e-05f, -4.300000e-05f, -4.600000e-05f, -5.000000e-05f, -5.300000e-05f, -5.600000e-05f, -6.000000e-05f, -6.300000e-05f, -6.600000e-05f, -7.000000e-05f, -7.300000e-05f, -7.700000e-05f, -8.100000e-05f, -8.400000e-05f, -8.700000e-05f, -9.100000e-05f, -9.300000e-05f, -9.600000e-05f, -9.900000e-05f, 1.020000e-04f, 1.040000e-04f, 1.060000e-04f, 1.070000e-04f, 1.080000e-04f, 1.090000e-04f, 1.090000e-04f, 1.080000e-04f, 1.070000e-04f, 1.050000e-04f, 1.030000e-04f, 9.900000e-05f, 9.500000e-05f, 9.000000e-05f, 8.400000e-05f, 7.800000e-05f, 7.000000e-05f, 6.100000e-05f, 5.100000e-05f, 4.000000e-05f, 2.700000e-05f, 1.400000e-05f, -1.000000e-06f, -1.700000e-05f, -3.400000e-05f, -5.300000e-05f, -7.300000e-05f, -9.400000e-05f, -1.160000e-04f, -1.400000e-04f, -1.650000e-04f, -1.910000e-04f, -2.190000e-04f, -2.470000e-04f, -2.770000e-04f, -3.080000e-04f, -3.390000e-04f, -3.710000e-04f, -4.040000e-04f, -4.380000e-04f, -4.730000e-04f, -5.070000e-04f, -5.420000e-04f, -5.770000e-04f, -6.120000e-04f, -6.470000e-04f, -6.810000e-04f, -7.140000e-04f, -7.470000e-04f, -7.790000e-04f, -8.100000e-04f, -8.390000e-04f, -8.660000e-04f, -8.920000e-04f, -9.150000e-04f, -9.360000e-04f, -9.540000e-04f, -9.690000e-04f, -9.810000e-04f, -9.890000e-04f, -9.940000e-04f, -9.950000e-04f, -9.920000e-04f, -9.840000e-04f, 9.710000e-04f, 9.540000e-04f, 9.310000e-04f, 9.030000e-04f, 8.690000e-04f, 8.290000e-04f, 7.840000e-04f, 7.320000e-04f, 6.740000e-04f, 6.100000e-04f, 5.390000e-04f, 4.630000e-04f, 3.790000e-04f, 2.880000e-04f, 1.920000e-04f, 8.800000e-05f, -2.100000e-05f, -1.370000e-04f, -2.600000e-04f, -3.880000e-04f, -5.220000e-04f, -6.620000e-04f, -8.070000e-04f, -9.570000e-04f, -1.111000e-03f, -1.270000e-03f, -1.432000e-03f, -1.598000e-03f, -1.767000e-03f, -1.937000e-03f, -2.110000e-03f, -2.283000e-03f, -2.457000e-03f, -2.631000e-03f, -2.803000e-03f, -2.974000e-03f, -3.142000e-03f, -3.307000e-03f, -3.467000e-03f, -3.623000e-03f, -3.772000e-03f, -3.914000e-03f, -4.049000e-03f, -4.175000e-03f, -4.291000e-03f, -4.396000e-03f, -4.490000e-03f, -4.570000e-03f, -4.638000e-03f, -4.691000e-03f, -4.728000e-03f, -4.749000e-03f, -4.752000e-03f, -4.737000e-03f, -4.703000e-03f, -4.649000e-03f, -4.574000e-03f, -4.477000e-03f, -4.358000e-03f, -4.215000e-03f, -4.049000e-03f, -3.859000e-03f, -3.643000e-03f, -3.402000e-03f, 3.135000e-03f, 2.841000e-03f, 2.522000e-03f, 2.175000e-03f, 1.801000e-03f, 1.400000e-03f, 9.710000e-04f, 5.160000e-04f, 3.300000e-05f, -4.760000e-04f, -1.012000e-03f, -1.574000e-03f, -2.162000e-03f, -2.774000e-03f, -3.411000e-03f, -4.072000e-03f, -4.756000e-03f, -5.462000e-03f, -6.189000e-03f, -6.937000e-03f, -7.703000e-03f, -8.487000e-03f, -9.288000e-03f, -1.010400e-02f, -1.093300e-02f, -1.177500e-02f, -1.262800e-02f, -1.348900e-02f, -1.435900e-02f, -1.523400e-02f, -1.611300e-02f, -1.699400e-02f, -1.787600e-02f, -1.875700e-02f, -1.963400e-02f, -2.050700e-02f, -2.137200e-02f, -2.222900e-02f, -2.307400e-02f, -2.390700e-02f, -2.472500e-02f, -2.552700e-02f, -2.631100e-02f, -2.707400e-02f, -2.781500e-02f, -2.853300e-02f, -2.922500e-02f, -2.989000e-02f, -3.052700e-02f, -3.113300e-02f, -3.170700e-02f, -3.224800e-02f, -3.275500e-02f, -3.322600e-02f, -3.366000e-02f, -3.405600e-02f, -3.441300e-02f, -3.473000e-02f, -3.500700e-02f, -3.524200e-02f, -3.543500e-02f, -3.558600e-02f, -3.569400e-02f, -3.575900e-02f, 3.578100e-02f, 3.575900e-02f, 3.569400e-02f, 3.558600e-02f, 3.543500e-02f, 3.524200e-02f, 3.500700e-02f, 3.473000e-02f, 3.441300e-02f, 3.405600e-02f, 3.366000e-02f, 3.322600e-02f, 3.275500e-02f, 3.224800e-02f, 3.170700e-02f, 3.113300e-02f, 3.052700e-02f, 2.989000e-02f, 2.922500e-02f, 2.853300e-02f, 2.781500e-02f, 2.707400e-02f, 2.631100e-02f, 2.552700e-02f, 2.472500e-02f, 2.390700e-02f, 2.307400e-02f, 2.222900e-02f, 2.137200e-02f, 2.050700e-02f, 1.963400e-02f, 1.875700e-02f, 1.787600e-02f, 1.699400e-02f, 1.611300e-02f, 1.523400e-02f, 1.435900e-02f, 1.348900e-02f, 1.262800e-02f, 1.177500e-02f, 1.093300e-02f, 1.010400e-02f, 9.288000e-03f, 8.487000e-03f, 7.703000e-03f, 6.937000e-03f, 6.189000e-03f, 5.462000e-03f, 4.756000e-03f, 4.072000e-03f, 3.411000e-03f, 2.774000e-03f, 2.162000e-03f, 1.574000e-03f, 1.012000e-03f, 4.760000e-04f, -3.300000e-05f, -5.160000e-04f, -9.710000e-04f, -1.400000e-03f, -1.801000e-03f, -2.175000e-03f, -2.522000e-03f, -2.841000e-03f, 3.135000e-03f, 3.402000e-03f, 3.643000e-03f, 3.859000e-03f, 4.049000e-03f, 4.215000e-03f, 4.358000e-03f, 4.477000e-03f, 4.574000e-03f, 4.649000e-03f, 4.703000e-03f, 4.737000e-03f, 4.752000e-03f, 4.749000e-03f, 4.728000e-03f, 4.691000e-03f, 4.638000e-03f, 4.570000e-03f, 4.490000e-03f, 4.396000e-03f, 4.291000e-03f, 4.175000e-03f, 4.049000e-03f, 3.914000e-03f, 3.772000e-03f, 3.623000e-03f, 3.467000e-03f, 3.307000e-03f, 3.142000e-03f, 2.974000e-03f, 2.803000e-03f, 2.631000e-03f, 2.457000e-03f, 2.283000e-03f, 2.110000e-03f, 1.937000e-03f, 1.767000e-03f, 1.598000e-03f, 1.432000e-03f, 1.270000e-03f, 1.111000e-03f, 9.570000e-04f, 8.070000e-04f, 6.620000e-04f, 5.220000e-04f, 3.880000e-04f, 2.600000e-04f, 1.370000e-04f, 2.100000e-05f, -8.800000e-05f, -1.920000e-04f, -2.880000e-04f, -3.790000e-04f, -4.630000e-04f, -5.390000e-04f, -6.100000e-04f, -6.740000e-04f, -7.320000e-04f, -7.840000e-04f, -8.290000e-04f, -8.690000e-04f, -9.030000e-04f, -9.310000e-04f, -9.540000e-04f, 9.710000e-04f, 9.840000e-04f, 9.920000e-04f, 9.950000e-04f, 9.940000e-04f, 9.890000e-04f, 9.810000e-04f, 9.690000e-04f, 9.540000e-04f, 9.360000e-04f, 9.150000e-04f, 8.920000e-04f, 8.660000e-04f, 8.390000e-04f, 8.100000e-04f, 7.790000e-04f, 7.470000e-04f, 7.140000e-04f, 6.810000e-04f, 6.470000e-04f, 6.120000e-04f, 5.770000e-04f, 5.420000e-04f, 5.070000e-04f, 4.730000e-04f, 4.380000e-04f, 4.040000e-04f, 3.710000e-04f, 3.390000e-04f, 3.080000e-04f, 2.770000e-04f, 2.470000e-04f, 2.190000e-04f, 1.910000e-04f, 1.650000e-04f, 1.400000e-04f, 1.160000e-04f, 9.400000e-05f, 7.300000e-05f, 5.300000e-05f, 3.400000e-05f, 1.700000e-05f, 1.000000e-06f, -1.400000e-05f, -2.700000e-05f, -4.000000e-05f, -5.100000e-05f, -6.100000e-05f, -7.000000e-05f, -7.800000e-05f, -8.400000e-05f, -9.000000e-05f, -9.500000e-05f, -9.900000e-05f, -1.030000e-04f, -1.050000e-04f, -1.070000e-04f, -1.080000e-04f, -1.090000e-04f, -1.090000e-04f, -1.080000e-04f, -1.070000e-04f, -1.060000e-04f, -1.040000e-04f, 1.020000e-04f, 9.900000e-05f, 9.600000e-05f, 9.300000e-05f, 9.100000e-05f, 8.700000e-05f, 8.400000e-05f, 8.100000e-05f, 7.700000e-05f, 7.300000e-05f, 7.000000e-05f, 6.600000e-05f, 6.300000e-05f, 6.000000e-05f, 5.600000e-05f, 5.300000e-05f, 5.000000e-05f, 4.600000e-05f, 4.300000e-05f, 4.100000e-05f, 3.800000e-05f, 3.500000e-05f, 3.200000e-05f, 3.000000e-05f, 2.800000e-05f, 2.500000e-05f, 2.300000e-05f, 2.100000e-05f, 2.000000e-05f, 1.800000e-05f, 1.700000e-05f, 1.500000e-05f, 1.400000e-05f, 1.200000e-05f, 1.100000e-05f, 1.000000e-05f, 9.000000e-06f, 8.000000e-06f, 8.000000e-06f, 7.000000e-06f, 6.000000e-06f, 5.000000e-06f, 5.000000e-06f, 4.000000e-06f, 4.000000e-06f, 3.000000e-06f, 3.000000e-06f, 3.000000e-06f, 2.000000e-06f, 2.000000e-06f, 2.000000e-06f, 2.000000e-06f, 1.000000e-06f, 1.000000e-06f, 1.000000e-06f, 1.000000e-06f, 1.000000e-06f, 1.000000e-06f, 0.000000e+00f, 0.000000e+00f, 0.000000e+00f, 0.000000e+00f, 0.000000e+00f, 0.000000e+00f }; // Huffman encoder tables (generated from minimp3 CC0 decoder trees) // See gen_huff_enc.c for the generator source. static const uint8_t mp3enc_linbits[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 8, 10, 13, 4, 5, 6, 7, 8, 9, 11, 13 }; static const uint16_t mp3enc_hcode_1[2][2] = { { 0x1, 0x1 }, { 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_1[2][2] = { { 1, 2 }, { 3, 3 } }; static const uint16_t mp3enc_hcode_2[3][3] = { { 0x1, 0x3, 0x3 }, { 0x2, 0x1, 0x2 }, { 0x1, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_2[3][3] = { { 1, 3, 5 }, { 3, 3, 5 }, { 6, 5, 6 } }; static const uint16_t mp3enc_hcode_3[3][3] = { { 0x3, 0x1, 0x3 }, { 0x2, 0x1, 0x2 }, { 0x1, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_3[3][3] = { { 2, 3, 5 }, { 2, 2, 5 }, { 6, 5, 6 } }; static const uint16_t mp3enc_hcode_5[4][4] = { { 0x1, 0x3, 0x7, 0x6 }, { 0x2, 0x1, 0x5, 0x1 }, { 0x6, 0x4, 0x7, 0x1 }, { 0x5, 0x4, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_5[4][4] = { { 1, 3, 6, 7 }, { 3, 3, 6, 6 }, { 6, 6, 7, 7 }, { 7, 7, 8, 8 } }; static const uint16_t mp3enc_hcode_6[4][4] = { { 0x7, 0x6, 0x5, 0x3 }, { 0x3, 0x2, 0x4, 0x3 }, { 0x5, 0x3, 0x4, 0x2 }, { 0x1, 0x2, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_6[4][4] = { { 3, 3, 4, 6 }, { 3, 2, 4, 5 }, { 5, 4, 5, 6 }, { 7, 5, 6, 7 } }; static const uint16_t mp3enc_hcode_7[6][6] = { { 0x1, 0x3, 0xb, 0xc, 0x7, 0x6 }, { 0x2, 0x3, 0x4, 0xb, 0x6, 0x4 }, { 0xa, 0x7, 0xd, 0x12, 0x9, 0x5 }, { 0x13, 0xa, 0x11, 0xf, 0xe, 0x3 }, { 0x10, 0x5, 0x8, 0xb, 0x3, 0x2 }, { 0xa, 0x3, 0x4, 0x2, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_7[6][6] = { { 1, 3, 6, 7, 7, 8 }, { 3, 4, 5, 7, 7, 8 }, { 6, 6, 7, 8, 8, 9 }, { 8, 7, 8, 9, 9, 10 }, { 8, 7, 8, 9, 9, 10 }, { 9, 8, 9, 9, 10, 10 } }; static const uint16_t mp3enc_hcode_8[6][6] = { { 0x3, 0x5, 0x7, 0x13, 0xd, 0xc }, { 0x4, 0x1, 0x3, 0x11, 0x5, 0x4 }, { 0x6, 0x2, 0x5, 0xf, 0x8, 0x4 }, { 0x12, 0x10, 0xe, 0xd, 0xb, 0x1 }, { 0xc, 0x9, 0x7, 0xa, 0x5, 0x1 }, { 0x5, 0x3, 0x3, 0x4, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_8[6][6] = { { 2, 3, 6, 8, 8, 9 }, { 3, 2, 4, 8, 7, 8 }, { 6, 4, 6, 8, 8, 9 }, { 8, 8, 8, 9, 9, 9 }, { 8, 8, 8, 9, 10, 11 }, { 9, 8, 9, 10, 10, 11 } }; static const uint16_t mp3enc_hcode_9[6][6] = { { 0x7, 0x6, 0x7, 0xf, 0xb, 0xe }, { 0x5, 0x4, 0x6, 0x6, 0x7, 0x4 }, { 0x9, 0x5, 0x8, 0x9, 0x9, 0x6 }, { 0xe, 0x5, 0x8, 0xa, 0x6, 0x2 }, { 0xf, 0x6, 0x8, 0x5, 0x4, 0x6 }, { 0x7, 0x7, 0x5, 0x1, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_9[6][6] = { { 3, 3, 4, 6, 7, 8 }, { 3, 3, 4, 5, 6, 7 }, { 5, 4, 5, 6, 7, 8 }, { 6, 5, 6, 7, 7, 8 }, { 8, 6, 7, 7, 8, 9 }, { 9, 8, 8, 8, 9, 9 } }; static const uint16_t mp3enc_hcode_10[8][8] = { { 0x1, 0x3, 0xb, 0xe, 0x14, 0x1f, 0xe, 0x9 }, { 0x2, 0x3, 0x9, 0xd, 0x13, 0x16, 0xd, 0x8 }, { 0xa, 0x8, 0xf, 0x16, 0x21, 0x29, 0xa, 0x7 }, { 0x17, 0xc, 0x15, 0x22, 0x2f, 0x1a, 0xb, 0x8 }, { 0x23, 0x12, 0x20, 0x2e, 0x1b, 0x15, 0x10, 0x4 }, { 0x1e, 0x15, 0x28, 0x17, 0x16, 0x14, 0x6, 0x4 }, { 0xc, 0xc, 0x13, 0x12, 0x9, 0x5, 0x5, 0x2 }, { 0x11, 0x7, 0x6, 0x7, 0x3, 0x3, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_10[8][8] = { { 1, 3, 6, 7, 8, 9, 8, 9 }, { 3, 4, 6, 7, 8, 9, 8, 8 }, { 6, 6, 7, 8, 9, 10, 9, 9 }, { 8, 7, 8, 9, 10, 10, 10, 10 }, { 9, 8, 9, 10, 10, 11, 10, 10 }, { 9, 9, 10, 10, 10, 11, 10, 11 }, { 9, 8, 9, 9, 10, 10, 11, 11 }, { 10, 8, 9, 10, 10, 11, 11, 11 } }; static const uint16_t mp3enc_hcode_11[8][8] = { { 0x3, 0x5, 0xb, 0x19, 0x23, 0x1c, 0xe, 0xb }, { 0x4, 0x3, 0x7, 0xb, 0x21, 0x1a, 0xc, 0x4 }, { 0xa, 0x4, 0xd, 0x13, 0x1f, 0x20, 0x9, 0x6 }, { 0x18, 0xa, 0x12, 0x3b, 0x3a, 0x13, 0xd, 0x6 }, { 0x22, 0x20, 0x1e, 0x1b, 0x1e, 0x11, 0xe, 0x6 }, { 0x21, 0x11, 0x1f, 0x12, 0x10, 0xf, 0x9, 0x3 }, { 0x15, 0xb, 0x14, 0xc, 0x7, 0x8, 0x4, 0x2 }, { 0xf, 0xa, 0x5, 0x5, 0x5, 0xe, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_11[8][8] = { { 2, 3, 5, 7, 8, 8, 8, 8 }, { 3, 3, 5, 6, 8, 8, 7, 7 }, { 5, 4, 6, 7, 8, 9, 7, 8 }, { 7, 6, 7, 9, 9, 10, 8, 9 }, { 8, 8, 8, 8, 9, 10, 9, 10 }, { 9, 8, 9, 10, 10, 11, 10, 10 }, { 8, 7, 8, 8, 9, 10, 10, 10 }, { 9, 8, 8, 9, 10, 11, 10, 10 } }; static const uint16_t mp3enc_hcode_12[8][8] = { { 0x9, 0x7, 0x11, 0x11, 0x20, 0x28, 0x1b, 0x1b }, { 0x6, 0x5, 0x7, 0xa, 0xd, 0x11, 0xc, 0xc }, { 0x10, 0x6, 0xb, 0xf, 0x16, 0x1f, 0xb, 0x8 }, { 0x21, 0x9, 0xe, 0xc, 0x13, 0x1d, 0xf, 0xc }, { 0x29, 0x17, 0x15, 0x12, 0x12, 0x11, 0xa, 0x6 }, { 0x27, 0x10, 0x1e, 0x1c, 0x10, 0xd, 0x7, 0x3 }, { 0x26, 0x1a, 0xa, 0xe, 0x9, 0x4, 0x4, 0x1 }, { 0x1a, 0xb, 0x7, 0x5, 0x5, 0x2, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_12[8][8] = { { 4, 3, 5, 6, 7, 8, 8, 9 }, { 3, 3, 4, 5, 6, 7, 7, 8 }, { 5, 4, 5, 6, 7, 8, 7, 8 }, { 7, 5, 6, 6, 7, 8, 8, 9 }, { 8, 7, 7, 7, 8, 8, 8, 9 }, { 9, 7, 8, 8, 8, 9, 9, 9 }, { 9, 8, 7, 8, 8, 8, 9, 9 }, { 9, 8, 8, 8, 9, 9, 10, 10 } }; static const uint16_t mp3enc_hcode_13[16][16] = { { 0x1, 0x3, 0xf, 0x16, 0x23, 0x3a, 0x2f, 0x48, 0x2b, 0x35, 0x23, 0x35, 0x22, 0x2d, 0x30, 0x10 }, { 0x5, 0x4, 0xd, 0x14, 0x10, 0x1b, 0x2d, 0x22, 0x14, 0x19, 0x21, 0x19, 0x20, 0x15, 0x17, 0xf }, { 0xe, 0xc, 0x17, 0x25, 0x3c, 0x32, 0x4e, 0x38, 0x1e, 0x29, 0x1f, 0x17, 0x1c, 0x22, 0x14, 0x11 }, { 0x15, 0x13, 0x24, 0x3d, 0x39, 0x60, 0x4a, 0x5f, 0x2c, 0x25, 0x39, 0x26, 0x27, 0x40, 0x27, 0x1b }, { 0x22, 0x1f, 0x3b, 0x38, 0x61, 0x4c, 0x73, 0x5c, 0x37, 0x2c, 0x2a, 0x46, 0x31, 0x38, 0x24, 0x19 }, { 0x33, 0x1a, 0x31, 0x4f, 0x4b, 0x46, 0x5e, 0x55, 0x4e, 0x3b, 0x52, 0x3c, 0x4b, 0x32, 0x23, 0x14 }, { 0x2e, 0x2c, 0x4d, 0x49, 0x72, 0x5d, 0x5a, 0x5b, 0x48, 0x36, 0x48, 0x33, 0x1e, 0x31, 0x35, 0x1d }, { 0x47, 0x21, 0x41, 0x40, 0x5b, 0x54, 0x4f, 0x5a, 0x57, 0x51, 0x50, 0x24, 0x34, 0x2d, 0x15, 0xb }, { 0x2a, 0x1f, 0x1d, 0x2b, 0x36, 0x4d, 0x45, 0x56, 0x4e, 0x42, 0x2f, 0x37, 0x30, 0x1f, 0x10, 0x11 }, { 0x34, 0x18, 0x28, 0x4c, 0x49, 0x3a, 0x53, 0x49, 0x3d, 0x4c, 0x3a, 0x1a, 0x28, 0x13, 0x17, 0xc }, { 0x44, 0x20, 0x1e, 0x38, 0x37, 0x4f, 0x47, 0x4d, 0x2e, 0x39, 0x37, 0x22, 0x34, 0xc, 0xd, 0x10 }, { 0x34, 0x18, 0x28, 0x25, 0x29, 0x1d, 0x32, 0x41, 0x36, 0x36, 0x15, 0x17, 0x1c, 0xf, 0xa, 0x8 }, { 0x43, 0x1f, 0x1b, 0x1a, 0x30, 0x4a, 0x3b, 0x33, 0x25, 0x25, 0x16, 0x1b, 0x12, 0xa, 0x6, 0x1 }, { 0x2c, 0x23, 0x21, 0x1f, 0x35, 0x31, 0x26, 0x2c, 0x1e, 0x12, 0x1a, 0xe, 0x11, 0x7, 0x1, 0x1 }, { 0x2b, 0x16, 0x2a, 0x19, 0x17, 0x29, 0x24, 0x2b, 0x14, 0x27, 0x26, 0x9, 0x9, 0x6, 0x4, 0x0 }, { 0x13, 0xe, 0x10, 0xe, 0x18, 0x11, 0xf, 0x2a, 0x10, 0xb, 0x16, 0x7, 0x5, 0x3, 0x2, 0x1 } }; static const uint8_t mp3enc_hlen_13[16][16] = { { 1, 3, 6, 7, 8, 9, 9, 10, 9, 10, 10, 11, 11, 12, 13, 12 }, { 4, 4, 6, 7, 7, 8, 9, 9, 8, 9, 10, 10, 11, 11, 12, 12 }, { 6, 6, 7, 8, 9, 9, 10, 10, 9, 10, 10, 10, 11, 12, 12, 13 }, { 7, 7, 8, 9, 9, 10, 10, 11, 10, 10, 11, 11, 12, 13, 13, 14 }, { 8, 8, 9, 9, 10, 10, 11, 11, 10, 11, 11, 12, 12, 13, 13, 14 }, { 9, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14 }, { 9, 9, 10, 10, 11, 11, 11, 12, 11, 11, 12, 12, 12, 14, 15, 15 }, { 10, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 12, 13, 14, 14, 14 }, { 9, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 14, 14, 14, 15 }, { 10, 9, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 17, 15 }, { 11, 10, 10, 11, 11, 12, 12, 13, 12, 13, 14, 13, 15, 14, 15, 16 }, { 11, 10, 11, 11, 12, 11, 12, 13, 13, 14, 13, 14, 15, 15, 15, 16 }, { 12, 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 15, 15, 16, 15, 19 }, { 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 16, 15, 17, 18 }, { 13, 12, 13, 13, 13, 14, 14, 16, 15, 16, 16, 15, 16, 16, 16, 19 }, { 13, 12, 13, 13, 14, 14, 14, 16, 15, 15, 17, 16, 16, 16, 16, 16 } }; static const uint16_t mp3enc_hcode_15[16][16] = { { 0x7, 0xd, 0x13, 0x1d, 0x34, 0x4d, 0x7d, 0x6d, 0x5a, 0x47, 0x6d, 0x56, 0x76, 0x5b, 0x7b, 0x47 }, { 0xc, 0x5, 0x11, 0x1c, 0x16, 0x25, 0x20, 0x35, 0x2b, 0x22, 0x35, 0x2a, 0x44, 0x2c, 0x3c, 0x25 }, { 0x12, 0x10, 0xf, 0x19, 0x2a, 0x23, 0x3c, 0x31, 0x29, 0x43, 0x33, 0x28, 0x1e, 0x27, 0x3a, 0x22 }, { 0x35, 0x1b, 0x18, 0x2b, 0x28, 0x42, 0x38, 0x5e, 0x4d, 0x3c, 0x2f, 0x25, 0x37, 0x26, 0x35, 0x1e }, { 0x2f, 0x2e, 0x29, 0x27, 0x43, 0x3a, 0x32, 0x58, 0x49, 0x3a, 0x5a, 0x46, 0x32, 0x22, 0x2f, 0x1c }, { 0x4c, 0x24, 0x22, 0x3f, 0x39, 0x34, 0x5c, 0x4b, 0x3f, 0x31, 0x52, 0x40, 0x2e, 0x3f, 0x2b, 0x14 }, { 0x7c, 0x3d, 0x3b, 0x37, 0x5f, 0x5b, 0x4e, 0x42, 0x38, 0x58, 0x3a, 0x34, 0x4a, 0x34, 0x20, 0x11 }, { 0x6c, 0x33, 0x30, 0x5d, 0x4f, 0x4a, 0x41, 0x7a, 0x5c, 0x4c, 0x39, 0x2b, 0x41, 0x2d, 0x16, 0x1a }, { 0x59, 0x2a, 0x28, 0x4c, 0x48, 0x3e, 0x37, 0x5b, 0x4d, 0x43, 0x30, 0x46, 0x31, 0x1f, 0x25, 0x15 }, { 0x7b, 0x46, 0x40, 0x3b, 0x39, 0x30, 0x57, 0x49, 0x42, 0x6a, 0x48, 0x37, 0x27, 0x34, 0x18, 0x10 }, { 0x6c, 0x34, 0x32, 0x5d, 0x59, 0x4f, 0x47, 0x38, 0x2f, 0x47, 0x39, 0x2a, 0x18, 0x1c, 0x11, 0xa }, { 0x77, 0x53, 0x4e, 0x48, 0x45, 0x3f, 0x33, 0x2a, 0x43, 0x36, 0x29, 0x19, 0x10, 0x13, 0xc, 0x6 }, { 0x6b, 0x41, 0x3e, 0x36, 0x31, 0x5a, 0x49, 0x40, 0x30, 0x26, 0x17, 0x1d, 0x16, 0xe, 0xf, 0x8 }, { 0x51, 0x29, 0x50, 0x4b, 0x42, 0x3e, 0x33, 0x2c, 0x35, 0x27, 0x1b, 0x12, 0xd, 0x8, 0xa, 0x6 }, { 0x7a, 0x3b, 0x38, 0x32, 0x2e, 0x28, 0x46, 0x15, 0x24, 0x17, 0x3e, 0xb, 0xe, 0x9, 0x2, 0x2 }, { 0x3f, 0x24, 0x21, 0x1d, 0x1b, 0x26, 0x1e, 0x19, 0x14, 0xf, 0x9, 0xb, 0x7, 0x3, 0x1, 0x0 } }; static const uint8_t mp3enc_hlen_15[16][16] = { { 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10, 11, 11, 12, 12 }, { 4, 3, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 11, 11 }, { 5, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 11, 11 }, { 7, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 10, 10, 11, 11 }, { 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11 }, { 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11 }, { 9, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11 }, { 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12 }, { 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12 }, { 10, 9, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12 }, { 10, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12 }, { 11, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12 }, { 11, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13 }, { 11, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13 }, { 12, 11, 11, 11, 11, 11, 12, 11, 12, 12, 13, 12, 13, 13, 12, 13 }, { 13, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13 } }; static const uint16_t mp3enc_hcode_16[16][16] = { { 0x1, 0x3, 0xf, 0x2d, 0x4b, 0x42, 0x6f, 0x62, 0x55, 0x9a, 0x8b, 0xf3, 0xca, 0x2eb, 0x179, 0xc }, { 0x5, 0x4, 0xd, 0x15, 0x24, 0x1e, 0x36, 0x30, 0x54, 0x4c, 0x81, 0x78, 0xe0, 0xd3, 0x171, 0xa }, { 0xe, 0xc, 0x17, 0x27, 0x44, 0x3b, 0x34, 0x5b, 0x51, 0x49, 0x43, 0x76, 0xde, 0xd2, 0x66, 0x7 }, { 0x2c, 0x14, 0x26, 0x45, 0x41, 0x38, 0x64, 0x58, 0x9f, 0x8d, 0x7d, 0x73, 0xda, 0xd0, 0xbb, 0xb }, { 0x4a, 0x23, 0x43, 0x40, 0x73, 0x66, 0xb8, 0xa5, 0x9c, 0x83, 0xf7, 0xe3, 0xd8, 0x172, 0x2d6, 0xa }, { 0x3f, 0x3e, 0x3a, 0x72, 0x65, 0xb9, 0xb2, 0x9d, 0x8f, 0x100, 0xe9, 0xdf, 0x185, 0x17b, 0x2d2, 0x11 }, { 0x6e, 0x35, 0x67, 0x63, 0xb3, 0xad, 0xa0, 0x94, 0x104, 0xf5, 0xe5, 0x18c, 0x182, 0x2de, 0x166, 0xb }, { 0x5d, 0x2f, 0x5a, 0x57, 0xa4, 0x109, 0x85, 0x105, 0xf9, 0x1aa, 0xdb, 0x2ea, 0x17d, 0x2d3, 0x2c7, 0x9 }, { 0xac, 0x53, 0xa1, 0x9e, 0x9b, 0x8e, 0x101, 0xf8, 0x1ab, 0x196, 0x189, 0x2e6, 0x16c, 0x2ca, 0x2c5, 0xd }, { 0x95, 0x4b, 0x48, 0x8c, 0x108, 0xfd, 0xf4, 0x197, 0x191, 0x18a, 0x2e7, 0x2e0, 0x378, 0x6c7, 0x362, 0xc }, { 0x8a, 0x44, 0x7f, 0xfc, 0xf6, 0xe8, 0xe4, 0x18d, 0x188, 0x180, 0x2e1, 0x2d1, 0x1bb, 0x373, 0x6c6, 0xa }, { 0xf2, 0x77, 0x75, 0xd4, 0xe2, 0x190, 0xd9, 0x174, 0x17f, 0x2df, 0x2d0, 0x2c8, 0x2c3, 0x36d, 0x367, 0x7 }, { 0xe1, 0xc9, 0x6e, 0xc7, 0x18b, 0x184, 0x181, 0x17c, 0x2d7, 0x167, 0x375, 0x2c2, 0x1b8, 0x36c, 0xd82, 0x5 }, { 0xc3, 0x6b, 0xd1, 0x183, 0x17e, 0x17a, 0x16e, 0x379, 0x2c9, 0x2c6, 0x372, 0xdf, 0x1b5, 0xd83, 0x366, 0x3 }, { 0x178, 0xcf, 0xce, 0x16d, 0x16a, 0x1bd, 0x2cb, 0x374, 0x2c4, 0x160, 0x1b7, 0x1b4, 0x6c0, 0x361, 0x1b2, 0x1 }, { 0x11, 0x9, 0x10, 0x1a, 0x9, 0x10, 0xa, 0x8, 0x7, 0xb, 0x4, 0x6, 0x4, 0x2, 0x0, 0x3 } }; static const uint8_t mp3enc_hlen_16[16][16] = { { 1, 3, 6, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 14, 13, 9 }, { 4, 4, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 8 }, { 6, 6, 7, 8, 9, 9, 9, 10, 10, 10, 10, 11, 12, 12, 11, 8 }, { 8, 7, 8, 9, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 9 }, { 9, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 14, 9 }, { 9, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 10 }, { 10, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 13, 10 }, { 10, 9, 10, 10, 11, 12, 11, 12, 12, 13, 12, 14, 13, 14, 14, 10 }, { 11, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, 13, 14, 14, 11 }, { 11, 10, 10, 11, 12, 12, 12, 13, 13, 13, 14, 14, 15, 16, 15, 11 }, { 11, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 16, 11 }, { 12, 11, 11, 12, 12, 13, 12, 13, 13, 14, 14, 14, 14, 15, 15, 11 }, { 12, 12, 11, 12, 13, 13, 13, 13, 14, 13, 15, 14, 14, 15, 17, 11 }, { 12, 11, 12, 13, 13, 13, 13, 15, 14, 14, 15, 13, 14, 17, 15, 11 }, { 13, 12, 12, 13, 13, 14, 14, 15, 14, 13, 14, 14, 16, 15, 14, 11 }, { 9, 8, 9, 10, 9, 10, 10, 10, 10, 11, 10, 11, 11, 11, 11, 8 } }; static const uint16_t mp3enc_hcode_24[16][16] = { { 0xf, 0xe, 0x2f, 0x51, 0x93, 0x107, 0xf9, 0x1b3, 0x1ab, 0x14f, 0x29c, 0x28c, 0x288, 0x26c, 0x409, 0x2b }, { 0xd, 0xc, 0x16, 0x27, 0x48, 0x42, 0x7b, 0x73, 0xd4, 0xc7, 0xb8, 0x15a, 0x142, 0x12c, 0x118, 0x14 }, { 0x2e, 0x15, 0x29, 0x4b, 0x45, 0x81, 0x79, 0x6f, 0xd0, 0xc5, 0xb7, 0xab, 0x13c, 0x128, 0x116, 0x13 }, { 0x50, 0x26, 0x4a, 0x46, 0x87, 0x7e, 0x75, 0x6d, 0xcd, 0xbf, 0xb3, 0xa8, 0x138, 0x126, 0x112, 0x11 }, { 0x92, 0x47, 0x44, 0x86, 0x7f, 0x77, 0x71, 0xd3, 0xc9, 0xbd, 0xaf, 0xa4, 0x133, 0x120, 0x10b, 0xf }, { 0x106, 0x82, 0x80, 0x7d, 0x76, 0x72, 0xd7, 0xcb, 0xc1, 0xb5, 0x158, 0x13e, 0x12e, 0x11a, 0x108, 0xd }, { 0xf8, 0x7a, 0x78, 0x74, 0x70, 0xd6, 0xce, 0xc4, 0xba, 0xae, 0x14b, 0x135, 0x124, 0x111, 0x103, 0xb }, { 0x1b2, 0xd8, 0xdd, 0xdc, 0xd2, 0xca, 0xc3, 0xbb, 0xb1, 0x14d, 0x13a, 0x12b, 0x11c, 0x10a, 0x17e, 0x9 }, { 0x1aa, 0xd1, 0xcf, 0xcc, 0xc8, 0xc0, 0xb9, 0x161, 0xa9, 0x141, 0x130, 0x11f, 0x10d, 0x203, 0x17a, 0x7 }, { 0x29d, 0xc6, 0xc2, 0xbe, 0xbc, 0xb4, 0x15b, 0x14c, 0x140, 0x131, 0x122, 0x114, 0x105, 0x17c, 0x174, 0x6 }, { 0x28d, 0x147, 0xb6, 0xb2, 0x160, 0x155, 0x14a, 0x139, 0x12f, 0x121, 0x115, 0x107, 0x200, 0x176, 0x16f, 0x4 }, { 0x289, 0x159, 0x154, 0x145, 0x143, 0x13d, 0x134, 0x12a, 0x11e, 0x113, 0x212, 0x201, 0x178, 0x171, 0x16b, 0x7 }, { 0x26d, 0x13f, 0x13b, 0x137, 0x132, 0x12d, 0x123, 0x11b, 0x10c, 0x209, 0x17f, 0x177, 0x172, 0x16d, 0x168, 0x5 }, { 0x205, 0x129, 0x127, 0x125, 0x11d, 0x119, 0x110, 0x213, 0x202, 0x17b, 0x175, 0x170, 0x16c, 0x169, 0x166, 0x3 }, { 0x408, 0x117, 0x21d, 0x10f, 0x21c, 0x106, 0x208, 0x17d, 0x179, 0x173, 0x16e, 0x16a, 0x167, 0x165, 0x164, 0x1 }, { 0x58, 0x2a, 0x12, 0x10, 0xe, 0xc, 0xa, 0x11, 0x10, 0xb, 0xa, 0x6, 0x4, 0x2, 0x0, 0x3 } }; static const uint8_t mp3enc_hlen_24[16][16] = { { 4, 4, 6, 7, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 8 }, { 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 7 }, { 6, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 7 }, { 7, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 7 }, { 8, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 7 }, { 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 7 }, { 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 7 }, { 10, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 7 }, { 10, 9, 9, 9, 9, 9, 9, 10, 9, 10, 10, 10, 10, 11, 11, 7 }, { 11, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 11, 11, 7 }, { 11, 10, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 7 }, { 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8 }, { 11, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 8 }, { 11, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 8 }, { 12, 10, 11, 10, 11, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 8 }, { 9, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 4 } }; static const uint8_t mp3enc_count1a_code[16] = { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1 }; static const uint8_t mp3enc_count1a_len[16] = { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6 }; static const uint8_t mp3enc_count1b_code[16] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; static const uint8_t mp3enc_count1b_len[16] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 };