]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavcodec/ra144.h
correct pixfmt for argb
[frescor/ffmpeg.git] / libavcodec / ra144.h
index af2b9257fbce9a52bac404bc2752e0b07bc4d375..4413530c0618f09fe86a17d623688ae76571a3f8 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#ifndef FFMPEG_RA144_H
-#define FFMPEG_RA144_H
+#ifndef AVCODEC_RA144_H
+#define AVCODEC_RA144_H
 
 #include <stdint.h>
 
-/* 14.4 data tables */
-static const int16_t 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 int16_t gain_val_tab[256][3] = {
+    { 541, 956,  768}, { 877, 581,  568}, { 675,1574,  635}, {1248,1464,  668},
+    {1246, 839, 1394}, {2560,1386,  991}, { 925, 687,  608}, {2208, 797, 1144},
+    { 535, 832,  799}, { 762, 605, 1154}, { 832,1122, 1003}, {1180, 687, 1176},
+    {1292, 901,  732}, {1656, 689,  896}, {1750,1248,  848}, {2284, 942, 1022},
+    { 824,1472,  643}, { 517, 765,  512}, { 562,1816, 1522}, { 694,1826, 2700},
+    { 704, 524,  672}, {1442, 757, 2232}, { 884, 551, 1266}, {2232,1007, 1692},
+    { 932, 746,  777}, {1132, 822,  926}, {1226, 771,  611}, {2948,1342, 1008},
+    {1302, 594, 1158}, {1602, 636, 1128}, {3408, 910, 1438}, {1996, 614,  575},
+    { 665, 935,  628}, { 631,1192,  829}, { 644, 926, 1052}, { 879, 988, 1226},
+    { 941,2768, 2772}, { 565,1344, 2304}, { 547, 628,  740}, { 639, 532, 1074},
+    { 955,1208,  598}, {1124,1160,  900}, {1206, 899, 1242}, { 746, 533,  624},
+    {1458,1028,  735}, {1706,1102,  692}, {1898,1018, 1004}, {2176, 988,  735},
+    {1578, 782, 1642}, { 897, 516,  754}, {2068, 702, 1656}, {2344, 818, 1526},
+    { 907, 652,  592}, {1056, 652,  642}, {2124,1416,  780}, {2664,1250,  727},
+    {1894, 727, 1108}, {2196, 657,  981}, {4840, 920, 1704}, {4992,1238,  983},
+    {2420, 909, 1094}, {2760, 935, 1032}, {2800, 612,  853}, {3068, 832,  574},
+    { 523,1796,  923}, { 722,1916, 1382}, {1226,1542,  928}, { 758, 757,  584},
+    { 512,1134,  577}, { 615,1276,  698}, { 574,2568, 2356}, { 993,2728, 3512},
+    { 539, 890,  913}, { 694, 928, 1088}, { 805, 600, 1360}, {2160, 951, 3128},
+    { 816, 950,  590}, { 955, 847,  811}, {1094, 883,  556}, {1304, 888,  604},
+    { 863,1170,  855}, {1023, 997, 1032}, { 932,1228, 1280}, { 627, 564,  573},
+    { 876, 900, 1448}, {1030, 857, 1792}, {1294, 953, 1758}, {1612, 854, 1714},
+    {1090,1166,  631}, {1314,1202,  751}, {1480, 905,  795}, {1682,1016,  568},
+    {1494,1178,  983}, { 878, 613,  526}, {1728,1446,  779}, {2136,1348,  774},
+    { 950, 649,  939}, {1180, 703,  899}, {1236, 527, 1158}, {1450, 647,  972},
+    {1282, 647,  707}, {1460, 663,  644}, {1614, 572,  578}, {3516,1222,  821},
+    {2668, 729, 1682}, {3128, 585, 1502}, {3208, 733,  976}, {6800, 871, 1416},
+    {3480, 743, 1408}, {3764, 899, 1170}, {3772, 632,  875}, {4092, 732,  638},
+    {3112, 753, 2620}, {3372, 945, 1890}, {3768, 969, 2288}, {2016, 559,  854},
+    {1736, 729,  787}, {1940, 686,  547}, {2140, 635,  674}, {4480,1272,  828},
+    {3976, 592, 1666}, {4384, 621, 1388}, {4400, 801,  955}, {4656, 522,  646},
+    {4848, 625, 1636}, {4984, 591,  874}, {5352, 535, 1001}, {11216,938, 1184},
+    { 925,3280, 1476}, { 735,1580, 1088}, {1150,1576,  674}, { 655, 783,  528},
+    { 527,2052, 1354}, { 782,1704, 1880}, { 578, 910, 1026}, { 692, 882, 1468},
+    { 586, 683,  715}, { 739, 609,  717}, { 778, 773,  697}, { 922, 785,  813},
+    { 766, 651,  984}, { 978, 596, 1030}, {1070, 757, 1080}, {1324, 687, 1178},
+    {1108,2144,  979}, { 723, 982,  690}, { 936, 956,  527}, {1180,1002,  547},
+    { 517,1306,  825}, { 832,1184,  974}, {1024, 957,  903}, {1262,1090,  906},
+    {1028, 720,  649}, {1192, 679,  694}, {2468,1480,  979}, {2844,1370,  877},
+    {1310, 835,  848}, {1508, 839,  698}, {1742,1030,  769}, {1910, 852,  573},
+    {1280, 859, 1174}, {1584, 863, 1108}, {1686, 708, 1364}, {1942, 768, 1104},
+    { 891, 536,  690}, {1016, 560,  663}, {2172, 870, 1348}, {2404, 999, 1170},
+    {1890, 966,  889}, {2116, 912,  777}, {2296,1020,  714}, {4872,1844,  932},
+    {2392, 778,  929}, {2604, 772,  744}, {2764, 957,  722}, {5832,1532,  984},
+    {2188, 519, 1264}, {2332, 532,  922}, {5064, 995, 2412}, {2708, 571,  874},
+    {2408, 545,  666}, {5016,1084,  875}, {5376, 983, 1196}, {5536, 979,  730},
+    {5344, 634, 1744}, {5688, 706, 1348}, {5912, 977, 1190}, {6072, 905,  763},
+    {6048, 582, 1526}, {11968,1013,1816}, {12864,937, 1900}, {12560,1086, 998},
+    {1998, 684, 1884}, {2504, 633, 1992}, {1252, 567,  835}, {1478, 571,  973},
+    {2620, 769, 1414}, {2808, 952, 1142}, {2908, 712, 1028}, {2976, 686,  741},
+    {1462, 552,  714}, {3296, 991, 1452}, {1590, 615,  544}, {3480,1150,  824},
+    {3212, 832,  923}, {3276, 839,  531}, {3548, 786,  852}, {3732, 764,  570},
+    {5728, 906, 2616}, {6272, 804, 2252}, {3096, 535,  876}, {3228, 598,  649},
+    {6536, 759, 1436}, {6648, 993,  846}, {6864, 567, 1210},{14016,1012, 1302},
+    {3408, 548, 1098}, {7160,1008, 1742}, {7136,1000, 1182}, {7480,1032,  836},
+    {7448, 612, 1552}, {7744, 614,  816}, {8384, 777, 1438}, {8784, 694,  786},
+    { 882,1508, 1068}, { 597, 837,  766}, {1270, 954, 1408}, { 803, 550,  798},
+    {1398,1308,  798}, {1848,1534,  738}, { 970, 675,  608}, {1264, 706,  684},
+    {1716, 767, 1126}, {2108, 765, 1404}, {2236, 924, 1003}, {2472,1048,  611},
+    { 999, 942,  963}, {1094, 857,  935}, {2936, 926, 1138}, {1934, 746,  551},
+    {3336, 633, 1762}, {3764, 701, 1454}, {1890, 564,  636}, {4096,1126,  793},
+    {3936, 556, 1140}, {3936, 540,  740}, {4216, 764,  874}, {8480,1328, 1014},
+    {2184, 515, 1042}, {4432, 934, 1344}, {4784, 945, 1112}, {5016,1062,  733},
+    {9216,1020, 2028}, {9968, 924, 1188}, {5424, 909, 1206}, {6512, 744, 1086}
 };
 
-static const uint8_t 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 uint8_t gain_exp_tab[256] = {
+   15, 15, 15, 15, 15, 16, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14,
+   14, 13, 14, 14, 13, 14, 13, 14, 13, 13, 13, 14, 13, 13, 14, 13,
+   13, 13, 13, 13, 14, 13, 12, 12, 13, 13, 13, 12, 13, 13, 13, 13,
+   13, 12, 13, 13, 12, 12, 13, 13, 13, 13, 14, 14, 13, 13, 13, 13,
+   13, 13, 13, 12, 12, 12, 13, 13, 12, 12, 12, 13, 12, 12, 12, 12,
+   12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12,
+   12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 13, 13, 13, 13,
+   13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14,
+   13, 12, 12, 11, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+   12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 11, 11, 11, 11,
+   12, 12, 12, 12, 11, 11, 12, 12, 12, 12, 12, 13, 12, 12, 12, 13,
+   12, 12, 13, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,
+   12, 12, 11, 11, 12, 12, 12, 12, 11, 12, 11, 12, 12, 12, 12, 12,
+   13, 13, 12, 12, 13, 13, 13, 14, 12, 13, 13, 13, 13, 13, 13, 13,
+   11, 10, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 10,  9, 11, 10,
+   12, 12, 11, 12, 12, 12, 12, 13, 11, 12, 12, 12, 13, 13, 12, 12
 };
 
-static const int8_t etable1[128][40]={
+static const int8_t cb1_vects[128][40]={
     {
      38,  -4,  15,  -4,  14, -13,  12, -11,  -2,  -6,
      -6, -11, -45, -16, -11, -13,  -7,   6, -12,   4,
@@ -1187,7 +754,7 @@ static const int8_t etable1[128][40]={
     }
 };
 
-static const int8_t etable2[128][40]={
+static const int8_t cb2_vects[128][40]={
     {
      73, -32, -60, -15, -26,  59,   2, -33,  30, -10,
      -3, -17,   8,  30,  -1, -26,  -4, -22,  10,  16,
@@ -1831,137 +1398,109 @@ static const int8_t etable2[128][40]={
     }
 };
 
-static const uint32_t ftable1[128]={
-    314527,  295599,  293848,  280320,  336779,  291703,  297354,  266749,
-    325815,  305109,  310555,  294891,  349515,  300052,  313812,  278588,
-    326231,  348357,  322076,  347246,  335655,  327567,  314037,  310198,
-    343640,  370152,  349471,  382719,  353433,  344311,  338152,  333632,
-    314810,  285147,  304708,  279643,  319779,  271292,  295149,  257376,
-    338219,  302387,  335244,  302877,  343236,  285341,  321676,  274547,
-    316321,  320899,  325378,  333870,  309279,  291473,  302532,  288065,
-    344907,  351169,  369278,  382224,  334752,  312711,  335747,  316511,
-    316511,  335747,  312711,  334752,  382224,  369278,  351169,  344907,
-    288065,  302532,  291473,  309279,  333870,  325378,  320899,  316321,
-    274547,  321676,  285341,  343236,  302877,  335244,  302387,  338219,
-    257376,  295149,  271292,  319779,  279643,  304708,  285147,  314810,
-    333632,  338152,  344311,  353433,  382719,  349471,  370152,  343640,
-    310198,  314037,  327567,  335655,  347246,  322076,  348357,  326231,
-    278588,  313812,  300052,  349515,  294891,  310555,  305109,  325815,
-    266749,  297354,  291703,  336779,  280320,  293848,  295599,  314527
+static const uint16_t cb1_base[128]={
+    19657, 18474, 18365, 17520, 21048, 18231, 18584, 16671,
+    20363, 19069, 19409, 18430, 21844, 18753, 19613, 17411,
+    20389, 21772, 20129, 21702, 20978, 20472, 19627, 19387,
+    21477, 23134, 21841, 23919, 22089, 21519, 21134, 20852,
+    19675, 17821, 19044, 17477, 19986, 16955, 18446, 16086,
+    21138, 18899, 20952, 18929, 21452, 17833, 20104, 17159,
+    19770, 20056, 20336, 20866, 19329, 18217, 18908, 18004,
+    21556, 21948, 23079, 23889, 20922, 19544, 20984, 19781,
+    19781, 20984, 19544, 20922, 23889, 23079, 21948, 21556,
+    18004, 18908, 18217, 19329, 20866, 20336, 20056, 19770,
+    17159, 20104, 17833, 21452, 18929, 20952, 18899, 21138,
+    16086, 18446, 16955, 19986, 17477, 19044, 17821, 19675,
+    20852, 21134, 21519, 22089, 23919, 21841, 23134, 21477,
+    19387, 19627, 20472, 20978, 21702, 20129, 21772, 20389,
+    17411, 19613, 18753, 21844, 18430, 19409, 19069, 20363,
+    16671, 18584, 18231, 21048, 17520, 18365, 18474, 19657,
 };
 
-static const uint32_t ftable2[128]={
-    194793,  214093,  222075,  221325,  210734,  211641,  211270,  192855,
-    198561,  223821,  229577,  234105,  209600,  214643,  211594,  196292,
-    191722,  221201,  215984,  227369,  222035,  236618,  220978,  209746,
-    183193,  212405,  205343,  219484,  203652,  219140,  204153,  198495,
-    163695,  194973,  186057,  210587,  188197,  215336,  197004,  205097,
-    167090,  204380,  192189,  224334,  189091,  221215,  199256,  211624,
-    167150,  210594,  190109,  228813,  205750,  260616,  215853,  240851,
-    162492,  205131,  184310,  223583,  192669,  241298,  202170,  227169,
-    227169,  202170,  241298,  192669,  223583,  184310,  205131,  162492,
-    240851,  215853,  260616,  205750,  228813,  190109,  210594,  167150,
-    211624,  199256,  221215,  189091,  224334,  192189,  204380,  167090,
-    205097,  197004,  215336,  188197,  210587,  186057,  194973,  163695,
-    198495,  204153,  219140,  203652,  219484,  205343,  212405,  183193,
-    209746,  220978,  236618,  222035,  227369,  215984,  221201,  191722,
-    196292,  211594,  214643,  209600,  234105,  229577,  223821,  198561,
-    192855,  211270,  211641,  210734,  221325,  222075,  214093,  194793
+static const uint16_t cb2_base[128]={
+    12174, 13380, 13879, 13832, 13170, 13227, 13204, 12053,
+    12410, 13988, 14348, 14631, 13100, 13415, 13224, 12268,
+    11982, 13825, 13499, 14210, 13877, 14788, 13811, 13109,
+    11449, 13275, 12833, 13717, 12728, 13696, 12759, 12405,
+    10230, 12185, 11628, 13161, 11762, 13458, 12312, 12818,
+    10443, 12773, 12011, 14020, 11818, 13825, 12453, 13226,
+    10446, 13162, 11881, 14300, 12859, 16288, 13490, 15053,
+    10155, 12820, 11519, 13973, 12041, 15081, 12635, 14198,
+    14198, 12635, 15081, 12041, 13973, 11519, 12820, 10155,
+    15053, 13490, 16288, 12859, 14300, 11881, 13162, 10446,
+    13226, 12453, 13825, 11818, 14020, 12011, 12773, 10443,
+    12818, 12312, 13458, 11762, 13161, 11628, 12185, 10230,
+    12405, 12759, 13696, 12728, 13717, 12833, 13275, 11449,
+    13109, 13811, 14788, 13877, 14210, 13499, 13825, 11982,
+    12268, 13224, 13415, 13100, 14631, 14348, 13988, 12410,
+    12053, 13204, 13227, 13170, 13832, 13879, 13380, 12174,
 };
 
-static const int16_t energy_tab[63]={
-        0,     6,    16,    18,    20,    23,    25,    29,
-       32,    36,    41,    46,    51,    57,    65,    73,
-       81,    91,   103,   115,   129,   145,   163,   183,
-      205,   230,   259,   290,   326,   365,   410,   460,
-      516,   579,   650,   730,   819,   919,  1031,  1157,
-     1298,  1456,  1634,  1833,  2057,  2308,  2590,  2906,
-     3261,  3659,  4105,  4606,  5168,  5799,  6507,  7301,
-     8192,  9191, 10313, 11571, 12983, 14567, 16345
+static const int16_t energy_tab[32]={
+        0,    16,    20,    25,    32,    41,    51,    65,
+       81,   103,   129,   163,   205,   259,   326,   410,
+      516,   650,   819,  1031,  1298,  1634,  2057,  2590,
+     3261,  4105,  5168,  6507,  8192, 10313, 12983, 16345
 };
 
-static const int16_t decodetable1[127]={
-    -4041, -4029, -4018, -4008, -3998, -3988, -3977, -3966,
-    -3954, -3942, -3930, -3918, -3906, -3892, -3879, -3866,
-    -3852, -3839, -3825, -3810, -3795, -3779, -3764, -3748,
-    -3731, -3715, -3699, -3683, -3666, -3649, -3631, -3613,
-    -3594, -3574, -3555, -3534, -3513, -3491, -3468, -3444,
-    -3420, -3396, -3372, -3346, -3321, -3295, -3268, -3240,
-    -3212, -3183, -3153, -3122, -3090, -3056, -3021, -2983,
-    -2944, -2903, -2863, -2817, -2772, -2724, -2676, -2620,
-    -2565, -2505, -2445, -2387, -2328, -2265, -2202, -2137,
-    -2072, -2006, -1941, -1874, -1808, -1734, -1660, -1584,
-    -1508, -1428, -1348, -1267, -1185, -1090,  -994,  -896,
-     -798,  -699,  -600,  -487,  -374,  -242,  -110,    21,
-      152,   300,   447,   584,   720,   851,   982,  1105,
-     1229,  1342,  1456,  1569,  1682,  1799,  1916,  2023,
-     2130,  2242,  2353,  2474,  2595,  2724,  2853,  2986,
-     3118,  3240,  3363,  3475,  3588,  3701,  3814
+static const int16_t lpc_refl_cb1[64]={
+    -4041, -4018, -3998, -3977, -3954, -3930, -3906, -3879,
+    -3852, -3825, -3795, -3764, -3731, -3699, -3666, -3631,
+    -3594, -3555, -3513, -3468, -3420, -3372, -3321, -3268,
+    -3212, -3153, -3090, -3021, -2944, -2863, -2772, -2676,
+    -2565, -2445, -2328, -2202, -2072, -1941, -1808, -1660,
+    -1508, -1348, -1185,  -994,  -798,  -600,  -374,  -110,
+      152,   447,   720,   982,  1229,  1456,  1682,  1916,
+     2130,  2353,  2595,  2853,  3118,  3363,  3588,  3814
 };
 
-static const int16_t decodetable2[63]={
-    -3091, -2739, -2386, -2129, -1871, -1648, -1425, -1223,
-    -1021,  -835,  -649,  -483,  -316,  -168,   -20,   123,
-      267,   406,   544,   677,   810,   937,  1065,  1185,
-     1305,  1420,  1534,  1645,  1756,  1863,  1970,  2071,
-     2171,  2265,  2359,  2448,  2536,  2618,  2700,  2777,
-     2854,  2925,  2996,  3064,  3133,  3198,  3263,  3324,
-     3386,  3442,  3499,  3551,  3603,  3652,  3701,  3745,
-     3789,  3829,  3870,  3908,  3947,  3983,  4020
+static const int16_t lpc_refl_cb2[32]={
+    -3091, -2386, -1871, -1425, -1021,  -649,  -316,   -20,
+      267,   544,   810,  1065,  1305,  1534,  1756,  1970,
+     2171,  2359,  2536,  2700,  2854,  2996,  3133,  3263,
+     3386,  3499,  3603,  3701,  3789,  3870,  3947,  4020
 };
 
-static const int16_t decodetable3[63]={
-    -3525, -3410, -3295, -3188, -3081, -2985, -2890, -2793,
-    -2696, -2603, -2511, -2419, -2328, -2238, -2149, -2064,
-    -1979, -1898, -1817, -1737, -1658, -1578, -1498, -1420,
-    -1341, -1265, -1188, -1110, -1032,  -954,  -876,  -798,
-     -721,  -641,  -561,  -478,  -394,  -311,  -228,  -141,
-      -54,    32,   119,   208,   296,   390,   484,   584,
-      683,   789,   895,  1009,  1123,  1248,  1373,  1512,
-     1651,  1808,  1965,  2162,  2360,  2607,  2854
+static const int16_t lpc_refl_cb3[32]={
+    -3525, -3295, -3081, -2890, -2696, -2511, -2328, -2149,
+    -1979, -1817, -1658, -1498, -1341, -1188, -1032,  -876,
+     -721,  -561,  -394,  -228,   -54,   119,   296,   484,
+      683,   895,  1123,  1373,  1651,  1965,  2360,  2854
 };
 
-static const int16_t decodetable4[31]={
-    -1845, -1451, -1057,  -790,  -522,  -300,   -77,   111,
-      301,   474,   647,   811,   975,  1130,  1285,  1434,
-     1582,  1727,  1873,  2018,  2163,  2308,  2452,  2594,
-     2735,  2876,  3017,  3158,  3299,  3434,  3569
+static const int16_t lpc_refl_cb4[16]={
+    -1845, -1057,  -522,   -77,   301,   647,   975,  1285,
+     1582,  1873,  2163,  2452,  2735,  3017,  3299,  3569
 };
 
-static const int16_t decodetable5[31]={
-    -2691, -2439, -2187, -1987, -1788, -1611, -1435, -1276,
-    -1118,  -977,  -837,  -704,  -571,  -444,  -316,  -188,
-      -59,    71,   201,   336,   470,   614,   759,   918,
-     1077,  1267,  1457,  1682,  1908,  2201,  2495
+static const int16_t lpc_refl_cb5[16]={
+    -2691, -2187, -1788, -1435, -1118,  -837,  -571,  -316,
+      -59,   201,   470,   759,  1077,  1457,  1908,  2495
 };
 
-static const int16_t decodetable6[15]={
-    -1372,  -923,  -474,  -170,   133,   383,   632,   866,
-     1100,  1335,  1571,  1823,  2075,  2374,  2672
+static const int16_t lpc_refl_cb6[8]={
+    -1372,  -474,   133,   632,  1100,  1571,  2075,  2672
 };
 
-static const int16_t decodetable7[15]={
-    -2389, -2088, -1787, -1509, -1231,  -974,  -717,  -478,
-     -239,    -2,   234,   502,   770,  1122,  1474
+static const int16_t lpc_refl_cb7[8]={
+    -2389, -1787, -1231,  -717,  -239,   234,   770,  1474
 };
 
-static const int16_t decodetable8[15]={
-    -1569, -1217,  -864,  -580,  -296,   -47,   200,   435,
-      670,   911,  1151,  1430,  1709,  2047,  2385
+static const int16_t lpc_refl_cb8[8]={
+    -1569,  -864,  -296,   200,   670,  1151,  1709,  2385
 };
 
-static const int16_t decodetable9[15]={
-    -2200, -1904, -1608, -1335, -1062,  -816,  -569,  -344,
-     -120,   108,   338,   600,   863,  1242,  1621
+static const int16_t lpc_refl_cb9[8]={
+    -2200, -1608, -1062,  -569,  -120,   338,   863,  1621
 };
 
-static const int16_t decodetable10[7]={
-     -617,  -213,   190,   496,   802,  1142,  1483
+static const int16_t lpc_refl_cb10[4]={
+     -617,   190,   802,  1483
 };
 
-static const int16_t *decodetable[10]={
-    decodetable1,decodetable2,decodetable3,decodetable4,decodetable5,
-    decodetable6,decodetable7,decodetable8,decodetable9,decodetable10
+static const int16_t * const lpc_refl_cb[10]={
+    lpc_refl_cb1, lpc_refl_cb2, lpc_refl_cb3, lpc_refl_cb4, lpc_refl_cb5,
+    lpc_refl_cb6, lpc_refl_cb7, lpc_refl_cb8, lpc_refl_cb9, lpc_refl_cb10
 };
 
-#endif /* FFMPEG_RA144_H */
+#endif /* AVCODEC_RA144_H */