Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * DCA compatible decoder data
  3.  * Copyright (C) 2004 Gildas Bazin
  4.  * Copyright (c) 2006 Benjamin Larsson
  5.  *
  6.  * This file is part of FFmpeg.
  7.  *
  8.  * FFmpeg is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Lesser General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2.1 of the License, or (at your option) any later version.
  12.  *
  13.  * FFmpeg is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Lesser General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Lesser General Public
  19.  * License along with FFmpeg; if not, write to the Free Software
  20.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21.  */
  22.  
  23. #include <stdint.h>
  24.  
  25. #include "libavutil/channel_layout.h"
  26. #include "libavutil/mem.h"
  27.  
  28. #include "dca.h"
  29. #include "dcadata.h"
  30.  
  31. /* Generic tables */
  32.  
  33. const uint32_t ff_dca_bit_rates[32] = {
  34.       32000,   56000,   64000,   96000,  112000, 128000,
  35.      192000,  224000,  256000,  320000,  384000,
  36.      448000,  512000,  576000,  640000,  768000,
  37.      896000, 1024000, 1152000, 1280000, 1344000,
  38.     1408000, 1411200, 1472000, 1536000, 1920000,
  39.     2048000, 3072000, 3840000, 1 /* open */, 2 /* variable */, 3 /* lossless */
  40. };
  41.  
  42. const uint8_t ff_dca_channels[16] = {
  43.     1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8
  44. };
  45.  
  46. const uint8_t ff_dca_bits_per_sample[7] = {
  47.     16, 16, 20, 20, 0, 24, 24
  48. };
  49.  
  50. /* ADPCM data */
  51.  
  52. /* 16bits signed fractional Q13 binary codes *//* quantization tables */
  53.  
  54. const uint32_t ff_dca_scale_factor_quant6[64] = {
  55.           1,       2,       2,       3,       3,       4,       6,       7,
  56.          10,      12,      16,      20,      26,      34,      44,      56,
  57.          72,      93,     120,     155,     200,     257,     331,     427,
  58.         550,     708,     912,    1175,    1514,    1950,    2512,    3236,
  59.        4169,    5370,    6918,    8913,   11482,   14791,   19055,   24547,
  60.       31623,   40738,   52481,   67608,   87096,  112202,  144544,  186209,
  61.      239883,  309030,  398107,  512861,  660693,  851138, 1096478, 1412538,
  62.     1819701, 2344229, 3019952, 3890451, 5011872, 6456542, 8317638,       0
  63. };
  64.  
  65. const uint32_t ff_dca_scale_factor_quant7[128] = {
  66.           1,       1,       2,       2,       2,       2,       3,       3,
  67.           3,       4,       4,       5,       6,       7,       7,       8,
  68.          10,      11,      12,      14,      16,      18,      20,      23,
  69.          26,      30,      34,      38,      44,      50,      56,      64,
  70.          72,      82,      93,     106,     120,     136,     155,     176,
  71.         200,     226,     257,     292,     331,     376,     427,     484,
  72.         550,     624,     708,     804,     912,    1035,    1175,    1334,
  73.        1514,    1718,    1950,    2213,    2512,    2851,    3236,    3673,
  74.        4169,    4732,    5370,    6095,    6918,    7852,    8913,   10116,
  75.       11482,   13032,   14791,   16788,   19055,   21627,   24547,   27861,
  76.       31623,   35892,   40738,   46238,   52481,   59566,   67608,   76736,
  77.       87096,   98855,  112202,  127350,  144544,  164059,  186209,  211349,
  78.      239883,  272270,  309030,  350752,  398107,  451856,  512861,  582103,
  79.      660693,  749894,  851138,  966051, 1096478, 1244515, 1412538, 1603245,
  80.     1819701, 2065380, 2344229, 2660725, 3019952, 3427678, 3890451, 4415704,
  81.     5011872, 5688529, 6456542, 7328245, 8317638,       0,       0,       0
  82. };
  83.  
  84. /* 20bits unsigned fractional binary codes */
  85. const uint32_t ff_dca_lossy_quant[32] = {
  86.          0, 6710886, 4194304, 3355443, 2474639, 2097152, 1761608, 1426063,
  87.     796918,  461373,  251658,  146801,   79692,   46137,   27263,   16777,
  88.      10486,    5872,    3355,    1887,    1258,     713,     336,     168,
  89.         84,      42,      21,       0,       0,       0,       0,       0
  90. };
  91.  
  92. const float ff_dca_lossy_quant_d[32] = {
  93.           0,     1.6,      1.0,     0.8,    0.59,    0.50,    0.42,    0.34,
  94.        0.19,    0.11,     0.06,   0.035,   0.019,   0.011,  0.0065,  0.0040,
  95.      0.0025,  0.0014,   0.0008, 0.00045, 0.00030, 0.00017, 0.00008, 0.00004,
  96.     0.00002, 0.00001, 0.000005,       0,       0,       0,       0,       0
  97. };
  98.  
  99. /* 20bits unsigned fractional binary codes */
  100. const uint32_t ff_dca_lossless_quant[32] = {
  101.          0, 4194304, 2097152, 1384120, 1048576, 696254, 524288, 348127,
  102.     262144,  131072,   65431,   33026,   16450,   8208,   4100,   2049,
  103.       1024,     512,     256,     128,      64,     32,     16,      8,
  104.          4,       2,       1,       0,       0,      0,      0,      0
  105. };
  106.  
  107. const float ff_dca_lossless_quant_d[32] = {
  108.            0,      1.0,      0.5,     0.33,     0.25,    0.166,    0.125,
  109.        0.083,   0.0625,  0.03125,   0.0156, 7.874E-3, 3.922E-3, 1.957E-3,
  110.     9.775E-4, 4.885E-4, 2.442E-4, 1.221E-4, 6.104E-5, 3.052E-5, 1.526E-5,
  111.     7.629E-6, 3.815E-6, 1.907E-6, 9.537E-7, 4.768E-7, 2.384E-7,        0,
  112.            0,        0,        0,        0
  113. };
  114.  
  115. /* Vector quantization tables *//* FIR filter coefficients, they can be cut on half and maybe use float instead of double */
  116.  
  117. DECLARE_ALIGNED(16, const float, ff_dca_fir_32bands_perfect)[512] = {
  118.     +1.135985195E-010,
  119.     +7.018770981E-011,
  120.     -1.608403011E-008,
  121.     -5.083275667E-008,
  122.     -1.543309907E-007,
  123.     -3.961981463E-007,
  124.     -7.342250683E-007,
  125.     -3.970030775E-007,
  126.     -4.741137047E-007,
  127.     -6.022448247E-007,
  128.     -6.628192182E-007,
  129.     -6.982898526E-007,
  130.     -7.020648809E-007,
  131.     -6.767839409E-007,
  132.     -6.262345096E-007,
  133.     -5.564140224E-007,
  134.     +7.003467317E-007,
  135.     +8.419976893E-007,
  136.     +9.742954035E-007,
  137.     +1.085227950E-006,
  138.     +1.162929266E-006,
  139.     +1.194632091E-006,
  140.     +1.179182050E-006,
  141.     +1.033426656E-006,
  142.     +9.451737242E-007,
  143.     +1.975324267E-006,
  144.     +1.190443072E-006,
  145.     +5.234479659E-007,
  146.     +2.014677420E-007,
  147.     +7.834767501E-008,
  148.     -6.702406963E-010,
  149.     -1.613285505E-009,
  150.     -2.682709610E-009,
  151.     -3.399493131E-009,
  152.     +1.314406006E-008,
  153.     +7.506701927E-009,
  154.     +2.788728892E-008,
  155.     +1.444918922E-007,
  156.     +3.132386439E-007,
  157.     +1.399798180E-006,
  158.     +2.032118118E-006,
  159.     +2.715013807E-006,
  160.     +3.453840463E-006,
  161.     +4.195037945E-006,
  162.     +4.896494374E-006,
  163.     +5.516381407E-006,
  164.     +6.015239251E-006,
  165.     +6.361419310E-006,
  166.     +8.006985809E-006,
  167.     +8.087732567E-006,
  168.     +7.941360309E-006,
  169.     +7.568834008E-006,
  170.     +6.986399967E-006,
  171.     +6.225028756E-006,
  172.     +5.315936960E-006,
  173.     +4.429412002E-006,
  174.     +3.332600045E-006,
  175.     +8.427224429E-007,
  176.     +4.341498823E-007,
  177.     +9.458596395E-008,
  178.     +2.975164826E-008,
  179.     +6.402664354E-008,
  180.     -3.246264413E-008,
  181.     -3.809887872E-008,
  182.     +8.434094667E-008,
  183.     +6.437721822E-008,
  184.     +1.189317118E-006,
  185.     +2.497214155E-006,
  186.     +3.617151151E-006,
  187.     +3.157242645E-006,
  188.     +2.319611212E-006,
  189.     +7.869333785E-006,
  190.     +9.826449968E-006,
  191.     +1.177108606E-005,
  192.     +1.379448349E-005,
  193.     +1.571428584E-005,
  194.     +1.743183020E-005,
  195.     +1.884208177E-005,
  196.     +1.987093310E-005,
  197.     +2.042970118E-005,
  198.     -3.144468428E-005,
  199.     -3.334947178E-005,
  200.     -3.460439257E-005,
  201.     -3.515914432E-005,
  202.     -3.495384954E-005,
  203.     -3.397853652E-005,
  204.     -3.225446198E-005,
  205.     -2.978993689E-005,
  206.     -2.677291741E-005,
  207.     -1.806914770E-005,
  208.     -1.776598037E-005,
  209.     -1.661818715E-005,
  210.     -1.207003334E-005,
  211.     -6.993315310E-006,
  212.     -5.633860383E-007,
  213.     -9.984935332E-007,
  214.     -1.470520488E-006,
  215.     -1.853591357E-006,
  216.     +7.198007665E-007,
  217.     +3.086857760E-006,
  218.     +6.084746474E-006,
  219.     +9.561075785E-006,
  220.     +1.309637537E-005,
  221.     +2.263354872E-005,
  222.     +2.847247197E-005,
  223.     +3.415624451E-005,
  224.     +3.946387005E-005,
  225.     +4.425736552E-005,
  226.     +4.839275425E-005,
  227.     +5.176846025E-005,
  228.     +5.429694284E-005,
  229.     +5.595519906E-005,
  230.     +4.916387297E-006,
  231.     +9.299508747E-006,
  232.     +1.356193479E-005,
  233.     +1.751866148E-005,
  234.     +2.093936746E-005,
  235.     +2.362549276E-005,
  236.     +2.537086584E-005,
  237.     +2.618136386E-005,
  238.     +2.554462844E-005,
  239.     +3.018750249E-005,
  240.     +2.570833203E-005,
  241.     +1.985177369E-005,
  242.     +1.191342653E-005,
  243.     +2.525620175E-006,
  244.     -1.521241393E-005,
  245.     -1.617751332E-005,
  246.     +1.992636317E-005,
  247.     +1.774702469E-005,
  248.     +4.624524081E-005,
  249.     +5.610509834E-005,
  250.     +6.568001118E-005,
  251.     +7.513730816E-005,
  252.     +8.413690375E-005,
  253.     +8.757545584E-005,
  254.     +9.517164290E-005,
  255.     +1.020687996E-004,
  256.     +1.084438481E-004,
  257.     +1.140582463E-004,
  258.     +1.187910311E-004,
  259.     +1.224978914E-004,
  260.     +1.250260248E-004,
  261.     +1.262027217E-004,
  262.     +1.226499153E-004,
  263.     +1.213575742E-004,
  264.     +1.180980107E-004,
  265.     +1.126275165E-004,
  266.     +1.047207043E-004,
  267.     +9.417100227E-005,
  268.     +8.078388782E-005,
  269.     +6.447290798E-005,
  270.     +4.491530854E-005,
  271.     +2.470704203E-005,
  272.     -1.714242217E-006,
  273.     -3.193307566E-005,
  274.     -6.541742187E-005,
  275.     -1.024175072E-004,
  276.     -1.312203676E-004,
  277.     -1.774113771E-004,
  278.     -2.233728592E-004,
  279.     -2.682086197E-004,
  280.     -3.347633174E-004,
  281.     -3.906481725E-004,
  282.     -4.490280990E-004,
  283.     -5.099929986E-004,
  284.     -5.729619297E-004,
  285.     -6.358824321E-004,
  286.     -7.021900383E-004,
  287.     -7.698345580E-004,
  288.     -8.385353722E-004,
  289.     -9.078957955E-004,
  290.     -9.775133803E-004,
  291.     -1.046945457E-003,
  292.     -1.115717343E-003,
  293.     -1.183370827E-003,
  294.     -1.252829796E-003,
  295.     -1.316190348E-003,
  296.     -1.376571832E-003,
  297.     -1.433344092E-003,
  298.     -1.485876855E-003,
  299.     -1.533520175E-003,
  300.     -1.575609902E-003,
  301.     -1.611457788E-003,
  302.     -1.640390139E-003,
  303.     -1.661288203E-003,
  304.     -1.674512983E-003,
  305.     -1.678415807E-003,
  306.     -1.672798418E-003,
  307.     -1.656501088E-003,
  308.     -1.633993932E-003,
  309.     -1.593449386E-003,
  310.     +1.542080659E-003,
  311.     +1.479332102E-003,
  312.     +1.395521569E-003,
  313.     +1.303116791E-003,
  314.     +1.196175464E-003,
  315.     +1.073757303E-003,
  316.     +9.358961834E-004,
  317.     +7.817269652E-004,
  318.     +6.114174030E-004,
  319.     +4.244441516E-004,
  320.     +2.206075296E-004,
  321.     -2.719412748E-007,
  322.     -2.382978710E-004,
  323.     -4.935106263E-004,
  324.     -7.658848190E-004,
  325.     -1.055365428E-003,
  326.     -1.361547387E-003,
  327.     -1.684492454E-003,
  328.     -2.023874084E-003,
  329.     -2.379294252E-003,
  330.     -2.750317100E-003,
  331.     -3.136433195E-003,
  332.     -3.537061159E-003,
  333.     -3.951539751E-003,
  334.     -4.379155114E-003,
  335.     -4.819062538E-003,
  336.     -5.270531867E-003,
  337.     -5.732392892E-003,
  338.     -6.203945260E-003,
  339.     -6.683901884E-003,
  340.     -7.170005701E-003,
  341.     -7.664063945E-003,
  342.     -8.162760176E-003,
  343.     -8.665001951E-003,
  344.     -9.170533158E-003,
  345.     -9.676489048E-003,
  346.     -1.018219907E-002,
  347.     -1.068630442E-002,
  348.     -1.118756086E-002,
  349.     -1.168460958E-002,
  350.     -1.217562053E-002,
  351.     -1.265939046E-002,
  352.     -1.313448418E-002,
  353.     -1.359948888E-002,
  354.     -1.405300573E-002,
  355.     -1.449365262E-002,
  356.     -1.492007636E-002,
  357.     -1.533095632E-002,
  358.     -1.572482102E-002,
  359.     -1.610082202E-002,
  360.     -1.645756140E-002,
  361.     -1.679391414E-002,
  362.     -1.710879989E-002,
  363.     -1.740120351E-002,
  364.     -1.767017506E-002,
  365.     -1.791484281E-002,
  366.     -1.813439466E-002,
  367.     -1.832821220E-002,
  368.     -1.849545911E-002,
  369.     -1.863567345E-002,
  370.     -1.874836907E-002,
  371.     -1.883326657E-002,
  372.     -1.889026538E-002,
  373.     -1.891860925E-002,
  374.     +1.891860925E-002,
  375.     +1.889026538E-002,
  376.     +1.883326657E-002,
  377.     +1.874836907E-002,
  378.     +1.863567345E-002,
  379.     +1.849545911E-002,
  380.     +1.832821220E-002,
  381.     +1.813439466E-002,
  382.     +1.791484281E-002,
  383.     +1.767017506E-002,
  384.     +1.740120351E-002,
  385.     +1.710879989E-002,
  386.     +1.679391414E-002,
  387.     +1.645756140E-002,
  388.     +1.610082202E-002,
  389.     +1.572482102E-002,
  390.     +1.533095632E-002,
  391.     +1.492007636E-002,
  392.     +1.449365262E-002,
  393.     +1.405300573E-002,
  394.     +1.359948888E-002,
  395.     +1.313448418E-002,
  396.     +1.265939046E-002,
  397.     +1.217562053E-002,
  398.     +1.168460958E-002,
  399.     +1.118756086E-002,
  400.     +1.068630442E-002,
  401.     +1.018219907E-002,
  402.     +9.676489048E-003,
  403.     +9.170533158E-003,
  404.     +8.665001951E-003,
  405.     +8.162760176E-003,
  406.     +7.664063945E-003,
  407.     +7.170005701E-003,
  408.     +6.683901884E-003,
  409.     +6.203945260E-003,
  410.     +5.732392892E-003,
  411.     +5.270531867E-003,
  412.     +4.819062538E-003,
  413.     +4.379155114E-003,
  414.     +3.951539751E-003,
  415.     +3.537061159E-003,
  416.     +3.136433195E-003,
  417.     +2.750317100E-003,
  418.     +2.379294252E-003,
  419.     +2.023874084E-003,
  420.     +1.684492454E-003,
  421.     +1.361547387E-003,
  422.     +1.055365428E-003,
  423.     +7.658848190E-004,
  424.     +4.935106263E-004,
  425.     +2.382978710E-004,
  426.     +2.719412748E-007,
  427.     -2.206075296E-004,
  428.     -4.244441516E-004,
  429.     -6.114174030E-004,
  430.     -7.817269652E-004,
  431.     -9.358961834E-004,
  432.     -1.073757303E-003,
  433.     -1.196175464E-003,
  434.     -1.303116791E-003,
  435.     -1.395521569E-003,
  436.     -1.479332102E-003,
  437.     -1.542080659E-003,
  438.     +1.593449386E-003,
  439.     +1.633993932E-003,
  440.     +1.656501088E-003,
  441.     +1.672798418E-003,
  442.     +1.678415807E-003,
  443.     +1.674512983E-003,
  444.     +1.661288203E-003,
  445.     +1.640390139E-003,
  446.     +1.611457788E-003,
  447.     +1.575609902E-003,
  448.     +1.533520175E-003,
  449.     +1.485876855E-003,
  450.     +1.433344092E-003,
  451.     +1.376571832E-003,
  452.     +1.316190348E-003,
  453.     +1.252829796E-003,
  454.     +1.183370827E-003,
  455.     +1.115717343E-003,
  456.     +1.046945457E-003,
  457.     +9.775133803E-004,
  458.     +9.078957955E-004,
  459.     +8.385353722E-004,
  460.     +7.698345580E-004,
  461.     +7.021900383E-004,
  462.     +6.358824321E-004,
  463.     +5.729619297E-004,
  464.     +5.099929986E-004,
  465.     +4.490280990E-004,
  466.     +3.906481725E-004,
  467.     +3.347633174E-004,
  468.     +2.682086197E-004,
  469.     +2.233728592E-004,
  470.     +1.774113771E-004,
  471.     +1.312203676E-004,
  472.     +1.024175072E-004,
  473.     +6.541742187E-005,
  474.     +3.193307566E-005,
  475.     +1.714242217E-006,
  476.     -2.470704203E-005,
  477.     -4.491530854E-005,
  478.     -6.447290798E-005,
  479.     -8.078388782E-005,
  480.     -9.417100227E-005,
  481.     -1.047207043E-004,
  482.     -1.126275165E-004,
  483.     -1.180980107E-004,
  484.     -1.213575742E-004,
  485.     -1.226499153E-004,
  486.     -1.262027217E-004,
  487.     -1.250260248E-004,
  488.     -1.224978914E-004,
  489.     -1.187910311E-004,
  490.     -1.140582463E-004,
  491.     -1.084438481E-004,
  492.     -1.020687996E-004,
  493.     -9.517164290E-005,
  494.     -8.757545584E-005,
  495.     -8.413690375E-005,
  496.     -7.513730816E-005,
  497.     -6.568001118E-005,
  498.     -5.610509834E-005,
  499.     -4.624524081E-005,
  500.     -1.774702469E-005,
  501.     -1.992636317E-005,
  502.     +1.617751332E-005,
  503.     +1.521241393E-005,
  504.     -2.525620175E-006,
  505.     -1.191342653E-005,
  506.     -1.985177369E-005,
  507.     -2.570833203E-005,
  508.     -3.018750249E-005,
  509.     -2.554462844E-005,
  510.     -2.618136386E-005,
  511.     -2.537086584E-005,
  512.     -2.362549276E-005,
  513.     -2.093936746E-005,
  514.     -1.751866148E-005,
  515.     -1.356193479E-005,
  516.     -9.299508747E-006,
  517.     -4.916387297E-006,
  518.     -5.595519906E-005,
  519.     -5.429694284E-005,
  520.     -5.176846025E-005,
  521.     -4.839275425E-005,
  522.     -4.425736552E-005,
  523.     -3.946387005E-005,
  524.     -3.415624451E-005,
  525.     -2.847247197E-005,
  526.     -2.263354872E-005,
  527.     -1.309637537E-005,
  528.     -9.561075785E-006,
  529.     -6.084746474E-006,
  530.     -3.086857760E-006,
  531.     -7.198007665E-007,
  532.     +1.853591357E-006,
  533.     +1.470520488E-006,
  534.     +9.984935332E-007,
  535.     +5.633860383E-007,
  536.     +6.993315310E-006,
  537.     +1.207003334E-005,
  538.     +1.661818715E-005,
  539.     +1.776598037E-005,
  540.     +1.806914770E-005,
  541.     +2.677291741E-005,
  542.     +2.978993689E-005,
  543.     +3.225446198E-005,
  544.     +3.397853652E-005,
  545.     +3.495384954E-005,
  546.     +3.515914432E-005,
  547.     +3.460439257E-005,
  548.     +3.334947178E-005,
  549.     +3.144468428E-005,
  550.     -2.042970118E-005,
  551.     -1.987093310E-005,
  552.     -1.884208177E-005,
  553.     -1.743183020E-005,
  554.     -1.571428584E-005,
  555.     -1.379448349E-005,
  556.     -1.177108606E-005,
  557.     -9.826449968E-006,
  558.     -7.869333785E-006,
  559.     -2.319611212E-006,
  560.     -3.157242645E-006,
  561.     -3.617151151E-006,
  562.     -2.497214155E-006,
  563.     -1.189317118E-006,
  564.     -6.437721822E-008,
  565.     -8.434094667E-008,
  566.     +3.809887872E-008,
  567.     +3.246264413E-008,
  568.     -6.402664354E-008,
  569.     -2.975164826E-008,
  570.     -9.458596395E-008,
  571.     -4.341498823E-007,
  572.     -8.427224429E-007,
  573.     -3.332600045E-006,
  574.     -4.429412002E-006,
  575.     -5.315936960E-006,
  576.     -6.225028756E-006,
  577.     -6.986399967E-006,
  578.     -7.568834008E-006,
  579.     -7.941360309E-006,
  580.     -8.087732567E-006,
  581.     -8.006985809E-006,
  582.     -6.361419310E-006,
  583.     -6.015239251E-006,
  584.     -5.516381407E-006,
  585.     -4.896494374E-006,
  586.     -4.195037945E-006,
  587.     -3.453840463E-006,
  588.     -2.715013807E-006,
  589.     -2.032118118E-006,
  590.     -1.399798180E-006,
  591.     -3.132386439E-007,
  592.     -1.444918922E-007,
  593.     -2.788728892E-008,
  594.     -7.506701927E-009,
  595.     -1.314406006E-008,
  596.     +3.399493131E-009,
  597.     +2.682709610E-009,
  598.     +1.613285505E-009,
  599.     +6.702406963E-010,
  600.     -7.834767501E-008,
  601.     -2.014677420E-007,
  602.     -5.234479659E-007,
  603.     -1.190443072E-006,
  604.     -1.975324267E-006,
  605.     -9.451737242E-007,
  606.     -1.033426656E-006,
  607.     -1.179182050E-006,
  608.     -1.194632091E-006,
  609.     -1.162929266E-006,
  610.     -1.085227950E-006,
  611.     -9.742954035E-007,
  612.     -8.419976893E-007,
  613.     -7.003467317E-007,
  614.     +5.564140224E-007,
  615.     +6.262345096E-007,
  616.     +6.767839409E-007,
  617.     +7.020648809E-007,
  618.     +6.982898526E-007,
  619.     +6.628192182E-007,
  620.     +6.022448247E-007,
  621.     +4.741137047E-007,
  622.     +3.970030775E-007,
  623.     +7.342250683E-007,
  624.     +3.961981463E-007,
  625.     +1.543309907E-007,
  626.     +5.083275667E-008,
  627.     +1.608403011E-008,
  628.     -7.018770981E-011,
  629.     -1.135985195E-010
  630. };
  631.  
  632. DECLARE_ALIGNED(16, const float, ff_dca_fir_32bands_nonperfect)[512] = {
  633.     -1.390191784E-007,
  634.     -1.693738625E-007,
  635.     -2.030677564E-007,
  636.     -2.404238444E-007,
  637.     -2.818143514E-007,
  638.     -3.276689142E-007,
  639.     -3.784752209E-007,
  640.     -4.347855338E-007,
  641.     -4.972276315E-007,
  642.     -5.665120852E-007,
  643.     -6.434325428E-007,
  644.     -7.288739425E-007,
  645.     -8.238164355E-007,
  646.     -9.293416952E-007,
  647.     -1.046637067E-006,
  648.     -1.176999604E-006,
  649.     -1.321840614E-006,
  650.     -1.482681114E-006,
  651.     -1.661159786E-006,
  652.     -1.859034001E-006,
  653.     -2.078171747E-006,
  654.     -2.320550948E-006,
  655.     -2.588257530E-006,
  656.     -2.883470643E-006,
  657.     -3.208459020E-006,
  658.     -3.565570978E-006,
  659.     -3.957220997E-006,
  660.     -4.385879038E-006,
  661.     -4.854050530E-006,
  662.     -5.364252502E-006,
  663.     -5.918994248E-006,
  664.     -6.520755960E-006,
  665.     -7.171964626E-006,
  666.     -7.874960829E-006,
  667.     -8.631964192E-006,
  668.     -9.445050637E-006,
  669.     -1.031611009E-005,
  670.     -1.124680875E-005,
  671.     -1.223855270E-005,
  672.     -1.329243969E-005,
  673.     -1.440921824E-005,
  674.     -1.558924305E-005,
  675.     -1.683242772E-005,
  676.     -1.813820381E-005,
  677.     -1.950545993E-005,
  678.     -2.093250441E-005,
  679.     -2.241701623E-005,
  680.     -2.395598858E-005,
  681.     -2.554569073E-005,
  682.     -2.718161704E-005,
  683.     -2.885844333E-005,
  684.     -3.056998685E-005,
  685.     -3.230916263E-005,
  686.     -3.406793985E-005,
  687.     -3.583733633E-005,
  688.     -3.760734762E-005,
  689.     -3.936696885E-005,
  690.     -4.110412556E-005,
  691.     -4.280570283E-005,
  692.     -4.445751256E-005,
  693.     -4.604430433E-005,
  694.     -4.754976908E-005,
  695.     -4.895655002E-005,
  696.     -5.024627535E-005,
  697.     +5.139957648E-005,
  698.     +5.239612074E-005,
  699.     +5.321469871E-005,
  700.     +5.383323878E-005,
  701.     +5.422891263E-005,
  702.     +5.437819709E-005,
  703.     +5.425697600E-005,
  704.     +5.384063843E-005,
  705.     +5.310418419E-005,
  706.     +5.202236207E-005,
  707.     +5.056979353E-005,
  708.     +4.872112549E-005,
  709.     +4.645117951E-005,
  710.     +4.373511547E-005,
  711.     +4.054862075E-005,
  712.     +3.686808850E-005,
  713.     +3.267079956E-005,
  714.     +2.793515523E-005,
  715.     +2.264085742E-005,
  716.     +1.676913780E-005,
  717.     +1.030297699E-005,
  718.     +3.227306706E-006,
  719.     -4.470633485E-006,
  720.     -1.280130618E-005,
  721.     -2.177240640E-005,
  722.     -3.138873581E-005,
  723.     -4.165195787E-005,
  724.     -5.256036457E-005,
  725.     -6.410864444E-005,
  726.     -7.628766616E-005,
  727.     -8.908427117E-005,
  728.     -1.024810626E-004,
  729.     -1.164562127E-004,
  730.     -1.309833024E-004,
  731.     -1.460311323E-004,
  732.     -1.615635992E-004,
  733.     -1.775395358E-004,
  734.     -1.939126523E-004,
  735.     -2.106313768E-004,
  736.     -2.276388550E-004,
  737.     -2.448728774E-004,
  738.     -2.622658503E-004,
  739.     -2.797449124E-004,
  740.     -2.972317743E-004,
  741.     -3.146430245E-004,
  742.     -3.318900708E-004,
  743.     -3.488793736E-004,
  744.     -3.655125911E-004,
  745.     -3.816867538E-004,
  746.     -3.972945851E-004,
  747.     -4.122247046E-004,
  748.     -4.263620067E-004,
  749.     -4.395879805E-004,
  750.     -4.517810594E-004,
  751.     -4.628172028E-004,
  752.     -4.725702747E-004,
  753.     -4.809123348E-004,
  754.     -4.877146275E-004,
  755.     -4.928477574E-004,
  756.     -4.961824161E-004,
  757.     -4.975944757E-004,
  758.     -4.969481961E-004,
  759.     -4.941228544E-004,
  760.     -4.889960401E-004,
  761.     +4.814492422E-004,
  762.     +4.713678791E-004,
  763.     +4.586426076E-004,
  764.     +4.431701091E-004,
  765.     +4.248536134E-004,
  766.     +4.036037717E-004,
  767.     +3.793396754E-004,
  768.     +3.519894381E-004,
  769.     +3.214911267E-004,
  770.     +2.877934603E-004,
  771.     +2.508567995E-004,
  772.     +2.106537577E-004,
  773.     +1.671699720E-004,
  774.     +1.204049113E-004,
  775.     +7.037253090E-005,
  776.     +1.710198012E-005,
  777.     -3.936182839E-005,
  778.     -9.895755647E-005,
  779.     -1.616069785E-004,
  780.     -2.272142592E-004,
  781.     -2.956659591E-004,
  782.     -3.668301215E-004,
  783.     -4.405563814E-004,
  784.     -5.166754709E-004,
  785.     -5.949990009E-004,
  786.     -6.753197522E-004,
  787.     -7.574109477E-004,
  788.     -8.410271257E-004,
  789.     -9.259034996E-004,
  790.     -1.011756598E-003,
  791.     -1.098284614E-003,
  792.     -1.185167348E-003,
  793.     -1.272067428E-003,
  794.     -1.358630019E-003,
  795.     -1.444484224E-003,
  796.     -1.529243193E-003,
  797.     -1.612505526E-003,
  798.     -1.693855622E-003,
  799.     -1.772865304E-003,
  800.     -1.849094522E-003,
  801.     -1.922092517E-003,
  802.     -1.991399564E-003,
  803.     -2.056547208E-003,
  804.     -2.117061289E-003,
  805.     -2.172462177E-003,
  806.     -2.222266514E-003,
  807.     -2.265989315E-003,
  808.     -2.303145360E-003,
  809.     -2.333251061E-003,
  810.     -2.355825622E-003,
  811.     -2.370394068E-003,
  812.     -2.376487479E-003,
  813.     -2.373647178E-003,
  814.     -2.361423569E-003,
  815.     -2.339380793E-003,
  816.     -2.307097195E-003,
  817.     -2.264167881E-003,
  818.     -2.210205887E-003,
  819.     -2.144844970E-003,
  820.     -2.067740774E-003,
  821.     -1.978572691E-003,
  822.     -1.877046190E-003,
  823.     -1.762894331E-003,
  824.     -1.635878929E-003,
  825.     +1.495792647E-003,
  826.     +1.342460280E-003,
  827.     +1.175740734E-003,
  828.     +9.955273708E-004,
  829.     +8.017504588E-004,
  830.     +5.943773431E-004,
  831.     +3.734139318E-004,
  832.     +1.389056415E-004,
  833.     -1.090620208E-004,
  834.     -3.703625989E-004,
  835.     -6.448282511E-004,
  836.     -9.322494152E-004,
  837.     -1.232374110E-003,
  838.     -1.544908970E-003,
  839.     -1.869517611E-003,
  840.     -2.205822384E-003,
  841.     -2.553403843E-003,
  842.     -2.911801683E-003,
  843.     -3.280514618E-003,
  844.     -3.659002949E-003,
  845.     -4.046686925E-003,
  846.     -4.442950245E-003,
  847.     -4.847140983E-003,
  848.     -5.258570891E-003,
  849.     -5.676518660E-003,
  850.     -6.100233644E-003,
  851.     -6.528933067E-003,
  852.     -6.961807609E-003,
  853.     -7.398022339E-003,
  854.     -7.836719044E-003,
  855.     -8.277016692E-003,
  856.     -8.718019351E-003,
  857.     -9.158811532E-003,
  858.     -9.598465636E-003,
  859.     -1.003604382E-002,
  860.     -1.047059800E-002,
  861.     -1.090117730E-002,
  862.     -1.132682897E-002,
  863.     -1.174659748E-002,
  864.     -1.215953380E-002,
  865.     -1.256469358E-002,
  866.     -1.296114177E-002,
  867.     -1.334795821E-002,
  868.     -1.372423489E-002,
  869.     -1.408908330E-002,
  870.     -1.444163360E-002,
  871.     -1.478104480E-002,
  872.     -1.510649733E-002,
  873.     -1.541720331E-002,
  874.     -1.571240649E-002,
  875.     -1.599138230E-002,
  876.     -1.625344716E-002,
  877.     -1.649795473E-002,
  878.     -1.672429405E-002,
  879.     -1.693190821E-002,
  880.     -1.712027565E-002,
  881.     -1.728892699E-002,
  882.     -1.743743755E-002,
  883.     -1.756543480E-002,
  884.     -1.767260395E-002,
  885.     -1.775865816E-002,
  886.     -1.782339066E-002,
  887.     -1.786663756E-002,
  888.     -1.788828894E-002,
  889.     +1.788828894E-002,
  890.     +1.786663756E-002,
  891.     +1.782339066E-002,
  892.     +1.775865816E-002,
  893.     +1.767260395E-002,
  894.     +1.756543480E-002,
  895.     +1.743743755E-002,
  896.     +1.728892699E-002,
  897.     +1.712027565E-002,
  898.     +1.693190821E-002,
  899.     +1.672429405E-002,
  900.     +1.649795473E-002,
  901.     +1.625344716E-002,
  902.     +1.599138230E-002,
  903.     +1.571240649E-002,
  904.     +1.541720331E-002,
  905.     +1.510649733E-002,
  906.     +1.478104480E-002,
  907.     +1.444163360E-002,
  908.     +1.408908330E-002,
  909.     +1.372423489E-002,
  910.     +1.334795821E-002,
  911.     +1.296114177E-002,
  912.     +1.256469358E-002,
  913.     +1.215953380E-002,
  914.     +1.174659748E-002,
  915.     +1.132682897E-002,
  916.     +1.090117730E-002,
  917.     +1.047059800E-002,
  918.     +1.003604382E-002,
  919.     +9.598465636E-003,
  920.     +9.158811532E-003,
  921.     +8.718019351E-003,
  922.     +8.277016692E-003,
  923.     +7.836719044E-003,
  924.     +7.398022339E-003,
  925.     +6.961807609E-003,
  926.     +6.528933067E-003,
  927.     +6.100233644E-003,
  928.     +5.676518660E-003,
  929.     +5.258570891E-003,
  930.     +4.847140983E-003,
  931.     +4.442950245E-003,
  932.     +4.046686925E-003,
  933.     +3.659002949E-003,
  934.     +3.280514618E-003,
  935.     +2.911801683E-003,
  936.     +2.553403843E-003,
  937.     +2.205822384E-003,
  938.     +1.869517611E-003,
  939.     +1.544908970E-003,
  940.     +1.232374110E-003,
  941.     +9.322494152E-004,
  942.     +6.448282511E-004,
  943.     +3.703625989E-004,
  944.     +1.090620208E-004,
  945.     -1.389056415E-004,
  946.     -3.734139318E-004,
  947.     -5.943773431E-004,
  948.     -8.017504588E-004,
  949.     -9.955273708E-004,
  950.     -1.175740734E-003,
  951.     -1.342460280E-003,
  952.     -1.495792647E-003,
  953.     +1.635878929E-003,
  954.     +1.762894331E-003,
  955.     +1.877046190E-003,
  956.     +1.978572691E-003,
  957.     +2.067740774E-003,
  958.     +2.144844970E-003,
  959.     +2.210205887E-003,
  960.     +2.264167881E-003,
  961.     +2.307097195E-003,
  962.     +2.339380793E-003,
  963.     +2.361423569E-003,
  964.     +2.373647178E-003,
  965.     +2.376487479E-003,
  966.     +2.370394068E-003,
  967.     +2.355825622E-003,
  968.     +2.333251061E-003,
  969.     +2.303145360E-003,
  970.     +2.265989315E-003,
  971.     +2.222266514E-003,
  972.     +2.172462177E-003,
  973.     +2.117061289E-003,
  974.     +2.056547208E-003,
  975.     +1.991399564E-003,
  976.     +1.922092517E-003,
  977.     +1.849094522E-003,
  978.     +1.772865304E-003,
  979.     +1.693855622E-003,
  980.     +1.612505526E-003,
  981.     +1.529243193E-003,
  982.     +1.444484224E-003,
  983.     +1.358630019E-003,
  984.     +1.272067428E-003,
  985.     +1.185167348E-003,
  986.     +1.098284614E-003,
  987.     +1.011756598E-003,
  988.     +9.259034996E-004,
  989.     +8.410271257E-004,
  990.     +7.574109477E-004,
  991.     +6.753197522E-004,
  992.     +5.949990009E-004,
  993.     +5.166754709E-004,
  994.     +4.405563814E-004,
  995.     +3.668301215E-004,
  996.     +2.956659591E-004,
  997.     +2.272142592E-004,
  998.     +1.616069785E-004,
  999.     +9.895755647E-005,
  1000.     +3.936182839E-005,
  1001.     -1.710198012E-005,
  1002.     -7.037253090E-005,
  1003.     -1.204049113E-004,
  1004.     -1.671699720E-004,
  1005.     -2.106537577E-004,
  1006.     -2.508567995E-004,
  1007.     -2.877934603E-004,
  1008.     -3.214911267E-004,
  1009.     -3.519894381E-004,
  1010.     -3.793396754E-004,
  1011.     -4.036037717E-004,
  1012.     -4.248536134E-004,
  1013.     -4.431701091E-004,
  1014.     -4.586426076E-004,
  1015.     -4.713678791E-004,
  1016.     -4.814492422E-004,
  1017.     +4.889960401E-004,
  1018.     +4.941228544E-004,
  1019.     +4.969481961E-004,
  1020.     +4.975944757E-004,
  1021.     +4.961824161E-004,
  1022.     +4.928477574E-004,
  1023.     +4.877146275E-004,
  1024.     +4.809123348E-004,
  1025.     +4.725702747E-004,
  1026.     +4.628172028E-004,
  1027.     +4.517810594E-004,
  1028.     +4.395879805E-004,
  1029.     +4.263620067E-004,
  1030.     +4.122247046E-004,
  1031.     +3.972945851E-004,
  1032.     +3.816867538E-004,
  1033.     +3.655125911E-004,
  1034.     +3.488793736E-004,
  1035.     +3.318900708E-004,
  1036.     +3.146430245E-004,
  1037.     +2.972317743E-004,
  1038.     +2.797449124E-004,
  1039.     +2.622658503E-004,
  1040.     +2.448728774E-004,
  1041.     +2.276388550E-004,
  1042.     +2.106313768E-004,
  1043.     +1.939126523E-004,
  1044.     +1.775395358E-004,
  1045.     +1.615635992E-004,
  1046.     +1.460311323E-004,
  1047.     +1.309833024E-004,
  1048.     +1.164562127E-004,
  1049.     +1.024810626E-004,
  1050.     +8.908427117E-005,
  1051.     +7.628766616E-005,
  1052.     +6.410864444E-005,
  1053.     +5.256036457E-005,
  1054.     +4.165195787E-005,
  1055.     +3.138873581E-005,
  1056.     +2.177240640E-005,
  1057.     +1.280130618E-005,
  1058.     +4.470633485E-006,
  1059.     -3.227306706E-006,
  1060.     -1.030297699E-005,
  1061.     -1.676913780E-005,
  1062.     -2.264085742E-005,
  1063.     -2.793515523E-005,
  1064.     -3.267079956E-005,
  1065.     -3.686808850E-005,
  1066.     -4.054862075E-005,
  1067.     -4.373511547E-005,
  1068.     -4.645117951E-005,
  1069.     -4.872112549E-005,
  1070.     -5.056979353E-005,
  1071.     -5.202236207E-005,
  1072.     -5.310418419E-005,
  1073.     -5.384063843E-005,
  1074.     -5.425697600E-005,
  1075.     -5.437819709E-005,
  1076.     -5.422891263E-005,
  1077.     -5.383323878E-005,
  1078.     -5.321469871E-005,
  1079.     -5.239612074E-005,
  1080.     -5.139957648E-005,
  1081.     +5.024627535E-005,
  1082.     +4.895655002E-005,
  1083.     +4.754976908E-005,
  1084.     +4.604430433E-005,
  1085.     +4.445751256E-005,
  1086.     +4.280570283E-005,
  1087.     +4.110412556E-005,
  1088.     +3.936696885E-005,
  1089.     +3.760734762E-005,
  1090.     +3.583733633E-005,
  1091.     +3.406793985E-005,
  1092.     +3.230916263E-005,
  1093.     +3.056998685E-005,
  1094.     +2.885844333E-005,
  1095.     +2.718161704E-005,
  1096.     +2.554569073E-005,
  1097.     +2.395598858E-005,
  1098.     +2.241701623E-005,
  1099.     +2.093250441E-005,
  1100.     +1.950545993E-005,
  1101.     +1.813820381E-005,
  1102.     +1.683242772E-005,
  1103.     +1.558924305E-005,
  1104.     +1.440921824E-005,
  1105.     +1.329243969E-005,
  1106.     +1.223855270E-005,
  1107.     +1.124680875E-005,
  1108.     +1.031611009E-005,
  1109.     +9.445050637E-006,
  1110.     +8.631964192E-006,
  1111.     +7.874960829E-006,
  1112.     +7.171964626E-006,
  1113.     +6.520755960E-006,
  1114.     +5.918994248E-006,
  1115.     +5.364252502E-006,
  1116.     +4.854050530E-006,
  1117.     +4.385879038E-006,
  1118.     +3.957220997E-006,
  1119.     +3.565570978E-006,
  1120.     +3.208459020E-006,
  1121.     +2.883470643E-006,
  1122.     +2.588257530E-006,
  1123.     +2.320550948E-006,
  1124.     +2.078171747E-006,
  1125.     +1.859034001E-006,
  1126.     +1.661159786E-006,
  1127.     +1.482681114E-006,
  1128.     +1.321840614E-006,
  1129.     +1.176999604E-006,
  1130.     +1.046637067E-006,
  1131.     +9.293416952E-007,
  1132.     +8.238164355E-007,
  1133.     +7.288739425E-007,
  1134.     +6.434325428E-007,
  1135.     +5.665120852E-007,
  1136.     +4.972276315E-007,
  1137.     +4.347855338E-007,
  1138.     +3.784752209E-007,
  1139.     +3.276689142E-007,
  1140.     +2.818143514E-007,
  1141.     +2.404238444E-007,
  1142.     +2.030677564E-007,
  1143.     +1.693738625E-007,
  1144.     +1.390191784E-007
  1145. };
  1146.  
  1147. /* pre-scale lfe fir coefficients
  1148.  *
  1149.  * Permuted compared to table D.8 in the spec. First, the table in the
  1150.  * spec has twice the number of coefficients, but they are reflected,
  1151.  * T[i] = T[511 - i]. Furthermore, the indices are permuted, so that
  1152.  *
  1153.  *   lfe_fir_64[8 * k + j] = T[64 * j + k]
  1154.  *
  1155.  * for 0 <= k < 32 and 0 <= j < 8. (This corresponds to adding a
  1156.  * leading zero to the 8-bit index, and rotating it right by 3 bits
  1157.  * as a 9-bit field). Values with j >= 4 can be reflected, as
  1158.  *
  1159.  *   lfe_fir_64[8 * k + j] = T[64 * (7 - j) + (63 - k)]
  1160.  *
  1161.  * so all values in T get included. */
  1162. #define SCALE(c) ((c) / (256.0f * 32768.0f))
  1163. DECLARE_ALIGNED(16, const float, ff_dca_lfe_fir_64)[256] = {
  1164.     SCALE(2.658434386830777e-4), SCALE(9.029330685734748e-3),
  1165.     SCALE(7.939263433218002e-2), SCALE(2.425158768892288e-1),
  1166.     SCALE(3.430179357528686e-1), SCALE(2.398228943347931e-1),
  1167.     SCALE(7.746443897485733e-2), SCALE(8.622321300208569e-3),
  1168.     SCALE(8.179365249816328e-5), SCALE(9.450953453779220e-3),
  1169.     SCALE(8.134882897138596e-2), SCALE(2.451938837766648e-1),
  1170.     SCALE(3.429597318172455e-1), SCALE(2.371159791946411e-1),
  1171.     SCALE(7.556436210870743e-2), SCALE(8.229630999267101e-3),
  1172.     SCALE(9.439323912374676e-5), SCALE(9.887560270726680e-3),
  1173.     SCALE(8.333285897970200e-2), SCALE(2.478559017181396e-1),
  1174.     SCALE(3.428434133529663e-1), SCALE(2.343961596488952e-1),
  1175.     SCALE(7.369252294301987e-2), SCALE(7.850865833461285e-3),
  1176.     SCALE(1.082170274457894e-4), SCALE(1.033949479460716e-2),
  1177.     SCALE(8.534456789493561e-2), SCALE(2.505008876323700e-1),
  1178.     SCALE(3.426689505577088e-1), SCALE(2.316644787788391e-1),
  1179.     SCALE(7.184901088476181e-2), SCALE(7.485736627131701e-3),
  1180.     SCALE(1.233371440321207e-4), SCALE(1.080708485096693e-2),
  1181.     SCALE(8.738376945257187e-2), SCALE(2.531278133392334e-1),
  1182.     SCALE(3.424364924430847e-1), SCALE(2.289219647645950e-1),
  1183.     SCALE(7.003392279148102e-2), SCALE(7.133882027119398e-3),
  1184.     SCALE(1.397485757479444e-4), SCALE(1.129068247973919e-2),
  1185.     SCALE(8.945026248693466e-2), SCALE(2.557355761528015e-1),
  1186.     SCALE(3.421461284160614e-1), SCALE(2.261696159839630e-1),
  1187.     SCALE(6.824731826782227e-2), SCALE(6.794991903007030e-3),
  1188.     SCALE(1.575958012836054e-4), SCALE(1.179065089672804e-2),
  1189.     SCALE(9.154383838176728e-2), SCALE(2.583232223987580e-1),
  1190.     SCALE(3.417979776859284e-1), SCALE(2.234084606170654e-1),
  1191.     SCALE(6.648923456668854e-2), SCALE(6.468691397458315e-3),
  1192.     SCALE(1.769922382663936e-4), SCALE(1.230732165277004e-2),
  1193.     SCALE(9.366425126791000e-2), SCALE(2.608896791934967e-1),
  1194.     SCALE(3.413922190666198e-1), SCALE(2.206395119428635e-1),
  1195.     SCALE(6.475970894098282e-2), SCALE(6.154712289571762e-3),
  1196.     SCALE(1.981738605536520e-4), SCALE(1.284105982631445e-2),
  1197.     SCALE(9.581124037504196e-2), SCALE(2.634339034557342e-1),
  1198.     SCALE(3.409290313720703e-1), SCALE(2.178637981414795e-1),
  1199.     SCALE(6.305878609418869e-2), SCALE(5.852684378623962e-3),
  1200.     SCALE(2.211847313446924e-4), SCALE(1.339218579232693e-2),
  1201.     SCALE(9.798453748226166e-2), SCALE(2.659549415111542e-1),
  1202.     SCALE(3.404086530208588e-1), SCALE(2.150822728872299e-1),
  1203.     SCALE(6.138643622398376e-2), SCALE(5.562345497310162e-3),
  1204.     SCALE(2.460231189616024e-4), SCALE(1.396108977496624e-2),
  1205.     SCALE(1.001838669180870e-1), SCALE(2.684516608715058e-1),
  1206.     SCALE(3.398312926292420e-1), SCALE(2.122959494590759e-1),
  1207.     SCALE(5.974265560507774e-2), SCALE(5.283284001052380e-3),
  1208.     SCALE(2.726115926634520e-4), SCALE(1.454808749258518e-2),
  1209.     SCALE(1.024089083075523e-1), SCALE(2.709231376647949e-1),
  1210.     SCALE(3.391972482204438e-1), SCALE(2.095058411359787e-1),
  1211.     SCALE(5.812742188572884e-2), SCALE(5.015311297029257e-3),
  1212.     SCALE(3.013863170053810e-4), SCALE(1.515355054289102e-2),
  1213.     SCALE(1.046593263745308e-1), SCALE(2.733682692050934e-1),
  1214.     SCALE(3.385068178176880e-1), SCALE(2.067128717899322e-1),
  1215.     SCALE(5.654069408774376e-2), SCALE(4.758012015372515e-3),
  1216.     SCALE(3.328395541757345e-4), SCALE(1.577781140804291e-2),
  1217.     SCALE(1.069347932934761e-1), SCALE(2.757860720157624e-1),
  1218.     SCALE(3.377602994441986e-1), SCALE(2.039180546998978e-1),
  1219.     SCALE(5.498242005705833e-2), SCALE(4.511159844696522e-3),
  1220.     SCALE(3.658991190604866e-4), SCALE(1.642123050987720e-2),
  1221.     SCALE(1.092349365353584e-1), SCALE(2.781755328178406e-1),
  1222.     SCALE(3.369580209255218e-1), SCALE(2.011223286390304e-1),
  1223.     SCALE(5.345252528786659e-2), SCALE(4.274417180567980e-3),
  1224.     SCALE(4.018281470052898e-4), SCALE(1.708412915468216e-2),
  1225.     SCALE(1.115593686699867e-1), SCALE(2.805356979370117e-1),
  1226.     SCALE(3.361004292964936e-1), SCALE(1.983266174793244e-1),
  1227.     SCALE(5.195093154907227e-2), SCALE(4.047499038279056e-3),
  1228.     SCALE(4.401875485200435e-4), SCALE(1.776690222322941e-2),
  1229.     SCALE(1.139076948165894e-1), SCALE(2.828655838966370e-1),
  1230.     SCALE(3.351879119873047e-1), SCALE(1.955319195985794e-1),
  1231.     SCALE(5.047753453254700e-2), SCALE(3.830091329291463e-3),
  1232.     SCALE(4.812776169274002e-4), SCALE(1.846982724964619e-2),
  1233.     SCALE(1.162794977426529e-1), SCALE(2.851640880107880e-1),
  1234.     SCALE(3.342207968235016e-1), SCALE(1.927391141653061e-1),
  1235.     SCALE(4.903224110603333e-2), SCALE(3.621967276558280e-3),
  1236.     SCALE(5.252459668554366e-4), SCALE(1.919330470263958e-2),
  1237.     SCALE(1.186743453145027e-1), SCALE(2.874303460121155e-1),
  1238.     SCALE(3.331996202468872e-1), SCALE(1.899491697549820e-1),
  1239.     SCALE(4.761491715908051e-2), SCALE(3.422776935622096e-3),
  1240.     SCALE(5.721592460758984e-4), SCALE(1.993762329220772e-2),
  1241.     SCALE(1.210917681455612e-1), SCALE(2.896633744239807e-1),
  1242.     SCALE(3.321248590946198e-1), SCALE(1.871629506349564e-1),
  1243.     SCALE(4.622544348239899e-2), SCALE(3.232272574678064e-3),
  1244.     SCALE(6.222130032256246e-4), SCALE(2.070316113531590e-2),
  1245.     SCALE(1.235313042998314e-1), SCALE(2.918621897697448e-1),
  1246.     SCALE(3.309969604015350e-1), SCALE(1.843813359737396e-1),
  1247.     SCALE(4.486365616321564e-2), SCALE(3.050152910873294e-3),
  1248.     SCALE(6.755515350960195e-4), SCALE(2.149021252989769e-2),
  1249.     SCALE(1.259924471378326e-1), SCALE(2.940258979797364e-1),
  1250.     SCALE(3.298164308071136e-1), SCALE(1.816052496433258e-1),
  1251.     SCALE(4.352942481637001e-2), SCALE(2.876190468668938e-3),
  1252.     SCALE(7.324148900806904e-4), SCALE(2.229913882911205e-2),
  1253.     SCALE(1.284746825695038e-1), SCALE(2.961534857749939e-1),
  1254.     SCALE(3.285838961601258e-1), SCALE(1.788355410099030e-1),
  1255.     SCALE(4.222255200147629e-2), SCALE(2.710093278437853e-3),
  1256.     SCALE(7.928516715764999e-4), SCALE(2.313023805618286e-2),
  1257.     SCALE(1.309774816036224e-1), SCALE(2.982441186904907e-1),
  1258.     SCALE(3.272998929023742e-1), SCALE(1.760730892419815e-1),
  1259.     SCALE(4.094288870692253e-2), SCALE(2.551567042246461e-3),
  1260.     SCALE(8.570110658183694e-4), SCALE(2.398385666310787e-2),
  1261.     SCALE(1.335003077983856e-1), SCALE(3.002967536449432e-1),
  1262.     SCALE(3.259649574756622e-1), SCALE(1.733186990022659e-1),
  1263.     SCALE(3.969023004174232e-2), SCALE(2.400433411821723e-3),
  1264.     SCALE(9.251192095689476e-4), SCALE(2.486028522253036e-2),
  1265.     SCALE(1.360425949096680e-1), SCALE(3.023106753826142e-1),
  1266.     SCALE(3.245797157287598e-1), SCALE(1.705732345581055e-1),
  1267.     SCALE(3.846437484025955e-2), SCALE(2.256359672173858e-3),
  1268.     SCALE(9.974770946428180e-4), SCALE(2.575986087322235e-2),
  1269.     SCALE(1.386037617921829e-1), SCALE(3.042849004268646e-1),
  1270.     SCALE(3.231448531150818e-1), SCALE(1.678375005722046e-1),
  1271.     SCALE(3.726511076092720e-2), SCALE(2.119151875376701e-3),
  1272.     SCALE(1.073930296115577e-3), SCALE(2.668286114931106e-2),
  1273.     SCALE(1.411831974983215e-1), SCALE(3.062185347080230e-1),
  1274.     SCALE(3.216609656810760e-1), SCALE(1.651122719049454e-1),
  1275.     SCALE(3.609224036335945e-2), SCALE(1.988604199141264e-3),
  1276.     SCALE(1.155023579485714e-3), SCALE(2.762960828840732e-2),
  1277.     SCALE(1.437802612781525e-1), SCALE(3.081108033657074e-1),
  1278.     SCALE(3.201287388801574e-1), SCALE(1.623983532190323e-1),
  1279.     SCALE(3.494550660252571e-2), SCALE(1.864377525635064e-3),
  1280.     SCALE(1.240676851011813e-3), SCALE(2.860039286315441e-2),
  1281.     SCALE(1.463943719863892e-1), SCALE(3.099608123302460e-1),
  1282.     SCALE(3.185488879680634e-1), SCALE(1.596965193748474e-1),
  1283.     SCALE(3.382468968629837e-2), SCALE(1.746327499859035e-3),
  1284.     SCALE(1.331258914433420e-3), SCALE(2.959549613296986e-2),
  1285.     SCALE(1.490248143672943e-1), SCALE(3.117676973342896e-1),
  1286.     SCALE(3.169221282005310e-1), SCALE(1.570075154304504e-1),
  1287.     SCALE(3.272953629493714e-2), SCALE(1.634211512282491e-3),
  1288.     SCALE(1.426893868483603e-3), SCALE(3.061520494520664e-2),
  1289.     SCALE(1.516709625720978e-1), SCALE(3.135308027267456e-1),
  1290.     SCALE(3.152491748332978e-1), SCALE(1.543320864439010e-1),
  1291.     SCALE(3.165979683399200e-2), SCALE(1.527829794213176e-3),
  1292. };
  1293.  
  1294. /* Permuted compared to table D.8 in the spec. First, the table in the
  1295.  * spec has twice the number of coefficients, but they are reflected,
  1296.  * T[i] = T[511 - i]. Furthermore, the indices are permuted, so that
  1297.  *
  1298.  *   lfe_fir_128[4 * k + j] = T[128 * j + k]
  1299.  *
  1300.  * for 0 <= k < 64 and 0 <= j < 4. Values with j >= 2 can be
  1301.  * reflected, as
  1302.  *
  1303.  *   lfe_fir_128[4 * k + j] = T[128 * (3 - j) + (127 - k)]
  1304.  *
  1305.  * so all values in T get included. */
  1306. DECLARE_ALIGNED(16, const float, ff_dca_lfe_fir_128)[256] = {
  1307.     SCALE(0.00053168571), SCALE(0.15878495574), SCALE(0.68603444099), SCALE(0.15492856503),
  1308.     SCALE(0.00016358691), SCALE(0.16269733012), SCALE(0.68591803312), SCALE(0.15112841129),
  1309.     SCALE(0.00018878609), SCALE(0.16666537523), SCALE(0.68568539619), SCALE(0.14738474786),
  1310.     SCALE(0.00021643363), SCALE(0.17068879306), SCALE(0.68533653021), SCALE(0.14369773865),
  1311.     SCALE(0.00024667382), SCALE(0.17476719618), SCALE(0.68487155437), SCALE(0.14006754756),
  1312.     SCALE(0.00027949660), SCALE(0.17890018225), SCALE(0.68429082632), SCALE(0.13649433851),
  1313.     SCALE(0.00031519096), SCALE(0.18308731914), SCALE(0.68359452486), SCALE(0.13297818601),
  1314.     SCALE(0.00035398375), SCALE(0.18732811511), SCALE(0.68278300762), SCALE(0.12951917946),
  1315.     SCALE(0.00039634691), SCALE(0.19162209332), SCALE(0.68185669184), SCALE(0.12611730397),
  1316.     SCALE(0.00044236859), SCALE(0.19596865773), SCALE(0.68081587553), SCALE(0.12277261168),
  1317.     SCALE(0.00049204525), SCALE(0.20036731660), SCALE(0.67966115475), SCALE(0.11948505789),
  1318.     SCALE(0.00054522208), SCALE(0.20481738448), SCALE(0.67839306593), SCALE(0.11625462025),
  1319.     SCALE(0.00060277141), SCALE(0.20931822062), SCALE(0.67701220512), SCALE(0.11308115721),
  1320.     SCALE(0.00066567765), SCALE(0.21386915445), SCALE(0.67551922798), SCALE(0.10996460915),
  1321.     SCALE(0.00073179678), SCALE(0.21846942604), SCALE(0.67391467094), SCALE(0.10690483451),
  1322.     SCALE(0.00080365466), SCALE(0.22311829031), SCALE(0.67219948769), SCALE(0.10390164703),
  1323.     SCALE(0.00088037323), SCALE(0.22781492770), SCALE(0.67037439346), SCALE(0.10095486045),
  1324.     SCALE(0.00096255314), SCALE(0.23255851865), SCALE(0.66844022274), SCALE(0.09806428105),
  1325.     SCALE(0.00105048984), SCALE(0.23734821379), SCALE(0.66639786959), SCALE(0.09522963315),
  1326.     SCALE(0.00114431616), SCALE(0.24218304455), SCALE(0.66424828768), SCALE(0.09245070815),
  1327.     SCALE(0.00124442333), SCALE(0.24706205726), SCALE(0.66199249029), SCALE(0.08972713351),
  1328.     SCALE(0.00135110028), SCALE(0.25198432803), SCALE(0.65963155031), SCALE(0.08705867827),
  1329.     SCALE(0.00146482687), SCALE(0.25694879889), SCALE(0.65716648102), SCALE(0.08444493264),
  1330.     SCALE(0.00158570008), SCALE(0.26195442677), SCALE(0.65459835529), SCALE(0.08188561350),
  1331.     SCALE(0.00171401864), SCALE(0.26700007915), SCALE(0.65192854404), SCALE(0.07938029617),
  1332.     SCALE(0.00185023469), SCALE(0.27208462358), SCALE(0.64915806055), SCALE(0.07692859322),
  1333.     SCALE(0.00199495023), SCALE(0.27720692754), SCALE(0.64628833532), SCALE(0.07453006506),
  1334.     SCALE(0.00214785640), SCALE(0.28236576915), SCALE(0.64332056046), SCALE(0.07218432426),
  1335.     SCALE(0.00231004250), SCALE(0.28755992651), SCALE(0.64025616646), SCALE(0.06989086419),
  1336.     SCALE(0.00248134881), SCALE(0.29278811812), SCALE(0.63709646463), SCALE(0.06764923781),
  1337.     SCALE(0.00266251224), SCALE(0.29804900289), SCALE(0.63384294510), SCALE(0.06545893103),
  1338.     SCALE(0.00285378192), SCALE(0.30334126949), SCALE(0.63049703836), SCALE(0.06331945211),
  1339.     SCALE(0.00305565330), SCALE(0.30866351724), SCALE(0.62706029415), SCALE(0.06123027951),
  1340.     SCALE(0.00326841651), SCALE(0.31401440501), SCALE(0.62353414297), SCALE(0.05919086933),
  1341.     SCALE(0.00349264755), SCALE(0.31939238310), SCALE(0.61992025375), SCALE(0.05720067024),
  1342.     SCALE(0.00372874714), SCALE(0.32479602098), SCALE(0.61622029543), SCALE(0.05525910854),
  1343.     SCALE(0.00397720048), SCALE(0.33022382855), SCALE(0.61243581772), SCALE(0.05336561054),
  1344.     SCALE(0.00423829490), SCALE(0.33567428589), SCALE(0.60856848955), SCALE(0.05151961371),
  1345.     SCALE(0.00451271003), SCALE(0.34114575386), SCALE(0.60462015867), SCALE(0.04972046614),
  1346.     SCALE(0.00480085658), SCALE(0.34663668275), SCALE(0.60059231520), SCALE(0.04796761274),
  1347.     SCALE(0.00510312291), SCALE(0.35214546323), SCALE(0.59648692608), SCALE(0.04626038298),
  1348.     SCALE(0.00542017492), SCALE(0.35767036676), SCALE(0.59230577946), SCALE(0.04459818453),
  1349.     SCALE(0.00575236930), SCALE(0.36320972443), SCALE(0.58805054426), SCALE(0.04298033938),
  1350.     SCALE(0.00610029325), SCALE(0.36876192689), SCALE(0.58372318745), SCALE(0.04140623659),
  1351.     SCALE(0.00646453211), SCALE(0.37432509661), SCALE(0.57932555676), SCALE(0.03987516090),
  1352.     SCALE(0.00684553990), SCALE(0.37989753485), SCALE(0.57485944033), SCALE(0.03838652745),
  1353.     SCALE(0.00724391919), SCALE(0.38547745347), SCALE(0.57032698393), SCALE(0.03693958372),
  1354.     SCALE(0.00766016589), SCALE(0.39106300473), SCALE(0.56572991610), SCALE(0.03553372994),
  1355.     SCALE(0.00809498038), SCALE(0.39665243030), SCALE(0.56107026339), SCALE(0.03416819125),
  1356.     SCALE(0.00854881573), SCALE(0.40224379301), SCALE(0.55634999275), SCALE(0.03284239396),
  1357.     SCALE(0.00902230106), SCALE(0.40783521533), SCALE(0.55157101154), SCALE(0.03155555204),
  1358.     SCALE(0.00951600447), SCALE(0.41342487931), SCALE(0.54673534632), SCALE(0.03030703776),
  1359.     SCALE(0.01003060210), SCALE(0.41901078820), SCALE(0.54184508324), SCALE(0.02909611352),
  1360.     SCALE(0.01056654565), SCALE(0.42459106445), SCALE(0.53690224886), SCALE(0.02792212367),
  1361.     SCALE(0.01112466771), SCALE(0.43016362190), SCALE(0.53190881014), SCALE(0.02678431384),
  1362.     SCALE(0.01170534454), SCALE(0.43572667241), SCALE(0.52686679363), SCALE(0.02568206564),
  1363.     SCALE(0.01230939943), SCALE(0.44127810001), SCALE(0.52177828550), SCALE(0.02461459488),
  1364.     SCALE(0.01293735672), SCALE(0.44681602716), SCALE(0.51664537191), SCALE(0.02358125709),
  1365.     SCALE(0.01358995494), SCALE(0.45233830810), SCALE(0.51147013903), SCALE(0.02258131653),
  1366.     SCALE(0.01426773332), SCALE(0.45784294605), SCALE(0.50625455379), SCALE(0.02161412500),
  1367.     SCALE(0.01497144438), SCALE(0.46332800388), SCALE(0.50100076199), SCALE(0.02067894675),
  1368.     SCALE(0.01570170000), SCALE(0.46879136562), SCALE(0.49571081996), SCALE(0.01977507770),
  1369.     SCALE(0.01645922661), SCALE(0.47423094511), SCALE(0.49038675427), SCALE(0.01890186779),
  1370.     SCALE(0.01724460535), SCALE(0.47964480519), SCALE(0.48503074050), SCALE(0.01805862412),
  1371. };
  1372. #undef SCALE
  1373.  
  1374.  
  1375. #define SCALE(c) ((float)(c) / (256.0f * 32768.0f * 8388608.0f))
  1376. DECLARE_ALIGNED(16, const float, ff_dca_lfe_xll_fir_64)[256] = {
  1377.     SCALE(   6103), SCALE(  52170), SCALE(-558064), SCALE(1592440),
  1378.     SCALE(6290049), SCALE(1502534), SCALE(-546669), SCALE(  53047),
  1379.     SCALE(   1930), SCALE(  51089), SCALE(-568920), SCALE(1683709),
  1380.     SCALE(6286575), SCALE(1414057), SCALE(-534782), SCALE(  53729),
  1381.     SCALE(   2228), SCALE(  49794), SCALE(-579194), SCALE(1776276),
  1382.     SCALE(6279634), SCALE(1327070), SCALE(-522445), SCALE(  54228),
  1383.     SCALE(   2552), SCALE(  48275), SCALE(-588839), SCALE(1870070),
  1384.     SCALE(6269231), SCALE(1241632), SCALE(-509702), SCALE(  54550),
  1385.     SCALE(   2904), SCALE(  46523), SCALE(-597808), SCALE(1965017),
  1386.     SCALE(6255380), SCALE(1157798), SCALE(-496595), SCALE(  54708),
  1387.     SCALE(   3287), SCALE(  44529), SCALE(-606054), SCALE(2061044),
  1388.     SCALE(6238099), SCALE(1075621), SCALE(-483164), SCALE(  54710),
  1389.     SCALE(   3704), SCALE(  42282), SCALE(-613529), SCALE(2158071),
  1390.     SCALE(6217408), SCALE( 995149), SCALE(-469451), SCALE(  54566),
  1391.     SCALE(   4152), SCALE(  39774), SCALE(-620186), SCALE(2256019),
  1392.     SCALE(6193332), SCALE( 916430), SCALE(-455494), SCALE(  54285),
  1393.     SCALE(   4631), SCALE(  36995), SCALE(-625976), SCALE(2354805),
  1394.     SCALE(6165900), SCALE( 839507), SCALE(-441330), SCALE(  53876),
  1395.     SCALE(   5139), SCALE(  33937), SCALE(-630850), SCALE(2454343),
  1396.     SCALE(6135146), SCALE( 764419), SCALE(-426998), SCALE(  53348),
  1397.     SCALE(   5682), SCALE(  30591), SCALE(-634759), SCALE(2554547),
  1398.     SCALE(6101107), SCALE( 691203), SCALE(-412531), SCALE(  52711),
  1399.     SCALE(   6264), SCALE(  26948), SCALE(-637655), SCALE(2655326),
  1400.     SCALE(6063824), SCALE( 619894), SCALE(-397966), SCALE(  51972),
  1401.     SCALE(   6886), SCALE(  23001), SCALE(-639488), SCALE(2756591),
  1402.     SCALE(6023343), SCALE( 550521), SCALE(-383335), SCALE(  51140),
  1403.     SCALE(   7531), SCALE(  18741), SCALE(-640210), SCALE(2858248),
  1404.     SCALE(5979711), SCALE( 483113), SCALE(-368671), SCALE(  50224),
  1405.     SCALE(   8230), SCALE(  14162), SCALE(-639772), SCALE(2960201),
  1406.     SCALE(5932981), SCALE( 417692), SCALE(-354003), SCALE(  49231),
  1407.     SCALE(   8959), SCALE(   9257), SCALE(-638125), SCALE(3062355),
  1408.     SCALE(5883210), SCALE( 354281), SCALE(-339362), SCALE(  48168),
  1409.     SCALE(   9727), SCALE(   4018), SCALE(-635222), SCALE(3164612),
  1410.     SCALE(5830457), SCALE( 292897), SCALE(-324777), SCALE(  47044),
  1411.     SCALE(  10535), SCALE(  -1558), SCALE(-631014), SCALE(3266872),
  1412.     SCALE(5774785), SCALE( 233555), SCALE(-310273), SCALE(  45866),
  1413.     SCALE(  11381), SCALE(  -7480), SCALE(-625455), SCALE(3369035),
  1414.     SCALE(5716260), SCALE( 176267), SCALE(-295877), SCALE(  44640),
  1415.     SCALE(  12267), SCALE( -13750), SCALE(-618499), SCALE(3471000),
  1416.     SCALE(5654952), SCALE( 121042), SCALE(-281613), SCALE(  43373),
  1417.     SCALE(  13190), SCALE( -20372), SCALE(-610098), SCALE(3572664),
  1418.     SCALE(5590933), SCALE(  67886), SCALE(-267505), SCALE(  42072),
  1419.     SCALE(  14152), SCALE( -27352), SCALE(-600209), SCALE(3673924),
  1420.     SCALE(5524280), SCALE(  16800), SCALE(-253574), SCALE(  40743),
  1421.     SCALE(  15153), SCALE( -34691), SCALE(-588788), SCALE(3774676),
  1422.     SCALE(5455069), SCALE( -32214), SCALE(-239840), SCALE(  39391),
  1423.     SCALE(  16192), SCALE( -42390), SCALE(-575791), SCALE(3874816),
  1424.     SCALE(5383383), SCALE( -79159), SCALE(-226323), SCALE(  38022),
  1425.     SCALE(  17267), SCALE( -50453), SCALE(-561178), SCALE(3974239),
  1426.     SCALE(5309305), SCALE(-124041), SCALE(-213041), SCALE(  36642),
  1427.     SCALE(  18377), SCALE( -58879), SCALE(-544906), SCALE(4072841),
  1428.     SCALE(5232922), SCALE(-166869), SCALE(-200010), SCALE(  35256),
  1429.     SCALE(  19525), SCALE( -67667), SCALE(-526937), SCALE(4170517),
  1430.     SCALE(5154321), SCALE(-207653), SCALE(-187246), SCALE(  33866),
  1431.     SCALE(  20704), SCALE( -76817), SCALE(-507233), SCALE(4267162),
  1432.     SCALE(5073593), SCALE(-246406), SCALE(-174764), SCALE(  32480),
  1433.     SCALE(  21915), SCALE( -86327), SCALE(-485757), SCALE(4362672),
  1434.     SCALE(4990831), SCALE(-283146), SCALE(-162575), SCALE(  31101),
  1435.     SCALE(  23157), SCALE( -96193), SCALE(-462476), SCALE(4456942),
  1436.     SCALE(4906129), SCALE(-317890), SCALE(-150692), SCALE(  29732),
  1437.     SCALE(  24426), SCALE(-106412), SCALE(-437356), SCALE(4549871),
  1438.     SCALE(4819584), SCALE(-350658), SCALE(-139125), SCALE(  28376),
  1439.     SCALE(  25721), SCALE(-116977), SCALE(-410365), SCALE(4641355),
  1440.     SCALE(4731293), SCALE(-381475), SCALE(-127884), SCALE(  27038),
  1441. };
  1442. #undef SCALE
  1443.  
  1444. DECLARE_ALIGNED(16, const float, ff_dca_fir_64bands)[1024] = {
  1445.     /* Bank 0 */
  1446.     -7.1279389866041690e-8, -7.0950903150874990e-8,
  1447.     -7.9525034321375090e-8, -8.9326871281374790e-8,
  1448.     -9.7483190494874640e-8, -1.0586659510721950e-7,
  1449.     -1.1527363411865760e-7, -1.2523109645615350e-7,
  1450.     -1.3555636137971380e-7, -1.4640931821191640e-7,
  1451.     -1.5787424998123710e-7, -1.6994592926571220e-7,
  1452.     -1.8264184311018150e-7, -1.9600594587757850e-7,
  1453.     -2.1007899706006800e-7, -2.2489759047553620e-7,
  1454.     -2.4050245877923400e-7, -2.5693874615777660e-7,
  1455.     -2.7425370308549580e-7, -2.9249662541757600e-7,
  1456.     -3.1171981968268900e-7, -3.3197864040473180e-7,
  1457.     -3.5333134588843600e-7, -3.7583910465412180e-7,
  1458.     -3.9956628121669190e-7, -4.2458045296159330e-7,
  1459.     -4.5095249563698380e-7, -4.7875659112606760e-7,
  1460.     -5.0807031294631050e-7, -5.3897464223335550e-7,
  1461.     -5.7155423388793000e-7, -6.0589741192019800e-7,
  1462.     -6.4209580087853050e-7, -6.8024432849991400e-7,
  1463.     -7.2044165259013450e-7, -7.6279018172077200e-7,
  1464.     -8.0739610368280600e-7, -8.5436937020293650e-7,
  1465.     -9.0382333224895500e-7, -9.5587472540498280e-7,
  1466.     -1.0106437128213760e-6, -1.0682538906146330e-6,
  1467.     -1.1288323637155430e-6, -1.1925097184646100e-6,
  1468.     -1.2594193438633260e-6, -1.3296974052300520e-6,
  1469.     -1.4034829433780260e-6, -1.4809178634979940e-6,
  1470.     -1.5621465913980060e-6, -1.6473160377545360e-6,
  1471.     -1.7365751553971340e-6, -1.8300749104526120e-6,
  1472.     -1.9279680902322050e-6, -2.0304092660990760e-6,
  1473.     -2.1375541686662320e-6, -2.2495596253776460e-6,
  1474.     -2.3665828120950560e-6, -2.4887811970856540e-6,
  1475.     -2.6163120571644820e-6, -2.7493324266391140e-6,
  1476.     -2.8879984579501380e-6, -3.0324653639203880e-6,
  1477.     -3.1828867865974640e-6, -3.3394147240855820e-6,
  1478.     -3.5021985520037540e-6, -3.6713849262294680e-6,
  1479.     -3.8471166218015830e-6, -4.0295324657699800e-6,
  1480.     -4.2187670209852250e-6, -4.4149505043312320e-6,
  1481.     -4.6182073040543900e-6, -4.8286558658894680e-6,
  1482.     -5.0464076705003400e-6, -5.2715671455405850e-6,
  1483.     -5.5042307535458100e-6, -5.7444868785028750e-6,
  1484.     -5.9924142424804800e-6, -6.2480817863072800e-6,
  1485.     -6.5115476278604000e-6, -6.7828589565804950e-6,
  1486.     -7.0620507545154100e-6, -7.3491456697144900e-6,
  1487.     -7.6441525098592000e-6, -7.9470661364365490e-6,
  1488.     -8.2578666429227760e-6, -8.5765192154768100e-6,
  1489.     -8.9029718900122000e-6, -9.2371554195468400e-6,
  1490.     -9.5789825988253100e-6, -9.9283481667264540e-6,
  1491.     -1.0285127334608450e-5, -1.0649175634328590e-5,
  1492.     -1.1020327046334650e-5, -1.1398393880881060e-5,
  1493.     -1.1783166036693560e-5, -1.2174410889256530e-5,
  1494.     -1.2571871574469220e-5, -1.2975266858030310e-5,
  1495.     -1.3384289978242060e-5, -1.3798608540965960e-5,
  1496.     -1.4217863365843780e-5, -1.4641668383496450e-5,
  1497.     -1.5069609527679710e-5, -1.5501244597782600e-5,
  1498.     -1.5936101341640500e-5, -1.6373677426466900e-5,
  1499.     -1.6813441716539560e-5, -1.7254834143068570e-5,
  1500.     -1.7697261563607500e-5, -1.8140097714618200e-5,
  1501.     -1.8582686308483550e-5, -1.9024340970099240e-5,
  1502.     -1.9464340744880170e-5, -1.9901930030141080e-5,
  1503.     -2.0336321557464510e-5, -2.0766696417773940e-5,
  1504.     -2.1192201630574280e-5, -2.1611950084231910e-5,
  1505.     -2.2025021652894630e-5, -2.2430463239517170e-5,
  1506.     -2.2827288605503470e-5, -2.3214478371918170e-5,
  1507.     -2.3590980216497750e-5, -2.3955708939763280e-5,
  1508.     -2.4307547722489910e-5, -2.4645348200903720e-5,
  1509.     -2.4967930863542620e-5, -2.5274085082324960e-5,
  1510.     /* Bank 1 */
  1511.      2.5562569399199020e-5,  2.5832111724562040e-5,
  1512.      2.6081413415833200e-5,  2.6309149390520640e-5,
  1513.      2.6513966535124460e-5,  2.6694483850464800e-5,
  1514.      2.6849297239997120e-5,  2.6976979753245170e-5,
  1515.      2.7076082153012070e-5,  2.7145133103663890e-5,
  1516.      2.7182642746157720e-5,  2.7187102980536760e-5,
  1517.      2.7156990105794550e-5,  2.7090765064735940e-5,
  1518.      2.6986876191054700e-5,  2.6843759539035120e-5,
  1519.      2.6659843389908530e-5,  2.6433548592482960e-5,
  1520.      2.6163291550639320e-5,  2.5847484577439320e-5,
  1521.      2.5484540698002960e-5,  2.5072874052447260e-5,
  1522.      2.4610903957661350e-5,  2.4097055300584120e-5,
  1523.      2.3529763128539150e-5,  2.2907473117403740e-5,
  1524.      2.2228647280994560e-5,  2.1491764461832140e-5,
  1525.      2.0695325418576370e-5,  1.9837853265502040e-5,
  1526.     /* NOTE: The spec has a duplicated row "160 | 1.7934037335534700e-5" ! */
  1527.      1.8917898053528080e-5,  1.7934037335534700e-5,
  1528.      1.6884884022311310e-5,  1.5769086921577900e-5,
  1529.      1.4585334740507920e-5,  1.3332356590263080e-5,
  1530.      1.2008929083235120e-5,  1.0613876973541650e-5,
  1531.      9.1460801506922300e-6,  7.6044740757265500e-6,
  1532.      5.9880523825897000e-6,  4.2958677847708840e-6,
  1533.      2.5270494199802070e-6,  6.8080315386959900e-7,
  1534.     -1.2435990827839660e-6, -3.2468187066945930e-6,
  1535.     -5.3294268968052800e-6, -7.4919036559427900e-6,
  1536.     -9.7346407524871100e-6, -1.2057941408635810e-5,
  1537.     -1.4462010500550970e-5, -1.6946953848107710e-5,
  1538.     -1.9512772389215240e-5, -2.2159361597292710e-5,
  1539.     -2.4886504491416160e-5, -2.7693871041862060e-5,
  1540.     -3.0581012081916960e-5, -3.3547358765259040e-5,
  1541.     -3.6592216716540970e-5, -3.9714765485539260e-5,
  1542.     -4.2914052387856640e-5, -4.6188991961724560e-5,
  1543.     -4.9538360176954340e-5, -5.2960794000140600e-5,
  1544.     -5.6454787620185350e-5, -6.0018691972791050e-5,
  1545.     -6.3650708053788550e-5, -6.7348886525882700e-5,
  1546.     -7.1111125753722860e-5, -7.4935171411178040e-5,
  1547.     -7.8818609806320000e-5, -8.2758867628623800e-5,
  1548.     -8.6753213062403400e-5, -9.0798755482139240e-5,
  1549.     -9.4892437636254000e-5, -9.9031035415475500e-5,
  1550.     -1.0321116057304920e-4, -1.0742926070674010e-4,
  1551.     -1.1168161614264270e-4, -1.1596433966772030e-4,
  1552.     -1.2027337376184880e-4, -1.2460449089034750e-4,
  1553.     -1.2895330270761850e-4, -1.3331525983885840e-4,
  1554.     -1.3768563787408340e-4, -1.4205953760578120e-4,
  1555.     -1.4643190426323540e-4, -1.5079752791692290e-4,
  1556.     -1.5515103314094370e-4, -1.5948687909058970e-4,
  1557.     -1.6379937154642740e-4, -1.6808266356446820e-4,
  1558.     -1.7233075773584680e-4, -1.7653750646560020e-4,
  1559.     -1.8069661584612290e-4, -1.8480164638953740e-4,
  1560.     -1.8884602526638050e-4, -1.9282304696531290e-4,
  1561.     -1.9672587556804270e-4, -2.0054754547108610e-4,
  1562.     -2.0428097498957360e-4, -2.0791896735659270e-4,
  1563.     -2.1145421910491280e-4, -2.1487932080488700e-4,
  1564.     -2.1818676491655660e-4, -2.2136894706917190e-4,
  1565.     -2.2441818635854840e-4, -2.2732672676686290e-4,
  1566.     -2.3008674810081220e-4, -2.3269036653525150e-4,
  1567.     -2.3512963563507800e-4, -2.3739654799291240e-4,
  1568.     -2.3948307023621970e-4, -2.4138114593372380e-4,
  1569.     -2.4308272452941820e-4, -2.4457975717687980e-4,
  1570.     -2.4586407616017000e-4, -2.4692741569938220e-4,
  1571.     -2.4776199025177680e-4, -2.4836046092637280e-4,
  1572.     -2.4871461830381660e-4, -2.4881540457247040e-4,
  1573.     -2.4865471770248810e-4, -2.4822543333608940e-4,
  1574.     -2.4752008219951220e-4, -2.4653081794176570e-4,
  1575.     -2.4525003217524440e-4, -2.4367037437341020e-4,
  1576.     /* Bank 2 */
  1577.      2.4178457457919800e-4,  2.3958543985834340e-4,
  1578.      2.3706595356421380e-4,  2.3421928008696620e-4,
  1579.      2.3103877007019660e-4,  2.2751796132972940e-4,
  1580.      2.2365059385031200e-4,  2.1943061159567880e-4,
  1581.      2.1485218733324290e-4,  2.0990972538755550e-4,
  1582.      2.0459789739171640e-4,  1.9891164424316180e-4,
  1583.      1.9284618337957900e-4,  1.8639701070854740e-4,
  1584.      1.7955993578371750e-4,  1.7233108395155490e-4,
  1585.      1.6470690840351980e-4,  1.5668419239382670e-4,
  1586.      1.4826008597798460e-4,  1.3943210818407590e-4,
  1587.      1.3019815804235450e-4,  1.2055651618705740e-4,
  1588.      1.1050586906665980e-4,  1.0004531116378850e-4,
  1589.      8.9174369623037550e-5,  7.7893006105444910e-5,
  1590.      6.6201632959158800e-5,  5.4101115008963200e-5,
  1591.      4.1592792755171040e-5,  2.8678484003389880e-5,
  1592.      1.5360496520469550e-5,  1.6416297019304470e-6,
  1593.     -1.2474801400564880e-5, -2.6984964757674160e-5,
  1594.     -4.1884506316022560e-5, -5.7168548169515050e-5,
  1595.     -7.2831653374563650e-5, -8.8867825335203200e-5,
  1596.     -1.0527052946041040e-4, -1.2203269185287530e-4,
  1597.     -1.3914664880465400e-4, -1.5660414556657680e-4,
  1598.     -1.7439635977956720e-4, -1.9251390142613000e-4,
  1599.     -2.1094678833176480e-4, -2.2968444457655940e-4,
  1600.     -2.4871569004884240e-4, -2.6802874127778880e-4,
  1601.     -2.8761124019708440e-4, -3.0745025297166030e-4,
  1602.     -3.2753221542219500e-4, -3.4784293347385130e-4,
  1603.     -3.6836764760397900e-4, -3.8909103335715320e-4,
  1604.     -4.0999714822829530e-4, -4.3106943097409840e-4,
  1605.     -4.5229073958127750e-4, -4.7364335350426610e-4,
  1606.     -4.9510898492628230e-4, -5.1666877822680600e-4,
  1607.     -5.3830328700499900e-4, -5.5999247625413450e-4,
  1608.     -5.8171579317559550e-4, -6.0345216810040500e-4,
  1609.     -6.2517996394886800e-4, -6.4687697763330650e-4,
  1610.     -6.6852052145861900e-4, -6.9008742526480550e-4,
  1611.     -7.1155400216196750e-4, -7.3289605035434600e-4,
  1612.     -7.5408892753413600e-4, -7.7510755325530950e-4,
  1613.     -7.9592638676398950e-4, -8.1651942936660300e-4,
  1614.     -8.3686029869896850e-4, -8.5692223230171550e-4,
  1615.     -8.7667809201044900e-4, -8.9610036547340950e-4,
  1616.     -9.1516119514986000e-4, -9.3383238324995840e-4,
  1617.     -9.5208547141354700e-4, -9.6989174214394400e-4,
  1618.     -9.8722217067251400e-4, -1.0040474297445790e-3,
  1619.     -1.0203380430448350e-3, -1.0360643900964910e-3,
  1620.     -1.0511966606168980e-3, -1.0657048556038330e-3,
  1621.     -1.0795588568782010e-3, -1.0927284332850520e-3,
  1622.     -1.1051833075734240e-3, -1.1168931605293980e-3,
  1623.     -1.1278276550234160e-3, -1.1379564405661050e-3,
  1624.     -1.1472492294891640e-3, -1.1556758000499310e-3,
  1625.     -1.1632059885511800e-3, -1.1698096960154200e-3,
  1626.     -1.1754570428998680e-3, -1.1801183720212010e-3,
  1627.     -1.1837641581852870e-3, -1.1863650153060240e-3,
  1628.     -1.1878919433902330e-3, -1.1883163316843900e-3,
  1629.     -1.1876097809178440e-3, -1.1857441072376680e-3,
  1630.     -1.1826916065321440e-3, -1.1784250628415020e-3,
  1631.     -1.1729176690707690e-3, -1.1661430294353880e-3,
  1632.     -1.1580752925519680e-3, -1.1486891568700730e-3,
  1633.     -1.1379598570807350e-3, -1.1258631690530700e-3,
  1634.     -1.1123755320313420e-3, -1.0974740543942100e-3,
  1635.     -1.0811365181610850e-3, -1.0633413819325920e-3,
  1636.     -1.0440678410743190e-3, -1.0232958338441730e-3,
  1637.     -1.0010061160103870e-3, -9.7718026613602800e-4,
  1638.     -9.5180072722007060e-4, -9.2485080945546600e-4,
  1639.     -8.9631470926558100e-4, -8.6617751390929650e-4,
  1640.     -8.3442528375666700e-4, -8.0104505655578600e-4,
  1641.     /* Bank 3 */
  1642.      7.6602485902806300e-4,  7.2935371157849700e-4,
  1643.      6.9102172032639350e-4,  6.5102007948960100e-4,
  1644.      6.0934103180698750e-4,  5.6597787244591100e-4,
  1645.      5.2092507454409450e-4,  4.7417829303612970e-4,
  1646.      4.2573432329476060e-4,  3.7559110239316400e-4,
  1647.      3.2374777823389440e-4,  2.7020471361387040e-4,
  1648.      2.1496350652513040e-4,  1.5802699163104190e-4,
  1649.      9.9399252442146460e-5,  3.9085623279149610e-5,
  1650.     -2.2907279717153710e-5, -8.6571556658577800e-5,
  1651.     -1.5189801251884410e-4, -2.1887615668780720e-4,
  1652.     -2.8749420455512610e-4, -3.5773907519488100e-4,
  1653.     -4.2959633884346400e-4, -5.0305021853266900e-4,
  1654.     -5.7808367853976800e-4, -6.5467842279709950e-4,
  1655.     -7.3281477145293300e-4, -8.1247166091487090e-4,
  1656.     -8.9362676824381250e-4, -9.7625651350435400e-4,
  1657.     -1.0603359870796300e-3, -1.1458389497708370e-3,
  1658.     -1.2327379076720450e-3, -1.3210041125919850e-3,
  1659.     -1.4106074964587530e-3, -1.5015166759080980e-3,
  1660.     -1.5936991188210680e-3, -1.6871211446584360e-3,
  1661.     -1.7817477652804130e-3, -1.8775426862784720e-3,
  1662.     -1.9744684954557180e-3, -2.0724866717198650e-3,
  1663.     -2.1715575922482770e-3, -2.2716405301701940e-3,
  1664.     -2.3726935964105480e-3, -2.4746737418493600e-3,
  1665.     -2.5775368629845300e-3, -2.6812378156433060e-3,
  1666.     -2.7857306109716460e-3, -2.8909684129992950e-3,
  1667.     -2.9969032890820140e-3, -3.1034862132032660e-3,
  1668.     -3.2106673881690480e-3, -3.3183962566563890e-3,
  1669.     -3.4266214220855450e-3, -3.5352906520539890e-3,
  1670.     -3.6443510330122110e-3, -3.7537489709635930e-3,
  1671.     -3.8634300521859240e-3, -3.9733390588103910e-3,
  1672.     -4.0834204508378470e-3, -4.1936183686073460e-3,
  1673.     -4.3038762050876900e-3, -4.4141366059086620e-3,
  1674.     -4.5243418977567100e-3, -4.6344341075783170e-3,
  1675.     -4.7443549566589130e-3, -4.8540458565358850e-3,
  1676.     -4.9634478250060780e-3, -5.0725014978718950e-3,
  1677.     -5.1811474713480250e-3, -5.2893263173827950e-3,
  1678.     -5.3969785783205650e-3, -5.5040447592375600e-3,
  1679.     -5.6104651646665850e-3, -5.7161799140263450e-3,
  1680.     -5.8211294443412250e-3, -5.9252545216101900e-3,
  1681.     -6.0284959882028950e-3, -6.1307947602360250e-3,
  1682.     -6.2320920224565700e-3, -6.3323292492425800e-3,
  1683.     -6.4314484717364400e-3, -6.5293922762311450e-3,
  1684.     -6.6261035015351700e-3, -6.7215252466922100e-3,
  1685.     -6.8156013434509950e-3, -6.9082763630156450e-3,
  1686.     -6.9994952920827200e-3, -7.0892035490577050e-3,
  1687.     -7.1773476647806300e-3, -7.2638752839566550e-3,
  1688.     -7.3487345159041400e-3, -7.4318739341000500e-3,
  1689.     -7.5132432154309250e-3, -7.5927931627681400e-3,
  1690.     -7.6704755623721500e-3, -7.7462431738117650e-3,
  1691.     -7.8200496507836000e-3, -7.8918495587816850e-3,
  1692.     -7.9615988430090790e-3, -8.0292548409052500e-3,
  1693.     -8.0947760898363200e-3, -8.1581223027535600e-3,
  1694.     -8.2192540249893810e-3, -8.2781326752680240e-3,
  1695.     -8.3347217911436610e-3, -8.3889870206274740e-3,
  1696.     -8.4408946925453690e-3, -8.4904118087845760e-3,
  1697.     -8.5375073033623590e-3, -8.5821520672029750e-3,
  1698.     -8.6243182341614300e-3, -8.6639791627160300e-3,
  1699.     -8.7011097471794110e-3, -8.7356864659172800e-3,
  1700.     -8.7676881309490440e-3, -8.7970958152554810e-3,
  1701.     -8.8238905039462850e-3, -8.8480531477483150e-3,
  1702.     -8.8695681885783190e-3, -8.8884235927356400e-3,
  1703.     -8.9046080555685600e-3, -8.9181109318560050e-3,
  1704.     -8.9289234995380550e-3, -8.9370390010903460e-3,
  1705.     -8.9424522900292110e-3, -8.9451598223763610e-3,
  1706.     /* Bank 4 */
  1707.      8.9451598223763610e-3,  8.9424522900292110e-3,
  1708.      8.9370390010903460e-3,  8.9289234995380550e-3,
  1709.      8.9181109318560050e-3,  8.9046080555685600e-3,
  1710.      8.8884235927356400e-3,  8.8695681885783190e-3,
  1711.      8.8480531477483150e-3,  8.8238905039462850e-3,
  1712.      8.7970958152554810e-3,  8.7676881309490440e-3,
  1713.      8.7356864659172800e-3,  8.7011097471794110e-3,
  1714.      8.6639791627160300e-3,  8.6243182341614300e-3,
  1715.      8.5821520672029750e-3,  8.5375073033623590e-3,
  1716.      8.4904118087845760e-3,  8.4408946925453690e-3,
  1717.      8.3889870206274740e-3,  8.3347217911436610e-3,
  1718.      8.2781326752680240e-3,  8.2192540249893810e-3,
  1719.      8.1581223027535600e-3,  8.0947760898363200e-3,
  1720.      8.0292548409052500e-3,  7.9615988430090790e-3,
  1721.      7.8918495587816850e-3,  7.8200496507836000e-3,
  1722.      7.7462431738117650e-3,  7.6704755623721500e-3,
  1723.      7.5927931627681400e-3,  7.5132432154309250e-3,
  1724.      7.4318739341000500e-3,  7.3487345159041400e-3,
  1725.      7.2638752839566550e-3,  7.1773476647806300e-3,
  1726.      7.0892035490577050e-3,  6.9994952920827200e-3,
  1727.      6.9082763630156450e-3,  6.8156013434509950e-3,
  1728.      6.7215252466922100e-3,  6.6261035015351700e-3,
  1729.      6.5293922762311450e-3,  6.4314484717364400e-3,
  1730.      6.3323292492425800e-3,  6.2320920224565700e-3,
  1731.      6.1307947602360250e-3,  6.0284959882028950e-3,
  1732.      5.9252545216101900e-3,  5.8211294443412250e-3,
  1733.      5.7161799140263450e-3,  5.6104651646665850e-3,
  1734.      5.5040447592375600e-3,  5.3969785783205650e-3,
  1735.      5.2893263173827950e-3,  5.1811474713480250e-3,
  1736.      5.0725014978718950e-3,  4.9634478250060780e-3,
  1737.      4.8540458565358850e-3,  4.7443549566589130e-3,
  1738.      4.6344341075783170e-3,  4.5243418977567100e-3,
  1739.      4.4141366059086620e-3,  4.3038762050876900e-3,
  1740.      4.1936183686073460e-3,  4.0834204508378470e-3,
  1741.      3.9733390588103910e-3,  3.8634300521859240e-3,
  1742.      3.7537489709635930e-3,  3.6443510330122110e-3,
  1743.      3.5352906520539890e-3,  3.4266214220855450e-3,
  1744.      3.3183962566563890e-3,  3.2106673881690480e-3,
  1745.      3.1034862132032660e-3,  2.9969032890820140e-3,
  1746.      2.8909684129992950e-3,  2.7857306109716460e-3,
  1747.      2.6812378156433060e-3,  2.5775368629845300e-3,
  1748.      2.4746737418493600e-3,  2.3726935964105480e-3,
  1749.      2.2716405301701940e-3,  2.1715575922482770e-3,
  1750.      2.0724866717198650e-3,  1.9744684954557180e-3,
  1751.      1.8775426862784720e-3,  1.7817477652804130e-3,
  1752.      1.6871211446584360e-3,  1.5936991188210680e-3,
  1753.      1.5015166759080980e-3,  1.4106074964587530e-3,
  1754.      1.3210041125919850e-3,  1.2327379076720450e-3,
  1755.      1.1458389497708370e-3,  1.0603359870796300e-3,
  1756.      9.7625651350435400e-4,  8.9362676824381250e-4,
  1757.      8.1247166091487090e-4,  7.3281477145293300e-4,
  1758.      6.5467842279709950e-4,  5.7808367853976800e-4,
  1759.      5.0305021853266900e-4,  4.2959633884346400e-4,
  1760.      3.5773907519488100e-4,  2.8749420455512610e-4,
  1761.      2.1887615668780720e-4,  1.5189801251884410e-4,
  1762.      8.6571556658577800e-5,  2.2907279717153710e-5,
  1763.     -3.9085623279149610e-5, -9.9399252442146460e-5,
  1764.     -1.5802699163104190e-4, -2.1496350652513040e-4,
  1765.     -2.7020471361387040e-4, -3.2374777823389440e-4,
  1766.     -3.7559110239316400e-4, -4.2573432329476060e-4,
  1767.     -4.7417829303612970e-4, -5.2092507454409450e-4,
  1768.     -5.6597787244591100e-4, -6.0934103180698750e-4,
  1769.     -6.5102007948960100e-4, -6.9102172032639350e-4,
  1770.     -7.2935371157849700e-4, -7.6602485902806300e-4,
  1771.     /* Bank 5 */
  1772.      8.0104505655578600e-4,  8.3442528375666700e-4,
  1773.      8.6617751390929650e-4,  8.9631470926558100e-4,
  1774.      9.2485080945546600e-4,  9.5180072722007060e-4,
  1775.      9.7718026613602800e-4,  1.0010061160103870e-3,
  1776.      1.0232958338441730e-3,  1.0440678410743190e-3,
  1777.      1.0633413819325920e-3,  1.0811365181610850e-3,
  1778.      1.0974740543942100e-3,  1.1123755320313420e-3,
  1779.      1.1258631690530700e-3,  1.1379598570807350e-3,
  1780.      1.1486891568700730e-3,  1.1580752925519680e-3,
  1781.      1.1661430294353880e-3,  1.1729176690707690e-3,
  1782.      1.1784250628415020e-3,  1.1826916065321440e-3,
  1783.      1.1857441072376680e-3,  1.1876097809178440e-3,
  1784.      1.1883163316843900e-3,  1.1878919433902330e-3,
  1785.      1.1863650153060240e-3,  1.1837641581852870e-3,
  1786.      1.1801183720212010e-3,  1.1754570428998680e-3,
  1787.      1.1698096960154200e-3,  1.1632059885511800e-3,
  1788.      1.1556758000499310e-3,  1.1472492294891640e-3,
  1789.      1.1379564405661050e-3,  1.1278276550234160e-3,
  1790.      1.1168931605293980e-3,  1.1051833075734240e-3,
  1791.      1.0927284332850520e-3,  1.0795588568782010e-3,
  1792.      1.0657048556038330e-3,  1.0511966606168980e-3,
  1793.      1.0360643900964910e-3,  1.0203380430448350e-3,
  1794.      1.0040474297445790e-3,  9.8722217067251400e-4,
  1795.      9.6989174214394400e-4,  9.5208547141354700e-4,
  1796.      9.3383238324995840e-4,  9.1516119514986000e-4,
  1797.      8.9610036547340950e-4,  8.7667809201044900e-4,
  1798.      8.5692223230171550e-4,  8.3686029869896850e-4,
  1799.      8.1651942936660300e-4,  7.9592638676398950e-4,
  1800.      7.7510755325530950e-4,  7.5408892753413600e-4,
  1801.      7.3289605035434600e-4,  7.1155400216196750e-4,
  1802.      6.9008742526480550e-4,  6.6852052145861900e-4,
  1803.      6.4687697763330650e-4,  6.2517996394886800e-4,
  1804.      6.0345216810040500e-4,  5.8171579317559550e-4,
  1805.      5.5999247625413450e-4,  5.3830328700499900e-4,
  1806.      5.1666877822680600e-4,  4.9510898492628230e-4,
  1807.      4.7364335350426610e-4,  4.5229073958127750e-4,
  1808.      4.3106943097409840e-4,  4.0999714822829530e-4,
  1809.      3.8909103335715320e-4,  3.6836764760397900e-4,
  1810.      3.4784293347385130e-4,  3.2753221542219500e-4,
  1811.      3.0745025297166030e-4,  2.8761124019708440e-4,
  1812.      2.6802874127778880e-4,  2.4871569004884240e-4,
  1813.      2.2968444457655940e-4,  2.1094678833176480e-4,
  1814.      1.9251390142613000e-4,  1.7439635977956720e-4,
  1815.      1.5660414556657680e-4,  1.3914664880465400e-4,
  1816.      1.2203269185287530e-4,  1.0527052946041040e-4,
  1817.      8.8867825335203200e-5,  7.2831653374563650e-5,
  1818.      5.7168548169515050e-5,  4.1884506316022560e-5,
  1819.      2.6984964757674160e-5,  1.2474801400564880e-5,
  1820.     -1.6416297019304470e-6, -1.5360496520469550e-5,
  1821.     -2.8678484003389880e-5, -4.1592792755171040e-5,
  1822.     -5.4101115008963200e-5, -6.6201632959158800e-5,
  1823.     -7.7893006105444910e-5, -8.9174369623037550e-5,
  1824.     -1.0004531116378850e-4, -1.1050586906665980e-4,
  1825.     -1.2055651618705740e-4, -1.3019815804235450e-4,
  1826.     -1.3943210818407590e-4, -1.4826008597798460e-4,
  1827.     -1.5668419239382670e-4, -1.6470690840351980e-4,
  1828.     -1.7233108395155490e-4, -1.7955993578371750e-4,
  1829.     -1.8639701070854740e-4, -1.9284618337957900e-4,
  1830.     -1.9891164424316180e-4, -2.0459789739171640e-4,
  1831.     -2.0990972538755550e-4, -2.1485218733324290e-4,
  1832.     -2.1943061159567880e-4, -2.2365059385031200e-4,
  1833.     -2.2751796132972940e-4, -2.3103877007019660e-4,
  1834.     -2.3421928008696620e-4, -2.3706595356421380e-4,
  1835.     -2.3958543985834340e-4, -2.4178457457919800e-4,
  1836.     /* Bank 6 */
  1837.      2.4367037437341020e-4,  2.4525003217524440e-4,
  1838.      2.4653081794176570e-4,  2.4752008219951220e-4,
  1839.      2.4822543333608940e-4,  2.4865471770248810e-4,
  1840.      2.4881540457247040e-4,  2.4871461830381660e-4,
  1841.      2.4836046092637280e-4,  2.4776199025177680e-4,
  1842.      2.4692741569938220e-4,  2.4586407616017000e-4,
  1843.      2.4457975717687980e-4,  2.4308272452941820e-4,
  1844.      2.4138114593372380e-4,  2.3948307023621970e-4,
  1845.      2.3739654799291240e-4,  2.3512963563507800e-4,
  1846.      2.3269036653525150e-4,  2.3008674810081220e-4,
  1847.      2.2732672676686290e-4,  2.2441818635854840e-4,
  1848.      2.2136894706917190e-4,  2.1818676491655660e-4,
  1849.      2.1487932080488700e-4,  2.1145421910491280e-4,
  1850.      2.0791896735659270e-4,  2.0428097498957360e-4,
  1851.      2.0054754547108610e-4,  1.9672587556804270e-4,
  1852.      1.9282304696531290e-4,  1.8884602526638050e-4,
  1853.      1.8480164638953740e-4,  1.8069661584612290e-4,
  1854.      1.7653750646560020e-4,  1.7233075773584680e-4,
  1855.      1.6808266356446820e-4,  1.6379937154642740e-4,
  1856.      1.5948687909058970e-4,  1.5515103314094370e-4,
  1857.      1.5079752791692290e-4,  1.4643190426323540e-4,
  1858.      1.4205953760578120e-4,  1.3768563787408340e-4,
  1859.      1.3331525983885840e-4,  1.2895330270761850e-4,
  1860.      1.2460449089034750e-4,  1.2027337376184880e-4,
  1861.      1.1596433966772030e-4,  1.1168161614264270e-4,
  1862.      1.0742926070674010e-4,  1.0321116057304920e-4,
  1863.      9.9031035415475500e-5,  9.4892437636254000e-5,
  1864.      9.0798755482139240e-5,  8.6753213062403400e-5,
  1865.      8.2758867628623800e-5,  7.8818609806320000e-5,
  1866.      7.4935171411178040e-5,  7.1111125753722860e-5,
  1867.      6.7348886525882700e-5,  6.3650708053788550e-5,
  1868.      6.0018691972791050e-5,  5.6454787620185350e-5,
  1869.      5.2960794000140600e-5,  4.9538360176954340e-5,
  1870.      4.6188991961724560e-5,  4.2914052387856640e-5,
  1871.      3.9714765485539260e-5,  3.6592216716540970e-5,
  1872.      3.3547358765259040e-5,  3.0581012081916960e-5,
  1873.      2.7693871041862060e-5,  2.4886504491416160e-5,
  1874.      2.2159361597292710e-5,  1.9512772389215240e-5,
  1875.      1.6946953848107710e-5,  1.4462010500550970e-5,
  1876.      1.2057941408635810e-5,  9.7346407524871100e-6,
  1877.      7.4919036559427900e-6,  5.3294268968052800e-6,
  1878.      3.2468187066945930e-6,  1.2435990827839660e-6,
  1879.     -6.8080315386959900e-7, -2.5270494199802070e-6,
  1880.     -4.2958677847708840e-6, -5.9880523825897000e-6,
  1881.     -7.6044740757265500e-6, -9.1460801506922300e-6,
  1882.     -1.0613876973541650e-5, -1.2008929083235120e-5,
  1883.     -1.3332356590263080e-5, -1.4585334740507920e-5,
  1884.     -1.5769086921577900e-5, -1.6884884022311310e-5,
  1885.     -1.7934037335534700e-5, -1.8917898053528080e-5,
  1886.     -1.9837853265502040e-5, -2.0695325418576370e-5,
  1887.     -2.1491764461832140e-5, -2.2228647280994560e-5,
  1888.     -2.2907473117403740e-5, -2.3529763128539150e-5,
  1889.     -2.4097055300584120e-5, -2.4610903957661350e-5,
  1890.     -2.5072874052447260e-5, -2.5484540698002960e-5,
  1891.     -2.5847484577439320e-5, -2.6163291550639320e-5,
  1892.     -2.6433548592482960e-5, -2.6659843389908530e-5,
  1893.     -2.6843759539035120e-5, -2.6986876191054700e-5,
  1894.     -2.7090765064735940e-5, -2.7156990105794550e-5,
  1895.     -2.7187102980536760e-5, -2.7182642746157720e-5,
  1896.     -2.7145133103663890e-5, -2.7076082153012070e-5,
  1897.     -2.6976979753245170e-5, -2.6849297239997120e-5,
  1898.     -2.6694483850464800e-5, -2.6513966535124460e-5,
  1899.     -2.6309149390520640e-5, -2.6081413415833200e-5,
  1900.     -2.5832111724562040e-5, -2.5562569399199020e-5,
  1901.     /* Bank 7 */
  1902.      2.5274085082324960e-5,  2.4967930863542620e-5,
  1903.      2.4645348200903720e-5,  2.4307547722489910e-5,
  1904.      2.3955708939763280e-5,  2.3590980216497750e-5,
  1905.      2.3214478371918170e-5,  2.2827288605503470e-5,
  1906.      2.2430463239517170e-5,  2.2025021652894630e-5,
  1907.      2.1611950084231910e-5,  2.1192201630574280e-5,
  1908.      2.0766696417773940e-5,  2.0336321557464510e-5,
  1909.      1.9901930030141080e-5,  1.9464340744880170e-5,
  1910.      1.9024340970099240e-5,  1.8582686308483550e-5,
  1911.      1.8140097714618200e-5,  1.7697261563607500e-5,
  1912.      1.7254834143068570e-5,  1.6813441716539560e-5,
  1913.      1.6373677426466900e-5,  1.5936101341640500e-5,
  1914.      1.5501244597782600e-5,  1.5069609527679710e-5,
  1915.      1.4641668383496450e-5,  1.4217863365843780e-5,
  1916.      1.3798608540965960e-5,  1.3384289978242060e-5,
  1917.      1.2975266858030310e-5,  1.2571871574469220e-5,
  1918.      1.2174410889256530e-5,  1.1783166036693560e-5,
  1919.      1.1398393880881060e-5,  1.1020327046334650e-5,
  1920.      1.0649175634328590e-5,  1.0285127334608450e-5,
  1921.      9.9283481667264540e-6,  9.5789825988253100e-6,
  1922.      9.2371554195468400e-6,  8.9029718900122000e-6,
  1923.      8.5765192154768100e-6,  8.2578666429227760e-6,
  1924.      7.9470661364365490e-6,  7.6441525098592000e-6,
  1925.      7.3491456697144900e-6,  7.0620507545154100e-6,
  1926.      6.7828589565804950e-6,  6.5115476278604000e-6,
  1927.      6.2480817863072800e-6,  5.9924142424804800e-6,
  1928.      5.7444868785028750e-6,  5.5042307535458100e-6,
  1929.      5.2715671455405850e-6,  5.0464076705003400e-6,
  1930.      4.8286558658894680e-6,  4.6182073040543900e-6,
  1931.      4.4149505043312320e-6,  4.2187670209852250e-6,
  1932.      4.0295324657699800e-6,  3.8471166218015830e-6,
  1933.      3.6713849262294680e-6,  3.5021985520037540e-6,
  1934.      3.3394147240855820e-6,  3.1828867865974640e-6,
  1935.      3.0324653639203880e-6,  2.8879984579501380e-6,
  1936.      2.7493324266391140e-6,  2.6163120571644820e-6,
  1937.      2.4887811970856540e-6,  2.3665828120950560e-6,
  1938.      2.2495596253776460e-6,  2.1375541686662320e-6,
  1939.      2.0304092660990760e-6,  1.9279680902322050e-6,
  1940.      1.8300749104526120e-6,  1.7365751553971340e-6,
  1941.      1.6473160377545360e-6,  1.5621465913980060e-6,
  1942.      1.4809178634979940e-6,  1.4034829433780260e-6,
  1943.      1.3296974052300520e-6,  1.2594193438633260e-6,
  1944.      1.1925097184646100e-6,  1.1288323637155430e-6,
  1945.      1.0682538906146330e-6,  1.0106437128213760e-6,
  1946.      9.5587472540498280e-7,  9.0382333224895500e-7,
  1947.      8.5436937020293650e-7,  8.0739610368280600e-7,
  1948.      7.6279018172077200e-7,  7.2044165259013450e-7,
  1949.      6.8024432849991400e-7,  6.4209580087853050e-7,
  1950.      6.0589741192019800e-7,  5.7155423388793000e-7,
  1951.      5.3897464223335550e-7,  5.0807031294631050e-7,
  1952.      4.7875659112606760e-7,  4.5095249563698380e-7,
  1953.      4.2458045296159330e-7,  3.9956628121669190e-7,
  1954.      3.7583910465412180e-7,  3.5333134588843600e-7,
  1955.      3.3197864040473180e-7,  3.1171981968268900e-7,
  1956.      2.9249662541757600e-7,  2.7425370308549580e-7,
  1957.      2.5693874615777660e-7,  2.4050245877923400e-7,
  1958.      2.2489759047553620e-7,  2.1007899706006800e-7,
  1959.      1.9600594587757850e-7,  1.8264184311018150e-7,
  1960.      1.6994592926571220e-7,  1.5787424998123710e-7,
  1961.      1.4640931821191640e-7,  1.3555636137971380e-7,
  1962.      1.2523109645615350e-7,  1.1527363411865760e-7,
  1963.      1.0586659510721950e-7,  9.7483190494874640e-8,
  1964.      8.9326871281374790e-8,  7.9525034321375090e-8,
  1965.      7.0950903150874990e-8,  7.1279389866041690e-8,
  1966. };
  1967.  
  1968. /*
  1969.  * D.11 Look-up Table for Downmix Scale Factors
  1970.  *
  1971.  * Note that the range of the entries in DmixTable[] is between -60 dB and 0 dB
  1972.  * with addition of -inf (|DMixCoeff| = 0), which is coded with a DmixCode = 0.
  1973.  * Furthermore, the range [-60 to 0] is subdivided into 3 regions, each with a
  1974.  * different grid resolution:
  1975.  *
  1976.  * 1) [-60.000 to -30] with resolution of 0.500 dB
  1977.  * 2) [-29.750 to -15] with resolution of 0.250 dB
  1978.  * 3) [-14.875 to   0] with resolution of 0.125 dB
  1979.  */
  1980. const uint16_t ff_dca_dmixtable[FF_DCA_DMIXTABLE_SIZE] = {
  1981.         0,    33,    35,    37,    39,    41,    44,    46,
  1982.        49,    52,    55,    58,    62,    65,    69,    73,
  1983.        78,    82,    87,    92,    98,   104,   110,   116,
  1984.       123,   130,   138,   146,   155,   164,   174,   184,
  1985.       195,   207,   219,   232,   246,   260,   276,   292,
  1986.       309,   328,   347,   368,   389,   413,   437,   463,
  1987.       490,   519,   550,   583,   617,   654,   693,   734,
  1988.       777,   823,   872,   924,   978,  1036,  1066,  1098,
  1989.      1130,  1163,  1197,  1232,  1268,  1305,  1343,  1382,
  1990.      1422,  1464,  1506,  1550,  1596,  1642,  1690,  1740,
  1991.      1790,  1843,  1896,  1952,  2009,  2068,  2128,  2190,
  1992.      2254,  2320,  2388,  2457,  2529,  2603,  2679,  2757,
  1993.      2838,  2920,  3006,  3093,  3184,  3277,  3372,  3471,
  1994.      3572,  3677,  3784,  3894,  4008,  4125,  4246,  4370,
  1995.      4497,  4629,  4764,  4903,  5046,  5193,  5345,  5501,
  1996.      5662,  5827,  5912,  5997,  6084,  6172,  6262,  6353,
  1997.      6445,  6538,  6633,  6729,  6827,  6925,  7026,  7128,
  1998.      7231,  7336,  7442,  7550,  7659,  7771,  7883,  7997,
  1999.      8113,  8231,  8350,  8471,  8594,  8719,  8845,  8973,
  2000.      9103,  9235,  9369,  9505,  9643,  9783,  9924, 10068,
  2001.     10214, 10362, 10512, 10665, 10819, 10976, 11135, 11297,
  2002.     11460, 11627, 11795, 11966, 12139, 12315, 12494, 12675,
  2003.     12859, 13045, 13234, 13426, 13621, 13818, 14018, 14222,
  2004.     14428, 14637, 14849, 15064, 15283, 15504, 15729, 15957,
  2005.     16188, 16423, 16661, 16902, 17147, 17396, 17648, 17904,
  2006.     18164, 18427, 18694, 18965, 19240, 19519, 19802, 20089,
  2007.     20380, 20675, 20975, 21279, 21587, 21900, 22218, 22540,
  2008.     22867, 23170, 23534, 23875, 24221, 24573, 24929, 25290,
  2009.     25657, 26029, 26406, 26789, 27177, 27571, 27970, 28376,
  2010.     28787, 29205, 29628, 30057, 30493, 30935, 31383, 31838,
  2011.     32300, 32768,
  2012. };
  2013.  
  2014. const uint32_t ff_dca_inv_dmixtable[FF_DCA_INV_DMIXTABLE_SIZE] = {
  2015.     6553600, 6186997, 5840902, 5514167, 5205710, 4914507, 4639593, 4380059,
  2016.     4135042, 3903731, 3685360, 3479204, 3284581, 3100844, 2927386, 2763630,
  2017.     2609035, 2463088, 2325305, 2195230, 2072430, 2013631, 1956500, 1900990,
  2018.     1847055, 1794651, 1743733, 1694260, 1646190, 1599484, 1554103, 1510010,
  2019.     1467168, 1425542, 1385096, 1345798, 1307615, 1270515, 1234468, 1199444,
  2020.     1165413, 1132348, 1100221, 1069005, 1038676, 1009206,  980573,  952752,
  2021.      925721,  899456,  873937,  849141,  825049,  801641,  778897,  756798,
  2022.      735326,  714463,  694193,  674497,  655360,  636766,  618700,  601146,
  2023.      584090,  567518,  551417,  535772,  520571,  505801,  491451,  477507,
  2024.      463959,  450796,  438006,  425579,  413504,  401772,  390373,  379297,
  2025.      368536,  363270,  358080,  352964,  347920,  342949,  338049,  333219,
  2026.      328458,  323765,  319139,  314579,  310084,  305654,  301287,  296982,
  2027.      292739,  288556,  284433,  280369,  276363,  272414,  268522,  264685,
  2028.      260904,  257176,  253501,  249879,  246309,  242790,  239321,  235901,
  2029.      232531,  229208,  225933,  222705,  219523,  216386,  213295,  210247,
  2030.      207243,  204282,  201363,  198486,  195650,  192855,  190099,  187383,
  2031.      184706,  182066,  179465,  176901,  174373,  171882,  169426,  167005,
  2032.      164619,  162267,  159948,  157663,  155410,  153190,  151001,  148844,
  2033.      146717,  144621,  142554,  140517,  138510,  136531,  134580,  132657,
  2034.      130762,  128893,  127052,  125236,  123447,  121683,  119944,  118231,
  2035.      116541,  114876,  113235,  111617,  110022,  108450,  106901,  105373,
  2036.      103868,  102383,  100921,   99479,   98057,   96656,   95275,   93914,
  2037.       92682,   91249,   89946,   88660,   87394,   86145,   84914,   83701,
  2038.       82505,   81326,   80164,   79019,   77890,   76777,   75680,   74598,
  2039.       73533,   72482,   71446,   70425,   69419,   68427,   67450,   66486,
  2040.       65536,
  2041. };
  2042.  
  2043. const float ff_dca_default_coeffs[10][6][2] = {
  2044.     { { 0.707107, 0.707107 }, { 0.000000, 0.000000 },                                                                                                 }, // A [LFE]
  2045.     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 },                                                                         }, // A + B (dual mono) [LFE]
  2046.     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 },                                                                         }, // L + R (stereo) [LFE]
  2047.     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 },                                                                         }, // (L+R) + (L-R) (sum-difference) [LFE]
  2048.     { { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 },                                                                         }, // LT + RT (left and right total) [LFE]
  2049.     { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.000000, 0.000000 },                                                 }, // C + L + R [LFE]
  2050.     { { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.501187 }, { 0.000000, 0.000000 },                                                 }, // L + R + S [LFE]
  2051.     { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.501187 }, { 0.000000, 0.000000 },                         }, // C + L + R + S [LFE]
  2052.     { { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.000000 }, { 0.000000, 0.501187 }, { 0.000000, 0.000000 },                         }, // L + R + SL + SR [LFE]
  2053.     { { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.000000 }, { 0.000000, 0.501187 }, { 0.000000, 0.000000 }, }, // C + L + R + SL + SR [LFE]
  2054. };
  2055.  
  2056. const int32_t ff_dca_sampling_freqs[16] = {
  2057.       8000,  16000, 32000, 64000, 128000, 22050,  44100,  88200,
  2058.     176400, 352800, 12000, 24000,  48000, 96000, 192000, 384000,
  2059. };
  2060.  
  2061. /* downmix coeffs
  2062.  *
  2063.  * TABLE 9
  2064.  * ______________________________________
  2065.  * Down-mix coefficients for 8-channel source
  2066.  * audio (5 + 3 format)
  2067.  * lt
  2068.  * cen- rt lt ctr rt
  2069.  * lt ter ctr center
  2070.  * rt srd srd srd
  2071.  * ______________________________________
  2072.  * 1 0.71 0.74 1.0 0.71 0.71 0.58 0.58 0.58
  2073.  * 2 left 1.0 0.89 0.71 0.46 0.71 0.50
  2074.  * rt 0.45 0.71 0.89 1.0 0.50 0.71
  2075.  * 3 lt 1.0 0.89 0.71 0.45
  2076.  * rt 0.45 0.71 0.89 1.0
  2077.  * srd 0.71 0.71 0.71
  2078.  * 4 lt 1.0 0.89 0.71 0.45
  2079.  * rt 0.45 0.71 0.89 1.0
  2080.  * lt srd 1.0 0.71
  2081.  * rt srd 0.71 0.71
  2082.  * 4 lt 1.0 0.5
  2083.  * ctr 0.87 1.0 0.87
  2084.  * rt 0.5 1.0
  2085.  * srd 0.71 0.71 0.71
  2086.  * 5 lt 1.0 0.5
  2087.  * ctr 0.87 1.0 0.87
  2088.  * rt 0.5 1.0
  2089.  * lt srd 1.0 0.71
  2090.  * rt srd 0.71 1.0
  2091.  * 6 lt 1.0 0.5
  2092.  * lt ctr 0.87 0.71
  2093.  * rt ctr 0.71 0.87
  2094.  * rt 0.5 1.0
  2095.  * lt srd 1.0 0.71
  2096.  * rt srd 0.71 1.0
  2097.  * 6 lt 1.0 0.5
  2098.  * ctr 0.86 1.0 0.86
  2099.  * rt 0.5 1.0
  2100.  * lt srd 1.0
  2101.  * ctr srd 1.0
  2102.  * rt srd 1.0
  2103.  * 7 lt 1.0
  2104.  * lt ctr 1.0
  2105.  * ctr 1.0
  2106.  * rt ctr 1.0
  2107.  * rt 1.0
  2108.  * lt srd 1.0 0.71
  2109.  * rt srd 0.71 1.0
  2110.  * 7 lt 1.0 0.5
  2111.  * lt ctr 0.87 0.71
  2112.  * rt ctr 0.71 0.87
  2113.  * rt 0.5 1.0
  2114.  * lt srd 1.0
  2115.  * ctr srd 1.0
  2116.  * rt srd 1.0
  2117.  * 8 lt 1.0 0.5
  2118.  * lt ctr 0.87 0.71
  2119.  * rt ctr 0.71 0.87
  2120.  * rt 0.5 1.0
  2121.  * lt 1 srd 0.87 0.35
  2122.  * lt 2 srd 0.5 0.61
  2123.  * rt 2 srd 0.61 0.50
  2124.  * rt 2 srd 0.35 0.87
  2125.  *
  2126.  * Generation of Lt Rt
  2127.  *
  2128.  * In the case when the playback system has analog or digital surround
  2129.  * multi-channel capability, a down matrix from 5, 4, or 3 channel to
  2130.  * Lt Rt may be desirable. In the case when the number of decoded audio
  2131.  * channels exceeds 5, 4 or 3 respectively a first stage down mix to 5,
  2132.  * 4 or 3 chs should be used as described above.
  2133.  *
  2134.  * The down matrixing equations for 5-channel source audio to a
  2135.  * two-channel Lt Rt playback system are given by:
  2136.  *
  2137.  * Left  = left  + 0.7 * center - 0.7 * (lt surround + rt surround)
  2138.  *
  2139.  * Right = right + 0.7 * center + 0.7 * (lt surround + rt surround)
  2140.  *
  2141.  * Embedded mixing to 2-channel
  2142.  *
  2143.  * One concern arising from the proliferation of multi-channel audio
  2144.  * systems is that most home systems presently have only two channel
  2145.  * playback capability. To accommodate this a fixed 2-channel down
  2146.  * matrix processes is commonly used following the multi-channel
  2147.  * decoding stage. However, for music only applications the image
  2148.  * quality etc. of the down matrixed signal may not match that of an
  2149.  * equivalent stereo recording found on CD.
  2150.  *
  2151.  * The concept of embedded mixing is to allow the producer to
  2152.  * dynamically specify the matrixing coefficients within the audio
  2153.  * frame itself. In this way the stereo down mix at the decoder may be
  2154.  * better matched to a 2-channel playback environment.
  2155.  *
  2156.  * CHS*2, 7-bit down mix indexes (MCOEFFS) are transmitted along with
  2157.  * the multi-channel audio once in every frame. The indexes are
  2158.  * converted to attenuation factors using a 7 bit LUT. The 2-ch down
  2159.  * mix equations are as follows,
  2160.  *
  2161.  * Left Ch  = sum (MCOEFF[n]       * Ch[n]) for n=1, CHS
  2162.  *
  2163.  * Right Ch = sum (MCOEFF[n + CHS] * Ch[n]) for n=1, CHS
  2164.  *
  2165.  * where Ch(n) represents the subband samples in the (n)th audio channel.
  2166.  */
  2167.  
  2168. const uint32_t ff_dca_map_xxch_to_native[28] = {
  2169.     AV_CH_FRONT_CENTER,
  2170.     AV_CH_FRONT_LEFT,
  2171.     AV_CH_FRONT_RIGHT,
  2172.     AV_CH_SIDE_LEFT,
  2173.     AV_CH_SIDE_RIGHT,
  2174.     AV_CH_LOW_FREQUENCY,
  2175.     AV_CH_BACK_CENTER,
  2176.     AV_CH_BACK_LEFT,
  2177.     AV_CH_BACK_RIGHT,
  2178.     AV_CH_SIDE_LEFT,           /* side surround left -- dup sur side L */
  2179.     AV_CH_SIDE_RIGHT,          /* side surround right -- dup sur side R */
  2180.     AV_CH_FRONT_LEFT_OF_CENTER,
  2181.     AV_CH_FRONT_RIGHT_OF_CENTER,
  2182.     AV_CH_TOP_FRONT_LEFT,
  2183.     AV_CH_TOP_FRONT_CENTER,
  2184.     AV_CH_TOP_FRONT_RIGHT,
  2185.     AV_CH_LOW_FREQUENCY,        /* lfe2 -- duplicate lfe1 position */
  2186.     AV_CH_FRONT_LEFT_OF_CENTER, /* side front left -- dup front cntr L */
  2187.     AV_CH_FRONT_RIGHT_OF_CENTER,/* side front right -- dup front cntr R */
  2188.     AV_CH_TOP_CENTER,           /* overhead */
  2189.     AV_CH_TOP_FRONT_LEFT,       /* side high left -- dup */
  2190.     AV_CH_TOP_FRONT_RIGHT,      /* side high right -- dup */
  2191.     AV_CH_TOP_BACK_CENTER,
  2192.     AV_CH_TOP_BACK_LEFT,
  2193.     AV_CH_TOP_BACK_RIGHT,
  2194.     AV_CH_BACK_CENTER,          /* rear low center -- dup */
  2195.     AV_CH_BACK_LEFT,            /* rear low left -- dup */
  2196.     AV_CH_BACK_RIGHT            /* read low right -- dup  */
  2197. };
  2198.  
  2199. /* -1 are reserved or unknown */
  2200. const int ff_dca_ext_audio_descr_mask[8] = {
  2201.     DCA_EXT_XCH,
  2202.     -1,
  2203.     DCA_EXT_X96,
  2204.     DCA_EXT_XCH | DCA_EXT_X96,
  2205.     -1,
  2206.     -1,
  2207.     DCA_EXT_XXCH,
  2208.     -1,
  2209. };
  2210.  
  2211. /* Tables for mapping dts channel configurations to libavcodec multichannel api.
  2212.  * Some compromises have been made for special configurations. Most configurations
  2213.  * are never used so complete accuracy is not needed.
  2214.  *
  2215.  * L = left, R = right, C = center, S = surround, F = front, R = rear, T = total, OV = overhead.
  2216.  * S  -> side, when both rear and back are configured move one of them to the side channel
  2217.  * OV -> center back
  2218.  * All 2 channel configurations -> AV_CH_LAYOUT_STEREO
  2219.  */
  2220. const uint64_t ff_dca_core_channel_layout[16] = {
  2221.     AV_CH_FRONT_CENTER,                                                     ///< 1, A
  2222.     AV_CH_LAYOUT_STEREO,                                                    ///< 2, A + B (dual mono)
  2223.     AV_CH_LAYOUT_STEREO,                                                    ///< 2, L + R (stereo)
  2224.     AV_CH_LAYOUT_STEREO,                                                    ///< 2, (L + R) + (L - R) (sum-difference)
  2225.     AV_CH_LAYOUT_STEREO,                                                    ///< 2, LT + RT (left and right total)
  2226.     AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER,                               ///< 3, C + L + R
  2227.     AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER,                                ///< 3, L + R + S
  2228.     AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_BACK_CENTER,           ///< 4, C + L + R + S
  2229.     AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT,               ///< 4, L + R + SL + SR
  2230.  
  2231.     AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_SIDE_LEFT |
  2232.     AV_CH_SIDE_RIGHT,                                                       ///< 5, C + L + R + SL + SR
  2233.  
  2234.     AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT |
  2235.     AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER,               ///< 6, CL + CR + L + R + SL + SR
  2236.  
  2237.     AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT |
  2238.     AV_CH_FRONT_CENTER  | AV_CH_BACK_CENTER,                                ///< 6, C + L + R + LR + RR + OV
  2239.  
  2240.     AV_CH_FRONT_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
  2241.     AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_BACK_CENTER   |
  2242.     AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT,                                     ///< 6, CF + CR + LF + RF + LR + RR
  2243.  
  2244.     AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER   |
  2245.     AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_LAYOUT_STEREO |
  2246.     AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT,                                     ///< 7, CL + C + CR + L + R + SL + SR
  2247.  
  2248.     AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
  2249.     AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT |
  2250.     AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT,                                     ///< 8, CL + CR + L + R + SL1 + SL2 + SR1 + SR2
  2251.  
  2252.     AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER   |
  2253.     AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_LAYOUT_STEREO |
  2254.     AV_CH_SIDE_LEFT | AV_CH_BACK_CENTER | AV_CH_SIDE_RIGHT,                 ///< 8, CL + C + CR + L + R + SL + S + SR
  2255. };
  2256.  
  2257. const int8_t ff_dca_lfe_index[16] = {
  2258.     1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 1, 3, 2, 3
  2259. };
  2260.  
  2261. const int8_t ff_dca_channel_reorder_lfe[16][9] = {
  2262.     { 0, -1, -1, -1, -1, -1, -1, -1, -1 },
  2263.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2264.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2265.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2266.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2267.     { 2,  0,  1, -1, -1, -1, -1, -1, -1 },
  2268.     { 0,  1,  3, -1, -1, -1, -1, -1, -1 },
  2269.     { 2,  0,  1,  4, -1, -1, -1, -1, -1 },
  2270.     { 0,  1,  3,  4, -1, -1, -1, -1, -1 },
  2271.     { 2,  0,  1,  4,  5, -1, -1, -1, -1 },
  2272.     { 3,  4,  0,  1,  5,  6, -1, -1, -1 },
  2273.     { 2,  0,  1,  4,  5,  6, -1, -1, -1 },
  2274.     { 0,  6,  4,  5,  2,  3, -1, -1, -1 },
  2275.     { 4,  2,  5,  0,  1,  6,  7, -1, -1 },
  2276.     { 5,  6,  0,  1,  7,  3,  8,  4, -1 },
  2277.     { 4,  2,  5,  0,  1,  6,  8,  7, -1 },
  2278. };
  2279.  
  2280. const int8_t ff_dca_channel_reorder_lfe_xch[16][9] = {
  2281.     { 0,  2, -1, -1, -1, -1, -1, -1, -1 },
  2282.     { 0,  1,  3, -1, -1, -1, -1, -1, -1 },
  2283.     { 0,  1,  3, -1, -1, -1, -1, -1, -1 },
  2284.     { 0,  1,  3, -1, -1, -1, -1, -1, -1 },
  2285.     { 0,  1,  3, -1, -1, -1, -1, -1, -1 },
  2286.     { 2,  0,  1,  4, -1, -1, -1, -1, -1 },
  2287.     { 0,  1,  3,  4, -1, -1, -1, -1, -1 },
  2288.     { 2,  0,  1,  4,  5, -1, -1, -1, -1 },
  2289.     { 0,  1,  4,  5,  3, -1, -1, -1, -1 },
  2290.     { 2,  0,  1,  5,  6,  4, -1, -1, -1 },
  2291.     { 3,  4,  0,  1,  6,  7,  5, -1, -1 },
  2292.     { 2,  0,  1,  4,  5,  6,  7, -1, -1 },
  2293.     { 0,  6,  4,  5,  2,  3,  7, -1, -1 },
  2294.     { 4,  2,  5,  0,  1,  7,  8,  6, -1 },
  2295.     { 5,  6,  0,  1,  8,  3,  9,  4,  7 },
  2296.     { 4,  2,  5,  0,  1,  6,  9,  8,  7 },
  2297. };
  2298.  
  2299. const int8_t ff_dca_channel_reorder_nolfe[16][9] = {
  2300.     { 0, -1, -1, -1, -1, -1, -1, -1, -1 },
  2301.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2302.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2303.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2304.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2305.     { 2,  0,  1, -1, -1, -1, -1, -1, -1 },
  2306.     { 0,  1,  2, -1, -1, -1, -1, -1, -1 },
  2307.     { 2,  0,  1,  3, -1, -1, -1, -1, -1 },
  2308.     { 0,  1,  2,  3, -1, -1, -1, -1, -1 },
  2309.     { 2,  0,  1,  3,  4, -1, -1, -1, -1 },
  2310.     { 2,  3,  0,  1,  4,  5, -1, -1, -1 },
  2311.     { 2,  0,  1,  3,  4,  5, -1, -1, -1 },
  2312.     { 0,  5,  3,  4,  1,  2, -1, -1, -1 },
  2313.     { 3,  2,  4,  0,  1,  5,  6, -1, -1 },
  2314.     { 4,  5,  0,  1,  6,  2,  7,  3, -1 },
  2315.     { 3,  2,  4,  0,  1,  5,  7,  6, -1 },
  2316. };
  2317.  
  2318. const int8_t ff_dca_channel_reorder_nolfe_xch[16][9] = {
  2319.     { 0,  1, -1, -1, -1, -1, -1, -1, -1 },
  2320.     { 0,  1,  2, -1, -1, -1, -1, -1, -1 },
  2321.     { 0,  1,  2, -1, -1, -1, -1, -1, -1 },
  2322.     { 0,  1,  2, -1, -1, -1, -1, -1, -1 },
  2323.     { 0,  1,  2, -1, -1, -1, -1, -1, -1 },
  2324.     { 2,  0,  1,  3, -1, -1, -1, -1, -1 },
  2325.     { 0,  1,  2,  3, -1, -1, -1, -1, -1 },
  2326.     { 2,  0,  1,  3,  4, -1, -1, -1, -1 },
  2327.     { 0,  1,  3,  4,  2, -1, -1, -1, -1 },
  2328.     { 2,  0,  1,  4,  5,  3, -1, -1, -1 },
  2329.     { 2,  3,  0,  1,  5,  6,  4, -1, -1 },
  2330.     { 2,  0,  1,  3,  4,  5,  6, -1, -1 },
  2331.     { 0,  5,  3,  4,  1,  2,  6, -1, -1 },
  2332.     { 3,  2,  4,  0,  1,  6,  7,  5, -1 },
  2333.     { 4,  5,  0,  1,  7,  2,  8,  3,  6 },
  2334.     { 3,  2,  4,  0,  1,  5,  8,  7,  6 },
  2335. };
  2336.  
  2337. const uint16_t ff_dca_vlc_offs[63] = {
  2338.         0,   512,   640,   768,  1282,  1794,  2436,  3080,  3770,  4454,  5364,
  2339.      5372,  5380,  5388,  5392,  5396,  5412,  5420,  5428,  5460,  5492,  5508,
  2340.      5572,  5604,  5668,  5796,  5860,  5892,  6412,  6668,  6796,  7308,  7564,
  2341.      7820,  8076,  8620,  9132,  9388,  9910, 10166, 10680, 11196, 11726, 12240,
  2342.     12752, 13298, 13810, 14326, 14840, 15500, 16022, 16540, 17158, 17678, 18264,
  2343.     18796, 19352, 19926, 20468, 21472, 22398, 23014, 23622,
  2344. };
  2345.