Mercurial > libavcodec.hg
changeset 6848:20a7e808dd82 libavcodec
Make wavtable a table instead of an array
author | vitor |
---|---|
date | Sat, 24 May 2008 09:15:01 +0000 |
parents | c2a365612e80 |
children | 3feec67125d8 |
files | ra144.c ra144.h |
diffstat | 2 files changed, 516 insertions(+), 516 deletions(-) [+] |
line wrap: on
line diff
--- a/ra144.c Sat May 24 07:19:12 2008 +0000 +++ b/ra144.c Sat May 24 09:15:01 2008 +0000 @@ -128,8 +128,8 @@ int b, c, i; const short *ptr, *ptr2; - ptr = wavtable1 + n * 9; - ptr2 = wavtable2 + n * 9; + ptr = wavtable1[n]; + ptr2 = wavtable2[n]; if (f) a = (ptr[0] * m1) >> (ptr2[0] + 1);
--- a/ra144.h Sat May 24 07:19:12 2008 +0000 +++ b/ra144.h Sat May 24 09:15:01 2008 +0000 @@ -23,522 +23,522 @@ #define FFMPEG_RA144_H /* 14.4 data tables */ -static const signed short wavtable1[2304]={ - 541, 956, 768, -1011, -811, -717, -571, -893, -576, - 877, 581, 568, -997, -975, -646, -752, -661, -632, - 675, 787, 635, -519, -838, -977, -890, -605, -789, - 624, 732, 668, -893, -815, -956, -762, -523, -873, - 623, 839, 697, -1022, -849, -571, -759, -688, -949, - 640, 693, 991, -867, -619, -671, -800, -940, -959, - 925, 687, 608, -621, -549, -817, -837, -924, -722, - 552, 797, 572, -861, -617, -892, -596, -621, -640, - 535, 832, 799, -871, -836, -649, -560, -676, -624, - 762, 605, 577, -902, -859, -682, -568, -716, -650, - 832, 561, 1003, -913, -815, -550, -676, -616, -982, - 590, 687, 588, -793, -679, -790, -681, -923, -677, - 646, 901, 732, -569, -924, -645, -816, -794, -524, - 828, 689, 896, -557, -725, -603, -670, -927, -784, - 875, 624, 848, -533, -725, -516, -748, -760, -702, - 571, 942, 1022, -526, -570, -941, -638, -868, -1020, - 824, 736, 643, -593, -517, -925, -663, -530, -808, - 517, 765, 512, -774, -518, -767, -523, -572, -513, - 562, 908, 761, -997, -836, -675, -617, -805, -566, - 694, 913, 675, -619, -916, -603, -941, -815, -891, - 704, 524, 672, -722, -925, -689, -969, -538, -883, - 721, 757, 558, -534, -786, -826, -1018, -561, -608, - 884, 551, 633, -951, -546, -681, -763, -592, -784, - 558, 1007, 846, -549, -923, -832, -608, -991, -699, - 932, 746, 777, -679, -707, -566, -849, -544, -589, - 566, 822, 926, -910, -513, -744, -627, -659, -839, - 613, 771, 611, -924, -731, -921, -733, -581, -729, - 737, 671, 1008, -967, -726, -661, -531, -880, -993, - 651, 594, 579, -757, -737, -673, -830, -691, -655, - 801, 636, 564, -996, -883, -702, -626, -792, -622, - 852, 910, 719, -757, -599, -639, -709, -809, -1012, - 998, 614, 575, -599, -561, -691, -974, -737, -647, - 665, 935, 628, -607, -816, -574, -863, -854, -771, - 631, 596, 829, -735, -1023, -966, -778, -694, -672, - 644, 926, 526, -583, -663, -953, -811, -838, -542, - 879, 988, 613, -848, -526, -592, -755, -953, -734, - 941, 692, 693, -637, -638, -939, -866, -937, -940, - 565, 672, 576, -742, -637, -757, -625, -882, -649, - 547, 628, 740, -671, -791, -909, -585, -771, -535, - 639, 532, 537, -665, -671, -559, -798, -554, -564, - 955, 604, 598, -564, -558, -706, -891, -714, -699, - 562, 580, 900, -637, -989, -1021, -617, -658, -791, - 603, 899, 621, -530, -733, -545, -712, -789, -755, - 746, 533, 624, -776, -909, -650, -543, -555, -761, - 729, 514, 735, -733, -523, -739, -519, -517, -528, - 853, 551, 692, -919, -577, -745, -711, -593, -936, - 949, 1018, 1004, -944, -931, -999, -880, -1013, -985, - 544, 988, 735, -525, -781, -710, -578, -954, -528, - 789, 782, 821, -603, -633, -628, -608, -598, -659, - 897, 516, 754, -906, -661, -761, -786, -521, -556, - 517, 702, 828, -710, -837, -568, -523, -963, -670, - 586, 818, 763, -937, -874, -609, -672, -654, -568, - 907, 652, 592, -578, -525, -754, -804, -830, -686, - 528, 652, 642, -673, -663, -818, -546, -830, -806, - 531, 708, 780, -736, -811, -540, -552, -981, -595, - 666, 625, 727, -813, -946, -888, -867, -763, -516, - 947, 727, 554, -673, -512, -787, -875, -517, -599, - 549, 657, 981, -705, -526, -630, -589, -843, -941, - 605, 920, 852, -544, -1008, -766, -716, -827, -709, - 624, 619, 983, -755, -599, -595, -761, -750, -944, - 605, 909, 547, -537, -646, -971, -715, -807, -584, - 690, 935, 516, -631, -697, -944, -932, -855, -521, - 700, 612, 853, -838, -584, -1021, -959, -732, -711, - 767, 832, 574, -623, -861, -933, -575, -676, -643, - 523, 898, 923, -919, -945, -810, -536, -789, -833, - 722, 958, 691, -676, -976, -647, -1020, -896, -935, - 613, 771, 928, -924, -556, -700, -734, -581, -842, - 758, 757, 584, -561, -866, -865, -562, -560, -667, - 512, 567, 577, -567, -577, -639, -512, -628, -650, - 615, 638, 698, -766, -839, -871, -739, -795, -954, - 574, 642, 589, -720, -660, -739, -644, -806, -677, - 993, 682, 878, -662, -852, -585, -963, -910, -753, - 539, 890, 913, -939, -963, -795, -569, -775, -815, - 694, 928, 544, -629, -738, -987, -941, -842, -578, - 805, 600, 680, -944, -535, -798, -633, -704, -905, - 540, 951, 782, -1004, -825, -727, -570, -884, -597, - 816, 950, 590, -757, -941, -548, -650, -881, -681, - 955, 847, 811, -790, -757, -671, -891, -700, -643, - 547, 883, 556, -945, -595, -960, -586, -762, -605, - 652, 888, 604, -565, -770, -524, -831, -770, -713, - 863, 585, 855, -986, -721, -978, -727, -668, -715, - 1023, 997, 516, -997, -516, -1006, -1023, -972, -520, - 932, 614, 640, -560, -583, -769, -850, -738, -800, - 627, 564, 573, -691, -702, -631, -769, -621, -641, - 876, 900, 724, -770, -620, -637, -750, -792, -512, - 515, 857, 896, -863, -902, -750, -519, -718, -784, - 647, 953, 879, -602, -555, -818, -817, -888, -755, - 806, 854, 857, -672, -675, -715, -634, -712, -718, - 545, 583, 631, -621, -672, -719, -581, -664, -778, - 657, 601, 751, -772, -963, -882, -843, -707, -550, - 740, 905, 795, -654, -575, -704, -535, -801, -618, - 841, 1016, 568, -835, -934, -564, -691, -1009, -631, - 747, 589, 983, -861, -718, -566, -545, -679, -945, - 878, 613, 526, -526, -902, -630, -753, -736, -540, - 864, 723, 779, -610, -657, -550, -729, -1022, -592, - 534, 674, 774, -703, -808, -1019, -557, -887, -586, - 950, 649, 939, -602, -871, -595, -881, -824, -861, - 590, 703, 899, -811, -518, -618, -680, -966, -790, - 618, 527, 579, -637, -700, -597, -746, -543, -657, - 725, 647, 972, -917, -689, -615, -513, -818, -924, - 641, 647, 707, -810, -885, -893, -803, -817, -976, - 730, 663, 644, -946, -920, -835, -521, -860, -812, - 807, 572, 578, -902, -912, -646, -637, -639, -653, - 879, 611, 821, -524, -705, -979, -755, -729, -658, - 667, 729, 841, -951, -549, -599, -871, -519, -692, - 782, 585, 751, -895, -574, -859, -598, -670, -551, - 802, 733, 976, -574, -765, -699, -628, -525, -931, - 850, 871, 708, -724, -588, -602, -706, -742, -979, - 870, 743, 704, -632, -598, -1023, -739, -540, -970, - 941, 899, 585, -827, -538, -514, -866, -790, -669, - 943, 632, 875, -582, -806, -541, -869, -781, -749, - 1023, 732, 638, -731, -637, -912, -1022, -523, -795, - 778, 753, 655, -573, -997, -965, -592, -554, -839, - 843, 945, 945, -779, -779, -873, -694, -873, -873, - 942, 969, 572, -892, -527, -542, -867, -918, -640, - 1008, 559, 854, -551, -841, -934, -993, -612, -712, - 868, 729, 787, -618, -668, -560, -737, -519, -605, - 970, 686, 547, -650, -518, -733, -919, -919, -585, - 535, 635, 674, -664, -705, -836, -560, -788, -887, - 560, 636, 828, -696, -907, -514, -613, -790, -670, - 994, 592, 833, -575, -809, -964, -966, -686, -677, - 548, 621, 694, -665, -743, -843, -587, -755, -942, - 550, 801, 955, -861, -513, -748, -591, -627, -892, - 582, 522, 646, -594, -735, -659, -663, -533, -815, - 606, 625, 818, -739, -969, -999, -717, -763, -655, - 623, 591, 874, -720, -531, -1010, -758, -683, -746, - 669, 535, 1001, -700, -654, -523, -876, -559, -979, - 701, 938, 592, -642, -810, -542, -960, -860, -684, - 925, 820, 738, -741, -667, -592, -835, -657, -533, - 735, 790, 544, -567, -781, -840, -527, -610, -578, - 575, 788, 674, -886, -758, -519, -647, -607, -888, - 655, 783, 528, -1003, -677, -809, -840, -599, -545, - 527, 513, 677, -529, -699, -679, -544, -514, -897, - 782, 852, 940, -651, -718, -783, -597, -709, -863, - 578, 910, 513, -514, -581, -914, -654, -809, -515, - 692, 882, 734, -596, -993, -632, -937, -759, -526, - 586, 683, 715, -782, -818, -954, -670, -911, -999, - 739, 609, 717, -880, -518, -854, -534, -725, -1006, - 778, 773, 697, -588, -530, -527, -592, -584, -951, - 922, 785, 813, -707, -732, -624, -830, -602, -646, - 766, 651, 984, -974, -736, -626, -573, -827, -946, - 978, 596, 515, -569, -984, -600, -934, -694, -518, - 535, 757, 540, -792, -565, -799, -560, -559, -571, - 662, 687, 589, -890, -762, -791, -857, -924, -678, - 554, 536, 979, -580, -530, -512, -601, -561, -936, - 723, 982, 690, -694, -976, -662, -1022, -943, -932, - 936, 956, 527, -875, -965, -986, -856, -894, -543, - 590, 1002, 547, -577, -631, -536, -680, -980, -586, - 517, 653, 825, -660, -833, -526, -522, -834, -664, - 832, 592, 974, -964, -792, -564, -677, -686, -928, - 512, 957, 903, -957, -903, -844, -512, -894, -796, - 631, 545, 906, -672, -558, -965, -777, -581, -802, - 514, 720, 649, -723, -652, -913, -516, -1012, -824, - 596, 679, 694, -790, -807, -920, -693, -900, -940, - 617, 740, 979, -892, -590, -708, -743, -535, -936, - 711, 685, 877, -952, -609, -587, -987, -917, -752, - 655, 835, 848, -534, -542, -691, -838, -681, -702, - 754, 839, 698, -618, -515, -573, -556, -688, -954, - 871, 515, 769, -877, -655, -774, -742, -518, -578, - 955, 852, 573, -795, -535, -955, -892, -709, -643, - 640, 859, 587, -537, -735, -986, -801, -721, -674, - 792, 863, 554, -667, -858, -935, -612, -727, -601, - 843, 708, 682, -583, -562, -944, -694, -979, -910, - 971, 768, 552, -728, -524, -829, -921, -576, -596, - 891, 536, 690, -935, -601, -724, -776, -563, -931, - 1016, 560, 663, -556, -659, -727, -1009, -614, -860, - 543, 870, 674, -924, -716, -573, -577, -739, -889, - 601, 999, 585, -586, -686, -571, -705, -975, -668, - 945, 966, 889, -892, -821, -840, -872, -912, -773, - 529, 912, 777, -943, -804, -692, -547, -812, -590, - 574, 1020, 714, -572, -801, -711, -643, -1016, -997, - 609, 922, 932, -549, -555, -840, -725, -831, -848, - 598, 778, 929, -909, -543, -707, -698, -592, -844, - 651, 772, 744, -982, -947, -561, -827, -582, -541, - 691, 957, 722, -646, -976, -675, -934, -894, -1020, - 729, 766, 984, -546, -701, -736, -520, -573, -945, - 547, 519, 632, -555, -675, -640, -585, -526, -780, - 583, 532, 922, -607, -525, -960, -664, -554, -831, - 633, 995, 603, -615, -745, -586, -783, -968, -710, - 677, 571, 874, -757, -578, -977, -896, -638, -747, - 602, 545, 666, -641, -783, -709, -708, -580, -866, - 627, 542, 875, -665, -536, -928, -769, -575, -748, - 672, 983, 598, -645, -786, -575, -882, -944, -700, - 692, 979, 730, -662, -988, -698, -937, -937, -521, - 668, 634, 872, -827, -569, -540, -871, -785, -742, - 711, 706, 674, -982, -937, -931, -988, -975, -889, - 739, 977, 595, -706, -860, -568, -534, -932, -691, - 759, 905, 763, -671, -566, -675, -563, -799, -569, - 756, 582, 763, -860, -563, -868, -558, -663, -568, - 748, 1013, 908, -741, -664, -898, -547, -1002, -805, - 804, 937, 950, -736, -746, -869, -631, -858, -882, - 785, 543, 998, -833, -766, -529, -602, -576, -973, - 999, 684, 942, -668, -920, -630, -975, -915, -868, - 626, 633, 996, -774, -609, -616, -765, -783, -970, - 626, 567, 835, -693, -1021, -925, -765, -628, -681, - 739, 571, 973, -825, -702, -543, -533, -637, -925, - 655, 769, 707, -984, -906, -531, -839, -577, -978, - 702, 952, 571, -653, -785, -532, -964, -886, -638, - 727, 712, 514, -1012, -730, -715, -516, -990, -516, - 744, 686, 741, -998, -539, -994, -541, -921, -536, - 731, 552, 714, -789, -1021, -772, -522, -596, -998, - 824, 991, 726, -798, -585, -703, -664, -959, -515, - 795, 615, 544, -955, -844, -653, -617, -738, -578, - 870, 575, 824, -978, -700, -926, -739, -646, -664, - 803, 832, 923, -653, -724, -750, -630, -677, -832, - 819, 839, 531, -671, -849, -871, -655, -688, -550, - 887, 786, 852, -681, -738, -654, -769, -603, -709, - 933, 764, 570, -696, -519, -851, -850, -570, -634, - 716, 906, 654, -634, -916, -579, -1003, -802, -837, - 784, 804, 563, -616, -864, -885, -601, -631, -620, - 774, 535, 876, -809, -662, -915, -585, -559, -749, - 807, 598, 649, -943, -1023, -758, -636, -699, -822, - 817, 759, 718, -606, -573, -533, -652, -563, -1008, - 831, 993, 846, -806, -687, -821, -675, -963, -699, - 858, 567, 605, -951, -1015, -670, -720, -628, -716, - 876, 1012, 651, -866, -557, -643, -750, -1001, -827, - 852, 548, 549, -913, -914, -588, -710, -587, -589, - 895, 1008, 871, -881, -761, -858, -782, -993, -741, - 892, 1000, 591, -872, -515, -578, -777, -977, -683, - 935, 516, 836, -944, -764, -844, -855, -521, -682, - 931, 612, 776, -557, -706, -929, -847, -733, -589, - 968, 614, 816, -581, -771, -980, -915, -738, -651, - 524, 777, 719, -796, -737, -546, -537, -590, -1012, - 549, 694, 786, -744, -843, -533, -589, -941, -603, - 882, 754, 534, -649, -920, -787, -759, -555, -557, - 597, 837, 766, -977, -895, -627, -697, -684, -574, - 635, 954, 704, -592, -873, -656, -788, -890, -969, - 803, 550, 798, -863, -626, -858, -630, -591, -622, - 699, 654, 798, -894, -545, -1021, -954, -837, -622, - 924, 767, 738, -693, -666, -553, -834, -575, -531, - 970, 675, 608, -639, -576, -801, -919, -890, -722, - 632, 706, 684, -873, -844, -944, -780, -976, -914, - 858, 767, 563, -643, -945, -844, -719, -574, -620, - 527, 765, 702, -788, -724, -525, -543, -572, -964, - 559, 924, 1003, -1009, -547, -905, -610, -833, -983, - 618, 524, 611, -633, -738, -625, -747, -536, -729, - 999, 942, 963, -920, -940, -886, -976, -867, -905, - 547, 857, 935, -916, -999, -783, -584, -718, -854, - 734, 926, 569, -665, -818, -515, -527, -838, -634, - 967, 746, 551, -705, -520, -804, -913, -544, -593, - 834, 633, 881, -515, -718, -545, -679, -783, -758, - 941, 701, 727, -645, -668, -997, -865, -961, -516, - 945, 564, 636, -521, -587, -701, -873, -623, -790, - 512, 563, 793, -563, -794, -873, -512, -619, -615, - 984, 556, 570, -534, -548, -620, -945, -604, -636, - 984, 540, 740, -519, -712, -782, -946, -570, -536, - 527, 764, 874, -787, -901, -652, -543, -570, -747, - 530, 664, 1014, -688, -525, -658, -549, -862, -1005, - 546, 515, 521, -550, -556, -525, -584, -519, -531, - 554, 934, 672, -1011, -728, -613, -600, -852, -882, - 598, 945, 556, -552, -650, -513, -700, -872, -603, - 627, 531, 733, -651, -899, -760, -769, -551, -525, - 576, 1020, 1014, -574, -571, -1011, -650, -1016, -1005, - 623, 924, 594, -563, -724, -537, -759, -835, -691, - 678, 909, 603, -602, -800, -536, -899, -807, -712, - 814, 744, 543, -592, -865, -790, -648, -541, -577 +static const signed short wavtable1[256][9] = { + { 541, 956, 768, -1011, -811, -717, -571, -893, -576}, + { 877, 581, 568, -997, -975, -646, -752, -661, -632}, + { 675, 787, 635, -519, -838, -977, -890, -605, -789}, + { 624, 732, 668, -893, -815, -956, -762, -523, -873}, + { 623, 839, 697, -1022, -849, -571, -759, -688, -949}, + { 640, 693, 991, -867, -619, -671, -800, -940, -959}, + { 925, 687, 608, -621, -549, -817, -837, -924, -722}, + { 552, 797, 572, -861, -617, -892, -596, -621, -640}, + { 535, 832, 799, -871, -836, -649, -560, -676, -624}, + { 762, 605, 577, -902, -859, -682, -568, -716, -650}, + { 832, 561, 1003, -913, -815, -550, -676, -616, -982}, + { 590, 687, 588, -793, -679, -790, -681, -923, -677}, + { 646, 901, 732, -569, -924, -645, -816, -794, -524}, + { 828, 689, 896, -557, -725, -603, -670, -927, -784}, + { 875, 624, 848, -533, -725, -516, -748, -760, -702}, + { 571, 942, 1022, -526, -570, -941, -638, -868, -1020}, + { 824, 736, 643, -593, -517, -925, -663, -530, -808}, + { 517, 765, 512, -774, -518, -767, -523, -572, -513}, + { 562, 908, 761, -997, -836, -675, -617, -805, -566}, + { 694, 913, 675, -619, -916, -603, -941, -815, -891}, + { 704, 524, 672, -722, -925, -689, -969, -538, -883}, + { 721, 757, 558, -534, -786, -826, -1018, -561, -608}, + { 884, 551, 633, -951, -546, -681, -763, -592, -784}, + { 558, 1007, 846, -549, -923, -832, -608, -991, -699}, + { 932, 746, 777, -679, -707, -566, -849, -544, -589}, + { 566, 822, 926, -910, -513, -744, -627, -659, -839}, + { 613, 771, 611, -924, -731, -921, -733, -581, -729}, + { 737, 671, 1008, -967, -726, -661, -531, -880, -993}, + { 651, 594, 579, -757, -737, -673, -830, -691, -655}, + { 801, 636, 564, -996, -883, -702, -626, -792, -622}, + { 852, 910, 719, -757, -599, -639, -709, -809, -1012}, + { 998, 614, 575, -599, -561, -691, -974, -737, -647}, + { 665, 935, 628, -607, -816, -574, -863, -854, -771}, + { 631, 596, 829, -735, -1023, -966, -778, -694, -672}, + { 644, 926, 526, -583, -663, -953, -811, -838, -542}, + { 879, 988, 613, -848, -526, -592, -755, -953, -734}, + { 941, 692, 693, -637, -638, -939, -866, -937, -940}, + { 565, 672, 576, -742, -637, -757, -625, -882, -649}, + { 547, 628, 740, -671, -791, -909, -585, -771, -535}, + { 639, 532, 537, -665, -671, -559, -798, -554, -564}, + { 955, 604, 598, -564, -558, -706, -891, -714, -699}, + { 562, 580, 900, -637, -989, -1021, -617, -658, -791}, + { 603, 899, 621, -530, -733, -545, -712, -789, -755}, + { 746, 533, 624, -776, -909, -650, -543, -555, -761}, + { 729, 514, 735, -733, -523, -739, -519, -517, -528}, + { 853, 551, 692, -919, -577, -745, -711, -593, -936}, + { 949, 1018, 1004, -944, -931, -999, -880, -1013, -985}, + { 544, 988, 735, -525, -781, -710, -578, -954, -528}, + { 789, 782, 821, -603, -633, -628, -608, -598, -659}, + { 897, 516, 754, -906, -661, -761, -786, -521, -556}, + { 517, 702, 828, -710, -837, -568, -523, -963, -670}, + { 586, 818, 763, -937, -874, -609, -672, -654, -568}, + { 907, 652, 592, -578, -525, -754, -804, -830, -686}, + { 528, 652, 642, -673, -663, -818, -546, -830, -806}, + { 531, 708, 780, -736, -811, -540, -552, -981, -595}, + { 666, 625, 727, -813, -946, -888, -867, -763, -516}, + { 947, 727, 554, -673, -512, -787, -875, -517, -599}, + { 549, 657, 981, -705, -526, -630, -589, -843, -941}, + { 605, 920, 852, -544, -1008, -766, -716, -827, -709}, + { 624, 619, 983, -755, -599, -595, -761, -750, -944}, + { 605, 909, 547, -537, -646, -971, -715, -807, -584}, + { 690, 935, 516, -631, -697, -944, -932, -855, -521}, + { 700, 612, 853, -838, -584, -1021, -959, -732, -711}, + { 767, 832, 574, -623, -861, -933, -575, -676, -643}, + { 523, 898, 923, -919, -945, -810, -536, -789, -833}, + { 722, 958, 691, -676, -976, -647, -1020, -896, -935}, + { 613, 771, 928, -924, -556, -700, -734, -581, -842}, + { 758, 757, 584, -561, -866, -865, -562, -560, -667}, + { 512, 567, 577, -567, -577, -639, -512, -628, -650}, + { 615, 638, 698, -766, -839, -871, -739, -795, -954}, + { 574, 642, 589, -720, -660, -739, -644, -806, -677}, + { 993, 682, 878, -662, -852, -585, -963, -910, -753}, + { 539, 890, 913, -939, -963, -795, -569, -775, -815}, + { 694, 928, 544, -629, -738, -987, -941, -842, -578}, + { 805, 600, 680, -944, -535, -798, -633, -704, -905}, + { 540, 951, 782, -1004, -825, -727, -570, -884, -597}, + { 816, 950, 590, -757, -941, -548, -650, -881, -681}, + { 955, 847, 811, -790, -757, -671, -891, -700, -643}, + { 547, 883, 556, -945, -595, -960, -586, -762, -605}, + { 652, 888, 604, -565, -770, -524, -831, -770, -713}, + { 863, 585, 855, -986, -721, -978, -727, -668, -715}, + {1023, 997, 516, -997, -516, -1006, -1023, -972, -520}, + { 932, 614, 640, -560, -583, -769, -850, -738, -800}, + { 627, 564, 573, -691, -702, -631, -769, -621, -641}, + { 876, 900, 724, -770, -620, -637, -750, -792, -512}, + { 515, 857, 896, -863, -902, -750, -519, -718, -784}, + { 647, 953, 879, -602, -555, -818, -817, -888, -755}, + { 806, 854, 857, -672, -675, -715, -634, -712, -718}, + { 545, 583, 631, -621, -672, -719, -581, -664, -778}, + { 657, 601, 751, -772, -963, -882, -843, -707, -550}, + { 740, 905, 795, -654, -575, -704, -535, -801, -618}, + { 841, 1016, 568, -835, -934, -564, -691, -1009, -631}, + { 747, 589, 983, -861, -718, -566, -545, -679, -945}, + { 878, 613, 526, -526, -902, -630, -753, -736, -540}, + { 864, 723, 779, -610, -657, -550, -729, -1022, -592}, + { 534, 674, 774, -703, -808, -1019, -557, -887, -586}, + { 950, 649, 939, -602, -871, -595, -881, -824, -861}, + { 590, 703, 899, -811, -518, -618, -680, -966, -790}, + { 618, 527, 579, -637, -700, -597, -746, -543, -657}, + { 725, 647, 972, -917, -689, -615, -513, -818, -924}, + { 641, 647, 707, -810, -885, -893, -803, -817, -976}, + { 730, 663, 644, -946, -920, -835, -521, -860, -812}, + { 807, 572, 578, -902, -912, -646, -637, -639, -653}, + { 879, 611, 821, -524, -705, -979, -755, -729, -658}, + { 667, 729, 841, -951, -549, -599, -871, -519, -692}, + { 782, 585, 751, -895, -574, -859, -598, -670, -551}, + { 802, 733, 976, -574, -765, -699, -628, -525, -931}, + { 850, 871, 708, -724, -588, -602, -706, -742, -979}, + { 870, 743, 704, -632, -598, -1023, -739, -540, -970}, + { 941, 899, 585, -827, -538, -514, -866, -790, -669}, + { 943, 632, 875, -582, -806, -541, -869, -781, -749}, + {1023, 732, 638, -731, -637, -912, -1022, -523, -795}, + { 778, 753, 655, -573, -997, -965, -592, -554, -839}, + { 843, 945, 945, -779, -779, -873, -694, -873, -873}, + { 942, 969, 572, -892, -527, -542, -867, -918, -640}, + {1008, 559, 854, -551, -841, -934, -993, -612, -712}, + { 868, 729, 787, -618, -668, -560, -737, -519, -605}, + { 970, 686, 547, -650, -518, -733, -919, -919, -585}, + { 535, 635, 674, -664, -705, -836, -560, -788, -887}, + { 560, 636, 828, -696, -907, -514, -613, -790, -670}, + { 994, 592, 833, -575, -809, -964, -966, -686, -677}, + { 548, 621, 694, -665, -743, -843, -587, -755, -942}, + { 550, 801, 955, -861, -513, -748, -591, -627, -892}, + { 582, 522, 646, -594, -735, -659, -663, -533, -815}, + { 606, 625, 818, -739, -969, -999, -717, -763, -655}, + { 623, 591, 874, -720, -531, -1010, -758, -683, -746}, + { 669, 535, 1001, -700, -654, -523, -876, -559, -979}, + { 701, 938, 592, -642, -810, -542, -960, -860, -684}, + { 925, 820, 738, -741, -667, -592, -835, -657, -533}, + { 735, 790, 544, -567, -781, -840, -527, -610, -578}, + { 575, 788, 674, -886, -758, -519, -647, -607, -888}, + { 655, 783, 528, -1003, -677, -809, -840, -599, -545}, + { 527, 513, 677, -529, -699, -679, -544, -514, -897}, + { 782, 852, 940, -651, -718, -783, -597, -709, -863}, + { 578, 910, 513, -514, -581, -914, -654, -809, -515}, + { 692, 882, 734, -596, -993, -632, -937, -759, -526}, + { 586, 683, 715, -782, -818, -954, -670, -911, -999}, + { 739, 609, 717, -880, -518, -854, -534, -725, -1006}, + { 778, 773, 697, -588, -530, -527, -592, -584, -951}, + { 922, 785, 813, -707, -732, -624, -830, -602, -646}, + { 766, 651, 984, -974, -736, -626, -573, -827, -946}, + { 978, 596, 515, -569, -984, -600, -934, -694, -518}, + { 535, 757, 540, -792, -565, -799, -560, -559, -571}, + { 662, 687, 589, -890, -762, -791, -857, -924, -678}, + { 554, 536, 979, -580, -530, -512, -601, -561, -936}, + { 723, 982, 690, -694, -976, -662, -1022, -943, -932}, + { 936, 956, 527, -875, -965, -986, -856, -894, -543}, + { 590, 1002, 547, -577, -631, -536, -680, -980, -586}, + { 517, 653, 825, -660, -833, -526, -522, -834, -664}, + { 832, 592, 974, -964, -792, -564, -677, -686, -928}, + { 512, 957, 903, -957, -903, -844, -512, -894, -796}, + { 631, 545, 906, -672, -558, -965, -777, -581, -802}, + { 514, 720, 649, -723, -652, -913, -516, -1012, -824}, + { 596, 679, 694, -790, -807, -920, -693, -900, -940}, + { 617, 740, 979, -892, -590, -708, -743, -535, -936}, + { 711, 685, 877, -952, -609, -587, -987, -917, -752}, + { 655, 835, 848, -534, -542, -691, -838, -681, -702}, + { 754, 839, 698, -618, -515, -573, -556, -688, -954}, + { 871, 515, 769, -877, -655, -774, -742, -518, -578}, + { 955, 852, 573, -795, -535, -955, -892, -709, -643}, + { 640, 859, 587, -537, -735, -986, -801, -721, -674}, + { 792, 863, 554, -667, -858, -935, -612, -727, -601}, + { 843, 708, 682, -583, -562, -944, -694, -979, -910}, + { 971, 768, 552, -728, -524, -829, -921, -576, -596}, + { 891, 536, 690, -935, -601, -724, -776, -563, -931}, + {1016, 560, 663, -556, -659, -727, -1009, -614, -860}, + { 543, 870, 674, -924, -716, -573, -577, -739, -889}, + { 601, 999, 585, -586, -686, -571, -705, -975, -668}, + { 945, 966, 889, -892, -821, -840, -872, -912, -773}, + { 529, 912, 777, -943, -804, -692, -547, -812, -590}, + { 574, 1020, 714, -572, -801, -711, -643, -1016, -997}, + { 609, 922, 932, -549, -555, -840, -725, -831, -848}, + { 598, 778, 929, -909, -543, -707, -698, -592, -844}, + { 651, 772, 744, -982, -947, -561, -827, -582, -541}, + { 691, 957, 722, -646, -976, -675, -934, -894, -1020}, + { 729, 766, 984, -546, -701, -736, -520, -573, -945}, + { 547, 519, 632, -555, -675, -640, -585, -526, -780}, + { 583, 532, 922, -607, -525, -960, -664, -554, -831}, + { 633, 995, 603, -615, -745, -586, -783, -968, -710}, + { 677, 571, 874, -757, -578, -977, -896, -638, -747}, + { 602, 545, 666, -641, -783, -709, -708, -580, -866}, + { 627, 542, 875, -665, -536, -928, -769, -575, -748}, + { 672, 983, 598, -645, -786, -575, -882, -944, -700}, + { 692, 979, 730, -662, -988, -698, -937, -937, -521}, + { 668, 634, 872, -827, -569, -540, -871, -785, -742}, + { 711, 706, 674, -982, -937, -931, -988, -975, -889}, + { 739, 977, 595, -706, -860, -568, -534, -932, -691}, + { 759, 905, 763, -671, -566, -675, -563, -799, -569}, + { 756, 582, 763, -860, -563, -868, -558, -663, -568}, + { 748, 1013, 908, -741, -664, -898, -547, -1002, -805}, + { 804, 937, 950, -736, -746, -869, -631, -858, -882}, + { 785, 543, 998, -833, -766, -529, -602, -576, -973}, + { 999, 684, 942, -668, -920, -630, -975, -915, -868}, + { 626, 633, 996, -774, -609, -616, -765, -783, -970}, + { 626, 567, 835, -693, -1021, -925, -765, -628, -681}, + { 739, 571, 973, -825, -702, -543, -533, -637, -925}, + { 655, 769, 707, -984, -906, -531, -839, -577, -978}, + { 702, 952, 571, -653, -785, -532, -964, -886, -638}, + { 727, 712, 514, -1012, -730, -715, -516, -990, -516}, + { 744, 686, 741, -998, -539, -994, -541, -921, -536}, + { 731, 552, 714, -789, -1021, -772, -522, -596, -998}, + { 824, 991, 726, -798, -585, -703, -664, -959, -515}, + { 795, 615, 544, -955, -844, -653, -617, -738, -578}, + { 870, 575, 824, -978, -700, -926, -739, -646, -664}, + { 803, 832, 923, -653, -724, -750, -630, -677, -832}, + { 819, 839, 531, -671, -849, -871, -655, -688, -550}, + { 887, 786, 852, -681, -738, -654, -769, -603, -709}, + { 933, 764, 570, -696, -519, -851, -850, -570, -634}, + { 716, 906, 654, -634, -916, -579, -1003, -802, -837}, + { 784, 804, 563, -616, -864, -885, -601, -631, -620}, + { 774, 535, 876, -809, -662, -915, -585, -559, -749}, + { 807, 598, 649, -943, -1023, -758, -636, -699, -822}, + { 817, 759, 718, -606, -573, -533, -652, -563, -1008}, + { 831, 993, 846, -806, -687, -821, -675, -963, -699}, + { 858, 567, 605, -951, -1015, -670, -720, -628, -716}, + { 876, 1012, 651, -866, -557, -643, -750, -1001, -827}, + { 852, 548, 549, -913, -914, -588, -710, -587, -589}, + { 895, 1008, 871, -881, -761, -858, -782, -993, -741}, + { 892, 1000, 591, -872, -515, -578, -777, -977, -683}, + { 935, 516, 836, -944, -764, -844, -855, -521, -682}, + { 931, 612, 776, -557, -706, -929, -847, -733, -589}, + { 968, 614, 816, -581, -771, -980, -915, -738, -651}, + { 524, 777, 719, -796, -737, -546, -537, -590, -1012}, + { 549, 694, 786, -744, -843, -533, -589, -941, -603}, + { 882, 754, 534, -649, -920, -787, -759, -555, -557}, + { 597, 837, 766, -977, -895, -627, -697, -684, -574}, + { 635, 954, 704, -592, -873, -656, -788, -890, -969}, + { 803, 550, 798, -863, -626, -858, -630, -591, -622}, + { 699, 654, 798, -894, -545, -1021, -954, -837, -622}, + { 924, 767, 738, -693, -666, -553, -834, -575, -531}, + { 970, 675, 608, -639, -576, -801, -919, -890, -722}, + { 632, 706, 684, -873, -844, -944, -780, -976, -914}, + { 858, 767, 563, -643, -945, -844, -719, -574, -620}, + { 527, 765, 702, -788, -724, -525, -543, -572, -964}, + { 559, 924, 1003, -1009, -547, -905, -610, -833, -983}, + { 618, 524, 611, -633, -738, -625, -747, -536, -729}, + { 999, 942, 963, -920, -940, -886, -976, -867, -905}, + { 547, 857, 935, -916, -999, -783, -584, -718, -854}, + { 734, 926, 569, -665, -818, -515, -527, -838, -634}, + { 967, 746, 551, -705, -520, -804, -913, -544, -593}, + { 834, 633, 881, -515, -718, -545, -679, -783, -758}, + { 941, 701, 727, -645, -668, -997, -865, -961, -516}, + { 945, 564, 636, -521, -587, -701, -873, -623, -790}, + { 512, 563, 793, -563, -794, -873, -512, -619, -615}, + { 984, 556, 570, -534, -548, -620, -945, -604, -636}, + { 984, 540, 740, -519, -712, -782, -946, -570, -536}, + { 527, 764, 874, -787, -901, -652, -543, -570, -747}, + { 530, 664, 1014, -688, -525, -658, -549, -862, -1005}, + { 546, 515, 521, -550, -556, -525, -584, -519, -531}, + { 554, 934, 672, -1011, -728, -613, -600, -852, -882}, + { 598, 945, 556, -552, -650, -513, -700, -872, -603}, + { 627, 531, 733, -651, -899, -760, -769, -551, -525}, + { 576, 1020, 1014, -574, -571, -1011, -650, -1016, -1005}, + { 623, 924, 594, -563, -724, -537, -759, -835, -691}, + { 678, 909, 603, -602, -800, -536, -899, -807, -712}, + { 814, 744, 543, -592, -865, -790, -648, -541, -577} }; -static const unsigned short wavtable2[2304]={ - 14, 14, 14, 20, 20, 19, 21, 20, 20, - 14, 14, 14, 20, 20, 20, 20, 21, 21, - 14, 13, 14, 18, 20, 19, 21, 18, 21, - 13, 13, 14, 18, 19, 19, 19, 18, 21, - 13, 14, 13, 19, 18, 18, 19, 20, 19, - 13, 14, 15, 19, 19, 20, 19, 21, 22, - 13, 13, 13, 17, 17, 18, 18, 19, 19, - 12, 14, 13, 18, 17, 19, 17, 20, 19, - 13, 13, 13, 18, 18, 17, 19, 18, 18, - 13, 13, 12, 18, 17, 17, 18, 19, 17, - 13, 12, 13, 17, 17, 16, 18, 17, 18, - 12, 13, 12, 17, 16, 17, 17, 19, 17, - 12, 13, 13, 16, 17, 17, 17, 18, 18, - 12, 13, 13, 16, 16, 17, 16, 19, 18, - 12, 12, 13, 15, 16, 16, 16, 17, 18, - 11, 13, 13, 15, 15, 17, 15, 18, 18, - 13, 12, 13, 16, 17, 17, 18, 16, 19, - 12, 12, 12, 16, 16, 16, 17, 16, 17, - 13, 12, 12, 17, 17, 15, 19, 16, 16, - 13, 12, 11, 16, 16, 14, 19, 16, 15, - 12, 12, 12, 16, 16, 16, 17, 17, 17, - 12, 13, 11, 16, 15, 16, 17, 18, 15, - 12, 12, 11, 16, 14, 15, 16, 17, 15, - 11, 13, 12, 15, 15, 16, 15, 18, 16, - 12, 12, 12, 15, 15, 15, 16, 16, 16, - 11, 12, 12, 15, 14, 15, 15, 16, 16, - 11, 12, 12, 15, 15, 16, 15, 16, 17, - 11, 12, 13, 15, 15, 16, 14, 17, 18, - 11, 12, 11, 15, 14, 15, 15, 17, 15, - 11, 12, 11, 15, 14, 15, 14, 17, 15, - 11, 13, 12, 15, 14, 16, 14, 18, 17, - 11, 12, 12, 14, 14, 16, 14, 17, 17, - 12, 12, 12, 15, 16, 15, 17, 16, 17, - 12, 11, 12, 15, 16, 15, 17, 15, 16, - 12, 12, 11, 15, 15, 15, 17, 16, 15, - 12, 12, 11, 15, 14, 14, 16, 16, 15, - 13, 11, 11, 15, 15, 14, 18, 15, 15, - 12, 11, 10, 15, 14, 13, 17, 15, 13, - 11, 11, 11, 14, 14, 14, 15, 15, 14, - 11, 11, 10, 14, 13, 13, 15, 15, 13, - 12, 11, 12, 14, 15, 15, 16, 15, 17, - 11, 11, 12, 14, 15, 15, 15, 15, 16, - 11, 12, 11, 14, 14, 14, 15, 16, 15, - 11, 11, 11, 14, 14, 14, 14, 15, 15, - 11, 11, 12, 14, 14, 15, 14, 15, 16, - 11, 11, 12, 14, 14, 15, 14, 15, 17, - 11, 12, 12, 14, 14, 15, 14, 16, 16, - 10, 12, 12, 13, 14, 15, 13, 16, 16, - 11, 12, 11, 14, 13, 14, 14, 16, 14, - 11, 11, 11, 14, 13, 14, 14, 15, 14, - 10, 12, 11, 14, 13, 14, 13, 17, 14, - 10, 12, 11, 14, 13, 14, 13, 16, 14, - 11, 11, 11, 13, 13, 14, 14, 15, 15, - 10, 11, 11, 13, 13, 14, 13, 15, 15, - 10, 11, 12, 13, 14, 14, 13, 15, 16, - 10, 11, 12, 13, 14, 15, 13, 15, 16, - 11, 12, 11, 14, 13, 15, 14, 16, 15, - 10, 12, 12, 14, 13, 15, 13, 17, 16, - 10, 13, 12, 14, 14, 16, 13, 18, 16, - 10, 12, 13, 14, 14, 16, 13, 17, 18, - 10, 12, 11, 13, 13, 15, 13, 16, 15, - 10, 12, 11, 13, 13, 15, 13, 16, 15, - 10, 12, 12, 14, 13, 16, 13, 17, 16, - 10, 12, 12, 13, 14, 16, 12, 16, 17, - 12, 11, 12, 15, 16, 14, 17, 14, 16, - 12, 11, 11, 14, 15, 13, 17, 14, 15, - 11, 11, 12, 14, 14, 14, 15, 14, 16, - 11, 11, 11, 13, 14, 14, 14, 14, 15, - 11, 10, 11, 13, 14, 13, 15, 13, 15, - 11, 10, 11, 13, 14, 13, 15, 13, 15, - 12, 10, 10, 14, 14, 12, 17, 13, 13, - 12, 10, 10, 13, 13, 11, 16, 13, 12, - 11, 11, 11, 14, 14, 13, 15, 14, 14, - 11, 11, 10, 13, 13, 13, 15, 14, 13, - 11, 11, 10, 14, 12, 13, 14, 15, 13, - 10, 12, 10, 14, 12, 13, 13, 16, 12, - 11, 11, 11, 13, 14, 13, 14, 14, 15, - 11, 11, 11, 13, 13, 13, 14, 14, 14, - 10, 11, 11, 13, 13, 14, 13, 14, 15, - 10, 11, 11, 12, 13, 13, 13, 14, 15, - 11, 10, 11, 13, 13, 13, 14, 13, 14, - 11, 11, 10, 13, 12, 13, 14, 14, 13, - 11, 10, 10, 12, 12, 12, 14, 13, 13, - 10, 10, 10, 12, 12, 12, 13, 13, 13, - 11, 11, 10, 13, 12, 12, 14, 14, 12, - 10, 11, 10, 13, 12, 12, 13, 14, 12, - 10, 11, 10, 12, 11, 12, 13, 14, 12, - 10, 11, 10, 12, 11, 12, 12, 14, 12, - 10, 10, 11, 12, 13, 13, 13, 13, 15, - 10, 10, 11, 12, 13, 13, 13, 13, 14, - 10, 11, 11, 12, 12, 13, 12, 14, 14, - 10, 11, 11, 12, 13, 13, 12, 14, 15, - 10, 10, 11, 12, 12, 12, 12, 13, 14, - 10, 10, 10, 11, 12, 12, 12, 13, 13, - 10, 10, 11, 11, 12, 12, 12, 13, 14, - 9, 10, 11, 11, 12, 13, 11, 13, 14, - 11, 11, 11, 13, 13, 13, 14, 15, 14, - 10, 11, 11, 13, 12, 13, 13, 15, 14, - 10, 11, 10, 13, 12, 13, 13, 15, 13, - 10, 11, 11, 13, 12, 13, 12, 15, 14, - 10, 11, 11, 13, 13, 14, 13, 15, 15, - 10, 11, 11, 13, 13, 14, 12, 15, 15, - 10, 11, 11, 13, 13, 14, 12, 15, 15, - 10, 11, 12, 12, 13, 15, 12, 15, 16, - 10, 12, 11, 14, 12, 14, 13, 16, 14, - 10, 12, 11, 14, 12, 15, 12, 17, 14, - 10, 12, 12, 13, 13, 15, 12, 16, 16, - 10, 13, 12, 14, 13, 16, 12, 18, 17, - 10, 12, 11, 13, 12, 15, 12, 16, 15, - 10, 12, 11, 13, 12, 14, 12, 16, 15, - 10, 12, 12, 13, 13, 15, 12, 17, 16, - 10, 12, 12, 13, 13, 16, 12, 16, 17, - 10, 12, 10, 13, 12, 14, 12, 16, 13, - 10, 12, 11, 13, 12, 14, 12, 16, 14, - 10, 12, 10, 13, 11, 13, 12, 16, 13, - 10, 11, 11, 12, 12, 14, 12, 15, 14, - 10, 11, 11, 12, 12, 13, 12, 14, 14, - 10, 11, 11, 12, 12, 14, 12, 15, 15, - 9, 11, 11, 12, 12, 14, 11, 15, 15, - 9, 11, 12, 12, 13, 14, 11, 15, 16, - 10, 12, 11, 13, 12, 15, 12, 17, 14, - 9, 12, 11, 13, 12, 15, 11, 17, 15, - 9, 12, 12, 13, 12, 15, 11, 16, 16, - 9, 12, 12, 13, 13, 16, 11, 17, 17, - 9, 12, 11, 13, 12, 15, 11, 17, 14, - 9, 12, 12, 13, 12, 16, 11, 17, 16, - 9, 12, 12, 13, 12, 15, 11, 17, 16, - 9, 13, 12, 13, 13, 16, 11, 18, 17, - 12, 10, 11, 13, 14, 12, 16, 12, 14, - 11, 10, 10, 12, 13, 12, 14, 12, 13, - 10, 10, 11, 12, 13, 12, 13, 12, 15, - 10, 10, 10, 12, 12, 12, 13, 12, 13, - 11, 9, 10, 12, 13, 11, 15, 11, 13, - 11, 10, 10, 12, 12, 11, 14, 12, 12, - 10, 10, 9, 11, 11, 11, 13, 12, 11, - 10, 10, 9, 11, 11, 10, 13, 12, 10, - 10, 10, 10, 12, 12, 12, 13, 13, 13, - 10, 10, 10, 12, 11, 12, 12, 13, 13, - 10, 10, 10, 11, 11, 11, 12, 12, 13, - 10, 10, 10, 11, 11, 11, 12, 12, 12, - 10, 10, 10, 12, 11, 11, 12, 13, 12, - 10, 10, 9, 11, 11, 11, 12, 13, 11, - 9, 10, 9, 11, 10, 11, 11, 12, 11, - 9, 10, 9, 11, 10, 11, 11, 13, 11, - 10, 9, 11, 11, 12, 11, 13, 11, 14, - 10, 10, 10, 11, 12, 11, 13, 12, 13, - 10, 10, 10, 11, 12, 12, 12, 12, 13, - 9, 10, 10, 10, 11, 11, 11, 12, 13, - 10, 9, 10, 11, 12, 10, 13, 11, 12, - 10, 9, 10, 11, 11, 10, 12, 11, 12, - 9, 10, 10, 11, 11, 11, 11, 12, 12, - 9, 9, 10, 10, 10, 11, 11, 11, 12, - 9, 10, 10, 11, 11, 12, 11, 13, 13, - 9, 10, 10, 11, 11, 12, 11, 13, 13, - 9, 10, 11, 11, 11, 12, 11, 12, 14, - 9, 10, 11, 11, 11, 12, 11, 13, 14, - 9, 10, 10, 10, 10, 11, 11, 12, 12, - 9, 10, 10, 10, 10, 11, 10, 12, 13, - 9, 9, 10, 10, 10, 11, 10, 11, 12, - 9, 10, 10, 10, 10, 12, 10, 12, 13, - 10, 11, 10, 12, 12, 13, 13, 14, 13, - 10, 11, 10, 12, 12, 13, 12, 14, 13, - 10, 11, 10, 12, 11, 13, 12, 15, 13, - 10, 11, 10, 12, 11, 13, 12, 14, 13, - 10, 10, 10, 12, 11, 12, 12, 13, 13, - 10, 10, 10, 11, 11, 12, 12, 13, 13, - 9, 11, 10, 12, 11, 12, 11, 14, 13, - 9, 11, 10, 11, 11, 12, 11, 14, 13, - 10, 11, 11, 12, 12, 13, 12, 14, 14, - 9, 11, 11, 12, 12, 13, 11, 14, 14, - 9, 11, 11, 11, 12, 13, 11, 14, 15, - 9, 11, 12, 11, 12, 14, 11, 14, 16, - 9, 11, 11, 12, 11, 13, 11, 14, 14, - 9, 11, 11, 12, 12, 13, 11, 14, 14, - 9, 11, 11, 11, 12, 13, 11, 14, 15, - 9, 11, 12, 11, 12, 14, 10, 14, 16, - 9, 11, 10, 12, 11, 13, 11, 15, 13, - 9, 11, 11, 12, 11, 14, 11, 15, 14, - 9, 12, 10, 12, 11, 13, 11, 16, 13, - 9, 11, 11, 12, 11, 14, 11, 15, 14, - 9, 11, 11, 12, 12, 14, 11, 15, 15, - 9, 11, 12, 12, 12, 15, 11, 15, 16, - 9, 12, 11, 12, 12, 14, 11, 16, 15, - 9, 12, 12, 12, 13, 15, 11, 16, 16, - 9, 12, 11, 13, 11, 14, 11, 17, 14, - 9, 12, 11, 13, 12, 15, 11, 17, 15, - 9, 12, 11, 12, 12, 14, 10, 16, 15, - 9, 12, 12, 12, 12, 15, 10, 16, 16, - 9, 12, 11, 13, 11, 15, 10, 17, 14, - 9, 13, 12, 13, 12, 16, 10, 18, 16, - 9, 13, 12, 13, 12, 16, 10, 18, 16, - 9, 12, 13, 13, 13, 16, 10, 17, 18, - 10, 11, 10, 12, 11, 12, 12, 15, 12, - 9, 11, 10, 12, 10, 12, 11, 15, 12, - 9, 10, 10, 11, 11, 12, 11, 13, 12, - 9, 10, 10, 11, 10, 11, 10, 13, 12, - 9, 11, 10, 12, 11, 12, 11, 14, 13, - 9, 11, 10, 11, 11, 12, 11, 14, 13, - 9, 11, 10, 12, 11, 13, 10, 15, 13, - 9, 11, 11, 12, 11, 14, 10, 15, 14, - 9, 10, 10, 11, 11, 12, 10, 13, 13, - 9, 11, 10, 11, 10, 12, 10, 14, 12, - 9, 10, 10, 11, 11, 12, 10, 13, 13, - 9, 10, 11, 11, 11, 13, 10, 13, 14, - 9, 11, 11, 11, 11, 13, 10, 14, 14, - 9, 11, 11, 11, 12, 14, 10, 14, 15, - 9, 11, 11, 11, 11, 13, 10, 14, 14, - 9, 11, 11, 11, 11, 14, 10, 14, 15, - 9, 12, 10, 12, 11, 13, 11, 16, 13, - 9, 12, 10, 12, 11, 14, 10, 16, 13, - 9, 11, 11, 12, 11, 14, 10, 15, 14, - 9, 11, 11, 12, 12, 14, 10, 15, 15, - 9, 12, 11, 12, 11, 14, 10, 16, 15, - 9, 12, 12, 12, 12, 15, 10, 16, 16, - 9, 12, 11, 13, 12, 15, 10, 17, 15, - 9, 13, 12, 13, 12, 16, 10, 18, 17, - 9, 11, 10, 12, 11, 13, 10, 15, 13, - 9, 12, 11, 12, 11, 14, 10, 16, 14, - 9, 12, 11, 12, 11, 14, 10, 16, 15, - 9, 11, 12, 12, 12, 15, 10, 15, 16, - 9, 12, 11, 12, 11, 15, 10, 17, 14, - 9, 12, 12, 12, 12, 16, 10, 17, 16, - 8, 12, 11, 12, 11, 14, 9, 16, 15, - 8, 12, 12, 12, 12, 15, 9, 17, 16, - 10, 9, 9, 10, 11, 10, 12, 10, 11, - 9, 9, 9, 10, 10, 9, 11, 10, 10, - 9, 10, 9, 10, 10, 10, 11, 12, 11, - 9, 9, 9, 10, 9, 10, 10, 11, 10, - 9, 9, 10, 10, 10, 11, 11, 11, 12, - 9, 9, 10, 9, 10, 10, 10, 10, 12, - 9, 9, 9, 9, 9, 10, 10, 11, 11, - 8, 9, 9, 9, 9, 10, 9, 11, 11, - 9, 10, 9, 10, 10, 11, 10, 12, 11, - 8, 10, 9, 10, 9, 10, 9, 12, 11, - 8, 10, 10, 10, 9, 11, 9, 12, 12, - 8, 9, 10, 9, 10, 11, 9, 11, 13, - 9, 9, 9, 9, 9, 9, 10, 10, 10, - 7, 8, 8, 7, 7, 7, 7, 8, 8, - 8, 10, 9, 9, 9, 10, 8, 12, 11, - 8, 9, 9, 8, 8, 10, 8, 10, 11, - 9, 11, 10, 11, 10, 12, 10, 15, 12, - 9, 11, 10, 11, 10, 13, 10, 15, 12, - 9, 10, 10, 10, 10, 12, 10, 13, 13, - 8, 10, 11, 10, 11, 13, 9, 13, 14, - 9, 11, 10, 11, 10, 13, 10, 15, 13, - 9, 11, 11, 11, 11, 14, 10, 15, 14, - 8, 11, 11, 11, 11, 13, 9, 14, 14, - 8, 11, 12, 11, 11, 14, 9, 15, 16, - 8, 10, 9, 10, 9, 11, 9, 13, 11, - 8, 11, 10, 11, 10, 12, 9, 14, 13, - 8, 11, 10, 10, 10, 12, 9, 14, 13, - 8, 10, 11, 10, 11, 13, 9, 13, 14, - 8, 12, 11, 11, 10, 14, 9, 16, 14, - 8, 12, 11, 11, 11, 14, 9, 16, 15, - 8, 11, 10, 10, 10, 12, 9, 14, 13, - 8, 11, 10, 10, 10, 13, 8, 14, 13 +static const unsigned short wavtable2[256][9] = { + {14, 14, 14, 20, 20, 19, 21, 20, 20}, + {14, 14, 14, 20, 20, 20, 20, 21, 21}, + {14, 13, 14, 18, 20, 19, 21, 18, 21}, + {13, 13, 14, 18, 19, 19, 19, 18, 21}, + {13, 14, 13, 19, 18, 18, 19, 20, 19}, + {13, 14, 15, 19, 19, 20, 19, 21, 22}, + {13, 13, 13, 17, 17, 18, 18, 19, 19}, + {12, 14, 13, 18, 17, 19, 17, 20, 19}, + {13, 13, 13, 18, 18, 17, 19, 18, 18}, + {13, 13, 12, 18, 17, 17, 18, 19, 17}, + {13, 12, 13, 17, 17, 16, 18, 17, 18}, + {12, 13, 12, 17, 16, 17, 17, 19, 17}, + {12, 13, 13, 16, 17, 17, 17, 18, 18}, + {12, 13, 13, 16, 16, 17, 16, 19, 18}, + {12, 12, 13, 15, 16, 16, 16, 17, 18}, + {11, 13, 13, 15, 15, 17, 15, 18, 18}, + {13, 12, 13, 16, 17, 17, 18, 16, 19}, + {12, 12, 12, 16, 16, 16, 17, 16, 17}, + {13, 12, 12, 17, 17, 15, 19, 16, 16}, + {13, 12, 11, 16, 16, 14, 19, 16, 15}, + {12, 12, 12, 16, 16, 16, 17, 17, 17}, + {12, 13, 11, 16, 15, 16, 17, 18, 15}, + {12, 12, 11, 16, 14, 15, 16, 17, 15}, + {11, 13, 12, 15, 15, 16, 15, 18, 16}, + {12, 12, 12, 15, 15, 15, 16, 16, 16}, + {11, 12, 12, 15, 14, 15, 15, 16, 16}, + {11, 12, 12, 15, 15, 16, 15, 16, 17}, + {11, 12, 13, 15, 15, 16, 14, 17, 18}, + {11, 12, 11, 15, 14, 15, 15, 17, 15}, + {11, 12, 11, 15, 14, 15, 14, 17, 15}, + {11, 13, 12, 15, 14, 16, 14, 18, 17}, + {11, 12, 12, 14, 14, 16, 14, 17, 17}, + {12, 12, 12, 15, 16, 15, 17, 16, 17}, + {12, 11, 12, 15, 16, 15, 17, 15, 16}, + {12, 12, 11, 15, 15, 15, 17, 16, 15}, + {12, 12, 11, 15, 14, 14, 16, 16, 15}, + {13, 11, 11, 15, 15, 14, 18, 15, 15}, + {12, 11, 10, 15, 14, 13, 17, 15, 13}, + {11, 11, 11, 14, 14, 14, 15, 15, 14}, + {11, 11, 10, 14, 13, 13, 15, 15, 13}, + {12, 11, 12, 14, 15, 15, 16, 15, 17}, + {11, 11, 12, 14, 15, 15, 15, 15, 16}, + {11, 12, 11, 14, 14, 14, 15, 16, 15}, + {11, 11, 11, 14, 14, 14, 14, 15, 15}, + {11, 11, 12, 14, 14, 15, 14, 15, 16}, + {11, 11, 12, 14, 14, 15, 14, 15, 17}, + {11, 12, 12, 14, 14, 15, 14, 16, 16}, + {10, 12, 12, 13, 14, 15, 13, 16, 16}, + {11, 12, 11, 14, 13, 14, 14, 16, 14}, + {11, 11, 11, 14, 13, 14, 14, 15, 14}, + {10, 12, 11, 14, 13, 14, 13, 17, 14}, + {10, 12, 11, 14, 13, 14, 13, 16, 14}, + {11, 11, 11, 13, 13, 14, 14, 15, 15}, + {10, 11, 11, 13, 13, 14, 13, 15, 15}, + {10, 11, 12, 13, 14, 14, 13, 15, 16}, + {10, 11, 12, 13, 14, 15, 13, 15, 16}, + {11, 12, 11, 14, 13, 15, 14, 16, 15}, + {10, 12, 12, 14, 13, 15, 13, 17, 16}, + {10, 13, 12, 14, 14, 16, 13, 18, 16}, + {10, 12, 13, 14, 14, 16, 13, 17, 18}, + {10, 12, 11, 13, 13, 15, 13, 16, 15}, + {10, 12, 11, 13, 13, 15, 13, 16, 15}, + {10, 12, 12, 14, 13, 16, 13, 17, 16}, + {10, 12, 12, 13, 14, 16, 12, 16, 17}, + {12, 11, 12, 15, 16, 14, 17, 14, 16}, + {12, 11, 11, 14, 15, 13, 17, 14, 15}, + {11, 11, 12, 14, 14, 14, 15, 14, 16}, + {11, 11, 11, 13, 14, 14, 14, 14, 15}, + {11, 10, 11, 13, 14, 13, 15, 13, 15}, + {11, 10, 11, 13, 14, 13, 15, 13, 15}, + {12, 10, 10, 14, 14, 12, 17, 13, 13}, + {12, 10, 10, 13, 13, 11, 16, 13, 12}, + {11, 11, 11, 14, 14, 13, 15, 14, 14}, + {11, 11, 10, 13, 13, 13, 15, 14, 13}, + {11, 11, 10, 14, 12, 13, 14, 15, 13}, + {10, 12, 10, 14, 12, 13, 13, 16, 12}, + {11, 11, 11, 13, 14, 13, 14, 14, 15}, + {11, 11, 11, 13, 13, 13, 14, 14, 14}, + {10, 11, 11, 13, 13, 14, 13, 14, 15}, + {10, 11, 11, 12, 13, 13, 13, 14, 15}, + {11, 10, 11, 13, 13, 13, 14, 13, 14}, + {11, 11, 10, 13, 12, 13, 14, 14, 13}, + {11, 10, 10, 12, 12, 12, 14, 13, 13}, + {10, 10, 10, 12, 12, 12, 13, 13, 13}, + {11, 11, 10, 13, 12, 12, 14, 14, 12}, + {10, 11, 10, 13, 12, 12, 13, 14, 12}, + {10, 11, 10, 12, 11, 12, 13, 14, 12}, + {10, 11, 10, 12, 11, 12, 12, 14, 12}, + {10, 10, 11, 12, 13, 13, 13, 13, 15}, + {10, 10, 11, 12, 13, 13, 13, 13, 14}, + {10, 11, 11, 12, 12, 13, 12, 14, 14}, + {10, 11, 11, 12, 13, 13, 12, 14, 15}, + {10, 10, 11, 12, 12, 12, 12, 13, 14}, + {10, 10, 10, 11, 12, 12, 12, 13, 13}, + {10, 10, 11, 11, 12, 12, 12, 13, 14}, + { 9, 10, 11, 11, 12, 13, 11, 13, 14}, + {11, 11, 11, 13, 13, 13, 14, 15, 14}, + {10, 11, 11, 13, 12, 13, 13, 15, 14}, + {10, 11, 10, 13, 12, 13, 13, 15, 13}, + {10, 11, 11, 13, 12, 13, 12, 15, 14}, + {10, 11, 11, 13, 13, 14, 13, 15, 15}, + {10, 11, 11, 13, 13, 14, 12, 15, 15}, + {10, 11, 11, 13, 13, 14, 12, 15, 15}, + {10, 11, 12, 12, 13, 15, 12, 15, 16}, + {10, 12, 11, 14, 12, 14, 13, 16, 14}, + {10, 12, 11, 14, 12, 15, 12, 17, 14}, + {10, 12, 12, 13, 13, 15, 12, 16, 16}, + {10, 13, 12, 14, 13, 16, 12, 18, 17}, + {10, 12, 11, 13, 12, 15, 12, 16, 15}, + {10, 12, 11, 13, 12, 14, 12, 16, 15}, + {10, 12, 12, 13, 13, 15, 12, 17, 16}, + {10, 12, 12, 13, 13, 16, 12, 16, 17}, + {10, 12, 10, 13, 12, 14, 12, 16, 13}, + {10, 12, 11, 13, 12, 14, 12, 16, 14}, + {10, 12, 10, 13, 11, 13, 12, 16, 13}, + {10, 11, 11, 12, 12, 14, 12, 15, 14}, + {10, 11, 11, 12, 12, 13, 12, 14, 14}, + {10, 11, 11, 12, 12, 14, 12, 15, 15}, + { 9, 11, 11, 12, 12, 14, 11, 15, 15}, + { 9, 11, 12, 12, 13, 14, 11, 15, 16}, + {10, 12, 11, 13, 12, 15, 12, 17, 14}, + { 9, 12, 11, 13, 12, 15, 11, 17, 15}, + { 9, 12, 12, 13, 12, 15, 11, 16, 16}, + { 9, 12, 12, 13, 13, 16, 11, 17, 17}, + { 9, 12, 11, 13, 12, 15, 11, 17, 14}, + { 9, 12, 12, 13, 12, 16, 11, 17, 16}, + { 9, 12, 12, 13, 12, 15, 11, 17, 16}, + { 9, 13, 12, 13, 13, 16, 11, 18, 17}, + {12, 10, 11, 13, 14, 12, 16, 12, 14}, + {11, 10, 10, 12, 13, 12, 14, 12, 13}, + {10, 10, 11, 12, 13, 12, 13, 12, 15}, + {10, 10, 10, 12, 12, 12, 13, 12, 13}, + {11, 9, 10, 12, 13, 11, 15, 11, 13}, + {11, 10, 10, 12, 12, 11, 14, 12, 12}, + {10, 10, 9, 11, 11, 11, 13, 12, 11}, + {10, 10, 9, 11, 11, 10, 13, 12, 10}, + {10, 10, 10, 12, 12, 12, 13, 13, 13}, + {10, 10, 10, 12, 11, 12, 12, 13, 13}, + {10, 10, 10, 11, 11, 11, 12, 12, 13}, + {10, 10, 10, 11, 11, 11, 12, 12, 12}, + {10, 10, 10, 12, 11, 11, 12, 13, 12}, + {10, 10, 9, 11, 11, 11, 12, 13, 11}, + { 9, 10, 9, 11, 10, 11, 11, 12, 11}, + { 9, 10, 9, 11, 10, 11, 11, 13, 11}, + {10, 9, 11, 11, 12, 11, 13, 11, 14}, + {10, 10, 10, 11, 12, 11, 13, 12, 13}, + {10, 10, 10, 11, 12, 12, 12, 12, 13}, + { 9, 10, 10, 10, 11, 11, 11, 12, 13}, + {10, 9, 10, 11, 12, 10, 13, 11, 12}, + {10, 9, 10, 11, 11, 10, 12, 11, 12}, + { 9, 10, 10, 11, 11, 11, 11, 12, 12}, + { 9, 9, 10, 10, 10, 11, 11, 11, 12}, + { 9, 10, 10, 11, 11, 12, 11, 13, 13}, + { 9, 10, 10, 11, 11, 12, 11, 13, 13}, + { 9, 10, 11, 11, 11, 12, 11, 12, 14}, + { 9, 10, 11, 11, 11, 12, 11, 13, 14}, + { 9, 10, 10, 10, 10, 11, 11, 12, 12}, + { 9, 10, 10, 10, 10, 11, 10, 12, 13}, + { 9, 9, 10, 10, 10, 11, 10, 11, 12}, + { 9, 10, 10, 10, 10, 12, 10, 12, 13}, + {10, 11, 10, 12, 12, 13, 13, 14, 13}, + {10, 11, 10, 12, 12, 13, 12, 14, 13}, + {10, 11, 10, 12, 11, 13, 12, 15, 13}, + {10, 11, 10, 12, 11, 13, 12, 14, 13}, + {10, 10, 10, 12, 11, 12, 12, 13, 13}, + {10, 10, 10, 11, 11, 12, 12, 13, 13}, + { 9, 11, 10, 12, 11, 12, 11, 14, 13}, + { 9, 11, 10, 11, 11, 12, 11, 14, 13}, + {10, 11, 11, 12, 12, 13, 12, 14, 14}, + { 9, 11, 11, 12, 12, 13, 11, 14, 14}, + { 9, 11, 11, 11, 12, 13, 11, 14, 15}, + { 9, 11, 12, 11, 12, 14, 11, 14, 16}, + { 9, 11, 11, 12, 11, 13, 11, 14, 14}, + { 9, 11, 11, 12, 12, 13, 11, 14, 14}, + { 9, 11, 11, 11, 12, 13, 11, 14, 15}, + { 9, 11, 12, 11, 12, 14, 10, 14, 16}, + { 9, 11, 10, 12, 11, 13, 11, 15, 13}, + { 9, 11, 11, 12, 11, 14, 11, 15, 14}, + { 9, 12, 10, 12, 11, 13, 11, 16, 13}, + { 9, 11, 11, 12, 11, 14, 11, 15, 14}, + { 9, 11, 11, 12, 12, 14, 11, 15, 15}, + { 9, 11, 12, 12, 12, 15, 11, 15, 16}, + { 9, 12, 11, 12, 12, 14, 11, 16, 15}, + { 9, 12, 12, 12, 13, 15, 11, 16, 16}, + { 9, 12, 11, 13, 11, 14, 11, 17, 14}, + { 9, 12, 11, 13, 12, 15, 11, 17, 15}, + { 9, 12, 11, 12, 12, 14, 10, 16, 15}, + { 9, 12, 12, 12, 12, 15, 10, 16, 16}, + { 9, 12, 11, 13, 11, 15, 10, 17, 14}, + { 9, 13, 12, 13, 12, 16, 10, 18, 16}, + { 9, 13, 12, 13, 12, 16, 10, 18, 16}, + { 9, 12, 13, 13, 13, 16, 10, 17, 18}, + {10, 11, 10, 12, 11, 12, 12, 15, 12}, + { 9, 11, 10, 12, 10, 12, 11, 15, 12}, + { 9, 10, 10, 11, 11, 12, 11, 13, 12}, + { 9, 10, 10, 11, 10, 11, 10, 13, 12}, + { 9, 11, 10, 12, 11, 12, 11, 14, 13}, + { 9, 11, 10, 11, 11, 12, 11, 14, 13}, + { 9, 11, 10, 12, 11, 13, 10, 15, 13}, + { 9, 11, 11, 12, 11, 14, 10, 15, 14}, + { 9, 10, 10, 11, 11, 12, 10, 13, 13}, + { 9, 11, 10, 11, 10, 12, 10, 14, 12}, + { 9, 10, 10, 11, 11, 12, 10, 13, 13}, + { 9, 10, 11, 11, 11, 13, 10, 13, 14}, + { 9, 11, 11, 11, 11, 13, 10, 14, 14}, + { 9, 11, 11, 11, 12, 14, 10, 14, 15}, + { 9, 11, 11, 11, 11, 13, 10, 14, 14}, + { 9, 11, 11, 11, 11, 14, 10, 14, 15}, + { 9, 12, 10, 12, 11, 13, 11, 16, 13}, + { 9, 12, 10, 12, 11, 14, 10, 16, 13}, + { 9, 11, 11, 12, 11, 14, 10, 15, 14}, + { 9, 11, 11, 12, 12, 14, 10, 15, 15}, + { 9, 12, 11, 12, 11, 14, 10, 16, 15}, + { 9, 12, 12, 12, 12, 15, 10, 16, 16}, + { 9, 12, 11, 13, 12, 15, 10, 17, 15}, + { 9, 13, 12, 13, 12, 16, 10, 18, 17}, + { 9, 11, 10, 12, 11, 13, 10, 15, 13}, + { 9, 12, 11, 12, 11, 14, 10, 16, 14}, + { 9, 12, 11, 12, 11, 14, 10, 16, 15}, + { 9, 11, 12, 12, 12, 15, 10, 15, 16}, + { 9, 12, 11, 12, 11, 15, 10, 17, 14}, + { 9, 12, 12, 12, 12, 16, 10, 17, 16}, + { 8, 12, 11, 12, 11, 14, 9, 16, 15}, + { 8, 12, 12, 12, 12, 15, 9, 17, 16}, + {10, 9, 9, 10, 11, 10, 12, 10, 11}, + { 9, 9, 9, 10, 10, 9, 11, 10, 10}, + { 9, 10, 9, 10, 10, 10, 11, 12, 11}, + { 9, 9, 9, 10, 9, 10, 10, 11, 10}, + { 9, 9, 10, 10, 10, 11, 11, 11, 12}, + { 9, 9, 10, 9, 10, 10, 10, 10, 12}, + { 9, 9, 9, 9, 9, 10, 10, 11, 11}, + { 8, 9, 9, 9, 9, 10, 9, 11, 11}, + { 9, 10, 9, 10, 10, 11, 10, 12, 11}, + { 8, 10, 9, 10, 9, 10, 9, 12, 11}, + { 8, 10, 10, 10, 9, 11, 9, 12, 12}, + { 8, 9, 10, 9, 10, 11, 9, 11, 13}, + { 9, 9, 9, 9, 9, 9, 10, 10, 10}, + { 7, 8, 8, 7, 7, 7, 7, 8, 8}, + { 8, 10, 9, 9, 9, 10, 8, 12, 11}, + { 8, 9, 9, 8, 8, 10, 8, 10, 11}, + { 9, 11, 10, 11, 10, 12, 10, 15, 12}, + { 9, 11, 10, 11, 10, 13, 10, 15, 12}, + { 9, 10, 10, 10, 10, 12, 10, 13, 13}, + { 8, 10, 11, 10, 11, 13, 9, 13, 14}, + { 9, 11, 10, 11, 10, 13, 10, 15, 13}, + { 9, 11, 11, 11, 11, 14, 10, 15, 14}, + { 8, 11, 11, 11, 11, 13, 9, 14, 14}, + { 8, 11, 12, 11, 11, 14, 9, 15, 16}, + { 8, 10, 9, 10, 9, 11, 9, 13, 11}, + { 8, 11, 10, 11, 10, 12, 9, 14, 13}, + { 8, 11, 10, 10, 10, 12, 9, 14, 13}, + { 8, 10, 11, 10, 11, 13, 9, 13, 14}, + { 8, 12, 11, 11, 10, 14, 9, 16, 14}, + { 8, 12, 11, 11, 11, 14, 9, 16, 15}, + { 8, 11, 10, 10, 10, 12, 9, 14, 13}, + { 8, 11, 10, 10, 10, 13, 8, 14, 13} }; static const signed short etable1[128][40]={