Mercurial > audlegacy
annotate Plugins/Input/aac/libfaad2/ps_dec.c @ 1519:1ffc2670d6b0 trunk
[svn] - oh, define an actual SDL version here. :P
author | nenolod |
---|---|
date | Mon, 07 Aug 2006 21:22:11 -0700 |
parents | 705d4c089fce |
children |
rev | line source |
---|---|
203
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1 /* |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
4 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
5 ** This program is free software; you can redistribute it and/or modify |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
6 ** it under the terms of the GNU General Public License as published by |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
7 ** the Free Software Foundation; either version 2 of the License, or |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
8 ** (at your option) any later version. |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
9 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
10 ** This program is distributed in the hope that it will be useful, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
13 ** GNU General Public License for more details. |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
14 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
15 ** You should have received a copy of the GNU General Public License |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
16 ** along with this program; if not, write to the Free Software |
1459 | 17 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
203
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
18 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
19 ** Any non-GPL usage of this software or parts of this software is strictly |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
20 ** forbidden. |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
21 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
22 ** Commercial non-GPL licensing of this software is possible. |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
24 ** |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
25 ** $Id: ps_dec.c,v 1.10 2004/09/04 14:56:28 menno Exp $ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
26 **/ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
27 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
28 #include "common.h" |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
29 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
30 #ifdef PS_DEC |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
31 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
32 #include <stdlib.h> |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
33 #include "ps_dec.h" |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
34 #include "ps_tables.h" |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
35 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
36 /* constants */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
37 #define NEGATE_IPD_MASK (0x1000) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
38 #define DECAY_SLOPE FRAC_CONST(0.05) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
39 #define COEF_SQRT2 COEF_CONST(1.4142135623731) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
40 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
41 /* tables */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
42 /* filters are mirrored in coef 6, second half left out */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
43 static const real_t p8_13_20[7] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
44 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
45 FRAC_CONST(0.00746082949812), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
46 FRAC_CONST(0.02270420949825), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
47 FRAC_CONST(0.04546865930473), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
48 FRAC_CONST(0.07266113929591), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
49 FRAC_CONST(0.09885108575264), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
50 FRAC_CONST(0.11793710567217), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
51 FRAC_CONST(0.125) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
52 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
53 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
54 static const real_t p2_13_20[7] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
55 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
56 FRAC_CONST(0.0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
57 FRAC_CONST(0.01899487526049), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
58 FRAC_CONST(0.0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
59 FRAC_CONST(-0.07293139167538), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
60 FRAC_CONST(0.0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
61 FRAC_CONST(0.30596630545168), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
62 FRAC_CONST(0.5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
63 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
64 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
65 static const real_t p12_13_34[7] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
66 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
67 FRAC_CONST(0.04081179924692), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
68 FRAC_CONST(0.03812810994926), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
69 FRAC_CONST(0.05144908135699), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
70 FRAC_CONST(0.06399831151592), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
71 FRAC_CONST(0.07428313801106), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
72 FRAC_CONST(0.08100347892914), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
73 FRAC_CONST(0.08333333333333) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
74 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
75 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
76 static const real_t p8_13_34[7] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
77 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
78 FRAC_CONST(0.01565675600122), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
79 FRAC_CONST(0.03752716391991), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
80 FRAC_CONST(0.05417891378782), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
81 FRAC_CONST(0.08417044116767), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
82 FRAC_CONST(0.10307344158036), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
83 FRAC_CONST(0.12222452249753), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
84 FRAC_CONST(0.125) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
85 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
86 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
87 static const real_t p4_13_34[7] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
88 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
89 FRAC_CONST(-0.05908211155639), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
90 FRAC_CONST(-0.04871498374946), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
91 FRAC_CONST(0.0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
92 FRAC_CONST(0.07778723915851), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
93 FRAC_CONST(0.16486303567403), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
94 FRAC_CONST(0.23279856662996), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
95 FRAC_CONST(0.25) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
96 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
97 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
98 #ifdef PARAM_32KHZ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
99 static const uint8_t delay_length_d[2][NO_ALLPASS_LINKS] = { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
100 { 1, 2, 3 } /* d_24kHz */, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
101 { 3, 4, 5 } /* d_48kHz */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
102 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
103 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
104 static const uint8_t delay_length_d[NO_ALLPASS_LINKS] = { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
105 3, 4, 5 /* d_48kHz */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
106 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
107 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
108 static const real_t filter_a[NO_ALLPASS_LINKS] = { /* a(m) = exp(-d_48kHz(m)/7) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
109 FRAC_CONST(0.65143905753106), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
110 FRAC_CONST(0.56471812200776), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
111 FRAC_CONST(0.48954165955695) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
112 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
113 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
114 static const uint8_t group_border20[10+12 + 1] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
115 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
116 6, 7, 0, 1, 2, 3, /* 6 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
117 9, 8, /* 2 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
118 10, 11, /* 2 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
119 3, 4, 5, 6, 7, 8, 9, 11, 14, 18, 23, 35, 64 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
120 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
121 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
122 static const uint8_t group_border34[32+18 + 1] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
123 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
124 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, /* 12 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
125 12, 13, 14, 15, 16, 17, 18, 19, /* 8 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
126 20, 21, 22, 23, /* 4 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
127 24, 25, 26, 27, /* 4 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
128 28, 29, 30, 31, /* 4 subqmf subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
129 32-27, 33-27, 34-27, 35-27, 36-27, 37-27, 38-27, 40-27, 42-27, 44-27, 46-27, 48-27, 51-27, 54-27, 57-27, 60-27, 64-27, 68-27, 91-27 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
130 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
131 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
132 static const uint16_t map_group2bk20[10+12] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
133 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
134 (NEGATE_IPD_MASK | 1), (NEGATE_IPD_MASK | 0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
135 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
136 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
137 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
138 static const uint16_t map_group2bk34[32+18] = |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
139 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
140 0, 1, 2, 3, 4, 5, 6, 6, 7, (NEGATE_IPD_MASK | 2), (NEGATE_IPD_MASK | 1), (NEGATE_IPD_MASK | 0), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
141 10, 10, 4, 5, 6, 7, 8, 9, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
142 10, 11, 12, 9, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
143 14, 11, 12, 13, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
144 14, 15, 16, 13, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
145 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
146 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
147 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
148 /* type definitions */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
149 typedef struct |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
150 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
151 uint8_t frame_len; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
152 uint8_t resolution20[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
153 uint8_t resolution34[5]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
154 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
155 qmf_t *work; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
156 qmf_t **buffer; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
157 qmf_t **temp; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
158 } hyb_info; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
159 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
160 /* static function declarations */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
161 static void ps_data_decode(ps_info *ps); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
162 static hyb_info *hybrid_init(); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
163 static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
164 qmf_t *buffer, qmf_t **X_hybrid); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
165 static void INLINE DCT3_4_unscaled(real_t *y, real_t *x); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
166 static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
167 qmf_t *buffer, qmf_t **X_hybrid); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
168 static void hybrid_analysis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
169 uint8_t use34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
170 static void hybrid_synthesis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
171 uint8_t use34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
172 static int8_t delta_clip(int8_t i, int8_t min, int8_t max); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
173 static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
174 uint8_t dt_flag, uint8_t nr_par, uint8_t stride, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
175 int8_t min_index, int8_t max_index); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
176 static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
177 uint8_t dt_flag, uint8_t nr_par, uint8_t stride, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
178 int8_t log2modulo); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
179 static void map20indexto34(int8_t *index, uint8_t bins); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
180 #ifdef PS_LOW_POWER |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
181 static void map34indexto20(int8_t *index, uint8_t bins); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
182 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
183 static void ps_data_decode(ps_info *ps); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
184 static void ps_decorrelate(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
185 qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
186 static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
187 qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
188 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
189 /* */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
190 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
191 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
192 static hyb_info *hybrid_init() |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
193 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
194 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
195 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
196 hyb_info *hyb = (hyb_info*)faad_malloc(sizeof(hyb_info)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
197 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
198 hyb->resolution34[0] = 12; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
199 hyb->resolution34[1] = 8; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
200 hyb->resolution34[2] = 4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
201 hyb->resolution34[3] = 4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
202 hyb->resolution34[4] = 4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
203 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
204 hyb->resolution20[0] = 8; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
205 hyb->resolution20[1] = 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
206 hyb->resolution20[2] = 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
207 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
208 hyb->frame_len = 32; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
209 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
210 hyb->work = (qmf_t*)faad_malloc((hyb->frame_len+12) * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
211 memset(hyb->work, 0, (hyb->frame_len+12) * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
212 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
213 hyb->buffer = (qmf_t**)faad_malloc(5 * sizeof(qmf_t*)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
214 for (i = 0; i < 5; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
215 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
216 hyb->buffer[i] = (qmf_t*)faad_malloc(hyb->frame_len * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
217 memset(hyb->buffer[i], 0, hyb->frame_len * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
218 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
219 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
220 hyb->temp = (qmf_t**)faad_malloc(hyb->frame_len * sizeof(qmf_t*)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
221 for (i = 0; i < hyb->frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
222 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
223 hyb->temp[i] = (qmf_t*)faad_malloc(12 /*max*/ * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
224 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
225 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
226 return hyb; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
227 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
228 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
229 static void hybrid_free(hyb_info *hyb) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
230 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
231 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
232 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
233 if (hyb->work) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
234 faad_free(hyb->work); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
235 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
236 for (i = 0; i < 5; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
237 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
238 if (hyb->buffer[i]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
239 faad_free(hyb->buffer[i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
240 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
241 if (hyb->buffer) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
242 faad_free(hyb->buffer); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
243 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
244 for (i = 0; i < hyb->frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
245 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
246 if (hyb->temp[i]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
247 faad_free(hyb->temp[i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
248 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
249 if (hyb->temp) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
250 faad_free(hyb->temp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
251 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
252 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
253 /* real filter, size 2 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
254 static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
255 qmf_t *buffer, qmf_t **X_hybrid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
256 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
257 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
258 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
259 for (i = 0; i < frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
260 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
261 real_t r0 = MUL_F(filter[0],(QMF_RE(buffer[0+i]) + QMF_RE(buffer[12+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
262 real_t r1 = MUL_F(filter[1],(QMF_RE(buffer[1+i]) + QMF_RE(buffer[11+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
263 real_t r2 = MUL_F(filter[2],(QMF_RE(buffer[2+i]) + QMF_RE(buffer[10+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
264 real_t r3 = MUL_F(filter[3],(QMF_RE(buffer[3+i]) + QMF_RE(buffer[9+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
265 real_t r4 = MUL_F(filter[4],(QMF_RE(buffer[4+i]) + QMF_RE(buffer[8+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
266 real_t r5 = MUL_F(filter[5],(QMF_RE(buffer[5+i]) + QMF_RE(buffer[7+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
267 real_t r6 = MUL_F(filter[6],QMF_RE(buffer[6+i])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
268 real_t i0 = MUL_F(filter[0],(QMF_IM(buffer[0+i]) + QMF_IM(buffer[12+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
269 real_t i1 = MUL_F(filter[1],(QMF_IM(buffer[1+i]) + QMF_IM(buffer[11+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
270 real_t i2 = MUL_F(filter[2],(QMF_IM(buffer[2+i]) + QMF_IM(buffer[10+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
271 real_t i3 = MUL_F(filter[3],(QMF_IM(buffer[3+i]) + QMF_IM(buffer[9+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
272 real_t i4 = MUL_F(filter[4],(QMF_IM(buffer[4+i]) + QMF_IM(buffer[8+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
273 real_t i5 = MUL_F(filter[5],(QMF_IM(buffer[5+i]) + QMF_IM(buffer[7+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
274 real_t i6 = MUL_F(filter[6],QMF_IM(buffer[6+i])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
275 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
276 /* q = 0 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
277 QMF_RE(X_hybrid[i][0]) = r0 + r1 + r2 + r3 + r4 + r5 + r6; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
278 QMF_IM(X_hybrid[i][0]) = i0 + i1 + i2 + i3 + i4 + i5 + i6; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
279 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
280 /* q = 1 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
281 QMF_RE(X_hybrid[i][1]) = r0 - r1 + r2 - r3 + r4 - r5 + r6; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
282 QMF_IM(X_hybrid[i][1]) = i0 - i1 + i2 - i3 + i4 - i5 + i6; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
283 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
284 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
285 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
286 /* complex filter, size 4 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
287 static void channel_filter4(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
288 qmf_t *buffer, qmf_t **X_hybrid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
289 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
290 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
291 real_t input_re1[2], input_re2[2], input_im1[2], input_im2[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
292 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
293 for (i = 0; i < frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
294 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
295 input_re1[0] = -MUL_F(filter[2], (QMF_RE(buffer[i+2]) + QMF_RE(buffer[i+10]))) + |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
296 MUL_F(filter[6], QMF_RE(buffer[i+6])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
297 input_re1[1] = MUL_F(FRAC_CONST(-0.70710678118655), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
298 (MUL_F(filter[1], (QMF_RE(buffer[i+1]) + QMF_RE(buffer[i+11]))) + |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
299 MUL_F(filter[3], (QMF_RE(buffer[i+3]) + QMF_RE(buffer[i+9]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
300 MUL_F(filter[5], (QMF_RE(buffer[i+5]) + QMF_RE(buffer[i+7]))))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
301 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
302 input_im1[0] = MUL_F(filter[0], (QMF_IM(buffer[i+0]) - QMF_IM(buffer[i+12]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
303 MUL_F(filter[4], (QMF_IM(buffer[i+4]) - QMF_IM(buffer[i+8]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
304 input_im1[1] = MUL_F(FRAC_CONST(0.70710678118655), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
305 (MUL_F(filter[1], (QMF_IM(buffer[i+1]) - QMF_IM(buffer[i+11]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
306 MUL_F(filter[3], (QMF_IM(buffer[i+3]) - QMF_IM(buffer[i+9]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
307 MUL_F(filter[5], (QMF_IM(buffer[i+5]) - QMF_IM(buffer[i+7]))))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
308 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
309 input_re2[0] = MUL_F(filter[0], (QMF_RE(buffer[i+0]) - QMF_RE(buffer[i+12]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
310 MUL_F(filter[4], (QMF_RE(buffer[i+4]) - QMF_RE(buffer[i+8]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
311 input_re2[1] = MUL_F(FRAC_CONST(0.70710678118655), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
312 (MUL_F(filter[1], (QMF_RE(buffer[i+1]) - QMF_RE(buffer[i+11]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
313 MUL_F(filter[3], (QMF_RE(buffer[i+3]) - QMF_RE(buffer[i+9]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
314 MUL_F(filter[5], (QMF_RE(buffer[i+5]) - QMF_RE(buffer[i+7]))))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
315 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
316 input_im2[0] = -MUL_F(filter[2], (QMF_IM(buffer[i+2]) + QMF_IM(buffer[i+10]))) + |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
317 MUL_F(filter[6], QMF_IM(buffer[i+6])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
318 input_im2[1] = MUL_F(FRAC_CONST(-0.70710678118655), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
319 (MUL_F(filter[1], (QMF_IM(buffer[i+1]) + QMF_IM(buffer[i+11]))) + |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
320 MUL_F(filter[3], (QMF_IM(buffer[i+3]) + QMF_IM(buffer[i+9]))) - |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
321 MUL_F(filter[5], (QMF_IM(buffer[i+5]) + QMF_IM(buffer[i+7]))))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
322 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
323 /* q == 0 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
324 QMF_RE(X_hybrid[i][0]) = input_re1[0] + input_re1[1] + input_im1[0] + input_im1[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
325 QMF_IM(X_hybrid[i][0]) = -input_re2[0] - input_re2[1] + input_im2[0] + input_im2[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
326 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
327 /* q == 1 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
328 QMF_RE(X_hybrid[i][1]) = input_re1[0] - input_re1[1] - input_im1[0] + input_im1[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
329 QMF_IM(X_hybrid[i][1]) = input_re2[0] - input_re2[1] + input_im2[0] - input_im2[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
330 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
331 /* q == 2 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
332 QMF_RE(X_hybrid[i][2]) = input_re1[0] - input_re1[1] + input_im1[0] - input_im1[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
333 QMF_IM(X_hybrid[i][2]) = -input_re2[0] + input_re2[1] + input_im2[0] - input_im2[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
334 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
335 /* q == 3 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
336 QMF_RE(X_hybrid[i][3]) = input_re1[0] + input_re1[1] - input_im1[0] - input_im1[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
337 QMF_IM(X_hybrid[i][3]) = input_re2[0] + input_re2[1] + input_im2[0] + input_im2[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
338 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
339 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
340 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
341 static void INLINE DCT3_4_unscaled(real_t *y, real_t *x) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
342 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
343 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
344 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
345 f0 = MUL_F(x[2], FRAC_CONST(0.7071067811865476)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
346 f1 = x[0] - f0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
347 f2 = x[0] + f0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
348 f3 = x[1] + x[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
349 f4 = MUL_C(x[1], COEF_CONST(1.3065629648763766)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
350 f5 = MUL_F(f3, FRAC_CONST(-0.9238795325112866)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
351 f6 = MUL_F(x[3], FRAC_CONST(-0.5411961001461967)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
352 f7 = f4 + f5; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
353 f8 = f6 - f5; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
354 y[3] = f2 - f8; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
355 y[0] = f2 + f8; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
356 y[2] = f1 - f7; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
357 y[1] = f1 + f7; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
358 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
359 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
360 /* complex filter, size 8 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
361 static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
362 qmf_t *buffer, qmf_t **X_hybrid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
363 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
364 uint8_t i, n; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
365 real_t input_re1[4], input_re2[4], input_im1[4], input_im2[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
366 real_t x[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
367 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
368 for (i = 0; i < frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
369 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
370 input_re1[0] = MUL_F(filter[6],QMF_RE(buffer[6+i])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
371 input_re1[1] = MUL_F(filter[5],(QMF_RE(buffer[5+i]) + QMF_RE(buffer[7+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
372 input_re1[2] = -MUL_F(filter[0],(QMF_RE(buffer[0+i]) + QMF_RE(buffer[12+i]))) + MUL_F(filter[4],(QMF_RE(buffer[4+i]) + QMF_RE(buffer[8+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
373 input_re1[3] = -MUL_F(filter[1],(QMF_RE(buffer[1+i]) + QMF_RE(buffer[11+i]))) + MUL_F(filter[3],(QMF_RE(buffer[3+i]) + QMF_RE(buffer[9+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
374 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
375 input_im1[0] = MUL_F(filter[5],(QMF_IM(buffer[7+i]) - QMF_IM(buffer[5+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
376 input_im1[1] = MUL_F(filter[0],(QMF_IM(buffer[12+i]) - QMF_IM(buffer[0+i]))) + MUL_F(filter[4],(QMF_IM(buffer[8+i]) - QMF_IM(buffer[4+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
377 input_im1[2] = MUL_F(filter[1],(QMF_IM(buffer[11+i]) - QMF_IM(buffer[1+i]))) + MUL_F(filter[3],(QMF_IM(buffer[9+i]) - QMF_IM(buffer[3+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
378 input_im1[3] = MUL_F(filter[2],(QMF_IM(buffer[10+i]) - QMF_IM(buffer[2+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
379 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
380 for (n = 0; n < 4; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
381 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
382 x[n] = input_re1[n] - input_im1[3-n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
383 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
384 DCT3_4_unscaled(x, x); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
385 QMF_RE(X_hybrid[i][7]) = x[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
386 QMF_RE(X_hybrid[i][5]) = x[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
387 QMF_RE(X_hybrid[i][3]) = x[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
388 QMF_RE(X_hybrid[i][1]) = x[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
389 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
390 for (n = 0; n < 4; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
391 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
392 x[n] = input_re1[n] + input_im1[3-n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
393 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
394 DCT3_4_unscaled(x, x); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
395 QMF_RE(X_hybrid[i][6]) = x[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
396 QMF_RE(X_hybrid[i][4]) = x[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
397 QMF_RE(X_hybrid[i][2]) = x[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
398 QMF_RE(X_hybrid[i][0]) = x[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
399 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
400 input_im2[0] = MUL_F(filter[6],QMF_IM(buffer[6+i])); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
401 input_im2[1] = MUL_F(filter[5],(QMF_IM(buffer[5+i]) + QMF_IM(buffer[7+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
402 input_im2[2] = -MUL_F(filter[0],(QMF_IM(buffer[0+i]) + QMF_IM(buffer[12+i]))) + MUL_F(filter[4],(QMF_IM(buffer[4+i]) + QMF_IM(buffer[8+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
403 input_im2[3] = -MUL_F(filter[1],(QMF_IM(buffer[1+i]) + QMF_IM(buffer[11+i]))) + MUL_F(filter[3],(QMF_IM(buffer[3+i]) + QMF_IM(buffer[9+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
404 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
405 input_re2[0] = MUL_F(filter[5],(QMF_RE(buffer[7+i]) - QMF_RE(buffer[5+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
406 input_re2[1] = MUL_F(filter[0],(QMF_RE(buffer[12+i]) - QMF_RE(buffer[0+i]))) + MUL_F(filter[4],(QMF_RE(buffer[8+i]) - QMF_RE(buffer[4+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
407 input_re2[2] = MUL_F(filter[1],(QMF_RE(buffer[11+i]) - QMF_RE(buffer[1+i]))) + MUL_F(filter[3],(QMF_RE(buffer[9+i]) - QMF_RE(buffer[3+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
408 input_re2[3] = MUL_F(filter[2],(QMF_RE(buffer[10+i]) - QMF_RE(buffer[2+i]))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
409 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
410 for (n = 0; n < 4; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
411 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
412 x[n] = input_im2[n] + input_re2[3-n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
413 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
414 DCT3_4_unscaled(x, x); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
415 QMF_IM(X_hybrid[i][7]) = x[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
416 QMF_IM(X_hybrid[i][5]) = x[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
417 QMF_IM(X_hybrid[i][3]) = x[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
418 QMF_IM(X_hybrid[i][1]) = x[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
419 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
420 for (n = 0; n < 4; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
421 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
422 x[n] = input_im2[n] - input_re2[3-n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
423 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
424 DCT3_4_unscaled(x, x); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
425 QMF_IM(X_hybrid[i][6]) = x[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
426 QMF_IM(X_hybrid[i][4]) = x[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
427 QMF_IM(X_hybrid[i][2]) = x[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
428 QMF_IM(X_hybrid[i][0]) = x[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
429 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
430 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
431 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
432 static void INLINE DCT3_6_unscaled(real_t *y, real_t *x) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
433 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
434 real_t f0, f1, f2, f3, f4, f5, f6, f7; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
435 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
436 f0 = MUL_F(x[3], FRAC_CONST(0.70710678118655)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
437 f1 = x[0] + f0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
438 f2 = x[0] - f0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
439 f3 = MUL_F((x[1] - x[5]), FRAC_CONST(0.70710678118655)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
440 f4 = MUL_F(x[2], FRAC_CONST(0.86602540378444)) + MUL_F(x[4], FRAC_CONST(0.5)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
441 f5 = f4 - x[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
442 f6 = MUL_F(x[1], FRAC_CONST(0.96592582628907)) + MUL_F(x[5], FRAC_CONST(0.25881904510252)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
443 f7 = f6 - f3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
444 y[0] = f1 + f6 + f4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
445 y[1] = f2 + f3 - x[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
446 y[2] = f7 + f2 - f5; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
447 y[3] = f1 - f7 - f5; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
448 y[4] = f1 - f3 - x[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
449 y[5] = f2 - f6 + f4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
450 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
451 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
452 /* complex filter, size 12 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
453 static void channel_filter12(hyb_info *hyb, uint8_t frame_len, const real_t *filter, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
454 qmf_t *buffer, qmf_t **X_hybrid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
455 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
456 uint8_t i, n; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
457 real_t input_re1[6], input_re2[6], input_im1[6], input_im2[6]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
458 real_t out_re1[6], out_re2[6], out_im1[6], out_im2[6]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
459 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
460 for (i = 0; i < frame_len; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
461 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
462 for (n = 0; n < 6; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
463 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
464 if (n == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
465 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
466 input_re1[0] = MUL_F(QMF_RE(buffer[6+i]), filter[6]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
467 input_re2[0] = MUL_F(QMF_IM(buffer[6+i]), filter[6]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
468 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
469 input_re1[6-n] = MUL_F((QMF_RE(buffer[n+i]) + QMF_RE(buffer[12-n+i])), filter[n]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
470 input_re2[6-n] = MUL_F((QMF_IM(buffer[n+i]) + QMF_IM(buffer[12-n+i])), filter[n]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
471 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
472 input_im2[n] = MUL_F((QMF_RE(buffer[n+i]) - QMF_RE(buffer[12-n+i])), filter[n]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
473 input_im1[n] = MUL_F((QMF_IM(buffer[n+i]) - QMF_IM(buffer[12-n+i])), filter[n]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
474 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
475 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
476 DCT3_6_unscaled(out_re1, input_re1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
477 DCT3_6_unscaled(out_re2, input_re2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
478 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
479 DCT3_6_unscaled(out_im1, input_im1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
480 DCT3_6_unscaled(out_im2, input_im2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
481 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
482 for (n = 0; n < 6; n += 2) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
483 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
484 QMF_RE(X_hybrid[i][n]) = out_re1[n] - out_im1[n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
485 QMF_IM(X_hybrid[i][n]) = out_re2[n] + out_im2[n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
486 QMF_RE(X_hybrid[i][n+1]) = out_re1[n+1] + out_im1[n+1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
487 QMF_IM(X_hybrid[i][n+1]) = out_re2[n+1] - out_im2[n+1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
488 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
489 QMF_RE(X_hybrid[i][10-n]) = out_re1[n+1] - out_im1[n+1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
490 QMF_IM(X_hybrid[i][10-n]) = out_re2[n+1] + out_im2[n+1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
491 QMF_RE(X_hybrid[i][11-n]) = out_re1[n] + out_im1[n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
492 QMF_IM(X_hybrid[i][11-n]) = out_re2[n] - out_im2[n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
493 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
494 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
495 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
496 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
497 /* Hybrid analysis: further split up QMF subbands |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
498 * to improve frequency resolution |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
499 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
500 static void hybrid_analysis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
501 uint8_t use34) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
502 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
503 uint8_t k, n, band; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
504 uint8_t offset = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
505 uint8_t qmf_bands = (use34) ? 5 : 3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
506 uint8_t *resolution = (use34) ? hyb->resolution34 : hyb->resolution20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
507 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
508 for (band = 0; band < qmf_bands; band++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
509 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
510 /* build working buffer */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
511 memcpy(hyb->work, hyb->buffer[band], 12 * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
512 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
513 /* add new samples */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
514 for (n = 0; n < hyb->frame_len; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
515 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
516 QMF_RE(hyb->work[12 + n]) = QMF_RE(X[n + 6 /*delay*/][band]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
517 QMF_IM(hyb->work[12 + n]) = QMF_IM(X[n + 6 /*delay*/][band]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
518 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
519 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
520 /* store samples */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
521 memcpy(hyb->buffer[band], hyb->work + hyb->frame_len, 12 * sizeof(qmf_t)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
522 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
523 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
524 switch(resolution[band]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
525 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
526 case 2: |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
527 /* Type B real filter, Q[p] = 2 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
528 channel_filter2(hyb, hyb->frame_len, p2_13_20, hyb->work, hyb->temp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
529 break; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
530 case 4: |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
531 /* Type A complex filter, Q[p] = 4 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
532 channel_filter4(hyb, hyb->frame_len, p4_13_34, hyb->work, hyb->temp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
533 break; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
534 case 8: |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
535 /* Type A complex filter, Q[p] = 8 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
536 channel_filter8(hyb, hyb->frame_len, (use34) ? p8_13_34 : p8_13_20, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
537 hyb->work, hyb->temp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
538 break; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
539 case 12: |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
540 /* Type A complex filter, Q[p] = 12 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
541 channel_filter12(hyb, hyb->frame_len, p12_13_34, hyb->work, hyb->temp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
542 break; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
543 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
544 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
545 for (n = 0; n < hyb->frame_len; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
546 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
547 for (k = 0; k < resolution[band]; k++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
548 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
549 QMF_RE(X_hybrid[n][offset + k]) = QMF_RE(hyb->temp[n][k]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
550 QMF_IM(X_hybrid[n][offset + k]) = QMF_IM(hyb->temp[n][k]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
551 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
552 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
553 offset += resolution[band]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
554 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
555 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
556 /* group hybrid channels */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
557 if (!use34) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
558 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
559 for (n = 0; n < 32 /*30?*/; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
560 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
561 QMF_RE(X_hybrid[n][3]) += QMF_RE(X_hybrid[n][4]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
562 QMF_IM(X_hybrid[n][3]) += QMF_IM(X_hybrid[n][4]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
563 QMF_RE(X_hybrid[n][4]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
564 QMF_IM(X_hybrid[n][4]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
565 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
566 QMF_RE(X_hybrid[n][2]) += QMF_RE(X_hybrid[n][5]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
567 QMF_IM(X_hybrid[n][2]) += QMF_IM(X_hybrid[n][5]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
568 QMF_RE(X_hybrid[n][5]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
569 QMF_IM(X_hybrid[n][5]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
570 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
571 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
572 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
573 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
574 static void hybrid_synthesis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
575 uint8_t use34) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
576 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
577 uint8_t k, n, band; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
578 uint8_t offset = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
579 uint8_t qmf_bands = (use34) ? 5 : 3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
580 uint8_t *resolution = (use34) ? hyb->resolution34 : hyb->resolution20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
581 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
582 for(band = 0; band < qmf_bands; band++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
583 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
584 for (n = 0; n < hyb->frame_len; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
585 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
586 QMF_RE(X[n][band]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
587 QMF_IM(X[n][band]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
588 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
589 for (k = 0; k < resolution[band]; k++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
590 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
591 QMF_RE(X[n][band]) += QMF_RE(X_hybrid[n][offset + k]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
592 QMF_IM(X[n][band]) += QMF_IM(X_hybrid[n][offset + k]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
593 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
594 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
595 offset += resolution[band]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
596 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
597 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
598 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
599 /* limits the value i to the range [min,max] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
600 static int8_t delta_clip(int8_t i, int8_t min, int8_t max) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
601 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
602 if (i < min) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
603 return min; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
604 else if (i > max) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
605 return max; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
606 else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
607 return i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
608 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
609 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
610 //int iid = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
611 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
612 /* delta decode array */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
613 static void delta_decode(uint8_t enable, int8_t *index, int8_t *index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
614 uint8_t dt_flag, uint8_t nr_par, uint8_t stride, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
615 int8_t min_index, int8_t max_index) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
616 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
617 int8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
618 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
619 if (enable == 1) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
620 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
621 if (dt_flag == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
622 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
623 /* delta coded in frequency direction */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
624 index[0] = 0 + index[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
625 index[0] = delta_clip(index[0], min_index, max_index); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
626 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
627 for (i = 1; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
628 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
629 index[i] = index[i-1] + index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
630 index[i] = delta_clip(index[i], min_index, max_index); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
631 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
632 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
633 /* delta coded in time direction */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
634 for (i = 0; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
635 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
636 //int8_t tmp2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
637 //int8_t tmp = index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
638 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
639 //printf("%d %d\n", index_prev[i*stride], index[i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
640 //printf("%d\n", index[i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
641 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
642 index[i] = index_prev[i*stride] + index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
643 //tmp2 = index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
644 index[i] = delta_clip(index[i], min_index, max_index); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
645 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
646 //if (iid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
647 //{ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
648 // if (index[i] == 7) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
649 // { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
650 // printf("%d %d %d\n", index_prev[i*stride], tmp, tmp2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
651 // } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
652 //} |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
653 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
654 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
655 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
656 /* set indices to zero */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
657 for (i = 0; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
658 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
659 index[i] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
660 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
661 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
662 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
663 /* coarse */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
664 if (stride == 2) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
665 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
666 for (i = (nr_par<<1)-1; i > 0; i--) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
667 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
668 index[i] = index[i>>1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
669 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
670 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
671 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
672 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
673 /* delta modulo decode array */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
674 /* in: log2 value of the modulo value to allow using AND instead of MOD */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
675 static void delta_modulo_decode(uint8_t enable, int8_t *index, int8_t *index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
676 uint8_t dt_flag, uint8_t nr_par, uint8_t stride, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
677 int8_t log2modulo) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
678 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
679 int8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
680 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
681 if (enable == 1) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
682 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
683 if (dt_flag == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
684 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
685 /* delta coded in frequency direction */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
686 index[0] = 0 + index[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
687 index[0] &= log2modulo; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
688 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
689 for (i = 1; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
690 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
691 index[i] = index[i-1] + index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
692 index[i] &= log2modulo; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
693 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
694 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
695 /* delta coded in time direction */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
696 for (i = 0; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
697 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
698 index[i] = index_prev[i*stride] + index[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
699 index[i] &= log2modulo; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
700 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
701 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
702 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
703 /* set indices to zero */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
704 for (i = 0; i < nr_par; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
705 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
706 index[i] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
707 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
708 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
709 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
710 /* coarse */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
711 if (stride == 2) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
712 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
713 index[0] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
714 for (i = (nr_par<<1)-1; i > 0; i--) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
715 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
716 index[i] = index[i>>1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
717 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
718 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
719 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
720 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
721 #ifdef PS_LOW_POWER |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
722 static void map34indexto20(int8_t *index, uint8_t bins) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
723 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
724 index[0] = (2*index[0]+index[1])/3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
725 index[1] = (index[1]+2*index[2])/3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
726 index[2] = (2*index[3]+index[4])/3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
727 index[3] = (index[4]+2*index[5])/3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
728 index[4] = (index[6]+index[7])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
729 index[5] = (index[8]+index[9])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
730 index[6] = index[10]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
731 index[7] = index[11]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
732 index[8] = (index[12]+index[13])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
733 index[9] = (index[14]+index[15])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
734 index[10] = index[16]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
735 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
736 if (bins == 34) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
737 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
738 index[11] = index[17]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
739 index[12] = index[18]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
740 index[13] = index[19]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
741 index[14] = (index[20]+index[21])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
742 index[15] = (index[22]+index[23])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
743 index[16] = (index[24]+index[25])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
744 index[17] = (index[26]+index[27])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
745 index[18] = (index[28]+index[29]+index[30]+index[31])/4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
746 index[19] = (index[32]+index[33])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
747 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
748 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
749 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
750 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
751 static void map20indexto34(int8_t *index, uint8_t bins) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
752 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
753 index[0] = index[0]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
754 index[1] = (index[0] + index[1])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
755 index[2] = index[1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
756 index[3] = index[2]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
757 index[4] = (index[2] + index[3])/2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
758 index[5] = index[3]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
759 index[6] = index[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
760 index[7] = index[4]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
761 index[8] = index[5]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
762 index[9] = index[5]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
763 index[10] = index[6]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
764 index[11] = index[7]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
765 index[12] = index[8]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
766 index[13] = index[8]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
767 index[14] = index[9]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
768 index[15] = index[9]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
769 index[16] = index[10]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
770 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
771 if (bins == 34) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
772 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
773 index[17] = index[11]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
774 index[18] = index[12]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
775 index[19] = index[13]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
776 index[20] = index[14]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
777 index[21] = index[14]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
778 index[22] = index[15]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
779 index[23] = index[15]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
780 index[24] = index[16]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
781 index[25] = index[16]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
782 index[26] = index[17]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
783 index[27] = index[17]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
784 index[28] = index[18]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
785 index[29] = index[18]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
786 index[30] = index[18]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
787 index[31] = index[18]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
788 index[32] = index[19]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
789 index[33] = index[19]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
790 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
791 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
792 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
793 /* parse the bitstream data decoded in ps_data() */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
794 static void ps_data_decode(ps_info *ps) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
795 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
796 uint8_t env, bin; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
797 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
798 /* ps data not available, use data from previous frame */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
799 if (ps->ps_data_available == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
800 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
801 ps->num_env = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
802 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
803 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
804 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
805 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
806 int8_t *iid_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
807 int8_t *icc_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
808 int8_t *ipd_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
809 int8_t *opd_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
810 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
811 int8_t num_iid_steps = (ps->iid_mode < 3) ? 7 : 15 /*fine quant*/; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
812 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
813 if (env == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
814 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
815 /* take last envelope from previous frame */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
816 iid_index_prev = ps->iid_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
817 icc_index_prev = ps->icc_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
818 ipd_index_prev = ps->ipd_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
819 opd_index_prev = ps->opd_index_prev; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
820 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
821 /* take index values from previous envelope */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
822 iid_index_prev = ps->iid_index[env - 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
823 icc_index_prev = ps->icc_index[env - 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
824 ipd_index_prev = ps->ipd_index[env - 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
825 opd_index_prev = ps->opd_index[env - 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
826 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
827 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
828 // iid = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
829 /* delta decode iid parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
830 delta_decode(ps->enable_iid, ps->iid_index[env], iid_index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
831 ps->iid_dt[env], ps->nr_iid_par, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
832 (ps->iid_mode == 0 || ps->iid_mode == 3) ? 2 : 1, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
833 -num_iid_steps, num_iid_steps); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
834 // iid = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
835 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
836 /* delta decode icc parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
837 delta_decode(ps->enable_icc, ps->icc_index[env], icc_index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
838 ps->icc_dt[env], ps->nr_icc_par, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
839 (ps->icc_mode == 0 || ps->icc_mode == 3) ? 2 : 1, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
840 0, 7); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
841 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
842 /* delta modulo decode ipd parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
843 delta_modulo_decode(ps->enable_ipdopd, ps->ipd_index[env], ipd_index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
844 ps->ipd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
845 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
846 /* delta modulo decode opd parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
847 delta_modulo_decode(ps->enable_ipdopd, ps->opd_index[env], opd_index_prev, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
848 ps->opd_dt[env], ps->nr_ipdopd_par, 1, /*log2(8)*/ 3); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
849 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
850 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
851 /* handle error case */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
852 if (ps->num_env == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
853 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
854 /* force to 1 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
855 ps->num_env = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
856 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
857 if (ps->enable_iid) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
858 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
859 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
860 ps->iid_index[0][bin] = ps->iid_index_prev[bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
861 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
862 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
863 ps->iid_index[0][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
864 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
865 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
866 if (ps->enable_icc) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
867 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
868 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
869 ps->icc_index[0][bin] = ps->icc_index_prev[bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
870 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
871 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
872 ps->icc_index[0][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
873 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
874 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
875 if (ps->enable_ipdopd) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
876 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
877 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
878 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
879 ps->ipd_index[0][bin] = ps->ipd_index_prev[bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
880 ps->opd_index[0][bin] = ps->opd_index_prev[bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
881 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
882 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
883 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
884 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
885 ps->ipd_index[0][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
886 ps->opd_index[0][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
887 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
888 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
889 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
890 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
891 /* update previous indices */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
892 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
893 ps->iid_index_prev[bin] = ps->iid_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
894 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
895 ps->icc_index_prev[bin] = ps->icc_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
896 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
897 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
898 ps->ipd_index_prev[bin] = ps->ipd_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
899 ps->opd_index_prev[bin] = ps->opd_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
900 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
901 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
902 ps->ps_data_available = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
903 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
904 if (ps->frame_class == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
905 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
906 ps->border_position[0] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
907 for (env = 1; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
908 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
909 ps->border_position[env] = (env * 32 /* 30 for 960? */) / ps->num_env; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
910 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
911 ps->border_position[ps->num_env] = 32 /* 30 for 960? */; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
912 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
913 ps->border_position[0] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
914 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
915 if (ps->border_position[ps->num_env] < 32 /* 30 for 960? */) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
916 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
917 ps->num_env++; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
918 ps->border_position[ps->num_env] = 32 /* 30 for 960? */; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
919 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
920 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
921 ps->iid_index[ps->num_env][bin] = ps->iid_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
922 ps->icc_index[ps->num_env][bin] = ps->icc_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
923 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
924 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
925 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
926 ps->ipd_index[ps->num_env][bin] = ps->ipd_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
927 ps->opd_index[ps->num_env][bin] = ps->opd_index[ps->num_env-1][bin]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
928 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
929 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
930 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
931 for (env = 1; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
932 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
933 int8_t thr = 32 /* 30 for 960? */ - (ps->num_env - env); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
934 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
935 if (ps->border_position[env] > thr) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
936 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
937 ps->border_position[env] = thr; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
938 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
939 thr = ps->border_position[env-1]+1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
940 if (ps->border_position[env] < thr) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
941 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
942 ps->border_position[env] = thr; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
943 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
944 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
945 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
946 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
947 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
948 /* make sure that the indices of all parameters can be mapped |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
949 * to the same hybrid synthesis filterbank |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
950 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
951 #ifdef PS_LOW_POWER |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
952 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
953 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
954 if (ps->iid_mode == 2 || ps->iid_mode == 5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
955 map34indexto20(ps->iid_index[env], 34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
956 if (ps->icc_mode == 2 || ps->icc_mode == 5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
957 map34indexto20(ps->icc_index[env], 34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
958 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
959 /* disable ipd/opd */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
960 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
961 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
962 ps->aaIpdIndex[env][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
963 ps->aaOpdIndex[env][bin] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
964 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
965 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
966 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
967 if (ps->use34hybrid_bands) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
968 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
969 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
970 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
971 if (ps->iid_mode != 2 && ps->iid_mode != 5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
972 map20indexto34(ps->iid_index[env], 34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
973 if (ps->icc_mode != 2 && ps->icc_mode != 5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
974 map20indexto34(ps->icc_index[env], 34); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
975 if (ps->ipd_mode != 2 && ps->ipd_mode != 5) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
976 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
977 map20indexto34(ps->ipd_index[env], 17); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
978 map20indexto34(ps->opd_index[env], 17); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
979 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
980 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
981 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
982 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
983 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
984 #if 0 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
985 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
986 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
987 printf("iid[env:%d]:", env); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
988 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
989 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
990 printf(" %d", ps->iid_index[env][bin]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
991 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
992 printf("\n"); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
993 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
994 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
995 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
996 printf("icc[env:%d]:", env); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
997 for (bin = 0; bin < 34; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
998 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
999 printf(" %d", ps->icc_index[env][bin]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1000 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1001 printf("\n"); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1002 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1003 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1004 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1005 printf("ipd[env:%d]:", env); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1006 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1007 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1008 printf(" %d", ps->ipd_index[env][bin]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1009 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1010 printf("\n"); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1011 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1012 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1013 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1014 printf("opd[env:%d]:", env); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1015 for (bin = 0; bin < 17; bin++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1016 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1017 printf(" %d", ps->opd_index[env][bin]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1018 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1019 printf("\n"); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1020 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1021 printf("\n"); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1022 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1023 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1024 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1025 /* decorrelate the mono signal using an allpass filter */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1026 static void ps_decorrelate(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1027 qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1028 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1029 uint8_t gr, n, m, bk; |
254
5de006f3d342
[svn] Initialize two variables before use and remove an unused one. Squashes 3 warnings.
chainsaw
parents:
208
diff
changeset
|
1030 uint8_t temp_delay = 0; |
203
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1031 uint8_t sb, maxsb; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1032 const complex_t *Phi_Fract_SubQmf; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1033 uint8_t temp_delay_ser[NO_ALLPASS_LINKS]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1034 real_t P_SmoothPeakDecayDiffNrg, nrg; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1035 real_t P[32][34]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1036 real_t G_TransientRatio[32][34] = {{0}}; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1037 complex_t inputLeft; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1038 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1039 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1040 /* chose hybrid filterbank: 20 or 34 band case */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1041 if (ps->use34hybrid_bands) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1042 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1043 Phi_Fract_SubQmf = Phi_Fract_SubQmf34; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1044 } else{ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1045 Phi_Fract_SubQmf = Phi_Fract_SubQmf20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1046 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1047 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1048 /* clear the energy values */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1049 for (n = 0; n < 32; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1050 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1051 for (bk = 0; bk < 34; bk++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1052 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1053 P[n][bk] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1054 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1055 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1056 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1057 /* calculate the energy in each parameter band b(k) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1058 for (gr = 0; gr < ps->num_groups; gr++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1059 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1060 /* select the parameter index b(k) to which this group belongs */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1061 bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1062 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1063 /* select the upper subband border for this group */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1064 maxsb = (gr < ps->num_hybrid_groups) ? ps->group_border[gr]+1 : ps->group_border[gr+1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1065 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1066 for (sb = ps->group_border[gr]; sb < maxsb; sb++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1067 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1068 for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1069 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1070 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1071 uint32_t in_re, in_im; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1072 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1073 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1074 /* input from hybrid subbands or QMF subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1075 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1076 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1077 RE(inputLeft) = QMF_RE(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1078 IM(inputLeft) = QMF_IM(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1079 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1080 RE(inputLeft) = QMF_RE(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1081 IM(inputLeft) = QMF_IM(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1082 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1083 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1084 /* accumulate energy */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1085 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1086 /* NOTE: all input is scaled by 2^(-5) because of fixed point QMF |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1087 * meaning that P will be scaled by 2^(-10) compared to floating point version |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1088 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1089 in_re = ((abs(RE(inputLeft))+(1<<(REAL_BITS-1)))>>REAL_BITS); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1090 in_im = ((abs(IM(inputLeft))+(1<<(REAL_BITS-1)))>>REAL_BITS); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1091 P[n][bk] += in_re*in_re + in_im*in_im; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1092 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1093 P[n][bk] += MUL_R(RE(inputLeft),RE(inputLeft)) + MUL_R(IM(inputLeft),IM(inputLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1094 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1095 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1096 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1097 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1098 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1099 #if 0 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1100 for (n = 0; n < 32; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1101 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1102 for (bk = 0; bk < 34; bk++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1103 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1104 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1105 printf("%d %d: %d\n", n, bk, P[n][bk] /*/(float)REAL_PRECISION*/); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1106 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1107 printf("%d %d: %f\n", n, bk, P[n][bk]/1024.0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1108 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1109 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1110 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1111 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1112 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1113 /* calculate transient reduction ratio for each parameter band b(k) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1114 for (bk = 0; bk < ps->nr_par_bands; bk++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1115 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1116 for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1117 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1118 const real_t gamma = COEF_CONST(1.5); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1119 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1120 ps->P_PeakDecayNrg[bk] = MUL_F(ps->P_PeakDecayNrg[bk], ps->alpha_decay); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1121 if (ps->P_PeakDecayNrg[bk] < P[n][bk]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1122 ps->P_PeakDecayNrg[bk] = P[n][bk]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1123 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1124 /* apply smoothing filter to peak decay energy */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1125 P_SmoothPeakDecayDiffNrg = ps->P_SmoothPeakDecayDiffNrg_prev[bk]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1126 P_SmoothPeakDecayDiffNrg += MUL_F((ps->P_PeakDecayNrg[bk] - P[n][bk] - ps->P_SmoothPeakDecayDiffNrg_prev[bk]), ps->alpha_smooth); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1127 ps->P_SmoothPeakDecayDiffNrg_prev[bk] = P_SmoothPeakDecayDiffNrg; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1128 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1129 /* apply smoothing filter to energy */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1130 nrg = ps->P_prev[bk]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1131 nrg += MUL_F((P[n][bk] - ps->P_prev[bk]), ps->alpha_smooth); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1132 ps->P_prev[bk] = nrg; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1133 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1134 /* calculate transient ratio */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1135 if (MUL_C(P_SmoothPeakDecayDiffNrg, gamma) <= nrg) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1136 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1137 G_TransientRatio[n][bk] = REAL_CONST(1.0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1138 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1139 G_TransientRatio[n][bk] = DIV_R(nrg, (MUL_C(P_SmoothPeakDecayDiffNrg, gamma))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1140 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1141 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1142 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1143 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1144 #if 0 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1145 for (n = 0; n < 32; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1146 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1147 for (bk = 0; bk < 34; bk++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1148 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1149 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1150 printf("%d %d: %f\n", n, bk, G_TransientRatio[n][bk]/(float)REAL_PRECISION); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1151 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1152 printf("%d %d: %f\n", n, bk, G_TransientRatio[n][bk]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1153 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1154 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1155 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1156 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1157 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1158 /* apply stereo decorrelation filter to the signal */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1159 for (gr = 0; gr < ps->num_groups; gr++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1160 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1161 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1162 maxsb = ps->group_border[gr] + 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1163 else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1164 maxsb = ps->group_border[gr + 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1165 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1166 /* QMF channel */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1167 for (sb = ps->group_border[gr]; sb < maxsb; sb++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1168 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1169 real_t g_DecaySlope; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1170 real_t g_DecaySlope_filt[NO_ALLPASS_LINKS]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1171 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1172 /* g_DecaySlope: [0..1] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1173 if (gr < ps->num_hybrid_groups || sb <= ps->decay_cutoff) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1174 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1175 g_DecaySlope = FRAC_CONST(1.0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1176 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1177 int8_t decay = ps->decay_cutoff - sb; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1178 if (decay <= -20 /* -1/DECAY_SLOPE */) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1179 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1180 g_DecaySlope = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1181 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1182 /* decay(int)*decay_slope(frac) = g_DecaySlope(frac) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1183 g_DecaySlope = FRAC_CONST(1.0) + DECAY_SLOPE * decay; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1184 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1185 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1186 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1187 /* calculate g_DecaySlope_filt for every m multiplied by filter_a[m] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1188 for (m = 0; m < NO_ALLPASS_LINKS; m++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1189 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1190 g_DecaySlope_filt[m] = MUL_F(g_DecaySlope, filter_a[m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1191 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1192 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1193 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1194 /* set delay indices */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1195 temp_delay = ps->saved_delay; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1196 for (n = 0; n < NO_ALLPASS_LINKS; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1197 temp_delay_ser[n] = ps->delay_buf_index_ser[n]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1198 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1199 for (n = ps->border_position[0]; n < ps->border_position[ps->num_env]; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1200 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1201 complex_t tmp, tmp0, R0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1202 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1203 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1204 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1205 /* hybrid filterbank input */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1206 RE(inputLeft) = QMF_RE(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1207 IM(inputLeft) = QMF_IM(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1208 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1209 /* QMF filterbank input */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1210 RE(inputLeft) = QMF_RE(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1211 IM(inputLeft) = QMF_IM(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1212 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1213 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1214 if (sb > ps->nr_allpass_bands && gr >= ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1215 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1216 /* delay */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1217 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1218 /* never hybrid subbands here, always QMF subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1219 RE(tmp) = RE(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1220 IM(tmp) = IM(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1221 RE(R0) = RE(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1222 IM(R0) = IM(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1223 RE(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]) = RE(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1224 IM(ps->delay_Qmf[ps->delay_buf_index_delay[sb]][sb]) = IM(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1225 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1226 /* allpass filter */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1227 uint8_t m; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1228 complex_t Phi_Fract; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1229 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1230 /* fetch parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1231 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1232 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1233 /* select data from the hybrid subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1234 RE(tmp0) = RE(ps->delay_SubQmf[temp_delay][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1235 IM(tmp0) = IM(ps->delay_SubQmf[temp_delay][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1236 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1237 RE(ps->delay_SubQmf[temp_delay][sb]) = RE(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1238 IM(ps->delay_SubQmf[temp_delay][sb]) = IM(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1239 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1240 RE(Phi_Fract) = RE(Phi_Fract_SubQmf[sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1241 IM(Phi_Fract) = IM(Phi_Fract_SubQmf[sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1242 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1243 /* select data from the QMF subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1244 RE(tmp0) = RE(ps->delay_Qmf[temp_delay][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1245 IM(tmp0) = IM(ps->delay_Qmf[temp_delay][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1246 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1247 RE(ps->delay_Qmf[temp_delay][sb]) = RE(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1248 IM(ps->delay_Qmf[temp_delay][sb]) = IM(inputLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1249 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1250 RE(Phi_Fract) = RE(Phi_Fract_Qmf[sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1251 IM(Phi_Fract) = IM(Phi_Fract_Qmf[sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1252 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1253 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1254 /* z^(-2) * Phi_Fract[k] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1255 ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(Phi_Fract), IM(Phi_Fract)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1256 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1257 RE(R0) = RE(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1258 IM(R0) = IM(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1259 for (m = 0; m < NO_ALLPASS_LINKS; m++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1260 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1261 complex_t Q_Fract_allpass, tmp2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1262 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1263 /* fetch parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1264 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1265 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1266 /* select data from the hybrid subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1267 RE(tmp0) = RE(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1268 IM(tmp0) = IM(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1269 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1270 if (ps->use34hybrid_bands) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1271 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1272 RE(Q_Fract_allpass) = RE(Q_Fract_allpass_SubQmf34[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1273 IM(Q_Fract_allpass) = IM(Q_Fract_allpass_SubQmf34[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1274 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1275 RE(Q_Fract_allpass) = RE(Q_Fract_allpass_SubQmf20[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1276 IM(Q_Fract_allpass) = IM(Q_Fract_allpass_SubQmf20[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1277 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1278 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1279 /* select data from the QMF subbands */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1280 RE(tmp0) = RE(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1281 IM(tmp0) = IM(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1282 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1283 RE(Q_Fract_allpass) = RE(Q_Fract_allpass_Qmf[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1284 IM(Q_Fract_allpass) = IM(Q_Fract_allpass_Qmf[sb][m]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1285 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1286 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1287 /* delay by a fraction */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1288 /* z^(-d(m)) * Q_Fract_allpass[k,m] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1289 ComplexMult(&RE(tmp), &IM(tmp), RE(tmp0), IM(tmp0), RE(Q_Fract_allpass), IM(Q_Fract_allpass)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1290 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1291 /* -a(m) * g_DecaySlope[k] */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1292 RE(tmp) += -MUL_F(g_DecaySlope_filt[m], RE(R0)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1293 IM(tmp) += -MUL_F(g_DecaySlope_filt[m], IM(R0)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1294 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1295 /* -a(m) * g_DecaySlope[k] * Q_Fract_allpass[k,m] * z^(-d(m)) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1296 RE(tmp2) = RE(R0) + MUL_F(g_DecaySlope_filt[m], RE(tmp)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1297 IM(tmp2) = IM(R0) + MUL_F(g_DecaySlope_filt[m], IM(tmp)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1298 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1299 /* store sample */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1300 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1301 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1302 RE(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]) = RE(tmp2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1303 IM(ps->delay_SubQmf_ser[m][temp_delay_ser[m]][sb]) = IM(tmp2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1304 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1305 RE(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]) = RE(tmp2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1306 IM(ps->delay_Qmf_ser[m][temp_delay_ser[m]][sb]) = IM(tmp2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1307 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1308 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1309 /* store for next iteration (or as output value if last iteration) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1310 RE(R0) = RE(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1311 IM(R0) = IM(tmp); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1312 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1313 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1314 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1315 /* select b(k) for reading the transient ratio */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1316 bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1317 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1318 /* duck if a past transient is found */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1319 RE(R0) = MUL_R(G_TransientRatio[n][bk], RE(R0)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1320 IM(R0) = MUL_R(G_TransientRatio[n][bk], IM(R0)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1321 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1322 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1323 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1324 /* hybrid */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1325 QMF_RE(X_hybrid_right[n][sb]) = RE(R0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1326 QMF_IM(X_hybrid_right[n][sb]) = IM(R0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1327 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1328 /* QMF */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1329 QMF_RE(X_right[n][sb]) = RE(R0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1330 QMF_IM(X_right[n][sb]) = IM(R0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1331 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1332 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1333 /* Update delay buffer index */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1334 if (++temp_delay >= 2) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1335 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1336 temp_delay = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1337 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1338 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1339 /* update delay indices */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1340 if (sb > ps->nr_allpass_bands && gr >= ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1341 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1342 /* delay_D depends on the samplerate, it can hold the values 14 and 1 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1343 if (++ps->delay_buf_index_delay[sb] >= ps->delay_D[sb]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1344 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1345 ps->delay_buf_index_delay[sb] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1346 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1347 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1348 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1349 for (m = 0; m < NO_ALLPASS_LINKS; m++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1350 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1351 if (++temp_delay_ser[m] >= ps->num_sample_delay_ser[m]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1352 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1353 temp_delay_ser[m] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1354 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1355 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1356 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1357 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1358 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1359 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1360 /* update delay indices */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1361 ps->saved_delay = temp_delay; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1362 for (m = 0; m < NO_ALLPASS_LINKS; m++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1363 ps->delay_buf_index_ser[m] = temp_delay_ser[m]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1364 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1365 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1366 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1367 #define step(shift) \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1368 if ((0x40000000l >> shift) + root <= value) \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1369 { \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1370 value -= (0x40000000l >> shift) + root; \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1371 root = (root >> 1) | (0x40000000l >> shift); \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1372 } else { \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1373 root = root >> 1; \ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1374 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1375 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1376 /* fixed point square root approximation */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1377 static real_t ps_sqrt(real_t value) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1378 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1379 real_t root = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1380 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1381 step( 0); step( 2); step( 4); step( 6); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1382 step( 8); step(10); step(12); step(14); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1383 step(16); step(18); step(20); step(22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1384 step(24); step(26); step(28); step(30); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1385 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1386 if (root < value) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1387 ++root; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1388 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1389 root <<= (REAL_BITS/2); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1390 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1391 return root; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1392 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1393 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1394 #define ps_sqrt(A) sqrt(A) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1395 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1396 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1397 static const real_t ipdopd_cos_tab[] = { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1398 FRAC_CONST(1.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1399 FRAC_CONST(0.707106781186548), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1400 FRAC_CONST(0.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1401 FRAC_CONST(-0.707106781186547), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1402 FRAC_CONST(-1.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1403 FRAC_CONST(-0.707106781186548), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1404 FRAC_CONST(-0.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1405 FRAC_CONST(0.707106781186547), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1406 FRAC_CONST(1.000000000000000) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1407 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1408 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1409 static const real_t ipdopd_sin_tab[] = { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1410 FRAC_CONST(0.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1411 FRAC_CONST(0.707106781186547), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1412 FRAC_CONST(1.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1413 FRAC_CONST(0.707106781186548), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1414 FRAC_CONST(0.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1415 FRAC_CONST(-0.707106781186547), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1416 FRAC_CONST(-1.000000000000000), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1417 FRAC_CONST(-0.707106781186548), |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1418 FRAC_CONST(-0.000000000000000) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1419 }; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1420 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1421 static void ps_mix_phase(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64], |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1422 qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1423 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1424 uint8_t n; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1425 uint8_t gr; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1426 uint8_t bk = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1427 uint8_t sb, maxsb; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1428 uint8_t env; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1429 uint8_t nr_ipdopd_par; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1430 complex_t h11, h12, h21, h22; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1431 complex_t H11, H12, H21, H22; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1432 complex_t deltaH11, deltaH12, deltaH21, deltaH22; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1433 complex_t tempLeft; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1434 complex_t tempRight; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1435 complex_t phaseLeft; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1436 complex_t phaseRight; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1437 real_t L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1438 const real_t *sf_iid; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1439 uint8_t no_iid_steps; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1440 |
405
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1441 /* These could otherwise be used uninitialized, according to GCC 4.0.2 */ |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1442 H22[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1443 H21[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1444 H12[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1445 H11[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1446 deltaH22[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1447 deltaH21[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1448 deltaH12[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1449 deltaH11[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1450 h22[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1451 h21[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1452 h12[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1453 h11[1] = 0; |
e23a39947f4c
[svn] Initialize variables to zero where required.
chainsaw
parents:
254
diff
changeset
|
1454 |
203
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1455 if (ps->iid_mode >= 3) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1456 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1457 no_iid_steps = 15; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1458 sf_iid = sf_iid_fine; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1459 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1460 no_iid_steps = 7; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1461 sf_iid = sf_iid_normal; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1462 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1463 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1464 if (ps->ipd_mode == 0 || ps->ipd_mode == 3) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1465 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1466 nr_ipdopd_par = 11; /* resolution */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1467 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1468 nr_ipdopd_par = ps->nr_ipdopd_par; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1469 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1470 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1471 for (gr = 0; gr < ps->num_groups; gr++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1472 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1473 bk = (~NEGATE_IPD_MASK) & ps->map_group2bk[gr]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1474 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1475 /* use one channel per group in the subqmf domain */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1476 maxsb = (gr < ps->num_hybrid_groups) ? ps->group_border[gr] + 1 : ps->group_border[gr + 1]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1477 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1478 for (env = 0; env < ps->num_env; env++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1479 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1480 if (ps->icc_mode < 3) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1481 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1482 /* type 'A' mixing as described in 8.6.4.6.2.1 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1483 real_t c_1, c_2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1484 real_t cosa, sina; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1485 real_t cosb, sinb; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1486 real_t ab1, ab2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1487 real_t ab3, ab4; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1488 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1489 /* |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1490 c_1 = sqrt(2.0 / (1.0 + pow(10.0, quant_iid[no_iid_steps + iid_index] / 10.0))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1491 c_2 = sqrt(2.0 / (1.0 + pow(10.0, quant_iid[no_iid_steps - iid_index] / 10.0))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1492 alpha = 0.5 * acos(quant_rho[icc_index]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1493 beta = alpha * ( c_1 - c_2 ) / sqrt(2.0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1494 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1495 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1496 //printf("%d\n", ps->iid_index[env][bk]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1497 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1498 /* calculate the scalefactors c_1 and c_2 from the intensity differences */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1499 c_1 = sf_iid[no_iid_steps + ps->iid_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1500 c_2 = sf_iid[no_iid_steps - ps->iid_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1501 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1502 /* calculate alpha and beta using the ICC parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1503 cosa = cos_alphas[ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1504 sina = sin_alphas[ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1505 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1506 if (ps->iid_mode >= 3) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1507 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1508 if (ps->iid_index[env][bk] < 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1509 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1510 cosb = cos_betas_fine[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1511 sinb = -sin_betas_fine[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1512 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1513 cosb = cos_betas_fine[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1514 sinb = sin_betas_fine[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1515 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1516 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1517 if (ps->iid_index[env][bk] < 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1518 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1519 cosb = cos_betas_normal[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1520 sinb = -sin_betas_normal[-ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1521 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1522 cosb = cos_betas_normal[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1523 sinb = sin_betas_normal[ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1524 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1525 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1526 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1527 ab1 = MUL_C(cosb, cosa); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1528 ab2 = MUL_C(sinb, sina); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1529 ab3 = MUL_C(sinb, cosa); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1530 ab4 = MUL_C(cosb, sina); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1531 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1532 /* h_xy: COEF */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1533 RE(h11) = MUL_C(c_2, (ab1 - ab2)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1534 RE(h12) = MUL_C(c_1, (ab1 + ab2)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1535 RE(h21) = MUL_C(c_2, (ab3 + ab4)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1536 RE(h22) = MUL_C(c_1, (ab3 - ab4)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1537 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1538 /* type 'B' mixing as described in 8.6.4.6.2.2 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1539 real_t sina, cosa; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1540 real_t cosg, sing; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1541 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1542 /* |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1543 real_t c, rho, mu, alpha, gamma; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1544 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1545 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1546 i = ps->iid_index[env][bk]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1547 c = (real_t)pow(10.0, ((i)?(((i>0)?1:-1)*quant_iid[((i>0)?i:-i)-1]):0.)/20.0); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1548 rho = quant_rho[ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1549 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1550 if (rho == 0.0f && c == 1.) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1551 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1552 alpha = (real_t)M_PI/4.0f; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1553 rho = 0.05f; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1554 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1555 if (rho <= 0.05f) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1556 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1557 rho = 0.05f; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1558 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1559 alpha = 0.5f*(real_t)atan( (2.0f*c*rho) / (c*c-1.0f) ); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1560 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1561 if (alpha < 0.) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1562 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1563 alpha += (real_t)M_PI/2.0f; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1564 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1565 if (rho < 0.) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1566 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1567 alpha += (real_t)M_PI; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1568 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1569 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1570 mu = c+1.0f/c; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1571 mu = 1+(4.0f*rho*rho-4.0f)/(mu*mu); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1572 gamma = (real_t)atan(sqrt((1.0f-sqrt(mu))/(1.0f+sqrt(mu)))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1573 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1574 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1575 if (ps->iid_mode >= 3) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1576 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1577 uint8_t abs_iid = abs(ps->iid_index[env][bk]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1578 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1579 cosa = sincos_alphas_B_fine[no_iid_steps + ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1580 sina = sincos_alphas_B_fine[30 - (no_iid_steps + ps->iid_index[env][bk])][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1581 cosg = cos_gammas_fine[abs_iid][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1582 sing = sin_gammas_fine[abs_iid][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1583 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1584 uint8_t abs_iid = abs(ps->iid_index[env][bk]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1585 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1586 cosa = sincos_alphas_B_normal[no_iid_steps + ps->iid_index[env][bk]][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1587 sina = sincos_alphas_B_normal[14 - (no_iid_steps + ps->iid_index[env][bk])][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1588 cosg = cos_gammas_normal[abs_iid][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1589 sing = sin_gammas_normal[abs_iid][ps->icc_index[env][bk]]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1590 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1591 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1592 RE(h11) = MUL_C(COEF_SQRT2, MUL_C(cosa, cosg)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1593 RE(h12) = MUL_C(COEF_SQRT2, MUL_C(sina, cosg)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1594 RE(h21) = MUL_C(COEF_SQRT2, MUL_C(-cosa, sing)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1595 RE(h22) = MUL_C(COEF_SQRT2, MUL_C(sina, sing)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1596 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1597 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1598 /* calculate phase rotation parameters H_xy */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1599 /* note that the imaginary part of these parameters are only calculated when |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1600 IPD and OPD are enabled |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1601 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1602 if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1603 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1604 int8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1605 real_t xxyy, ppqq; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1606 real_t yq, xp, xq, py, tmp; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1607 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1608 /* ringbuffer index */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1609 i = ps->phase_hist; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1610 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1611 /* previous value */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1612 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1613 /* divide by 4, shift right 2 bits */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1614 RE(tempLeft) = RE(ps->ipd_prev[bk][i]) >> 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1615 IM(tempLeft) = IM(ps->ipd_prev[bk][i]) >> 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1616 RE(tempRight) = RE(ps->opd_prev[bk][i]) >> 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1617 IM(tempRight) = IM(ps->opd_prev[bk][i]) >> 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1618 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1619 RE(tempLeft) = MUL_F(RE(ps->ipd_prev[bk][i]), FRAC_CONST(0.25)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1620 IM(tempLeft) = MUL_F(IM(ps->ipd_prev[bk][i]), FRAC_CONST(0.25)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1621 RE(tempRight) = MUL_F(RE(ps->opd_prev[bk][i]), FRAC_CONST(0.25)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1622 IM(tempRight) = MUL_F(IM(ps->opd_prev[bk][i]), FRAC_CONST(0.25)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1623 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1624 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1625 /* save current value */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1626 RE(ps->ipd_prev[bk][i]) = ipdopd_cos_tab[abs(ps->ipd_index[env][bk])]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1627 IM(ps->ipd_prev[bk][i]) = ipdopd_sin_tab[abs(ps->ipd_index[env][bk])]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1628 RE(ps->opd_prev[bk][i]) = ipdopd_cos_tab[abs(ps->opd_index[env][bk])]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1629 IM(ps->opd_prev[bk][i]) = ipdopd_sin_tab[abs(ps->opd_index[env][bk])]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1630 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1631 /* add current value */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1632 RE(tempLeft) += RE(ps->ipd_prev[bk][i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1633 IM(tempLeft) += IM(ps->ipd_prev[bk][i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1634 RE(tempRight) += RE(ps->opd_prev[bk][i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1635 IM(tempRight) += IM(ps->opd_prev[bk][i]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1636 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1637 /* ringbuffer index */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1638 if (i == 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1639 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1640 i = 2; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1641 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1642 i--; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1643 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1644 /* get value before previous */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1645 #ifdef FIXED_POINT |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1646 /* dividing by 2, shift right 1 bit */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1647 RE(tempLeft) += (RE(ps->ipd_prev[bk][i]) >> 1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1648 IM(tempLeft) += (IM(ps->ipd_prev[bk][i]) >> 1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1649 RE(tempRight) += (RE(ps->opd_prev[bk][i]) >> 1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1650 IM(tempRight) += (IM(ps->opd_prev[bk][i]) >> 1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1651 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1652 RE(tempLeft) += MUL_F(RE(ps->ipd_prev[bk][i]), FRAC_CONST(0.5)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1653 IM(tempLeft) += MUL_F(IM(ps->ipd_prev[bk][i]), FRAC_CONST(0.5)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1654 RE(tempRight) += MUL_F(RE(ps->opd_prev[bk][i]), FRAC_CONST(0.5)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1655 IM(tempRight) += MUL_F(IM(ps->opd_prev[bk][i]), FRAC_CONST(0.5)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1656 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1657 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1658 #if 0 /* original code */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1659 ipd = (float)atan2(IM(tempLeft), RE(tempLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1660 opd = (float)atan2(IM(tempRight), RE(tempRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1661 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1662 /* phase rotation */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1663 RE(phaseLeft) = (float)cos(opd); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1664 IM(phaseLeft) = (float)sin(opd); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1665 opd -= ipd; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1666 RE(phaseRight) = (float)cos(opd); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1667 IM(phaseRight) = (float)sin(opd); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1668 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1669 // x = IM(tempLeft) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1670 // y = RE(tempLeft) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1671 // p = IM(tempRight) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1672 // q = RE(tempRight) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1673 // cos(atan2(x,y)) = 1/sqrt(1 + (x*x)/(y*y)) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1674 // sin(atan2(x,y)) = x/(y*sqrt(1 + (x*x)/(y*y))) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1675 // cos(atan2(x,y)-atan2(p,q)) = (y*q+x*p)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1676 // sin(atan2(x,y)-atan2(p,q)) = (x*q-p*y)/(y*q * sqrt(1 + (x*x)/(y*y)) * sqrt(1 + (p*p)/(q*q))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1677 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1678 /* (x*x)/(y*y) (REAL > 0) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1679 xxyy = DIV_R(MUL_C(IM(tempLeft),IM(tempLeft)), MUL_C(RE(tempLeft),RE(tempLeft))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1680 ppqq = DIV_R(MUL_C(IM(tempRight),IM(tempRight)), MUL_C(RE(tempRight),RE(tempRight))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1681 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1682 /* 1 + (x*x)/(y*y) (REAL > 1) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1683 xxyy += REAL_CONST(1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1684 ppqq += REAL_CONST(1); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1685 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1686 /* 1 / sqrt(1 + (x*x)/(y*y)) (FRAC <= 1) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1687 xxyy = DIV_R(FRAC_CONST(1), ps_sqrt(xxyy)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1688 ppqq = DIV_R(FRAC_CONST(1), ps_sqrt(ppqq)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1689 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1690 /* COEF */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1691 yq = MUL_C(RE(tempLeft), RE(tempRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1692 xp = MUL_C(IM(tempLeft), IM(tempRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1693 xq = MUL_C(IM(tempLeft), RE(tempRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1694 py = MUL_C(RE(tempLeft), IM(tempRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1695 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1696 RE(phaseLeft) = xxyy; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1697 IM(phaseLeft) = MUL_R(xxyy, (DIV_R(IM(tempLeft), RE(tempLeft)))); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1698 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1699 tmp = DIV_C(MUL_F(xxyy, ppqq), yq); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1700 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1701 /* MUL_C(FRAC,COEF) = FRAC */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1702 RE(phaseRight) = MUL_C(tmp, (yq+xp)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1703 IM(phaseRight) = MUL_C(tmp, (xq-py)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1704 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1705 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1706 /* MUL_F(COEF, FRAC) = COEF */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1707 IM(h11) = MUL_F(RE(h11), IM(phaseLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1708 IM(h12) = MUL_F(RE(h12), IM(phaseRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1709 IM(h21) = MUL_F(RE(h21), IM(phaseLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1710 IM(h22) = MUL_F(RE(h22), IM(phaseRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1711 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1712 RE(h11) = MUL_F(RE(h11), RE(phaseLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1713 RE(h12) = MUL_F(RE(h12), RE(phaseRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1714 RE(h21) = MUL_F(RE(h21), RE(phaseLeft)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1715 RE(h22) = MUL_F(RE(h22), RE(phaseRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1716 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1717 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1718 /* length of the envelope n_e+1 - n_e (in time samples) */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1719 /* 0 < L <= 32: integer */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1720 L = (real_t)(ps->border_position[env + 1] - ps->border_position[env]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1721 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1722 /* obtain final H_xy by means of linear interpolation */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1723 RE(deltaH11) = (RE(h11) - RE(ps->h11_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1724 RE(deltaH12) = (RE(h12) - RE(ps->h12_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1725 RE(deltaH21) = (RE(h21) - RE(ps->h21_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1726 RE(deltaH22) = (RE(h22) - RE(ps->h22_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1727 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1728 RE(H11) = RE(ps->h11_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1729 RE(H12) = RE(ps->h12_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1730 RE(H21) = RE(ps->h21_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1731 RE(H22) = RE(ps->h22_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1732 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1733 RE(ps->h11_prev[gr]) = RE(h11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1734 RE(ps->h12_prev[gr]) = RE(h12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1735 RE(ps->h21_prev[gr]) = RE(h21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1736 RE(ps->h22_prev[gr]) = RE(h22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1737 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1738 /* only calculate imaginary part when needed */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1739 if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1740 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1741 /* obtain final H_xy by means of linear interpolation */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1742 IM(deltaH11) = (IM(h11) - IM(ps->h11_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1743 IM(deltaH12) = (IM(h12) - IM(ps->h12_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1744 IM(deltaH21) = (IM(h21) - IM(ps->h21_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1745 IM(deltaH22) = (IM(h22) - IM(ps->h22_prev[gr])) / L; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1746 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1747 IM(H11) = IM(ps->h11_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1748 IM(H12) = IM(ps->h12_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1749 IM(H21) = IM(ps->h21_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1750 IM(H22) = IM(ps->h22_prev[gr]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1751 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1752 if ((NEGATE_IPD_MASK & ps->map_group2bk[gr]) != 0) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1753 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1754 IM(deltaH11) = -IM(deltaH11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1755 IM(deltaH12) = -IM(deltaH12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1756 IM(deltaH21) = -IM(deltaH21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1757 IM(deltaH22) = -IM(deltaH22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1758 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1759 IM(H11) = -IM(H11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1760 IM(H12) = -IM(H12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1761 IM(H21) = -IM(H21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1762 IM(H22) = -IM(H22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1763 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1764 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1765 IM(ps->h11_prev[gr]) = IM(h11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1766 IM(ps->h12_prev[gr]) = IM(h12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1767 IM(ps->h21_prev[gr]) = IM(h21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1768 IM(ps->h22_prev[gr]) = IM(h22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1769 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1770 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1771 /* apply H_xy to the current envelope band of the decorrelated subband */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1772 for (n = ps->border_position[env]; n < ps->border_position[env + 1]; n++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1773 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1774 /* addition finalises the interpolation over every n */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1775 RE(H11) += RE(deltaH11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1776 RE(H12) += RE(deltaH12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1777 RE(H21) += RE(deltaH21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1778 RE(H22) += RE(deltaH22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1779 if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1780 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1781 IM(H11) += IM(deltaH11); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1782 IM(H12) += IM(deltaH12); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1783 IM(H21) += IM(deltaH21); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1784 IM(H22) += IM(deltaH22); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1785 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1786 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1787 /* channel is an alias to the subband */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1788 for (sb = ps->group_border[gr]; sb < maxsb; sb++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1789 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1790 complex_t inLeft, inRight; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1791 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1792 /* load decorrelated samples */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1793 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1794 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1795 RE(inLeft) = RE(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1796 IM(inLeft) = IM(X_hybrid_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1797 RE(inRight) = RE(X_hybrid_right[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1798 IM(inRight) = IM(X_hybrid_right[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1799 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1800 RE(inLeft) = RE(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1801 IM(inLeft) = IM(X_left[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1802 RE(inRight) = RE(X_right[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1803 IM(inRight) = IM(X_right[n][sb]); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1804 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1805 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1806 /* apply mixing */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1807 RE(tempLeft) = MUL_C(RE(H11), RE(inLeft)) + MUL_C(RE(H21), RE(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1808 IM(tempLeft) = MUL_C(RE(H11), IM(inLeft)) + MUL_C(RE(H21), IM(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1809 RE(tempRight) = MUL_C(RE(H12), RE(inLeft)) + MUL_C(RE(H22), RE(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1810 IM(tempRight) = MUL_C(RE(H12), IM(inLeft)) + MUL_C(RE(H22), IM(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1811 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1812 /* only perform imaginary operations when needed */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1813 if ((ps->enable_ipdopd) && (bk < nr_ipdopd_par)) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1814 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1815 /* apply rotation */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1816 RE(tempLeft) -= MUL_C(IM(H11), IM(inLeft)) + MUL_C(IM(H21), IM(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1817 IM(tempLeft) += MUL_C(IM(H11), RE(inLeft)) + MUL_C(IM(H21), RE(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1818 RE(tempRight) -= MUL_C(IM(H12), IM(inLeft)) + MUL_C(IM(H22), IM(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1819 IM(tempRight) += MUL_C(IM(H12), RE(inLeft)) + MUL_C(IM(H22), RE(inRight)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1820 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1821 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1822 /* store final samples */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1823 if (gr < ps->num_hybrid_groups) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1824 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1825 RE(X_hybrid_left[n][sb]) = RE(tempLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1826 IM(X_hybrid_left[n][sb]) = IM(tempLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1827 RE(X_hybrid_right[n][sb]) = RE(tempRight); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1828 IM(X_hybrid_right[n][sb]) = IM(tempRight); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1829 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1830 RE(X_left[n][sb]) = RE(tempLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1831 IM(X_left[n][sb]) = IM(tempLeft); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1832 RE(X_right[n][sb]) = RE(tempRight); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1833 IM(X_right[n][sb]) = IM(tempRight); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1834 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1835 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1836 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1837 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1838 /* shift phase smoother's circular buffer index */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1839 ps->phase_hist++; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1840 if (ps->phase_hist == 2) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1841 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1842 ps->phase_hist = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1843 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1844 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1845 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1846 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1847 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1848 void ps_free(ps_info *ps) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1849 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1850 /* free hybrid filterbank structures */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1851 hybrid_free(ps->hyb); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1852 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1853 faad_free(ps); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1854 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1855 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1856 ps_info *ps_init(uint8_t sr_index) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1857 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1858 uint8_t i; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1859 uint8_t short_delay_band; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1860 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1861 ps_info *ps = (ps_info*)faad_malloc(sizeof(ps_info)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1862 memset(ps, 0, sizeof(ps_info)); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1863 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1864 ps->hyb = hybrid_init(); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1865 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1866 ps->ps_data_available = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1867 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1868 /* delay stuff*/ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1869 ps->saved_delay = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1870 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1871 for (i = 0; i < 64; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1872 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1873 ps->delay_buf_index_delay[i] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1874 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1875 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1876 for (i = 0; i < NO_ALLPASS_LINKS; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1877 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1878 ps->delay_buf_index_ser[i] = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1879 #ifdef PARAM_32KHZ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1880 if (sr_index <= 5) /* >= 32 kHz*/ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1881 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1882 ps->num_sample_delay_ser[i] = delay_length_d[1][i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1883 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1884 ps->num_sample_delay_ser[i] = delay_length_d[0][i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1885 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1886 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1887 /* THESE ARE CONSTANTS NOW */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1888 ps->num_sample_delay_ser[i] = delay_length_d[i]; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1889 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1890 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1891 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1892 #ifdef PARAM_32KHZ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1893 if (sr_index <= 5) /* >= 32 kHz*/ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1894 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1895 short_delay_band = 35; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1896 ps->nr_allpass_bands = 22; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1897 ps->alpha_decay = FRAC_CONST(0.76592833836465); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1898 ps->alpha_smooth = FRAC_CONST(0.25); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1899 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1900 short_delay_band = 64; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1901 ps->nr_allpass_bands = 45; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1902 ps->alpha_decay = FRAC_CONST(0.58664621951003); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1903 ps->alpha_smooth = FRAC_CONST(0.6); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1904 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1905 #else |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1906 /* THESE ARE CONSTANTS NOW */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1907 short_delay_band = 35; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1908 ps->nr_allpass_bands = 22; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1909 ps->alpha_decay = FRAC_CONST(0.76592833836465); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1910 ps->alpha_smooth = FRAC_CONST(0.25); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1911 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1912 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1913 /* THESE ARE CONSTANT NOW IF PS IS INDEPENDANT OF SAMPLERATE */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1914 for (i = 0; i < short_delay_band; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1915 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1916 ps->delay_D[i] = 14; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1917 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1918 for (i = short_delay_band; i < 64; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1919 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1920 ps->delay_D[i] = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1921 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1922 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1923 /* mixing and phase */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1924 for (i = 0; i < 50; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1925 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1926 RE(ps->h11_prev[i]) = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1927 IM(ps->h12_prev[i]) = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1928 RE(ps->h11_prev[i]) = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1929 IM(ps->h12_prev[i]) = 1; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1930 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1931 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1932 ps->phase_hist = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1933 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1934 for (i = 0; i < 20; i++) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1935 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1936 RE(ps->ipd_prev[i][0]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1937 IM(ps->ipd_prev[i][0]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1938 RE(ps->ipd_prev[i][1]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1939 IM(ps->ipd_prev[i][1]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1940 RE(ps->opd_prev[i][0]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1941 IM(ps->opd_prev[i][0]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1942 RE(ps->opd_prev[i][1]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1943 IM(ps->opd_prev[i][1]) = 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1944 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1945 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1946 return ps; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1947 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1948 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1949 /* main Parametric Stereo decoding function */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1950 uint8_t ps_decode(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64]) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1951 { |
208 | 1952 qmf_t X_hybrid_left[32][32] = {{{0}}}; |
1953 qmf_t X_hybrid_right[32][32] = {{{0}}}; | |
203
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1954 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1955 /* delta decoding of the bitstream data */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1956 ps_data_decode(ps); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1957 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1958 /* set up some parameters depending on filterbank type */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1959 if (ps->use34hybrid_bands) |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1960 { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1961 ps->group_border = (uint8_t*)group_border34; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1962 ps->map_group2bk = (uint16_t*)map_group2bk34; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1963 ps->num_groups = 32+18; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1964 ps->num_hybrid_groups = 32; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1965 ps->nr_par_bands = 34; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1966 ps->decay_cutoff = 5; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1967 } else { |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1968 ps->group_border = (uint8_t*)group_border20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1969 ps->map_group2bk = (uint16_t*)map_group2bk20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1970 ps->num_groups = 10+12; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1971 ps->num_hybrid_groups = 10; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1972 ps->nr_par_bands = 20; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1973 ps->decay_cutoff = 3; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1974 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1975 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1976 /* Perform further analysis on the lowest subbands to get a higher |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1977 * frequency resolution |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1978 */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1979 hybrid_analysis((hyb_info*)ps->hyb, X_left, X_hybrid_left, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1980 ps->use34hybrid_bands); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1981 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1982 /* decorrelate mono signal */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1983 ps_decorrelate(ps, X_left, X_right, X_hybrid_left, X_hybrid_right); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1984 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1985 /* apply mixing and phase parameters */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1986 ps_mix_phase(ps, X_left, X_right, X_hybrid_left, X_hybrid_right); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1987 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1988 /* hybrid synthesis, to rebuild the SBR QMF matrices */ |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1989 hybrid_synthesis((hyb_info*)ps->hyb, X_left, X_hybrid_left, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1990 ps->use34hybrid_bands); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1991 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1992 hybrid_synthesis((hyb_info*)ps->hyb, X_right, X_hybrid_right, |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1993 ps->use34hybrid_bands); |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1994 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1995 return 0; |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1996 } |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1997 |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1998 #endif |
f0f81a26b850
[svn] Verify that all files are under version control. Upload a few that were not.
chainsaw
parents:
diff
changeset
|
1999 |