/*
* 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
*/
#ifndef AVCODEC_DCADATA_H
#define AVCODEC_DCADATA_H
#include <stdint.h>
#include "libavutil/mem.h"
/* Generic tables */
static const uint32_t 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*/
};
static const uint8_t dca_channels[16] =
{
1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8
};
static const uint8_t dca_bits_per_sample[7] =
{
16, 16, 20, 20, 0, 24, 24
};
/* Adpcm data */
/* 16bits signed fractional Q13 binary codes *//* quantization tables */
static const uint32_t 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
};
static const uint32_t 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 */
static const uint32_t 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
};
static const float 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 */
static const uint32_t 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
};
static const float 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, static const float, fir_32bands_perfect)[] =
{
+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, static const float, fir_32bands_nonperfect)[] =
{
-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
};
DECLARE_ALIGNED(16, static const float, lfe_fir_64)[] =
{
2.658434386830777e-4, 9.029330685734748e-3,
7.939263433218002e-2, 2.425158768892288e-1,
3.430179357528686e-1, 2.398228943347931e-1,
7.746443897485733e-2, 8.622321300208569e-3,
8.179365249816328e-5, 9.450953453779220e-3,
8.134882897138596e-2, 2.451938837766648e-1,
3.429597318172455e-1, 2.371159791946411e-1,
7.556436210870743e-2, 8.229630999267101e-3,
9.439323912374676e-5, 9.887560270726680e-3,
8.333285897970200e-2, 2.478559017181396e-1,
3.428434133529663e-1, 2.343961596488952e-1,
7.369252294301987e-2, 7.850865833461285e-3,
1.082170274457894e-4, 1.033949479460716e-2,
8.534456789493561e-2, 2.505008876323700e-1,
3.426689505577088e-1, 2.316644787788391e-1,
7.184901088476181e-2, 7.485736627131701e-3,
1.233371440321207e-4, 1.080708485096693e-2,
8.738376945257187e-2, 2.531278133392334e-1,
3.424364924430847e-1, 2.289219647645950e-1,
7.003392279148102e-2, 7.133882027119398e-3,
1.397485757479444e-4, 1.129068247973919e-2,
8.945026248693466e-2, 2.557355761528015e-1,
3.421461284160614e-1, 2.261696159839630e-1,
6.824731826782227e-2, 6.794991903007030e-3,
1.575958012836054e-4, 1.179065089672804e-2,
9.154383838176728e-2, 2.583232223987580e-1,
3.417979776859284e-1, 2.234084606170654e-1,
6.648923456668854e-2, 6.468691397458315e-3,
1.769922382663936e-4, 1.230732165277004e-2,
9.366425126791000e-2, 2.608896791934967e-1,
3.413922190666198e-1, 2.206395119428635e-1,
6.475970894098282e-2, 6.154712289571762e-3,
1.981738605536520e-4, 1.284105982631445e-2,
9.581124037504196e-2, 2.634339034557342e-1,
3.409290313720703e-1, 2.178637981414795e-1,
6.305878609418869e-2, 5.852684378623962e-3,
2.211847313446924e-4, 1.339218579232693e-2,
9.798453748226166e-2, 2.659549415111542e-1,
3.404086530208588e-1, 2.150822728872299e-1,
6.138643622398376e-2, 5.562345497310162e-3,
2.460231189616024e-4, 1.396108977496624e-2,
1.001838669180870e-1, 2.684516608715058e-1,
3.398312926292420e-1, 2.122959494590759e-1,
5.974265560507774e-2, 5.283284001052380e-3,
2.726115926634520e-4, 1.454808749258518e-2,
1.024089083075523e-1, 2.709231376647949e-1,
3.391972482204438e-1, 2.095058411359787e-1,
5.812742188572884e-2, 5.015311297029257e-3,
3.013863170053810e-4, 1.515355054289102e-2,
1.046593263745308e-1, 2.733682692050934e-1,
3.385068178176880e-1, 2.067128717899322e-1,
5.654069408774376e-2, 4.758012015372515e-3,
3.328395541757345e-4, 1.577781140804291e-2,
1.069347932934761e-1, 2.757860720157624e-1,
3.377602994441986e-1, 2.039180546998978e-1,
5.498242005705833e-2, 4.511159844696522e-3,
3.658991190604866e-4, 1.642123050987720e-2,
1.092349365353584e-1, 2.781755328178406e-1,
3.369580209255218e-1, 2.011223286390304e-1,
5.345252528786659e-2, 4.274417180567980e-3,
4.018281470052898e-4, 1.708412915468216e-2,
1.115593686699867e-1, 2.805356979370117e-1,
3.361004292964936e-1, 1.983266174793244e-1,
5.195093154907227e-2, 4.047499038279056e-3,
4.401875485200435e-4, 1.776690222322941e-2,
1.139076948165894e-1, 2.828655838966370e-1,
3.351879119873047e-1, 1.955319195985794e-1,
5.047753453254700e-2, 3.830091329291463e-3,
4.812776169274002e-4, 1.846982724964619e-2,
1.162794977426529e-1, 2.851640880107880e-1,
3.342207968235016e-1, 1.927391141653061e-1,
4.903224110603333e-2, 3.621967276558280e-3,
5.252459668554366e-4, 1.919330470263958e-2,
1.186743453145027e-1, 2.874303460121155e-1,
3.331996202468872e-1, 1.899491697549820e-1,
4.761491715908051e-2, 3.422776935622096e-3,
5.721592460758984e-4, 1.993762329220772e-2,
1.210917681455612e-1, 2.896633744239807e-1,
3.321248590946198e-1, 1.871629506349564e-1,
4.622544348239899e-2, 3.232272574678064e-3,
6.222130032256246e-4, 2.070316113531590e-2,
1.235313042998314e-1, 2.918621897697448e-1,
3.309969604015350e-1, 1.843813359737396e-1,
4.486365616321564e-2, 3.050152910873294e-3,
6.755515350960195e-4, 2.149021252989769e-2,
1.259924471378326e-1, 2.940258979797364e-1,
3.298164308071136e-1, 1.816052496433258e-1,
4.352942481637001e-2, 2.876190468668938e-3,
7.324148900806904e-4, 2.229913882911205e-2,
1.284746825695038e-1, 2.961534857749939e-1,
3.285838961601258e-1, 1.788355410099030e-1,
4.222255200147629e-2, 2.710093278437853e-3,
7.928516715764999e-4, 2.313023805618286e-2,
1.309774816036224e-1, 2.982441186904907e-1,
3.272998929023742e-1, 1.760730892419815e-1,
4.094288870692253e-2, 2.551567042246461e-3,
8.570110658183694e-4, 2.398385666310787e-2,
1.335003077983856e-1, 3.002967536449432e-1,
3.259649574756622e-1, 1.733186990022659e-1,
3.969023004174232e-2, 2.400433411821723e-3,
9.251192095689476e-4, 2.486028522253036e-2,
1.360425949096680e-1, 3.023106753826142e-1,
3.245797157287598e-1, 1.705732345581055e-1,
3.846437484025955e-2, 2.256359672173858e-3,
9.974770946428180e-4, 2.575986087322235e-2,
1.386037617921829e-1, 3.042849004268646e-1,
3.231448531150818e-1, 1.678375005722046e-1,
3.726511076092720e-2, 2.119151875376701e-3,
1.073930296115577e-3, 2.668286114931106e-2,
1.411831974983215e-1, 3.062185347080230e-1,
3.216609656810760e-1, 1.651122719049454e-1,
3.609224036335945e-2, 1.988604199141264e-3,
1.155023579485714e-3, 2.762960828840732e-2,
1.437802612781525e-1, 3.081108033657074e-1,
3.201287388801574e-1, 1.623983532190323e-1,
3.494550660252571e-2, 1.864377525635064e-3,
1.240676851011813e-3, 2.860039286315441e-2,
1.463943719863892e-1, 3.099608123302460e-1,
3.185488879680634e-1, 1.596965193748474e-1,
3.382468968629837e-2, 1.746327499859035e-3,
1.331258914433420e-3, 2.959549613296986e-2,
1.490248143672943e-1, 3.117676973342896e-1,
3.169221282005310e-1, 1.570075154304504e-1,
3.272953629493714e-2, 1.634211512282491e-3,
1.426893868483603e-3, 3.061520494520664e-2,
1.516709625720978e-1, 3.135308027267456e-1,
3.152491748332978e-1, 1.543320864439010e-1,
3.165979683399200e-2, 1.527829794213176e-3,
};
DECLARE_ALIGNED(16, static const float, lfe_fir_128)[] =
{
0.00053168571, 0.15878495574, 0.68603444099, 0.15492856503,
0.00016358691, 0.16269733012, 0.68591803312, 0.15112841129,
0.00018878609, 0.16666537523, 0.68568539619, 0.14738474786,
0.00021643363, 0.17068879306, 0.68533653021, 0.14369773865,
0.00024667382, 0.17476719618, 0.68487155437, 0.14006754756,
0.00027949660, 0.17890018225, 0.68429082632, 0.13649433851,
0.00031519096, 0.18308731914, 0.68359452486, 0.13297818601,
0.00035398375, 0.18732811511, 0.68278300762, 0.12951917946,
0.00039634691, 0.19162209332, 0.68185669184, 0.12611730397,
0.00044236859, 0.19596865773, 0.68081587553, 0.12277261168,
0.00049204525, 0.20036731660, 0.67966115475, 0.11948505789,
0.00054522208, 0.20481738448, 0.67839306593, 0.11625462025,
0.00060277141, 0.20931822062, 0.67701220512, 0.11308115721,
0.00066567765, 0.21386915445, 0.67551922798, 0.10996460915,
0.00073179678, 0.21846942604, 0.67391467094, 0.10690483451,
0.00080365466, 0.22311829031, 0.67219948769, 0.10390164703,
0.00088037323, 0.22781492770, 0.67037439346, 0.10095486045,
0.00096255314, 0.23255851865, 0.66844022274, 0.09806428105,
0.00105048984, 0.23734821379, 0.66639786959, 0.09522963315,
0.00114431616, 0.24218304455, 0.66424828768, 0.09245070815,
0.00124442333, 0.24706205726, 0.66199249029, 0.08972713351,
0.00135110028, 0.25198432803, 0.65963155031, 0.08705867827,
0.00146482687, 0.25694879889, 0.65716648102, 0.08444493264,
0.00158570008, 0.26195442677, 0.65459835529, 0.08188561350,
0.00171401864, 0.26700007915, 0.65192854404, 0.07938029617,
0.00185023469, 0.27208462358, 0.64915806055, 0.07692859322,
0.00199495023, 0.27720692754, 0.64628833532, 0.07453006506,
0.00214785640, 0.28236576915, 0.64332056046, 0.07218432426,
0.00231004250, 0.28755992651, 0.64025616646, 0.06989086419,
0.00248134881, 0.29278811812, 0.63709646463, 0.06764923781,
0.00266251224, 0.29804900289, 0.63384294510, 0.06545893103,
0.00285378192, 0.30334126949, 0.63049703836, 0.06331945211,
0.00305565330, 0.30866351724, 0.62706029415, 0.06123027951,
0.00326841651, 0.31401440501, 0.62353414297, 0.05919086933,
0.00349264755, 0.31939238310, 0.61992025375, 0.05720067024,
0.00372874714, 0.32479602098, 0.61622029543, 0.05525910854,
0.00397720048, 0.33022382855, 0.61243581772, 0.05336561054,
0.00423829490, 0.33567428589, 0.60856848955, 0.05151961371,
0.00451271003, 0.34114575386, 0.60462015867, 0.04972046614,
0.00480085658, 0.34663668275, 0.60059231520, 0.04796761274,
0.00510312291, 0.35214546323, 0.59648692608, 0.04626038298,
0.00542017492, 0.35767036676, 0.59230577946, 0.04459818453,
0.00575236930, 0.36320972443, 0.58805054426, 0.04298033938,
0.00610029325, 0.36876192689, 0.58372318745, 0.04140623659,
0.00646453211, 0.37432509661, 0.57932555676, 0.03987516090,
0.00684553990, 0.37989753485, 0.57485944033, 0.03838652745,
0.00724391919, 0.38547745347, 0.57032698393, 0.03693958372,
0.00766016589, 0.39106300473, 0.56572991610, 0.03553372994,
0.00809498038, 0.39665243030, 0.56107026339, 0.03416819125,
0.00854881573, 0.40224379301, 0.55634999275, 0.03284239396,
0.00902230106, 0.40783521533, 0.55157101154, 0.03155555204,
0.00951600447, 0.41342487931, 0.54673534632, 0.03030703776,
0.01003060210, 0.41901078820, 0.54184508324, 0.02909611352,
0.01056654565, 0.42459106445, 0.53690224886, 0.02792212367,
0.01112466771, 0.43016362190, 0.53190881014, 0.02678431384,
0.01170534454, 0.43572667241, 0.52686679363, 0.02568206564,
0.01230939943, 0.44127810001, 0.52177828550, 0.02461459488,
0.01293735672, 0.44681602716, 0.51664537191, 0.02358125709,
0.01358995494, 0.45233830810, 0.51147013903, 0.02258131653,
0.01426773332, 0.45784294605, 0.50625455379, 0.02161412500,
0.01497144438, 0.46332800388, 0.50100076199, 0.02067894675,
0.01570170000, 0.46879136562, 0.49571081996, 0.01977507770,
0.01645922661, 0.47423094511, 0.49038675427, 0.01890186779,
0.01724460535, 0.47964480519, 0.48503074050, 0.01805862412,
};
/* 10^-(dB/20), with dB being a list of dB values ranging from 0 to -72 */
/* do a 20*log10(dca_downmix_coeffs) to reconvert the values */
static const float dca_downmix_coeffs[65] = {
1.000000000000000, 0.988553094656939, 0.971627951577106, 0.944060876285923, 0.917275935389780, 0.891250938133746,
0.865964323360065, 0.841395141645195, 0.817523037943650, 0.794328234724281, 0.771791515585012, 0.749894209332456,
0.728618174513228, 0.707945784384138, 0.687859912308808, 0.668343917568615, 0.649381631576211, 0.630957344480193,
0.613055792149821, 0.595662143529010, 0.578761988349121, 0.562341325190349, 0.546386549881854, 0.530884444230988,
0.515822165072306, 0.501187233627272, 0.446683592150963, 0.398107170553497, 0.354813389233575, 0.316227766016838,
0.281838293126445, 0.251188643150958, 0.223872113856834, 0.199526231496888, 0.177827941003892, 0.158489319246111,
0.141253754462275, 0.125892541179417, 0.112201845430196, 0.100000000000000, 0.089125093813374, 0.079432823472428,
0.070794578438414, 0.063095734448019, 0.053088444423099, 0.044668359215096, 0.037583740428844, 0.031622776601684,
0.026607250597988, 0.022387211385683, 0.018836490894898, 0.015848931924611, 0.013335214321633, 0.011220184543020,
0.009440608762859, 0.007943282347243, 0.005623413251903, 0.003981071705535, 0.002818382931264, 0.001995262314969,
0.001412537544623, 0.001000000000000, 0.000501187233627, 0.000251188643151, 0.000000000000000,
};
static const float dca_downmix_scale_factors[241] = {
0.001000, 0.001059, 0.001122, 0.001189, 0.001259, 0.001334, 0.001413, 0.001496,
0.001585, 0.001679, 0.001778, 0.001884, 0.001995, 0.002113, 0.002239, 0.002371,
0.002512, 0.002661, 0.002818, 0.002985, 0.003162, 0.003350, 0.003548, 0.003758,
0.003981, 0.004217, 0.004467, 0.004732, 0.005012, 0.005309, 0.005623, 0.005957,
0.006310, 0.006683, 0.007079, 0.007499, 0.007943, 0.008414, 0.008913, 0.009441,
0.010000, 0.010593, 0.011220, 0.011885, 0.012589, 0.013335, 0.014125, 0.014962,
0.015849, 0.016788, 0.017783, 0.018836, 0.019953, 0.021135, 0.022387, 0.023714,
0.025119, 0.026607, 0.028184, 0.029854, 0.031623, 0.032546, 0.033497, 0.034475,
0.035481, 0.036517, 0.037584, 0.038681, 0.039811, 0.040973, 0.042170, 0.043401,
0.044668, 0.045973, 0.047315, 0.048697, 0.050119, 0.051582, 0.053088, 0.054639,
0.056234, 0.057876, 0.059566, 0.061306, 0.063096, 0.064938, 0.066834, 0.068786,
0.070795, 0.072862, 0.074989, 0.077179, 0.079433, 0.081752, 0.084140, 0.086596,
0.089125, 0.091728, 0.094406, 0.097163, 0.100000, 0.102920, 0.105925, 0.109018,
0.112202, 0.115478, 0.118850, 0.122321, 0.125893, 0.129569, 0.133352, 0.137246,
0.141254, 0.145378, 0.149624, 0.153993, 0.158489, 0.163117, 0.167880, 0.172783,
0.177828, 0.180406, 0.183021, 0.185674, 0.188365, 0.191095, 0.193865, 0.196675,
0.199526, 0.202418, 0.205353, 0.208329, 0.211349, 0.214412, 0.217520, 0.220673,
0.223872, 0.227117, 0.230409, 0.233749, 0.237137, 0.240575, 0.244062, 0.247600,
0.251189, 0.254830, 0.258523, 0.262271, 0.266073, 0.269929, 0.273842, 0.277811,
0.281838, 0.285924, 0.290068, 0.294273, 0.298538, 0.302866, 0.307256, 0.311709,
0.316228, 0.320812, 0.325462, 0.330179, 0.334965, 0.339821, 0.344747, 0.349744,
0.354813, 0.359956, 0.365174, 0.370467, 0.375837, 0.381285, 0.386812, 0.392419,
0.398107, 0.403878, 0.409732, 0.415671, 0.421697, 0.427809, 0.434010, 0.440301,
0.446684, 0.453158, 0.459727, 0.466391, 0.473151, 0.480010, 0.486968, 0.494026,
0.501187, 0.508452, 0.515822, 0.523299, 0.530884, 0.538580, 0.546387, 0.554307,
0.562341, 0.570493, 0.578762, 0.587151, 0.595662, 0.604296, 0.613056, 0.621942,
0.630957, 0.640103, 0.649382, 0.658795, 0.668344, 0.678032, 0.687860, 0.697831,
0.707107, 0.718208, 0.728618, 0.739180, 0.749894, 0.760764, 0.771792, 0.782979,
0.794328, 0.805842, 0.817523, 0.829373, 0.841395, 0.853591, 0.865964, 0.878517,
0.891251, 0.904170, 0.917276, 0.930572, 0.944061, 0.957745, 0.971628, 0.985712,
1.000000
};
static const uint8_t dca_default_coeffs[10][5][2] = {
{ { 13, 13 }, },
{ { 0, 64 }, { 64, 0 }, },
{ { 0, 64 }, { 64, 0 }, },
{ { 0, 64 }, { 64, 0 }, },
{ { 0, 64 }, { 64, 0 }, },
{ { 6, 6 }, { 0, 25 }, { 25, 0 }, },
{ { 0, 25 }, { 25, 0 }, { 13, 13 }, },
{ { 6, 6 }, { 0, 25 }, { 25, 0 }, { 13, 13 }, },
{ { 0, 25 }, { 25, 0 }, { 0, 13 }, { 13, 0 }, },
{ { 6, 6 }, { 0, 25 }, { 25, 0 }, { 0, 13 }, { 13, 0 }, },
};
/* 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.
*/
#endif /* AVCODEC_DCADATA_H */