/*
* DCA compatible decoder data
* Copyright (C) 2004 Gildas Bazin
* Copyright (c) 2006 Benjamin Larsson
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/channel_layout.h"
#include "libavutil/mem.h"
#include "dca.h"
#include "dcadata.h"
/* Generic tables */
const uint32_t ff_dca_bit_rates[32] = {
32000, 56000, 64000, 96000, 112000, 128000,
192000, 224000, 256000, 320000, 384000,
448000, 512000, 576000, 640000, 768000,
896000, 1024000, 1152000, 1280000, 1344000,
1408000, 1411200, 1472000, 1536000, 1920000,
2048000, 3072000, 3840000, 1 /* open */, 2 /* variable */, 3 /* lossless */
};
const uint8_t ff_dca_channels[16] = {
1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8
};
const uint8_t ff_dca_bits_per_sample[7] = {
16, 16, 20, 20, 0, 24, 24
};
/* ADPCM data */
/* 16bits signed fractional Q13 binary codes *//* quantization tables */
const uint32_t ff_dca_scale_factor_quant6[64] = {
1, 2, 2, 3, 3, 4, 6, 7,
10, 12, 16, 20, 26, 34, 44, 56,
72, 93, 120, 155, 200, 257, 331, 427,
550, 708, 912, 1175, 1514, 1950, 2512, 3236,
4169, 5370, 6918, 8913, 11482, 14791, 19055, 24547,
31623, 40738, 52481, 67608, 87096, 112202, 144544, 186209,
239883, 309030, 398107, 512861, 660693, 851138, 1096478, 1412538,
1819701, 2344229, 3019952, 3890451, 5011872, 6456542, 8317638, 0
};
const uint32_t ff_dca_scale_factor_quant7[128] = {
1, 1, 2, 2, 2, 2, 3, 3,
3, 4, 4, 5, 6, 7, 7, 8,
10, 11, 12, 14, 16, 18, 20, 23,
26, 30, 34, 38, 44, 50, 56, 64,
72, 82, 93, 106, 120, 136, 155, 176,
200, 226, 257, 292, 331, 376, 427, 484,
550, 624, 708, 804, 912, 1035, 1175, 1334,
1514, 1718, 1950, 2213, 2512, 2851, 3236, 3673,
4169, 4732, 5370, 6095, 6918, 7852, 8913, 10116,
11482, 13032, 14791, 16788, 19055, 21627, 24547, 27861,
31623, 35892, 40738, 46238, 52481, 59566, 67608, 76736,
87096, 98855, 112202, 127350, 144544, 164059, 186209, 211349,
239883, 272270, 309030, 350752, 398107, 451856, 512861, 582103,
660693, 749894, 851138, 966051, 1096478, 1244515, 1412538, 1603245,
1819701, 2065380, 2344229, 2660725, 3019952, 3427678, 3890451, 4415704,
5011872, 5688529, 6456542, 7328245, 8317638, 0, 0, 0
};
/* 20bits unsigned fractional binary codes */
const uint32_t ff_dca_lossy_quant[32] = {
0, 6710886, 4194304, 3355443, 2474639, 2097152, 1761608, 1426063,
796918, 461373, 251658, 146801, 79692, 46137, 27263, 16777,
10486, 5872, 3355, 1887, 1258, 713, 336, 168,
84, 42, 21, 0, 0, 0, 0, 0
};
const float ff_dca_lossy_quant_d[32] = {
0, 1.6, 1.0, 0.8, 0.59, 0.50, 0.42, 0.34,
0.19, 0.11, 0.06, 0.035, 0.019, 0.011, 0.0065, 0.0040,
0.0025, 0.0014, 0.0008, 0.00045, 0.00030, 0.00017, 0.00008, 0.00004,
0.00002, 0.00001, 0.000005, 0, 0, 0, 0, 0
};
/* 20bits unsigned fractional binary codes */
const uint32_t ff_dca_lossless_quant[32] = {
0, 4194304, 2097152, 1384120, 1048576, 696254, 524288, 348127,
262144, 131072, 65431, 33026, 16450, 8208, 4100, 2049,
1024, 512, 256, 128, 64, 32, 16, 8,
4, 2, 1, 0, 0, 0, 0, 0
};
const float ff_dca_lossless_quant_d[32] = {
0, 1.0, 0.5, 0.33, 0.25, 0.166, 0.125,
0.083, 0.0625, 0.03125, 0.0156, 7.874E-3, 3.922E-3, 1.957E-3,
9.775E-4, 4.885E-4, 2.442E-4, 1.221E-4, 6.104E-5, 3.052E-5, 1.526E-5,
7.629E-6, 3.815E-6, 1.907E-6, 9.537E-7, 4.768E-7, 2.384E-7, 0,
0, 0, 0, 0
};
/* Vector quantization tables *//* FIR filter coefficients, they can be cut on half and maybe use float instead of double */
DECLARE_ALIGNED(16, const float, ff_dca_fir_32bands_perfect)[512] = {
+1.135985195E-010,
+7.018770981E-011,
-1.608403011E-008,
-5.083275667E-008,
-1.543309907E-007,
-3.961981463E-007,
-7.342250683E-007,
-3.970030775E-007,
-4.741137047E-007,
-6.022448247E-007,
-6.628192182E-007,
-6.982898526E-007,
-7.020648809E-007,
-6.767839409E-007,
-6.262345096E-007,
-5.564140224E-007,
+7.003467317E-007,
+8.419976893E-007,
+9.742954035E-007,
+1.085227950E-006,
+1.162929266E-006,
+1.194632091E-006,
+1.179182050E-006,
+1.033426656E-006,
+9.451737242E-007,
+1.975324267E-006,
+1.190443072E-006,
+5.234479659E-007,
+2.014677420E-007,
+7.834767501E-008,
-6.702406963E-010,
-1.613285505E-009,
-2.682709610E-009,
-3.399493131E-009,
+1.314406006E-008,
+7.506701927E-009,
+2.788728892E-008,
+1.444918922E-007,
+3.132386439E-007,
+1.399798180E-006,
+2.032118118E-006,
+2.715013807E-006,
+3.453840463E-006,
+4.195037945E-006,
+4.896494374E-006,
+5.516381407E-006,
+6.015239251E-006,
+6.361419310E-006,
+8.006985809E-006,
+8.087732567E-006,
+7.941360309E-006,
+7.568834008E-006,
+6.986399967E-006,
+6.225028756E-006,
+5.315936960E-006,
+4.429412002E-006,
+3.332600045E-006,
+8.427224429E-007,
+4.341498823E-007,
+9.458596395E-008,
+2.975164826E-008,
+6.402664354E-008,
-3.246264413E-008,
-3.809887872E-008,
+8.434094667E-008,
+6.437721822E-008,
+1.189317118E-006,
+2.497214155E-006,
+3.617151151E-006,
+3.157242645E-006,
+2.319611212E-006,
+7.869333785E-006,
+9.826449968E-006,
+1.177108606E-005,
+1.379448349E-005,
+1.571428584E-005,
+1.743183020E-005,
+1.884208177E-005,
+1.987093310E-005,
+2.042970118E-005,
-3.144468428E-005,
-3.334947178E-005,
-3.460439257E-005,
-3.515914432E-005,
-3.495384954E-005,
-3.397853652E-005,
-3.225446198E-005,
-2.978993689E-005,
-2.677291741E-005,
-1.806914770E-005,
-1.776598037E-005,
-1.661818715E-005,
-1.207003334E-005,
-6.993315310E-006,
-5.633860383E-007,
-9.984935332E-007,
-1.470520488E-006,
-1.853591357E-006,
+7.198007665E-007,
+3.086857760E-006,
+6.084746474E-006,
+9.561075785E-006,
+1.309637537E-005,
+2.263354872E-005,
+2.847247197E-005,
+3.415624451E-005,
+3.946387005E-005,
+4.425736552E-005,
+4.839275425E-005,
+5.176846025E-005,
+5.429694284E-005,
+5.595519906E-005,
+4.916387297E-006,
+9.299508747E-006,
+1.356193479E-005,
+1.751866148E-005,
+2.093936746E-005,
+2.362549276E-005,
+2.537086584E-005,
+2.618136386E-005,
+2.554462844E-005,
+3.018750249E-005,
+2.570833203E-005,
+1.985177369E-005,
+1.191342653E-005,
+2.525620175E-006,
-1.521241393E-005,
-1.617751332E-005,
+1.992636317E-005,
+1.774702469E-005,
+4.624524081E-005,
+5.610509834E-005,
+6.568001118E-005,
+7.513730816E-005,
+8.413690375E-005,
+8.757545584E-005,
+9.517164290E-005,
+1.020687996E-004,
+1.084438481E-004,
+1.140582463E-004,
+1.187910311E-004,
+1.224978914E-004,
+1.250260248E-004,
+1.262027217E-004,
+1.226499153E-004,
+1.213575742E-004,
+1.180980107E-004,
+1.126275165E-004,
+1.047207043E-004,
+9.417100227E-005,
+8.078388782E-005,
+6.447290798E-005,
+4.491530854E-005,
+2.470704203E-005,
-1.714242217E-006,
-3.193307566E-005,
-6.541742187E-005,
-1.024175072E-004,
-1.312203676E-004,
-1.774113771E-004,
-2.233728592E-004,
-2.682086197E-004,
-3.347633174E-004,
-3.906481725E-004,
-4.490280990E-004,
-5.099929986E-004,
-5.729619297E-004,
-6.358824321E-004,
-7.021900383E-004,
-7.698345580E-004,
-8.385353722E-004,
-9.078957955E-004,
-9.775133803E-004,
-1.046945457E-003,
-1.115717343E-003,
-1.183370827E-003,
-1.252829796E-003,
-1.316190348E-003,
-1.376571832E-003,
-1.433344092E-003,
-1.485876855E-003,
-1.533520175E-003,
-1.575609902E-003,
-1.611457788E-003,
-1.640390139E-003,
-1.661288203E-003,
-1.674512983E-003,
-1.678415807E-003,
-1.672798418E-003,
-1.656501088E-003,
-1.633993932E-003,
-1.593449386E-003,
+1.542080659E-003,
+1.479332102E-003,
+1.395521569E-003,
+1.303116791E-003,
+1.196175464E-003,
+1.073757303E-003,
+9.358961834E-004,
+7.817269652E-004,
+6.114174030E-004,
+4.244441516E-004,
+2.206075296E-004,
-2.719412748E-007,
-2.382978710E-004,
-4.935106263E-004,
-7.658848190E-004,
-1.055365428E-003,
-1.361547387E-003,
-1.684492454E-003,
-2.023874084E-003,
-2.379294252E-003,
-2.750317100E-003,
-3.136433195E-003,
-3.537061159E-003,
-3.951539751E-003,
-4.379155114E-003,
-4.819062538E-003,
-5.270531867E-003,
-5.732392892E-003,
-6.203945260E-003,
-6.683901884E-003,
-7.170005701E-003,
-7.664063945E-003,
-8.162760176E-003,
-8.665001951E-003,
-9.170533158E-003,
-9.676489048E-003,
-1.018219907E-002,
-1.068630442E-002,
-1.118756086E-002,
-1.168460958E-002,
-1.217562053E-002,
-1.265939046E-002,
-1.313448418E-002,
-1.359948888E-002,
-1.405300573E-002,
-1.449365262E-002,
-1.492007636E-002,
-1.533095632E-002,
-1.572482102E-002,
-1.610082202E-002,
-1.645756140E-002,
-1.679391414E-002,
-1.710879989E-002,
-1.740120351E-002,
-1.767017506E-002,
-1.791484281E-002,
-1.813439466E-002,
-1.832821220E-002,
-1.849545911E-002,
-1.863567345E-002,
-1.874836907E-002,
-1.883326657E-002,
-1.889026538E-002,
-1.891860925E-002,
+1.891860925E-002,
+1.889026538E-002,
+1.883326657E-002,
+1.874836907E-002,
+1.863567345E-002,
+1.849545911E-002,
+1.832821220E-002,
+1.813439466E-002,
+1.791484281E-002,
+1.767017506E-002,
+1.740120351E-002,
+1.710879989E-002,
+1.679391414E-002,
+1.645756140E-002,
+1.610082202E-002,
+1.572482102E-002,
+1.533095632E-002,
+1.492007636E-002,
+1.449365262E-002,
+1.405300573E-002,
+1.359948888E-002,
+1.313448418E-002,
+1.265939046E-002,
+1.217562053E-002,
+1.168460958E-002,
+1.118756086E-002,
+1.068630442E-002,
+1.018219907E-002,
+9.676489048E-003,
+9.170533158E-003,
+8.665001951E-003,
+8.162760176E-003,
+7.664063945E-003,
+7.170005701E-003,
+6.683901884E-003,
+6.203945260E-003,
+5.732392892E-003,
+5.270531867E-003,
+4.819062538E-003,
+4.379155114E-003,
+3.951539751E-003,
+3.537061159E-003,
+3.136433195E-003,
+2.750317100E-003,
+2.379294252E-003,
+2.023874084E-003,
+1.684492454E-003,
+1.361547387E-003,
+1.055365428E-003,
+7.658848190E-004,
+4.935106263E-004,
+2.382978710E-004,
+2.719412748E-007,
-2.206075296E-004,
-4.244441516E-004,
-6.114174030E-004,
-7.817269652E-004,
-9.358961834E-004,
-1.073757303E-003,
-1.196175464E-003,
-1.303116791E-003,
-1.395521569E-003,
-1.479332102E-003,
-1.542080659E-003,
+1.593449386E-003,
+1.633993932E-003,
+1.656501088E-003,
+1.672798418E-003,
+1.678415807E-003,
+1.674512983E-003,
+1.661288203E-003,
+1.640390139E-003,
+1.611457788E-003,
+1.575609902E-003,
+1.533520175E-003,
+1.485876855E-003,
+1.433344092E-003,
+1.376571832E-003,
+1.316190348E-003,
+1.252829796E-003,
+1.183370827E-003,
+1.115717343E-003,
+1.046945457E-003,
+9.775133803E-004,
+9.078957955E-004,
+8.385353722E-004,
+7.698345580E-004,
+7.021900383E-004,
+6.358824321E-004,
+5.729619297E-004,
+5.099929986E-004,
+4.490280990E-004,
+3.906481725E-004,
+3.347633174E-004,
+2.682086197E-004,
+2.233728592E-004,
+1.774113771E-004,
+1.312203676E-004,
+1.024175072E-004,
+6.541742187E-005,
+3.193307566E-005,
+1.714242217E-006,
-2.470704203E-005,
-4.491530854E-005,
-6.447290798E-005,
-8.078388782E-005,
-9.417100227E-005,
-1.047207043E-004,
-1.126275165E-004,
-1.180980107E-004,
-1.213575742E-004,
-1.226499153E-004,
-1.262027217E-004,
-1.250260248E-004,
-1.224978914E-004,
-1.187910311E-004,
-1.140582463E-004,
-1.084438481E-004,
-1.020687996E-004,
-9.517164290E-005,
-8.757545584E-005,
-8.413690375E-005,
-7.513730816E-005,
-6.568001118E-005,
-5.610509834E-005,
-4.624524081E-005,
-1.774702469E-005,
-1.992636317E-005,
+1.617751332E-005,
+1.521241393E-005,
-2.525620175E-006,
-1.191342653E-005,
-1.985177369E-005,
-2.570833203E-005,
-3.018750249E-005,
-2.554462844E-005,
-2.618136386E-005,
-2.537086584E-005,
-2.362549276E-005,
-2.093936746E-005,
-1.751866148E-005,
-1.356193479E-005,
-9.299508747E-006,
-4.916387297E-006,
-5.595519906E-005,
-5.429694284E-005,
-5.176846025E-005,
-4.839275425E-005,
-4.425736552E-005,
-3.946387005E-005,
-3.415624451E-005,
-2.847247197E-005,
-2.263354872E-005,
-1.309637537E-005,
-9.561075785E-006,
-6.084746474E-006,
-3.086857760E-006,
-7.198007665E-007,
+1.853591357E-006,
+1.470520488E-006,
+9.984935332E-007,
+5.633860383E-007,
+6.993315310E-006,
+1.207003334E-005,
+1.661818715E-005,
+1.776598037E-005,
+1.806914770E-005,
+2.677291741E-005,
+2.978993689E-005,
+3.225446198E-005,
+3.397853652E-005,
+3.495384954E-005,
+3.515914432E-005,
+3.460439257E-005,
+3.334947178E-005,
+3.144468428E-005,
-2.042970118E-005,
-1.987093310E-005,
-1.884208177E-005,
-1.743183020E-005,
-1.571428584E-005,
-1.379448349E-005,
-1.177108606E-005,
-9.826449968E-006,
-7.869333785E-006,
-2.319611212E-006,
-3.157242645E-006,
-3.617151151E-006,
-2.497214155E-006,
-1.189317118E-006,
-6.437721822E-008,
-8.434094667E-008,
+3.809887872E-008,
+3.246264413E-008,
-6.402664354E-008,
-2.975164826E-008,
-9.458596395E-008,
-4.341498823E-007,
-8.427224429E-007,
-3.332600045E-006,
-4.429412002E-006,
-5.315936960E-006,
-6.225028756E-006,
-6.986399967E-006,
-7.568834008E-006,
-7.941360309E-006,
-8.087732567E-006,
-8.006985809E-006,
-6.361419310E-006,
-6.015239251E-006,
-5.516381407E-006,
-4.896494374E-006,
-4.195037945E-006,
-3.453840463E-006,
-2.715013807E-006,
-2.032118118E-006,
-1.399798180E-006,
-3.132386439E-007,
-1.444918922E-007,
-2.788728892E-008,
-7.506701927E-009,
-1.314406006E-008,
+3.399493131E-009,
+2.682709610E-009,
+1.613285505E-009,
+6.702406963E-010,
-7.834767501E-008,
-2.014677420E-007,
-5.234479659E-007,
-1.190443072E-006,
-1.975324267E-006,
-9.451737242E-007,
-1.033426656E-006,
-1.179182050E-006,
-1.194632091E-006,
-1.162929266E-006,
-1.085227950E-006,
-9.742954035E-007,
-8.419976893E-007,
-7.003467317E-007,
+5.564140224E-007,
+6.262345096E-007,
+6.767839409E-007,
+7.020648809E-007,
+6.982898526E-007,
+6.628192182E-007,
+6.022448247E-007,
+4.741137047E-007,
+3.970030775E-007,
+7.342250683E-007,
+3.961981463E-007,
+1.543309907E-007,
+5.083275667E-008,
+1.608403011E-008,
-7.018770981E-011,
-1.135985195E-010
};
DECLARE_ALIGNED(16, const float, ff_dca_fir_32bands_nonperfect)[512] = {
-1.390191784E-007,
-1.693738625E-007,
-2.030677564E-007,
-2.404238444E-007,
-2.818143514E-007,
-3.276689142E-007,
-3.784752209E-007,
-4.347855338E-007,
-4.972276315E-007,
-5.665120852E-007,
-6.434325428E-007,
-7.288739425E-007,
-8.238164355E-007,
-9.293416952E-007,
-1.046637067E-006,
-1.176999604E-006,
-1.321840614E-006,
-1.482681114E-006,
-1.661159786E-006,
-1.859034001E-006,
-2.078171747E-006,
-2.320550948E-006,
-2.588257530E-006,
-2.883470643E-006,
-3.208459020E-006,
-3.565570978E-006,
-3.957220997E-006,
-4.385879038E-006,
-4.854050530E-006,
-5.364252502E-006,
-5.918994248E-006,
-6.520755960E-006,
-7.171964626E-006,
-7.874960829E-006,
-8.631964192E-006,
-9.445050637E-006,
-1.031611009E-005,
-1.124680875E-005,
-1.223855270E-005,
-1.329243969E-005,
-1.440921824E-005,
-1.558924305E-005,
-1.683242772E-005,
-1.813820381E-005,
-1.950545993E-005,
-2.093250441E-005,
-2.241701623E-005,
-2.395598858E-005,
-2.554569073E-005,
-2.718161704E-005,
-2.885844333E-005,
-3.056998685E-005,
-3.230916263E-005,
-3.406793985E-005,
-3.583733633E-005,
-3.760734762E-005,
-3.936696885E-005,
-4.110412556E-005,
-4.280570283E-005,
-4.445751256E-005,
-4.604430433E-005,
-4.754976908E-005,
-4.895655002E-005,
-5.024627535E-005,
+5.139957648E-005,
+5.239612074E-005,
+5.321469871E-005,
+5.383323878E-005,
+5.422891263E-005,
+5.437819709E-005,
+5.425697600E-005,
+5.384063843E-005,
+5.310418419E-005,
+5.202236207E-005,
+5.056979353E-005,
+4.872112549E-005,
+4.645117951E-005,
+4.373511547E-005,
+4.054862075E-005,
+3.686808850E-005,
+3.267079956E-005,
+2.793515523E-005,
+2.264085742E-005,
+1.676913780E-005,
+1.030297699E-005,
+3.227306706E-006,
-4.470633485E-006,
-1.280130618E-005,
-2.177240640E-005,
-3.138873581E-005,
-4.165195787E-005,
-5.256036457E-005,
-6.410864444E-005,
-7.628766616E-005,
-8.908427117E-005,
-1.024810626E-004,
-1.164562127E-004,
-1.309833024E-004,
-1.460311323E-004,
-1.615635992E-004,
-1.775395358E-004,
-1.939126523E-004,
-2.106313768E-004,
-2.276388550E-004,
-2.448728774E-004,
-2.622658503E-004,
-2.797449124E-004,
-2.972317743E-004,
-3.146430245E-004,
-3.318900708E-004,
-3.488793736E-004,
-3.655125911E-004,
-3.816867538E-004,
-3.972945851E-004,
-4.122247046E-004,
-4.263620067E-004,
-4.395879805E-004,
-4.517810594E-004,
-4.628172028E-004,
-4.725702747E-004,
-4.809123348E-004,
-4.877146275E-004,
-4.928477574E-004,
-4.961824161E-004,
-4.975944757E-004,
-4.969481961E-004,
-4.941228544E-004,
-4.889960401E-004,
+4.814492422E-004,
+4.713678791E-004,
+4.586426076E-004,
+4.431701091E-004,
+4.248536134E-004,
+4.036037717E-004,
+3.793396754E-004,
+3.519894381E-004,
+3.214911267E-004,
+2.877934603E-004,
+2.508567995E-004,
+2.106537577E-004,
+1.671699720E-004,
+1.204049113E-004,
+7.037253090E-005,
+1.710198012E-005,
-3.936182839E-005,
-9.895755647E-005,
-1.616069785E-004,
-2.272142592E-004,
-2.956659591E-004,
-3.668301215E-004,
-4.405563814E-004,
-5.166754709E-004,
-5.949990009E-004,
-6.753197522E-004,
-7.574109477E-004,
-8.410271257E-004,
-9.259034996E-004,
-1.011756598E-003,
-1.098284614E-003,
-1.185167348E-003,
-1.272067428E-003,
-1.358630019E-003,
-1.444484224E-003,
-1.529243193E-003,
-1.612505526E-003,
-1.693855622E-003,
-1.772865304E-003,
-1.849094522E-003,
-1.922092517E-003,
-1.991399564E-003,
-2.056547208E-003,
-2.117061289E-003,
-2.172462177E-003,
-2.222266514E-003,
-2.265989315E-003,
-2.303145360E-003,
-2.333251061E-003,
-2.355825622E-003,
-2.370394068E-003,
-2.376487479E-003,
-2.373647178E-003,
-2.361423569E-003,
-2.339380793E-003,
-2.307097195E-003,
-2.264167881E-003,
-2.210205887E-003,
-2.144844970E-003,
-2.067740774E-003,
-1.978572691E-003,
-1.877046190E-003,
-1.762894331E-003,
-1.635878929E-003,
+1.495792647E-003,
+1.342460280E-003,
+1.175740734E-003,
+9.955273708E-004,
+8.017504588E-004,
+5.943773431E-004,
+3.734139318E-004,
+1.389056415E-004,
-1.090620208E-004,
-3.703625989E-004,
-6.448282511E-004,
-9.322494152E-004,
-1.232374110E-003,
-1.544908970E-003,
-1.869517611E-003,
-2.205822384E-003,
-2.553403843E-003,
-2.911801683E-003,
-3.280514618E-003,
-3.659002949E-003,
-4.046686925E-003,
-4.442950245E-003,
-4.847140983E-003,
-5.258570891E-003,
-5.676518660E-003,
-6.100233644E-003,
-6.528933067E-003,
-6.961807609E-003,
-7.398022339E-003,
-7.836719044E-003,
-8.277016692E-003,
-8.718019351E-003,
-9.158811532E-003,
-9.598465636E-003,
-1.003604382E-002,
-1.047059800E-002,
-1.090117730E-002,
-1.132682897E-002,
-1.174659748E-002,
-1.215953380E-002,
-1.256469358E-002,
-1.296114177E-002,
-1.334795821E-002,
-1.372423489E-002,
-1.408908330E-002,
-1.444163360E-002,
-1.478104480E-002,
-1.510649733E-002,
-1.541720331E-002,
-1.571240649E-002,
-1.599138230E-002,
-1.625344716E-002,
-1.649795473E-002,
-1.672429405E-002,
-1.693190821E-002,
-1.712027565E-002,
-1.728892699E-002,
-1.743743755E-002,
-1.756543480E-002,
-1.767260395E-002,
-1.775865816E-002,
-1.782339066E-002,
-1.786663756E-002,
-1.788828894E-002,
+1.788828894E-002,
+1.786663756E-002,
+1.782339066E-002,
+1.775865816E-002,
+1.767260395E-002,
+1.756543480E-002,
+1.743743755E-002,
+1.728892699E-002,
+1.712027565E-002,
+1.693190821E-002,
+1.672429405E-002,
+1.649795473E-002,
+1.625344716E-002,
+1.599138230E-002,
+1.571240649E-002,
+1.541720331E-002,
+1.510649733E-002,
+1.478104480E-002,
+1.444163360E-002,
+1.408908330E-002,
+1.372423489E-002,
+1.334795821E-002,
+1.296114177E-002,
+1.256469358E-002,
+1.215953380E-002,
+1.174659748E-002,
+1.132682897E-002,
+1.090117730E-002,
+1.047059800E-002,
+1.003604382E-002,
+9.598465636E-003,
+9.158811532E-003,
+8.718019351E-003,
+8.277016692E-003,
+7.836719044E-003,
+7.398022339E-003,
+6.961807609E-003,
+6.528933067E-003,
+6.100233644E-003,
+5.676518660E-003,
+5.258570891E-003,
+4.847140983E-003,
+4.442950245E-003,
+4.046686925E-003,
+3.659002949E-003,
+3.280514618E-003,
+2.911801683E-003,
+2.553403843E-003,
+2.205822384E-003,
+1.869517611E-003,
+1.544908970E-003,
+1.232374110E-003,
+9.322494152E-004,
+6.448282511E-004,
+3.703625989E-004,
+1.090620208E-004,
-1.389056415E-004,
-3.734139318E-004,
-5.943773431E-004,
-8.017504588E-004,
-9.955273708E-004,
-1.175740734E-003,
-1.342460280E-003,
-1.495792647E-003,
+1.635878929E-003,
+1.762894331E-003,
+1.877046190E-003,
+1.978572691E-003,
+2.067740774E-003,
+2.144844970E-003,
+2.210205887E-003,
+2.264167881E-003,
+2.307097195E-003,
+2.339380793E-003,
+2.361423569E-003,
+2.373647178E-003,
+2.376487479E-003,
+2.370394068E-003,
+2.355825622E-003,
+2.333251061E-003,
+2.303145360E-003,
+2.265989315E-003,
+2.222266514E-003,
+2.172462177E-003,
+2.117061289E-003,
+2.056547208E-003,
+1.991399564E-003,
+1.922092517E-003,
+1.849094522E-003,
+1.772865304E-003,
+1.693855622E-003,
+1.612505526E-003,
+1.529243193E-003,
+1.444484224E-003,
+1.358630019E-003,
+1.272067428E-003,
+1.185167348E-003,
+1.098284614E-003,
+1.011756598E-003,
+9.259034996E-004,
+8.410271257E-004,
+7.574109477E-004,
+6.753197522E-004,
+5.949990009E-004,
+5.166754709E-004,
+4.405563814E-004,
+3.668301215E-004,
+2.956659591E-004,
+2.272142592E-004,
+1.616069785E-004,
+9.895755647E-005,
+3.936182839E-005,
-1.710198012E-005,
-7.037253090E-005,
-1.204049113E-004,
-1.671699720E-004,
-2.106537577E-004,
-2.508567995E-004,
-2.877934603E-004,
-3.214911267E-004,
-3.519894381E-004,
-3.793396754E-004,
-4.036037717E-004,
-4.248536134E-004,
-4.431701091E-004,
-4.586426076E-004,
-4.713678791E-004,
-4.814492422E-004,
+4.889960401E-004,
+4.941228544E-004,
+4.969481961E-004,
+4.975944757E-004,
+4.961824161E-004,
+4.928477574E-004,
+4.877146275E-004,
+4.809123348E-004,
+4.725702747E-004,
+4.628172028E-004,
+4.517810594E-004,
+4.395879805E-004,
+4.263620067E-004,
+4.122247046E-004,
+3.972945851E-004,
+3.816867538E-004,
+3.655125911E-004,
+3.488793736E-004,
+3.318900708E-004,
+3.146430245E-004,
+2.972317743E-004,
+2.797449124E-004,
+2.622658503E-004,
+2.448728774E-004,
+2.276388550E-004,
+2.106313768E-004,
+1.939126523E-004,
+1.775395358E-004,
+1.615635992E-004,
+1.460311323E-004,
+1.309833024E-004,
+1.164562127E-004,
+1.024810626E-004,
+8.908427117E-005,
+7.628766616E-005,
+6.410864444E-005,
+5.256036457E-005,
+4.165195787E-005,
+3.138873581E-005,
+2.177240640E-005,
+1.280130618E-005,
+4.470633485E-006,
-3.227306706E-006,
-1.030297699E-005,
-1.676913780E-005,
-2.264085742E-005,
-2.793515523E-005,
-3.267079956E-005,
-3.686808850E-005,
-4.054862075E-005,
-4.373511547E-005,
-4.645117951E-005,
-4.872112549E-005,
-5.056979353E-005,
-5.202236207E-005,
-5.310418419E-005,
-5.384063843E-005,
-5.425697600E-005,
-5.437819709E-005,
-5.422891263E-005,
-5.383323878E-005,
-5.321469871E-005,
-5.239612074E-005,
-5.139957648E-005,
+5.024627535E-005,
+4.895655002E-005,
+4.754976908E-005,
+4.604430433E-005,
+4.445751256E-005,
+4.280570283E-005,
+4.110412556E-005,
+3.936696885E-005,
+3.760734762E-005,
+3.583733633E-005,
+3.406793985E-005,
+3.230916263E-005,
+3.056998685E-005,
+2.885844333E-005,
+2.718161704E-005,
+2.554569073E-005,
+2.395598858E-005,
+2.241701623E-005,
+2.093250441E-005,
+1.950545993E-005,
+1.813820381E-005,
+1.683242772E-005,
+1.558924305E-005,
+1.440921824E-005,
+1.329243969E-005,
+1.223855270E-005,
+1.124680875E-005,
+1.031611009E-005,
+9.445050637E-006,
+8.631964192E-006,
+7.874960829E-006,
+7.171964626E-006,
+6.520755960E-006,
+5.918994248E-006,
+5.364252502E-006,
+4.854050530E-006,
+4.385879038E-006,
+3.957220997E-006,
+3.565570978E-006,
+3.208459020E-006,
+2.883470643E-006,
+2.588257530E-006,
+2.320550948E-006,
+2.078171747E-006,
+1.859034001E-006,
+1.661159786E-006,
+1.482681114E-006,
+1.321840614E-006,
+1.176999604E-006,
+1.046637067E-006,
+9.293416952E-007,
+8.238164355E-007,
+7.288739425E-007,
+6.434325428E-007,
+5.665120852E-007,
+4.972276315E-007,
+4.347855338E-007,
+3.784752209E-007,
+3.276689142E-007,
+2.818143514E-007,
+2.404238444E-007,
+2.030677564E-007,
+1.693738625E-007,
+1.390191784E-007
};
/* pre-scale lfe fir coefficients
*
* Permuted compared to table D.8 in the spec. First, the table in the
* spec has twice the number of coefficients, but they are reflected,
* T[i] = T[511 - i]. Furthermore, the indices are permuted, so that
*
* lfe_fir_64[8 * k + j] = T[64 * j + k]
*
* for 0 <= k < 32 and 0 <= j < 8. (This corresponds to adding a
* leading zero to the 8-bit index, and rotating it right by 3 bits
* as a 9-bit field). Values with j >= 4 can be reflected, as
*
* lfe_fir_64[8 * k + j] = T[64 * (7 - j) + (63 - k)]
*
* so all values in T get included. */
#define SCALE(c) ((c) / (256.0f * 32768.0f))
DECLARE_ALIGNED(16, const float, ff_dca_lfe_fir_64)[256] = {
SCALE(2.658434386830777e-4), SCALE(9.029330685734748e-3),
SCALE(7.939263433218002e-2), SCALE(2.425158768892288e-1),
SCALE(3.430179357528686e-1), SCALE(2.398228943347931e-1),
SCALE(7.746443897485733e-2), SCALE(8.622321300208569e-3),
SCALE(8.179365249816328e-5), SCALE(9.450953453779220e-3),
SCALE(8.134882897138596e-2), SCALE(2.451938837766648e-1),
SCALE(3.429597318172455e-1), SCALE(2.371159791946411e-1),
SCALE(7.556436210870743e-2), SCALE(8.229630999267101e-3),
SCALE(9.439323912374676e-5), SCALE(9.887560270726680e-3),
SCALE(8.333285897970200e-2), SCALE(2.478559017181396e-1),
SCALE(3.428434133529663e-1), SCALE(2.343961596488952e-1),
SCALE(7.369252294301987e-2), SCALE(7.850865833461285e-3),
SCALE(1.082170274457894e-4), SCALE(1.033949479460716e-2),
SCALE(8.534456789493561e-2), SCALE(2.505008876323700e-1),
SCALE(3.426689505577088e-1), SCALE(2.316644787788391e-1),
SCALE(7.184901088476181e-2), SCALE(7.485736627131701e-3),
SCALE(1.233371440321207e-4), SCALE(1.080708485096693e-2),
SCALE(8.738376945257187e-2), SCALE(2.531278133392334e-1),
SCALE(3.424364924430847e-1), SCALE(2.289219647645950e-1),
SCALE(7.003392279148102e-2), SCALE(7.133882027119398e-3),
SCALE(1.397485757479444e-4), SCALE(1.129068247973919e-2),
SCALE(8.945026248693466e-2), SCALE(2.557355761528015e-1),
SCALE(3.421461284160614e-1), SCALE(2.261696159839630e-1),
SCALE(6.824731826782227e-2), SCALE(6.794991903007030e-3),
SCALE(1.575958012836054e-4), SCALE(1.179065089672804e-2),
SCALE(9.154383838176728e-2), SCALE(2.583232223987580e-1),
SCALE(3.417979776859284e-1), SCALE(2.234084606170654e-1),
SCALE(6.648923456668854e-2), SCALE(6.468691397458315e-3),
SCALE(1.769922382663936e-4), SCALE(1.230732165277004e-2),
SCALE(9.366425126791000e-2), SCALE(2.608896791934967e-1),
SCALE(3.413922190666198e-1), SCALE(2.206395119428635e-1),
SCALE(6.475970894098282e-2), SCALE(6.154712289571762e-3),
SCALE(1.981738605536520e-4), SCALE(1.284105982631445e-2),
SCALE(9.581124037504196e-2), SCALE(2.634339034557342e-1),
SCALE(3.409290313720703e-1), SCALE(2.178637981414795e-1),
SCALE(6.305878609418869e-2), SCALE(5.852684378623962e-3),
SCALE(2.211847313446924e-4), SCALE(1.339218579232693e-2),
SCALE(9.798453748226166e-2), SCALE(2.659549415111542e-1),
SCALE(3.404086530208588e-1), SCALE(2.150822728872299e-1),
SCALE(6.138643622398376e-2), SCALE(5.562345497310162e-3),
SCALE(2.460231189616024e-4), SCALE(1.396108977496624e-2),
SCALE(1.001838669180870e-1), SCALE(2.684516608715058e-1),
SCALE(3.398312926292420e-1), SCALE(2.122959494590759e-1),
SCALE(5.974265560507774e-2), SCALE(5.283284001052380e-3),
SCALE(2.726115926634520e-4), SCALE(1.454808749258518e-2),
SCALE(1.024089083075523e-1), SCALE(2.709231376647949e-1),
SCALE(3.391972482204438e-1), SCALE(2.095058411359787e-1),
SCALE(5.812742188572884e-2), SCALE(5.015311297029257e-3),
SCALE(3.013863170053810e-4), SCALE(1.515355054289102e-2),
SCALE(1.046593263745308e-1), SCALE(2.733682692050934e-1),
SCALE(3.385068178176880e-1), SCALE(2.067128717899322e-1),
SCALE(5.654069408774376e-2), SCALE(4.758012015372515e-3),
SCALE(3.328395541757345e-4), SCALE(1.577781140804291e-2),
SCALE(1.069347932934761e-1), SCALE(2.757860720157624e-1),
SCALE(3.377602994441986e-1), SCALE(2.039180546998978e-1),
SCALE(5.498242005705833e-2), SCALE(4.511159844696522e-3),
SCALE(3.658991190604866e-4), SCALE(1.642123050987720e-2),
SCALE(1.092349365353584e-1), SCALE(2.781755328178406e-1),
SCALE(3.369580209255218e-1), SCALE(2.011223286390304e-1),
SCALE(5.345252528786659e-2), SCALE(4.274417180567980e-3),
SCALE(4.018281470052898e-4), SCALE(1.708412915468216e-2),
SCALE(1.115593686699867e-1), SCALE(2.805356979370117e-1),
SCALE(3.361004292964936e-1), SCALE(1.983266174793244e-1),
SCALE(5.195093154907227e-2), SCALE(4.047499038279056e-3),
SCALE(4.401875485200435e-4), SCALE(1.776690222322941e-2),
SCALE(1.139076948165894e-1), SCALE(2.828655838966370e-1),
SCALE(3.351879119873047e-1), SCALE(1.955319195985794e-1),
SCALE(5.047753453254700e-2), SCALE(3.830091329291463e-3),
SCALE(4.812776169274002e-4), SCALE(1.846982724964619e-2),
SCALE(1.162794977426529e-1), SCALE(2.851640880107880e-1),
SCALE(3.342207968235016e-1), SCALE(1.927391141653061e-1),
SCALE(4.903224110603333e-2), SCALE(3.621967276558280e-3),
SCALE(5.252459668554366e-4), SCALE(1.919330470263958e-2),
SCALE(1.186743453145027e-1), SCALE(2.874303460121155e-1),
SCALE(3.331996202468872e-1), SCALE(1.899491697549820e-1),
SCALE(4.761491715908051e-2), SCALE(3.422776935622096e-3),
SCALE(5.721592460758984e-4), SCALE(1.993762329220772e-2),
SCALE(1.210917681455612e-1), SCALE(2.896633744239807e-1),
SCALE(3.321248590946198e-1), SCALE(1.871629506349564e-1),
SCALE(4.622544348239899e-2), SCALE(3.232272574678064e-3),
SCALE(6.222130032256246e-4), SCALE(2.070316113531590e-2),
SCALE(1.235313042998314e-1), SCALE(2.918621897697448e-1),
SCALE(3.309969604015350e-1), SCALE(1.843813359737396e-1),
SCALE(4.486365616321564e-2), SCALE(3.050152910873294e-3),
SCALE(6.755515350960195e-4), SCALE(2.149021252989769e-2),
SCALE(1.259924471378326e-1), SCALE(2.940258979797364e-1),
SCALE(3.298164308071136e-1), SCALE(1.816052496433258e-1),
SCALE(4.352942481637001e-2), SCALE(2.876190468668938e-3),
SCALE(7.324148900806904e-4), SCALE(2.229913882911205e-2),
SCALE(1.284746825695038e-1), SCALE(2.961534857749939e-1),
SCALE(3.285838961601258e-1), SCALE(1.788355410099030e-1),
SCALE(4.222255200147629e-2), SCALE(2.710093278437853e-3),
SCALE(7.928516715764999e-4), SCALE(2.313023805618286e-2),
SCALE(1.309774816036224e-1), SCALE(2.982441186904907e-1),
SCALE(3.272998929023742e-1), SCALE(1.760730892419815e-1),
SCALE(4.094288870692253e-2), SCALE(2.551567042246461e-3),
SCALE(8.570110658183694e-4), SCALE(2.398385666310787e-2),
SCALE(1.335003077983856e-1), SCALE(3.002967536449432e-1),
SCALE(3.259649574756622e-1), SCALE(1.733186990022659e-1),
SCALE(3.969023004174232e-2), SCALE(2.400433411821723e-3),
SCALE(9.251192095689476e-4), SCALE(2.486028522253036e-2),
SCALE(1.360425949096680e-1), SCALE(3.023106753826142e-1),
SCALE(3.245797157287598e-1), SCALE(1.705732345581055e-1),
SCALE(3.846437484025955e-2), SCALE(2.256359672173858e-3),
SCALE(9.974770946428180e-4), SCALE(2.575986087322235e-2),
SCALE(1.386037617921829e-1), SCALE(3.042849004268646e-1),
SCALE(3.231448531150818e-1), SCALE(1.678375005722046e-1),
SCALE(3.726511076092720e-2), SCALE(2.119151875376701e-3),
SCALE(1.073930296115577e-3), SCALE(2.668286114931106e-2),
SCALE(1.411831974983215e-1), SCALE(3.062185347080230e-1),
SCALE(3.216609656810760e-1), SCALE(1.651122719049454e-1),
SCALE(3.609224036335945e-2), SCALE(1.988604199141264e-3),
SCALE(1.155023579485714e-3), SCALE(2.762960828840732e-2),
SCALE(1.437802612781525e-1), SCALE(3.081108033657074e-1),
SCALE(3.201287388801574e-1), SCALE(1.623983532190323e-1),
SCALE(3.494550660252571e-2), SCALE(1.864377525635064e-3),
SCALE(1.240676851011813e-3), SCALE(2.860039286315441e-2),
SCALE(1.463943719863892e-1), SCALE(3.099608123302460e-1),
SCALE(3.185488879680634e-1), SCALE(1.596965193748474e-1),
SCALE(3.382468968629837e-2), SCALE(1.746327499859035e-3),
SCALE(1.331258914433420e-3), SCALE(2.959549613296986e-2),
SCALE(1.490248143672943e-1), SCALE(3.117676973342896e-1),
SCALE(3.169221282005310e-1), SCALE(1.570075154304504e-1),
SCALE(3.272953629493714e-2), SCALE(1.634211512282491e-3),
SCALE(1.426893868483603e-3), SCALE(3.061520494520664e-2),
SCALE(1.516709625720978e-1), SCALE(3.135308027267456e-1),
SCALE(3.152491748332978e-1), SCALE(1.543320864439010e-1),
SCALE(3.165979683399200e-2), SCALE(1.527829794213176e-3),
};
/* Permuted compared to table D.8 in the spec. First, the table in the
* spec has twice the number of coefficients, but they are reflected,
* T[i] = T[511 - i]. Furthermore, the indices are permuted, so that
*
* lfe_fir_128[4 * k + j] = T[128 * j + k]
*
* for 0 <= k < 64 and 0 <= j < 4. Values with j >= 2 can be
* reflected, as
*
* lfe_fir_128[4 * k + j] = T[128 * (3 - j) + (127 - k)]
*
* so all values in T get included. */
DECLARE_ALIGNED(16, const float, ff_dca_lfe_fir_128)[256] = {
SCALE(0.00053168571), SCALE(0.15878495574), SCALE(0.68603444099), SCALE(0.15492856503),
SCALE(0.00016358691), SCALE(0.16269733012), SCALE(0.68591803312), SCALE(0.15112841129),
SCALE(0.00018878609), SCALE(0.16666537523), SCALE(0.68568539619), SCALE(0.14738474786),
SCALE(0.00021643363), SCALE(0.17068879306), SCALE(0.68533653021), SCALE(0.14369773865),
SCALE(0.00024667382), SCALE(0.17476719618), SCALE(0.68487155437), SCALE(0.14006754756),
SCALE(0.00027949660), SCALE(0.17890018225), SCALE(0.68429082632), SCALE(0.13649433851),
SCALE(0.00031519096), SCALE(0.18308731914), SCALE(0.68359452486), SCALE(0.13297818601),
SCALE(0.00035398375), SCALE(0.18732811511), SCALE(0.68278300762), SCALE(0.12951917946),
SCALE(0.00039634691), SCALE(0.19162209332), SCALE(0.68185669184), SCALE(0.12611730397),
SCALE(0.00044236859), SCALE(0.19596865773), SCALE(0.68081587553), SCALE(0.12277261168),
SCALE(0.00049204525), SCALE(0.20036731660), SCALE(0.67966115475), SCALE(0.11948505789),
SCALE(0.00054522208), SCALE(0.20481738448), SCALE(0.67839306593), SCALE(0.11625462025),
SCALE(0.00060277141), SCALE(0.20931822062), SCALE(0.67701220512), SCALE(0.11308115721),
SCALE(0.00066567765), SCALE(0.21386915445), SCALE(0.67551922798), SCALE(0.10996460915),
SCALE(0.00073179678), SCALE(0.21846942604), SCALE(0.67391467094), SCALE(0.10690483451),
SCALE(0.00080365466), SCALE(0.22311829031), SCALE(0.67219948769), SCALE(0.10390164703),
SCALE(0.00088037323), SCALE(0.22781492770), SCALE(0.67037439346), SCALE(0.10095486045),
SCALE(0.00096255314), SCALE(0.23255851865), SCALE(0.66844022274), SCALE(0.09806428105),
SCALE(0.00105048984), SCALE(0.23734821379), SCALE(0.66639786959), SCALE(0.09522963315),
SCALE(0.00114431616), SCALE(0.24218304455), SCALE(0.66424828768), SCALE(0.09245070815),
SCALE(0.00124442333), SCALE(0.24706205726), SCALE(0.66199249029), SCALE(0.08972713351),
SCALE(0.00135110028), SCALE(0.25198432803), SCALE(0.65963155031), SCALE(0.08705867827),
SCALE(0.00146482687), SCALE(0.25694879889), SCALE(0.65716648102), SCALE(0.08444493264),
SCALE(0.00158570008), SCALE(0.26195442677), SCALE(0.65459835529), SCALE(0.08188561350),
SCALE(0.00171401864), SCALE(0.26700007915), SCALE(0.65192854404), SCALE(0.07938029617),
SCALE(0.00185023469), SCALE(0.27208462358), SCALE(0.64915806055), SCALE(0.07692859322),
SCALE(0.00199495023), SCALE(0.27720692754), SCALE(0.64628833532), SCALE(0.07453006506),
SCALE(0.00214785640), SCALE(0.28236576915), SCALE(0.64332056046), SCALE(0.07218432426),
SCALE(0.00231004250), SCALE(0.28755992651), SCALE(0.64025616646), SCALE(0.06989086419),
SCALE(0.00248134881), SCALE(0.29278811812), SCALE(0.63709646463), SCALE(0.06764923781),
SCALE(0.00266251224), SCALE(0.29804900289), SCALE(0.63384294510), SCALE(0.06545893103),
SCALE(0.00285378192), SCALE(0.30334126949), SCALE(0.63049703836), SCALE(0.06331945211),
SCALE(0.00305565330), SCALE(0.30866351724), SCALE(0.62706029415), SCALE(0.06123027951),
SCALE(0.00326841651), SCALE(0.31401440501), SCALE(0.62353414297), SCALE(0.05919086933),
SCALE(0.00349264755), SCALE(0.31939238310), SCALE(0.61992025375), SCALE(0.05720067024),
SCALE(0.00372874714), SCALE(0.32479602098), SCALE(0.61622029543), SCALE(0.05525910854),
SCALE(0.00397720048), SCALE(0.33022382855), SCALE(0.61243581772), SCALE(0.05336561054),
SCALE(0.00423829490), SCALE(0.33567428589), SCALE(0.60856848955), SCALE(0.05151961371),
SCALE(0.00451271003), SCALE(0.34114575386), SCALE(0.60462015867), SCALE(0.04972046614),
SCALE(0.00480085658), SCALE(0.34663668275), SCALE(0.60059231520), SCALE(0.04796761274),
SCALE(0.00510312291), SCALE(0.35214546323), SCALE(0.59648692608), SCALE(0.04626038298),
SCALE(0.00542017492), SCALE(0.35767036676), SCALE(0.59230577946), SCALE(0.04459818453),
SCALE(0.00575236930), SCALE(0.36320972443), SCALE(0.58805054426), SCALE(0.04298033938),
SCALE(0.00610029325), SCALE(0.36876192689), SCALE(0.58372318745), SCALE(0.04140623659),
SCALE(0.00646453211), SCALE(0.37432509661), SCALE(0.57932555676), SCALE(0.03987516090),
SCALE(0.00684553990), SCALE(0.37989753485), SCALE(0.57485944033), SCALE(0.03838652745),
SCALE(0.00724391919), SCALE(0.38547745347), SCALE(0.57032698393), SCALE(0.03693958372),
SCALE(0.00766016589), SCALE(0.39106300473), SCALE(0.56572991610), SCALE(0.03553372994),
SCALE(0.00809498038), SCALE(0.39665243030), SCALE(0.56107026339), SCALE(0.03416819125),
SCALE(0.00854881573), SCALE(0.40224379301), SCALE(0.55634999275), SCALE(0.03284239396),
SCALE(0.00902230106), SCALE(0.40783521533), SCALE(0.55157101154), SCALE(0.03155555204),
SCALE(0.00951600447), SCALE(0.41342487931), SCALE(0.54673534632), SCALE(0.03030703776),
SCALE(0.01003060210), SCALE(0.41901078820), SCALE(0.54184508324), SCALE(0.02909611352),
SCALE(0.01056654565), SCALE(0.42459106445), SCALE(0.53690224886), SCALE(0.02792212367),
SCALE(0.01112466771), SCALE(0.43016362190), SCALE(0.53190881014), SCALE(0.02678431384),
SCALE(0.01170534454), SCALE(0.43572667241), SCALE(0.52686679363), SCALE(0.02568206564),
SCALE(0.01230939943), SCALE(0.44127810001), SCALE(0.52177828550), SCALE(0.02461459488),
SCALE(0.01293735672), SCALE(0.44681602716), SCALE(0.51664537191), SCALE(0.02358125709),
SCALE(0.01358995494), SCALE(0.45233830810), SCALE(0.51147013903), SCALE(0.02258131653),
SCALE(0.01426773332), SCALE(0.45784294605), SCALE(0.50625455379), SCALE(0.02161412500),
SCALE(0.01497144438), SCALE(0.46332800388), SCALE(0.50100076199), SCALE(0.02067894675),
SCALE(0.01570170000), SCALE(0.46879136562), SCALE(0.49571081996), SCALE(0.01977507770),
SCALE(0.01645922661), SCALE(0.47423094511), SCALE(0.49038675427), SCALE(0.01890186779),
SCALE(0.01724460535), SCALE(0.47964480519), SCALE(0.48503074050), SCALE(0.01805862412),
};
#undef SCALE
#define SCALE(c) ((float)(c) / (256.0f * 32768.0f * 8388608.0f))
DECLARE_ALIGNED(16, const float, ff_dca_lfe_xll_fir_64)[256] = {
SCALE( 6103), SCALE( 52170), SCALE(-558064), SCALE(1592440),
SCALE(6290049), SCALE(1502534), SCALE(-546669), SCALE( 53047),
SCALE( 1930), SCALE( 51089), SCALE(-568920), SCALE(1683709),
SCALE(6286575), SCALE(1414057), SCALE(-534782), SCALE( 53729),
SCALE( 2228), SCALE( 49794), SCALE(-579194), SCALE(1776276),
SCALE(6279634), SCALE(1327070), SCALE(-522445), SCALE( 54228),
SCALE( 2552), SCALE( 48275), SCALE(-588839), SCALE(1870070),
SCALE(6269231), SCALE(1241632), SCALE(-509702), SCALE( 54550),
SCALE( 2904), SCALE( 46523), SCALE(-597808), SCALE(1965017),
SCALE(6255380), SCALE(1157798), SCALE(-496595), SCALE( 54708),
SCALE( 3287), SCALE( 44529), SCALE(-606054), SCALE(2061044),
SCALE(6238099), SCALE(1075621), SCALE(-483164), SCALE( 54710),
SCALE( 3704), SCALE( 42282), SCALE(-613529), SCALE(2158071),
SCALE(6217408), SCALE( 995149), SCALE(-469451), SCALE( 54566),
SCALE( 4152), SCALE( 39774), SCALE(-620186), SCALE(2256019),
SCALE(6193332), SCALE( 916430), SCALE(-455494), SCALE( 54285),
SCALE( 4631), SCALE( 36995), SCALE(-625976), SCALE(2354805),
SCALE(6165900), SCALE( 839507), SCALE(-441330), SCALE( 53876),
SCALE( 5139), SCALE( 33937), SCALE(-630850), SCALE(2454343),
SCALE(6135146), SCALE( 764419), SCALE(-426998), SCALE( 53348),
SCALE( 5682), SCALE( 30591), SCALE(-634759), SCALE(2554547),
SCALE(6101107), SCALE( 691203), SCALE(-412531), SCALE( 52711),
SCALE( 6264), SCALE( 26948), SCALE(-637655), SCALE(2655326),
SCALE(6063824), SCALE( 619894), SCALE(-397966), SCALE( 51972),
SCALE( 6886), SCALE( 23001), SCALE(-639488), SCALE(2756591),
SCALE(6023343), SCALE( 550521), SCALE(-383335), SCALE( 51140),
SCALE( 7531), SCALE( 18741), SCALE(-640210), SCALE(2858248),
SCALE(5979711), SCALE( 483113), SCALE(-368671), SCALE( 50224),
SCALE( 8230), SCALE( 14162), SCALE(-639772), SCALE(2960201),
SCALE(5932981), SCALE( 417692), SCALE(-354003), SCALE( 49231),
SCALE( 8959), SCALE( 9257), SCALE(-638125), SCALE(3062355),
SCALE(5883210), SCALE( 354281), SCALE(-339362), SCALE( 48168),
SCALE( 9727), SCALE( 4018), SCALE(-635222), SCALE(3164612),
SCALE(5830457), SCALE( 292897), SCALE(-324777), SCALE( 47044),
SCALE( 10535), SCALE( -1558), SCALE(-631014), SCALE(3266872),
SCALE(5774785), SCALE( 233555), SCALE(-310273), SCALE( 45866),
SCALE( 11381), SCALE( -7480), SCALE(-625455), SCALE(3369035),
SCALE(5716260), SCALE( 176267), SCALE(-295877), SCALE( 44640),
SCALE( 12267), SCALE( -13750), SCALE(-618499), SCALE(3471000),
SCALE(5654952), SCALE( 121042), SCALE(-281613), SCALE( 43373),
SCALE( 13190), SCALE( -20372), SCALE(-610098), SCALE(3572664),
SCALE(5590933), SCALE( 67886), SCALE(-267505), SCALE( 42072),
SCALE( 14152), SCALE( -27352), SCALE(-600209), SCALE(3673924),
SCALE(5524280), SCALE( 16800), SCALE(-253574), SCALE( 40743),
SCALE( 15153), SCALE( -34691), SCALE(-588788), SCALE(3774676),
SCALE(5455069), SCALE( -32214), SCALE(-239840), SCALE( 39391),
SCALE( 16192), SCALE( -42390), SCALE(-575791), SCALE(3874816),
SCALE(5383383), SCALE( -79159), SCALE(-226323), SCALE( 38022),
SCALE( 17267), SCALE( -50453), SCALE(-561178), SCALE(3974239),
SCALE(5309305), SCALE(-124041), SCALE(-213041), SCALE( 36642),
SCALE( 18377), SCALE( -58879), SCALE(-544906), SCALE(4072841),
SCALE(5232922), SCALE(-166869), SCALE(-200010), SCALE( 35256),
SCALE( 19525), SCALE( -67667), SCALE(-526937), SCALE(4170517),
SCALE(5154321), SCALE(-207653), SCALE(-187246), SCALE( 33866),
SCALE( 20704), SCALE( -76817), SCALE(-507233), SCALE(4267162),
SCALE(5073593), SCALE(-246406), SCALE(-174764), SCALE( 32480),
SCALE( 21915), SCALE( -86327), SCALE(-485757), SCALE(4362672),
SCALE(4990831), SCALE(-283146), SCALE(-162575), SCALE( 31101),
SCALE( 23157), SCALE( -96193), SCALE(-462476), SCALE(4456942),
SCALE(4906129), SCALE(-317890), SCALE(-150692), SCALE( 29732),
SCALE( 24426), SCALE(-106412), SCALE(-437356), SCALE(4549871),
SCALE(4819584), SCALE(-350658), SCALE(-139125), SCALE( 28376),
SCALE( 25721), SCALE(-116977), SCALE(-410365), SCALE(4641355),
SCALE(4731293), SCALE(-381475), SCALE(-127884), SCALE( 27038),
};
#undef SCALE
DECLARE_ALIGNED(16, const float, ff_dca_fir_64bands)[1024] = {
/* Bank 0 */
-7.1279389866041690e-8, -7.0950903150874990e-8,
-7.9525034321375090e-8, -8.9326871281374790e-8,
-9.7483190494874640e-8, -1.0586659510721950e-7,
-1.1527363411865760e-7, -1.2523109645615350e-7,
-1.3555636137971380e-7, -1.4640931821191640e-7,
-1.5787424998123710e-7, -1.6994592926571220e-7,
-1.8264184311018150e-7, -1.9600594587757850e-7,
-2.1007899706006800e-7, -2.2489759047553620e-7,
-2.4050245877923400e-7, -2.5693874615777660e-7,
-2.7425370308549580e-7, -2.9249662541757600e-7,
-3.1171981968268900e-7, -3.3197864040473180e-7,
-3.5333134588843600e-7, -3.7583910465412180e-7,
-3.9956628121669190e-7, -4.2458045296159330e-7,
-4.5095249563698380e-7, -4.7875659112606760e-7,
-5.0807031294631050e-7, -5.3897464223335550e-7,
-5.7155423388793000e-7, -6.0589741192019800e-7,
-6.4209580087853050e-7, -6.8024432849991400e-7,
-7.2044165259013450e-7, -7.6279018172077200e-7,
-8.0739610368280600e-7, -8.5436937020293650e-7,
-9.0382333224895500e-7, -9.5587472540498280e-7,
-1.0106437128213760e-6, -1.0682538906146330e-6,
-1.1288323637155430e-6, -1.1925097184646100e-6,
-1.2594193438633260e-6, -1.3296974052300520e-6,
-1.4034829433780260e-6, -1.4809178634979940e-6,
-1.5621465913980060e-6, -1.6473160377545360e-6,
-1.7365751553971340e-6, -1.8300749104526120e-6,
-1.9279680902322050e-6, -2.0304092660990760e-6,
-2.1375541686662320e-6, -2.2495596253776460e-6,
-2.3665828120950560e-6, -2.4887811970856540e-6,
-2.6163120571644820e-6, -2.7493324266391140e-6,
-2.8879984579501380e-6, -3.0324653639203880e-6,
-3.1828867865974640e-6, -3.3394147240855820e-6,
-3.5021985520037540e-6, -3.6713849262294680e-6,
-3.8471166218015830e-6, -4.0295324657699800e-6,
-4.2187670209852250e-6, -4.4149505043312320e-6,
-4.6182073040543900e-6, -4.8286558658894680e-6,
-5.0464076705003400e-6, -5.2715671455405850e-6,
-5.5042307535458100e-6, -5.7444868785028750e-6,
-5.9924142424804800e-6, -6.2480817863072800e-6,
-6.5115476278604000e-6, -6.7828589565804950e-6,
-7.0620507545154100e-6, -7.3491456697144900e-6,
-7.6441525098592000e-6, -7.9470661364365490e-6,
-8.2578666429227760e-6, -8.5765192154768100e-6,
-8.9029718900122000e-6, -9.2371554195468400e-6,
-9.5789825988253100e-6, -9.9283481667264540e-6,
-1.0285127334608450e-5, -1.0649175634328590e-5,
-1.1020327046334650e-5, -1.1398393880881060e-5,
-1.1783166036693560e-5, -1.2174410889256530e-5,
-1.2571871574469220e-5, -1.2975266858030310e-5,
-1.3384289978242060e-5, -1.3798608540965960e-5,
-1.4217863365843780e-5, -1.4641668383496450e-5,
-1.5069609527679710e-5, -1.5501244597782600e-5,
-1.5936101341640500e-5, -1.6373677426466900e-5,
-1.6813441716539560e-5, -1.7254834143068570e-5,
-1.7697261563607500e-5, -1.8140097714618200e-5,
-1.8582686308483550e-5, -1.9024340970099240e-5,
-1.9464340744880170e-5, -1.9901930030141080e-5,
-2.0336321557464510e-5, -2.0766696417773940e-5,
-2.1192201630574280e-5, -2.1611950084231910e-5,
-2.2025021652894630e-5, -2.2430463239517170e-5,
-2.2827288605503470e-5, -2.3214478371918170e-5,
-2.3590980216497750e-5, -2.3955708939763280e-5,
-2.4307547722489910e-5, -2.4645348200903720e-5,
-2.4967930863542620e-5, -2.5274085082324960e-5,
/* Bank 1 */
2.5562569399199020e-5, 2.5832111724562040e-5,
2.6081413415833200e-5, 2.6309149390520640e-5,
2.6513966535124460e-5, 2.6694483850464800e-5,
2.6849297239997120e-5, 2.6976979753245170e-5,
2.7076082153012070e-5, 2.7145133103663890e-5,
2.7182642746157720e-5, 2.7187102980536760e-5,
2.7156990105794550e-5, 2.7090765064735940e-5,
2.6986876191054700e-5, 2.6843759539035120e-5,
2.6659843389908530e-5, 2.6433548592482960e-5,
2.6163291550639320e-5, 2.5847484577439320e-5,
2.5484540698002960e-5, 2.5072874052447260e-5,
2.4610903957661350e-5, 2.4097055300584120e-5,
2.3529763128539150e-5, 2.2907473117403740e-5,
2.2228647280994560e-5, 2.1491764461832140e-5,
2.0695325418576370e-5, 1.9837853265502040e-5,
/* NOTE: The spec has a duplicated row "160 | 1.7934037335534700e-5" ! */
1.8917898053528080e-5, 1.7934037335534700e-5,
1.6884884022311310e-5, 1.5769086921577900e-5,
1.4585334740507920e-5, 1.3332356590263080e-5,
1.2008929083235120e-5, 1.0613876973541650e-5,
9.1460801506922300e-6, 7.6044740757265500e-6,
5.9880523825897000e-6, 4.2958677847708840e-6,
2.5270494199802070e-6, 6.8080315386959900e-7,
-1.2435990827839660e-6, -3.2468187066945930e-6,
-5.3294268968052800e-6, -7.4919036559427900e-6,
-9.7346407524871100e-6, -1.2057941408635810e-5,
-1.4462010500550970e-5, -1.6946953848107710e-5,
-1.9512772389215240e-5, -2.2159361597292710e-5,
-2.4886504491416160e-5, -2.7693871041862060e-5,
-3.0581012081916960e-5, -3.3547358765259040e-5,
-3.6592216716540970e-5, -3.9714765485539260e-5,
-4.2914052387856640e-5, -4.6188991961724560e-5,
-4.9538360176954340e-5, -5.2960794000140600e-5,
-5.6454787620185350e-5, -6.0018691972791050e-5,
-6.3650708053788550e-5, -6.7348886525882700e-5,
-7.1111125753722860e-5, -7.4935171411178040e-5,
-7.8818609806320000e-5, -8.2758867628623800e-5,
-8.6753213062403400e-5, -9.0798755482139240e-5,
-9.4892437636254000e-5, -9.9031035415475500e-5,
-1.0321116057304920e-4, -1.0742926070674010e-4,
-1.1168161614264270e-4, -1.1596433966772030e-4,
-1.2027337376184880e-4, -1.2460449089034750e-4,
-1.2895330270761850e-4, -1.3331525983885840e-4,
-1.3768563787408340e-4, -1.4205953760578120e-4,
-1.4643190426323540e-4, -1.5079752791692290e-4,
-1.5515103314094370e-4, -1.5948687909058970e-4,
-1.6379937154642740e-4, -1.6808266356446820e-4,
-1.7233075773584680e-4, -1.7653750646560020e-4,
-1.8069661584612290e-4, -1.8480164638953740e-4,
-1.8884602526638050e-4, -1.9282304696531290e-4,
-1.9672587556804270e-4, -2.0054754547108610e-4,
-2.0428097498957360e-4, -2.0791896735659270e-4,
-2.1145421910491280e-4, -2.1487932080488700e-4,
-2.1818676491655660e-4, -2.2136894706917190e-4,
-2.2441818635854840e-4, -2.2732672676686290e-4,
-2.3008674810081220e-4, -2.3269036653525150e-4,
-2.3512963563507800e-4, -2.3739654799291240e-4,
-2.3948307023621970e-4, -2.4138114593372380e-4,
-2.4308272452941820e-4, -2.4457975717687980e-4,
-2.4586407616017000e-4, -2.4692741569938220e-4,
-2.4776199025177680e-4, -2.4836046092637280e-4,
-2.4871461830381660e-4, -2.4881540457247040e-4,
-2.4865471770248810e-4, -2.4822543333608940e-4,
-2.4752008219951220e-4, -2.4653081794176570e-4,
-2.4525003217524440e-4, -2.4367037437341020e-4,
/* Bank 2 */
2.4178457457919800e-4, 2.3958543985834340e-4,
2.3706595356421380e-4, 2.3421928008696620e-4,
2.3103877007019660e-4, 2.2751796132972940e-4,
2.2365059385031200e-4, 2.1943061159567880e-4,
2.1485218733324290e-4, 2.0990972538755550e-4,
2.0459789739171640e-4, 1.9891164424316180e-4,
1.9284618337957900e-4, 1.8639701070854740e-4,
1.7955993578371750e-4, 1.7233108395155490e-4,
1.6470690840351980e-4, 1.5668419239382670e-4,
1.4826008597798460e-4, 1.3943210818407590e-4,
1.3019815804235450e-4, 1.2055651618705740e-4,
1.1050586906665980e-4, 1.0004531116378850e-4,
8.9174369623037550e-5, 7.7893006105444910e-5,
6.6201632959158800e-5, 5.4101115008963200e-5,
4.1592792755171040e-5, 2.8678484003389880e-5,
1.5360496520469550e-5, 1.6416297019304470e-6,
-1.2474801400564880e-5, -2.6984964757674160e-5,
-4.1884506316022560e-5, -5.7168548169515050e-5,
-7.2831653374563650e-5, -8.8867825335203200e-5,
-1.0527052946041040e-4, -1.2203269185287530e-4,
-1.3914664880465400e-4, -1.5660414556657680e-4,
-1.7439635977956720e-4, -1.9251390142613000e-4,
-2.1094678833176480e-4, -2.2968444457655940e-4,
-2.4871569004884240e-4, -2.6802874127778880e-4,
-2.8761124019708440e-4, -3.0745025297166030e-4,
-3.2753221542219500e-4, -3.4784293347385130e-4,
-3.6836764760397900e-4, -3.8909103335715320e-4,
-4.0999714822829530e-4, -4.3106943097409840e-4,
-4.5229073958127750e-4, -4.7364335350426610e-4,
-4.9510898492628230e-4, -5.1666877822680600e-4,
-5.3830328700499900e-4, -5.5999247625413450e-4,
-5.8171579317559550e-4, -6.0345216810040500e-4,
-6.2517996394886800e-4, -6.4687697763330650e-4,
-6.6852052145861900e-4, -6.9008742526480550e-4,
-7.1155400216196750e-4, -7.3289605035434600e-4,
-7.5408892753413600e-4, -7.7510755325530950e-4,
-7.9592638676398950e-4, -8.1651942936660300e-4,
-8.3686029869896850e-4, -8.5692223230171550e-4,
-8.7667809201044900e-4, -8.9610036547340950e-4,
-9.1516119514986000e-4, -9.3383238324995840e-4,
-9.5208547141354700e-4, -9.6989174214394400e-4,
-9.8722217067251400e-4, -1.0040474297445790e-3,
-1.0203380430448350e-3, -1.0360643900964910e-3,
-1.0511966606168980e-3, -1.0657048556038330e-3,
-1.0795588568782010e-3, -1.0927284332850520e-3,
-1.1051833075734240e-3, -1.1168931605293980e-3,
-1.1278276550234160e-3, -1.1379564405661050e-3,
-1.1472492294891640e-3, -1.1556758000499310e-3,
-1.1632059885511800e-3, -1.1698096960154200e-3,
-1.1754570428998680e-3, -1.1801183720212010e-3,
-1.1837641581852870e-3, -1.1863650153060240e-3,
-1.1878919433902330e-3, -1.1883163316843900e-3,
-1.1876097809178440e-3, -1.1857441072376680e-3,
-1.1826916065321440e-3, -1.1784250628415020e-3,
-1.1729176690707690e-3, -1.1661430294353880e-3,
-1.1580752925519680e-3, -1.1486891568700730e-3,
-1.1379598570807350e-3, -1.1258631690530700e-3,
-1.1123755320313420e-3, -1.0974740543942100e-3,
-1.0811365181610850e-3, -1.0633413819325920e-3,
-1.0440678410743190e-3, -1.0232958338441730e-3,
-1.0010061160103870e-3, -9.7718026613602800e-4,
-9.5180072722007060e-4, -9.2485080945546600e-4,
-8.9631470926558100e-4, -8.6617751390929650e-4,
-8.3442528375666700e-4, -8.0104505655578600e-4,
/* Bank 3 */
7.6602485902806300e-4, 7.2935371157849700e-4,
6.9102172032639350e-4, 6.5102007948960100e-4,
6.0934103180698750e-4, 5.6597787244591100e-4,
5.2092507454409450e-4, 4.7417829303612970e-4,
4.2573432329476060e-4, 3.7559110239316400e-4,
3.2374777823389440e-4, 2.7020471361387040e-4,
2.1496350652513040e-4, 1.5802699163104190e-4,
9.9399252442146460e-5, 3.9085623279149610e-5,
-2.2907279717153710e-5, -8.6571556658577800e-5,
-1.5189801251884410e-4, -2.1887615668780720e-4,
-2.8749420455512610e-4, -3.5773907519488100e-4,
-4.2959633884346400e-4, -5.0305021853266900e-4,
-5.7808367853976800e-4, -6.5467842279709950e-4,
-7.3281477145293300e-4, -8.1247166091487090e-4,
-8.9362676824381250e-4, -9.7625651350435400e-4,
-1.0603359870796300e-3, -1.1458389497708370e-3,
-1.2327379076720450e-3, -1.3210041125919850e-3,
-1.4106074964587530e-3, -1.5015166759080980e-3,
-1.5936991188210680e-3, -1.6871211446584360e-3,
-1.7817477652804130e-3, -1.8775426862784720e-3,
-1.9744684954557180e-3, -2.0724866717198650e-3,
-2.1715575922482770e-3, -2.2716405301701940e-3,
-2.3726935964105480e-3, -2.4746737418493600e-3,
-2.5775368629845300e-3, -2.6812378156433060e-3,
-2.7857306109716460e-3, -2.8909684129992950e-3,
-2.9969032890820140e-3, -3.1034862132032660e-3,
-3.2106673881690480e-3, -3.3183962566563890e-3,
-3.4266214220855450e-3, -3.5352906520539890e-3,
-3.6443510330122110e-3, -3.7537489709635930e-3,
-3.8634300521859240e-3, -3.9733390588103910e-3,
-4.0834204508378470e-3, -4.1936183686073460e-3,
-4.3038762050876900e-3, -4.4141366059086620e-3,
-4.5243418977567100e-3, -4.6344341075783170e-3,
-4.7443549566589130e-3, -4.8540458565358850e-3,
-4.9634478250060780e-3, -5.0725014978718950e-3,
-5.1811474713480250e-3, -5.2893263173827950e-3,
-5.3969785783205650e-3, -5.5040447592375600e-3,
-5.6104651646665850e-3, -5.7161799140263450e-3,
-5.8211294443412250e-3, -5.9252545216101900e-3,
-6.0284959882028950e-3, -6.1307947602360250e-3,
-6.2320920224565700e-3, -6.3323292492425800e-3,
-6.4314484717364400e-3, -6.5293922762311450e-3,
-6.6261035015351700e-3, -6.7215252466922100e-3,
-6.8156013434509950e-3, -6.9082763630156450e-3,
-6.9994952920827200e-3, -7.0892035490577050e-3,
-7.1773476647806300e-3, -7.2638752839566550e-3,
-7.3487345159041400e-3, -7.4318739341000500e-3,
-7.5132432154309250e-3, -7.5927931627681400e-3,
-7.6704755623721500e-3, -7.7462431738117650e-3,
-7.8200496507836000e-3, -7.8918495587816850e-3,
-7.9615988430090790e-3, -8.0292548409052500e-3,
-8.0947760898363200e-3, -8.1581223027535600e-3,
-8.2192540249893810e-3, -8.2781326752680240e-3,
-8.3347217911436610e-3, -8.3889870206274740e-3,
-8.4408946925453690e-3, -8.4904118087845760e-3,
-8.5375073033623590e-3, -8.5821520672029750e-3,
-8.6243182341614300e-3, -8.6639791627160300e-3,
-8.7011097471794110e-3, -8.7356864659172800e-3,
-8.7676881309490440e-3, -8.7970958152554810e-3,
-8.8238905039462850e-3, -8.8480531477483150e-3,
-8.8695681885783190e-3, -8.8884235927356400e-3,
-8.9046080555685600e-3, -8.9181109318560050e-3,
-8.9289234995380550e-3, -8.9370390010903460e-3,
-8.9424522900292110e-3, -8.9451598223763610e-3,
/* Bank 4 */
8.9451598223763610e-3, 8.9424522900292110e-3,
8.9370390010903460e-3, 8.9289234995380550e-3,
8.9181109318560050e-3, 8.9046080555685600e-3,
8.8884235927356400e-3, 8.8695681885783190e-3,
8.8480531477483150e-3, 8.8238905039462850e-3,
8.7970958152554810e-3, 8.7676881309490440e-3,
8.7356864659172800e-3, 8.7011097471794110e-3,
8.6639791627160300e-3, 8.6243182341614300e-3,
8.5821520672029750e-3, 8.5375073033623590e-3,
8.4904118087845760e-3, 8.4408946925453690e-3,
8.3889870206274740e-3, 8.3347217911436610e-3,
8.2781326752680240e-3, 8.2192540249893810e-3,
8.1581223027535600e-3, 8.0947760898363200e-3,
8.0292548409052500e-3, 7.9615988430090790e-3,
7.8918495587816850e-3, 7.8200496507836000e-3,
7.7462431738117650e-3, 7.6704755623721500e-3,
7.5927931627681400e-3, 7.5132432154309250e-3,
7.4318739341000500e-3, 7.3487345159041400e-3,
7.2638752839566550e-3, 7.1773476647806300e-3,
7.0892035490577050e-3, 6.9994952920827200e-3,
6.9082763630156450e-3, 6.8156013434509950e-3,
6.7215252466922100e-3, 6.6261035015351700e-3,
6.5293922762311450e-3, 6.4314484717364400e-3,
6.3323292492425800e-3, 6.2320920224565700e-3,
6.1307947602360250e-3, 6.0284959882028950e-3,
5.9252545216101900e-3, 5.8211294443412250e-3,
5.7161799140263450e-3, 5.6104651646665850e-3,
5.5040447592375600e-3, 5.3969785783205650e-3,
5.2893263173827950e-3, 5.1811474713480250e-3,
5.0725014978718950e-3, 4.9634478250060780e-3,
4.8540458565358850e-3, 4.7443549566589130e-3,
4.6344341075783170e-3, 4.5243418977567100e-3,
4.4141366059086620e-3, 4.3038762050876900e-3,
4.1936183686073460e-3, 4.0834204508378470e-3,
3.9733390588103910e-3, 3.8634300521859240e-3,
3.7537489709635930e-3, 3.6443510330122110e-3,
3.5352906520539890e-3, 3.4266214220855450e-3,
3.3183962566563890e-3, 3.2106673881690480e-3,
3.1034862132032660e-3, 2.9969032890820140e-3,
2.8909684129992950e-3, 2.7857306109716460e-3,
2.6812378156433060e-3, 2.5775368629845300e-3,
2.4746737418493600e-3, 2.3726935964105480e-3,
2.2716405301701940e-3, 2.1715575922482770e-3,
2.0724866717198650e-3, 1.9744684954557180e-3,
1.8775426862784720e-3, 1.7817477652804130e-3,
1.6871211446584360e-3, 1.5936991188210680e-3,
1.5015166759080980e-3, 1.4106074964587530e-3,
1.3210041125919850e-3, 1.2327379076720450e-3,
1.1458389497708370e-3, 1.0603359870796300e-3,
9.7625651350435400e-4, 8.9362676824381250e-4,
8.1247166091487090e-4, 7.3281477145293300e-4,
6.5467842279709950e-4, 5.7808367853976800e-4,
5.0305021853266900e-4, 4.2959633884346400e-4,
3.5773907519488100e-4, 2.8749420455512610e-4,
2.1887615668780720e-4, 1.5189801251884410e-4,
8.6571556658577800e-5, 2.2907279717153710e-5,
-3.9085623279149610e-5, -9.9399252442146460e-5,
-1.5802699163104190e-4, -2.1496350652513040e-4,
-2.7020471361387040e-4, -3.2374777823389440e-4,
-3.7559110239316400e-4, -4.2573432329476060e-4,
-4.7417829303612970e-4, -5.2092507454409450e-4,
-5.6597787244591100e-4, -6.0934103180698750e-4,
-6.5102007948960100e-4, -6.9102172032639350e-4,
-7.2935371157849700e-4, -7.6602485902806300e-4,
/* Bank 5 */
8.0104505655578600e-4, 8.3442528375666700e-4,
8.6617751390929650e-4, 8.9631470926558100e-4,
9.2485080945546600e-4, 9.5180072722007060e-4,
9.7718026613602800e-4, 1.0010061160103870e-3,
1.0232958338441730e-3, 1.0440678410743190e-3,
1.0633413819325920e-3, 1.0811365181610850e-3,
1.0974740543942100e-3, 1.1123755320313420e-3,
1.1258631690530700e-3, 1.1379598570807350e-3,
1.1486891568700730e-3, 1.1580752925519680e-3,
1.1661430294353880e-3, 1.1729176690707690e-3,
1.1784250628415020e-3, 1.1826916065321440e-3,
1.1857441072376680e-3, 1.1876097809178440e-3,
1.1883163316843900e-3, 1.1878919433902330e-3,
1.1863650153060240e-3, 1.1837641581852870e-3,
1.1801183720212010e-3, 1.1754570428998680e-3,
1.1698096960154200e-3, 1.1632059885511800e-3,
1.1556758000499310e-3, 1.1472492294891640e-3,
1.1379564405661050e-3, 1.1278276550234160e-3,
1.1168931605293980e-3, 1.1051833075734240e-3,
1.0927284332850520e-3, 1.0795588568782010e-3,
1.0657048556038330e-3, 1.0511966606168980e-3,
1.0360643900964910e-3, 1.0203380430448350e-3,
1.0040474297445790e-3, 9.8722217067251400e-4,
9.6989174214394400e-4, 9.5208547141354700e-4,
9.3383238324995840e-4, 9.1516119514986000e-4,
8.9610036547340950e-4, 8.7667809201044900e-4,
8.5692223230171550e-4, 8.3686029869896850e-4,
8.1651942936660300e-4, 7.9592638676398950e-4,
7.7510755325530950e-4, 7.5408892753413600e-4,
7.3289605035434600e-4, 7.1155400216196750e-4,
6.9008742526480550e-4, 6.6852052145861900e-4,
6.4687697763330650e-4, 6.2517996394886800e-4,
6.0345216810040500e-4, 5.8171579317559550e-4,
5.5999247625413450e-4, 5.3830328700499900e-4,
5.1666877822680600e-4, 4.9510898492628230e-4,
4.7364335350426610e-4, 4.5229073958127750e-4,
4.3106943097409840e-4, 4.0999714822829530e-4,
3.8909103335715320e-4, 3.6836764760397900e-4,
3.4784293347385130e-4, 3.2753221542219500e-4,
3.0745025297166030e-4, 2.8761124019708440e-4,
2.6802874127778880e-4, 2.4871569004884240e-4,
2.2968444457655940e-4, 2.1094678833176480e-4,
1.9251390142613000e-4, 1.7439635977956720e-4,
1.5660414556657680e-4, 1.3914664880465400e-4,
1.2203269185287530e-4, 1.0527052946041040e-4,
8.8867825335203200e-5, 7.2831653374563650e-5,
5.7168548169515050e-5, 4.1884506316022560e-5,
2.6984964757674160e-5, 1.2474801400564880e-5,
-1.6416297019304470e-6, -1.5360496520469550e-5,
-2.8678484003389880e-5, -4.1592792755171040e-5,
-5.4101115008963200e-5, -6.6201632959158800e-5,
-7.7893006105444910e-5, -8.9174369623037550e-5,
-1.0004531116378850e-4, -1.1050586906665980e-4,
-1.2055651618705740e-4, -1.3019815804235450e-4,
-1.3943210818407590e-4, -1.4826008597798460e-4,
-1.5668419239382670e-4, -1.6470690840351980e-4,
-1.7233108395155490e-4, -1.7955993578371750e-4,
-1.8639701070854740e-4, -1.9284618337957900e-4,
-1.9891164424316180e-4, -2.0459789739171640e-4,
-2.0990972538755550e-4, -2.1485218733324290e-4,
-2.1943061159567880e-4, -2.2365059385031200e-4,
-2.2751796132972940e-4, -2.3103877007019660e-4,
-2.3421928008696620e-4, -2.3706595356421380e-4,
-2.3958543985834340e-4, -2.4178457457919800e-4,
/* Bank 6 */
2.4367037437341020e-4, 2.4525003217524440e-4,
2.4653081794176570e-4, 2.4752008219951220e-4,
2.4822543333608940e-4, 2.4865471770248810e-4,
2.4881540457247040e-4, 2.4871461830381660e-4,
2.4836046092637280e-4, 2.4776199025177680e-4,
2.4692741569938220e-4, 2.4586407616017000e-4,
2.4457975717687980e-4, 2.4308272452941820e-4,
2.4138114593372380e-4, 2.3948307023621970e-4,
2.3739654799291240e-4, 2.3512963563507800e-4,
2.3269036653525150e-4, 2.3008674810081220e-4,
2.2732672676686290e-4, 2.2441818635854840e-4,
2.2136894706917190e-4, 2.1818676491655660e-4,
2.1487932080488700e-4, 2.1145421910491280e-4,
2.0791896735659270e-4, 2.0428097498957360e-4,
2.0054754547108610e-4, 1.9672587556804270e-4,
1.9282304696531290e-4, 1.8884602526638050e-4,
1.8480164638953740e-4, 1.8069661584612290e-4,
1.7653750646560020e-4, 1.7233075773584680e-4,
1.6808266356446820e-4, 1.6379937154642740e-4,
1.5948687909058970e-4, 1.5515103314094370e-4,
1.5079752791692290e-4, 1.4643190426323540e-4,
1.4205953760578120e-4, 1.3768563787408340e-4,
1.3331525983885840e-4, 1.2895330270761850e-4,
1.2460449089034750e-4, 1.2027337376184880e-4,
1.1596433966772030e-4, 1.1168161614264270e-4,
1.0742926070674010e-4, 1.0321116057304920e-4,
9.9031035415475500e-5, 9.4892437636254000e-5,
9.0798755482139240e-5, 8.6753213062403400e-5,
8.2758867628623800e-5, 7.8818609806320000e-5,
7.4935171411178040e-5, 7.1111125753722860e-5,
6.7348886525882700e-5, 6.3650708053788550e-5,
6.0018691972791050e-5, 5.6454787620185350e-5,
5.2960794000140600e-5, 4.9538360176954340e-5,
4.6188991961724560e-5, 4.2914052387856640e-5,
3.9714765485539260e-5, 3.6592216716540970e-5,
3.3547358765259040e-5, 3.0581012081916960e-5,
2.7693871041862060e-5, 2.4886504491416160e-5,
2.2159361597292710e-5, 1.9512772389215240e-5,
1.6946953848107710e-5, 1.4462010500550970e-5,
1.2057941408635810e-5, 9.7346407524871100e-6,
7.4919036559427900e-6, 5.3294268968052800e-6,
3.2468187066945930e-6, 1.2435990827839660e-6,
-6.8080315386959900e-7, -2.5270494199802070e-6,
-4.2958677847708840e-6, -5.9880523825897000e-6,
-7.6044740757265500e-6, -9.1460801506922300e-6,
-1.0613876973541650e-5, -1.2008929083235120e-5,
-1.3332356590263080e-5, -1.4585334740507920e-5,
-1.5769086921577900e-5, -1.6884884022311310e-5,
-1.7934037335534700e-5, -1.8917898053528080e-5,
-1.9837853265502040e-5, -2.0695325418576370e-5,
-2.1491764461832140e-5, -2.2228647280994560e-5,
-2.2907473117403740e-5, -2.3529763128539150e-5,
-2.4097055300584120e-5, -2.4610903957661350e-5,
-2.5072874052447260e-5, -2.5484540698002960e-5,
-2.5847484577439320e-5, -2.6163291550639320e-5,
-2.6433548592482960e-5, -2.6659843389908530e-5,
-2.6843759539035120e-5, -2.6986876191054700e-5,
-2.7090765064735940e-5, -2.7156990105794550e-5,
-2.7187102980536760e-5, -2.7182642746157720e-5,
-2.7145133103663890e-5, -2.7076082153012070e-5,
-2.6976979753245170e-5, -2.6849297239997120e-5,
-2.6694483850464800e-5, -2.6513966535124460e-5,
-2.6309149390520640e-5, -2.6081413415833200e-5,
-2.5832111724562040e-5, -2.5562569399199020e-5,
/* Bank 7 */
2.5274085082324960e-5, 2.4967930863542620e-5,
2.4645348200903720e-5, 2.4307547722489910e-5,
2.3955708939763280e-5, 2.3590980216497750e-5,
2.3214478371918170e-5, 2.2827288605503470e-5,
2.2430463239517170e-5, 2.2025021652894630e-5,
2.1611950084231910e-5, 2.1192201630574280e-5,
2.0766696417773940e-5, 2.0336321557464510e-5,
1.9901930030141080e-5, 1.9464340744880170e-5,
1.9024340970099240e-5, 1.8582686308483550e-5,
1.8140097714618200e-5, 1.7697261563607500e-5,
1.7254834143068570e-5, 1.6813441716539560e-5,
1.6373677426466900e-5, 1.5936101341640500e-5,
1.5501244597782600e-5, 1.5069609527679710e-5,
1.4641668383496450e-5, 1.4217863365843780e-5,
1.3798608540965960e-5, 1.3384289978242060e-5,
1.2975266858030310e-5, 1.2571871574469220e-5,
1.2174410889256530e-5, 1.1783166036693560e-5,
1.1398393880881060e-5, 1.1020327046334650e-5,
1.0649175634328590e-5, 1.0285127334608450e-5,
9.9283481667264540e-6, 9.5789825988253100e-6,
9.2371554195468400e-6, 8.9029718900122000e-6,
8.5765192154768100e-6, 8.2578666429227760e-6,
7.9470661364365490e-6, 7.6441525098592000e-6,
7.3491456697144900e-6, 7.0620507545154100e-6,
6.7828589565804950e-6, 6.5115476278604000e-6,
6.2480817863072800e-6, 5.9924142424804800e-6,
5.7444868785028750e-6, 5.5042307535458100e-6,
5.2715671455405850e-6, 5.0464076705003400e-6,
4.8286558658894680e-6, 4.6182073040543900e-6,
4.4149505043312320e-6, 4.2187670209852250e-6,
4.0295324657699800e-6, 3.8471166218015830e-6,
3.6713849262294680e-6, 3.5021985520037540e-6,
3.3394147240855820e-6, 3.1828867865974640e-6,
3.0324653639203880e-6, 2.8879984579501380e-6,
2.7493324266391140e-6, 2.6163120571644820e-6,
2.4887811970856540e-6, 2.3665828120950560e-6,
2.2495596253776460e-6, 2.1375541686662320e-6,
2.0304092660990760e-6, 1.9279680902322050e-6,
1.8300749104526120e-6, 1.7365751553971340e-6,
1.6473160377545360e-6, 1.5621465913980060e-6,
1.4809178634979940e-6, 1.4034829433780260e-6,
1.3296974052300520e-6, 1.2594193438633260e-6,
1.1925097184646100e-6, 1.1288323637155430e-6,
1.0682538906146330e-6, 1.0106437128213760e-6,
9.5587472540498280e-7, 9.0382333224895500e-7,
8.5436937020293650e-7, 8.0739610368280600e-7,
7.6279018172077200e-7, 7.2044165259013450e-7,
6.8024432849991400e-7, 6.4209580087853050e-7,
6.0589741192019800e-7, 5.7155423388793000e-7,
5.3897464223335550e-7, 5.0807031294631050e-7,
4.7875659112606760e-7, 4.5095249563698380e-7,
4.2458045296159330e-7, 3.9956628121669190e-7,
3.7583910465412180e-7, 3.5333134588843600e-7,
3.3197864040473180e-7, 3.1171981968268900e-7,
2.9249662541757600e-7, 2.7425370308549580e-7,
2.5693874615777660e-7, 2.4050245877923400e-7,
2.2489759047553620e-7, 2.1007899706006800e-7,
1.9600594587757850e-7, 1.8264184311018150e-7,
1.6994592926571220e-7, 1.5787424998123710e-7,
1.4640931821191640e-7, 1.3555636137971380e-7,
1.2523109645615350e-7, 1.1527363411865760e-7,
1.0586659510721950e-7, 9.7483190494874640e-8,
8.9326871281374790e-8, 7.9525034321375090e-8,
7.0950903150874990e-8, 7.1279389866041690e-8,
};
/*
* D.11 Look-up Table for Downmix Scale Factors
*
* Note that the range of the entries in DmixTable[] is between -60 dB and 0 dB
* with addition of -inf (|DMixCoeff| = 0), which is coded with a DmixCode = 0.
* Furthermore, the range [-60 to 0] is subdivided into 3 regions, each with a
* different grid resolution:
*
* 1) [-60.000 to -30] with resolution of 0.500 dB
* 2) [-29.750 to -15] with resolution of 0.250 dB
* 3) [-14.875 to 0] with resolution of 0.125 dB
*/
const uint16_t ff_dca_dmixtable[FF_DCA_DMIXTABLE_SIZE] = {
0, 33, 35, 37, 39, 41, 44, 46,
49, 52, 55, 58, 62, 65, 69, 73,
78, 82, 87, 92, 98, 104, 110, 116,
123, 130, 138, 146, 155, 164, 174, 184,
195, 207, 219, 232, 246, 260, 276, 292,
309, 328, 347, 368, 389, 413, 437, 463,
490, 519, 550, 583, 617, 654, 693, 734,
777, 823, 872, 924, 978, 1036, 1066, 1098,
1130, 1163, 1197, 1232, 1268, 1305, 1343, 1382,
1422, 1464, 1506, 1550, 1596, 1642, 1690, 1740,
1790, 1843, 1896, 1952, 2009, 2068, 2128, 2190,
2254, 2320, 2388, 2457, 2529, 2603, 2679, 2757,
2838, 2920, 3006, 3093, 3184, 3277, 3372, 3471,
3572, 3677, 3784, 3894, 4008, 4125, 4246, 4370,
4497, 4629, 4764, 4903, 5046, 5193, 5345, 5501,
5662, 5827, 5912, 5997, 6084, 6172, 6262, 6353,
6445, 6538, 6633, 6729, 6827, 6925, 7026, 7128,
7231, 7336, 7442, 7550, 7659, 7771, 7883, 7997,
8113, 8231, 8350, 8471, 8594, 8719, 8845, 8973,
9103, 9235, 9369, 9505, 9643, 9783, 9924, 10068,
10214, 10362, 10512, 10665, 10819, 10976, 11135, 11297,
11460, 11627, 11795, 11966, 12139, 12315, 12494, 12675,
12859, 13045, 13234, 13426, 13621, 13818, 14018, 14222,
14428, 14637, 14849, 15064, 15283, 15504, 15729, 15957,
16188, 16423, 16661, 16902, 17147, 17396, 17648, 17904,
18164, 18427, 18694, 18965, 19240, 19519, 19802, 20089,
20380, 20675, 20975, 21279, 21587, 21900, 22218, 22540,
22867, 23170, 23534, 23875, 24221, 24573, 24929, 25290,
25657, 26029, 26406, 26789, 27177, 27571, 27970, 28376,
28787, 29205, 29628, 30057, 30493, 30935, 31383, 31838,
32300, 32768,
};
const uint32_t ff_dca_inv_dmixtable[FF_DCA_INV_DMIXTABLE_SIZE] = {
6553600, 6186997, 5840902, 5514167, 5205710, 4914507, 4639593, 4380059,
4135042, 3903731, 3685360, 3479204, 3284581, 3100844, 2927386, 2763630,
2609035, 2463088, 2325305, 2195230, 2072430, 2013631, 1956500, 1900990,
1847055, 1794651, 1743733, 1694260, 1646190, 1599484, 1554103, 1510010,
1467168, 1425542, 1385096, 1345798, 1307615, 1270515, 1234468, 1199444,
1165413, 1132348, 1100221, 1069005, 1038676, 1009206, 980573, 952752,
925721, 899456, 873937, 849141, 825049, 801641, 778897, 756798,
735326, 714463, 694193, 674497, 655360, 636766, 618700, 601146,
584090, 567518, 551417, 535772, 520571, 505801, 491451, 477507,
463959, 450796, 438006, 425579, 413504, 401772, 390373, 379297,
368536, 363270, 358080, 352964, 347920, 342949, 338049, 333219,
328458, 323765, 319139, 314579, 310084, 305654, 301287, 296982,
292739, 288556, 284433, 280369, 276363, 272414, 268522, 264685,
260904, 257176, 253501, 249879, 246309, 242790, 239321, 235901,
232531, 229208, 225933, 222705, 219523, 216386, 213295, 210247,
207243, 204282, 201363, 198486, 195650, 192855, 190099, 187383,
184706, 182066, 179465, 176901, 174373, 171882, 169426, 167005,
164619, 162267, 159948, 157663, 155410, 153190, 151001, 148844,
146717, 144621, 142554, 140517, 138510, 136531, 134580, 132657,
130762, 128893, 127052, 125236, 123447, 121683, 119944, 118231,
116541, 114876, 113235, 111617, 110022, 108450, 106901, 105373,
103868, 102383, 100921, 99479, 98057, 96656, 95275, 93914,
92682, 91249, 89946, 88660, 87394, 86145, 84914, 83701,
82505, 81326, 80164, 79019, 77890, 76777, 75680, 74598,
73533, 72482, 71446, 70425, 69419, 68427, 67450, 66486,
65536,
};
const float ff_dca_default_coeffs[10][6][2] = {
{ { 0.707107, 0.707107 }, { 0.000000, 0.000000 }, }, // A [LFE]
{ { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 }, }, // A + B (dual mono) [LFE]
{ { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 }, }, // L + R (stereo) [LFE]
{ { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 }, }, // (L+R) + (L-R) (sum-difference) [LFE]
{ { 1.000000, 0.000000 }, { 0.000000, 1.000000 }, { 0.000000, 0.000000 }, }, // LT + RT (left and right total) [LFE]
{ { 0.501187, 0.501187 }, { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.000000, 0.000000 }, }, // C + L + R [LFE]
{ { 0.707107, 0.000000 }, { 0.000000, 0.707107 }, { 0.501187, 0.501187 }, { 0.000000, 0.000000 }, }, // L + R + S [LFE]
{ { 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]
{ { 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]
{ { 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]
};
const int32_t ff_dca_sampling_freqs[16] = {
8000, 16000, 32000, 64000, 128000, 22050, 44100, 88200,
176400, 352800, 12000, 24000, 48000, 96000, 192000, 384000,
};
/* downmix coeffs
*
* TABLE 9
* ______________________________________
* Down-mix coefficients for 8-channel source
* audio (5 + 3 format)
* lt
* cen- rt lt ctr rt
* lt ter ctr center
* rt srd srd srd
* ______________________________________
* 1 0.71 0.74 1.0 0.71 0.71 0.58 0.58 0.58
* 2 left 1.0 0.89 0.71 0.46 0.71 0.50
* rt 0.45 0.71 0.89 1.0 0.50 0.71
* 3 lt 1.0 0.89 0.71 0.45
* rt 0.45 0.71 0.89 1.0
* srd 0.71 0.71 0.71
* 4 lt 1.0 0.89 0.71 0.45
* rt 0.45 0.71 0.89 1.0
* lt srd 1.0 0.71
* rt srd 0.71 0.71
* 4 lt 1.0 0.5
* ctr 0.87 1.0 0.87
* rt 0.5 1.0
* srd 0.71 0.71 0.71
* 5 lt 1.0 0.5
* ctr 0.87 1.0 0.87
* rt 0.5 1.0
* lt srd 1.0 0.71
* rt srd 0.71 1.0
* 6 lt 1.0 0.5
* lt ctr 0.87 0.71
* rt ctr 0.71 0.87
* rt 0.5 1.0
* lt srd 1.0 0.71
* rt srd 0.71 1.0
* 6 lt 1.0 0.5
* ctr 0.86 1.0 0.86
* rt 0.5 1.0
* lt srd 1.0
* ctr srd 1.0
* rt srd 1.0
* 7 lt 1.0
* lt ctr 1.0
* ctr 1.0
* rt ctr 1.0
* rt 1.0
* lt srd 1.0 0.71
* rt srd 0.71 1.0
* 7 lt 1.0 0.5
* lt ctr 0.87 0.71
* rt ctr 0.71 0.87
* rt 0.5 1.0
* lt srd 1.0
* ctr srd 1.0
* rt srd 1.0
* 8 lt 1.0 0.5
* lt ctr 0.87 0.71
* rt ctr 0.71 0.87
* rt 0.5 1.0
* lt 1 srd 0.87 0.35
* lt 2 srd 0.5 0.61
* rt 2 srd 0.61 0.50
* rt 2 srd 0.35 0.87
*
* Generation of Lt Rt
*
* In the case when the playback system has analog or digital surround
* multi-channel capability, a down matrix from 5, 4, or 3 channel to
* Lt Rt may be desirable. In the case when the number of decoded audio
* channels exceeds 5, 4 or 3 respectively a first stage down mix to 5,
* 4 or 3 chs should be used as described above.
*
* The down matrixing equations for 5-channel source audio to a
* two-channel Lt Rt playback system are given by:
*
* Left = left + 0.7 * center - 0.7 * (lt surround + rt surround)
*
* Right = right + 0.7 * center + 0.7 * (lt surround + rt surround)
*
* Embedded mixing to 2-channel
*
* One concern arising from the proliferation of multi-channel audio
* systems is that most home systems presently have only two channel
* playback capability. To accommodate this a fixed 2-channel down
* matrix processes is commonly used following the multi-channel
* decoding stage. However, for music only applications the image
* quality etc. of the down matrixed signal may not match that of an
* equivalent stereo recording found on CD.
*
* The concept of embedded mixing is to allow the producer to
* dynamically specify the matrixing coefficients within the audio
* frame itself. In this way the stereo down mix at the decoder may be
* better matched to a 2-channel playback environment.
*
* CHS*2, 7-bit down mix indexes (MCOEFFS) are transmitted along with
* the multi-channel audio once in every frame. The indexes are
* converted to attenuation factors using a 7 bit LUT. The 2-ch down
* mix equations are as follows,
*
* Left Ch = sum (MCOEFF[n] * Ch[n]) for n=1, CHS
*
* Right Ch = sum (MCOEFF[n + CHS] * Ch[n]) for n=1, CHS
*
* where Ch(n) represents the subband samples in the (n)th audio channel.
*/
const uint32_t ff_dca_map_xxch_to_native[28] = {
AV_CH_FRONT_CENTER,
AV_CH_FRONT_LEFT,
AV_CH_FRONT_RIGHT,
AV_CH_SIDE_LEFT,
AV_CH_SIDE_RIGHT,
AV_CH_LOW_FREQUENCY,
AV_CH_BACK_CENTER,
AV_CH_BACK_LEFT,
AV_CH_BACK_RIGHT,
AV_CH_SIDE_LEFT, /* side surround left -- dup sur side L */
AV_CH_SIDE_RIGHT, /* side surround right -- dup sur side R */
AV_CH_FRONT_LEFT_OF_CENTER,
AV_CH_FRONT_RIGHT_OF_CENTER,
AV_CH_TOP_FRONT_LEFT,
AV_CH_TOP_FRONT_CENTER,
AV_CH_TOP_FRONT_RIGHT,
AV_CH_LOW_FREQUENCY, /* lfe2 -- duplicate lfe1 position */
AV_CH_FRONT_LEFT_OF_CENTER, /* side front left -- dup front cntr L */
AV_CH_FRONT_RIGHT_OF_CENTER,/* side front right -- dup front cntr R */
AV_CH_TOP_CENTER, /* overhead */
AV_CH_TOP_FRONT_LEFT, /* side high left -- dup */
AV_CH_TOP_FRONT_RIGHT, /* side high right -- dup */
AV_CH_TOP_BACK_CENTER,
AV_CH_TOP_BACK_LEFT,
AV_CH_TOP_BACK_RIGHT,
AV_CH_BACK_CENTER, /* rear low center -- dup */
AV_CH_BACK_LEFT, /* rear low left -- dup */
AV_CH_BACK_RIGHT /* read low right -- dup */
};
/* -1 are reserved or unknown */
const int ff_dca_ext_audio_descr_mask[8] = {
DCA_EXT_XCH,
-1,
DCA_EXT_X96,
DCA_EXT_XCH | DCA_EXT_X96,
-1,
-1,
DCA_EXT_XXCH,
-1,
};
/* Tables for mapping dts channel configurations to libavcodec multichannel api.
* Some compromises have been made for special configurations. Most configurations
* are never used so complete accuracy is not needed.
*
* L = left, R = right, C = center, S = surround, F = front, R = rear, T = total, OV = overhead.
* S -> side, when both rear and back are configured move one of them to the side channel
* OV -> center back
* All 2 channel configurations -> AV_CH_LAYOUT_STEREO
*/
const uint64_t ff_dca_core_channel_layout[16] = {
AV_CH_FRONT_CENTER, ///< 1, A
AV_CH_LAYOUT_STEREO, ///< 2, A + B (dual mono)
AV_CH_LAYOUT_STEREO, ///< 2, L + R (stereo)
AV_CH_LAYOUT_STEREO, ///< 2, (L + R) + (L - R) (sum-difference)
AV_CH_LAYOUT_STEREO, ///< 2, LT + RT (left and right total)
AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER, ///< 3, C + L + R
AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER, ///< 3, L + R + S
AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_BACK_CENTER, ///< 4, C + L + R + S
AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT, ///< 4, L + R + SL + SR
AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | AV_CH_SIDE_LEFT |
AV_CH_SIDE_RIGHT, ///< 5, C + L + R + SL + SR
AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT |
AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER, ///< 6, CL + CR + L + R + SL + SR
AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT |
AV_CH_FRONT_CENTER | AV_CH_BACK_CENTER, ///< 6, C + L + R + LR + RR + OV
AV_CH_FRONT_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_BACK_CENTER |
AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT, ///< 6, CF + CR + LF + RF + LR + RR
AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER |
AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_LAYOUT_STEREO |
AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT, ///< 7, CL + C + CR + L + R + SL + SR
AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER |
AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT |
AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT, ///< 8, CL + CR + L + R + SL1 + SL2 + SR1 + SR2
AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_CENTER |
AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_LAYOUT_STEREO |
AV_CH_SIDE_LEFT | AV_CH_BACK_CENTER | AV_CH_SIDE_RIGHT, ///< 8, CL + C + CR + L + R + SL + S + SR
};
const int8_t ff_dca_lfe_index[16] = {
1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 1, 3, 2, 3
};
const int8_t ff_dca_channel_reorder_lfe[16][9] = {
{ 0, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 3, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 4, -1, -1, -1, -1, -1 },
{ 0, 1, 3, 4, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 4, 5, -1, -1, -1, -1 },
{ 3, 4, 0, 1, 5, 6, -1, -1, -1 },
{ 2, 0, 1, 4, 5, 6, -1, -1, -1 },
{ 0, 6, 4, 5, 2, 3, -1, -1, -1 },
{ 4, 2, 5, 0, 1, 6, 7, -1, -1 },
{ 5, 6, 0, 1, 7, 3, 8, 4, -1 },
{ 4, 2, 5, 0, 1, 6, 8, 7, -1 },
};
const int8_t ff_dca_channel_reorder_lfe_xch[16][9] = {
{ 0, 2, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 3, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 3, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 3, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 3, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 4, -1, -1, -1, -1, -1 },
{ 0, 1, 3, 4, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 4, 5, -1, -1, -1, -1 },
{ 0, 1, 4, 5, 3, -1, -1, -1, -1 },
{ 2, 0, 1, 5, 6, 4, -1, -1, -1 },
{ 3, 4, 0, 1, 6, 7, 5, -1, -1 },
{ 2, 0, 1, 4, 5, 6, 7, -1, -1 },
{ 0, 6, 4, 5, 2, 3, 7, -1, -1 },
{ 4, 2, 5, 0, 1, 7, 8, 6, -1 },
{ 5, 6, 0, 1, 8, 3, 9, 4, 7 },
{ 4, 2, 5, 0, 1, 6, 9, 8, 7 },
};
const int8_t ff_dca_channel_reorder_nolfe[16][9] = {
{ 0, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 3, -1, -1, -1, -1, -1 },
{ 0, 1, 2, 3, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 3, 4, -1, -1, -1, -1 },
{ 2, 3, 0, 1, 4, 5, -1, -1, -1 },
{ 2, 0, 1, 3, 4, 5, -1, -1, -1 },
{ 0, 5, 3, 4, 1, 2, -1, -1, -1 },
{ 3, 2, 4, 0, 1, 5, 6, -1, -1 },
{ 4, 5, 0, 1, 6, 2, 7, 3, -1 },
{ 3, 2, 4, 0, 1, 5, 7, 6, -1 },
};
const int8_t ff_dca_channel_reorder_nolfe_xch[16][9] = {
{ 0, 1, -1, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 0, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 3, -1, -1, -1, -1, -1 },
{ 0, 1, 2, 3, -1, -1, -1, -1, -1 },
{ 2, 0, 1, 3, 4, -1, -1, -1, -1 },
{ 0, 1, 3, 4, 2, -1, -1, -1, -1 },
{ 2, 0, 1, 4, 5, 3, -1, -1, -1 },
{ 2, 3, 0, 1, 5, 6, 4, -1, -1 },
{ 2, 0, 1, 3, 4, 5, 6, -1, -1 },
{ 0, 5, 3, 4, 1, 2, 6, -1, -1 },
{ 3, 2, 4, 0, 1, 6, 7, 5, -1 },
{ 4, 5, 0, 1, 7, 2, 8, 3, 6 },
{ 3, 2, 4, 0, 1, 5, 8, 7, 6 },
};
const uint16_t ff_dca_vlc_offs[63] = {
0, 512, 640, 768, 1282, 1794, 2436, 3080, 3770, 4454, 5364,
5372, 5380, 5388, 5392, 5396, 5412, 5420, 5428, 5460, 5492, 5508,
5572, 5604, 5668, 5796, 5860, 5892, 6412, 6668, 6796, 7308, 7564,
7820, 8076, 8620, 9132, 9388, 9910, 10166, 10680, 11196, 11726, 12240,
12752, 13298, 13810, 14326, 14840, 15500, 16022, 16540, 17158, 17678, 18264,
18796, 19352, 19926, 20468, 21472, 22398, 23014, 23622,
};