Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
libvpx
Commits
9c318ee3
Commit
9c318ee3
authored
Dec 13, 2012
by
Deb Mukherjee
Committed by
Gerrit Code Review
Dec 13, 2012
Browse files
Merge "Further improvements on the hybrid dwt/dct expt" into experimental
parents
f4608e36
210dc5b2
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1340 additions
and
290 deletions
+1340
-290
vp9/common/vp9_entropy.c
vp9/common/vp9_entropy.c
+264
-32
vp9/common/vp9_idctllm.c
vp9/common/vp9_idctllm.c
+665
-230
vp9/encoder/vp9_dct.c
vp9/encoder/vp9_dct.c
+411
-28
No files found.
vp9/common/vp9_entropy.c
View file @
9c318ee3
...
...
@@ -96,42 +96,271 @@ DECLARE_ALIGNED(64, const int, vp9_default_zig_zag1d_8x8[64]) = {
// Table can be optimized.
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_coef_bands_16x16
[
256
])
=
{
0
,
1
,
2
,
3
,
5
,
4
,
4
,
5
,
5
,
3
,
6
,
3
,
5
,
4
,
6
,
6
,
6
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
1
,
2
,
3
,
5
,
4
,
4
,
5
,
5
,
3
,
6
,
3
,
5
,
4
,
6
,
6
,
6
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
};
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_default_zig_zag1d_16x16
[
256
])
=
{
0
,
1
,
16
,
32
,
17
,
2
,
3
,
18
,
33
,
48
,
64
,
49
,
34
,
19
,
4
,
5
,
20
,
35
,
50
,
65
,
80
,
96
,
81
,
66
,
51
,
36
,
21
,
6
,
7
,
22
,
37
,
52
,
67
,
82
,
97
,
112
,
128
,
113
,
98
,
83
,
68
,
53
,
38
,
23
,
8
,
9
,
24
,
39
,
54
,
69
,
84
,
99
,
114
,
129
,
144
,
160
,
145
,
130
,
115
,
100
,
85
,
70
,
55
,
40
,
25
,
10
,
11
,
26
,
41
,
56
,
71
,
86
,
101
,
116
,
131
,
146
,
161
,
176
,
192
,
177
,
162
,
147
,
132
,
117
,
102
,
87
,
72
,
57
,
42
,
27
,
12
,
13
,
28
,
43
,
58
,
73
,
88
,
103
,
118
,
133
,
148
,
163
,
178
,
193
,
208
,
224
,
209
,
194
,
179
,
164
,
149
,
134
,
119
,
104
,
89
,
74
,
59
,
44
,
29
,
14
,
15
,
30
,
45
,
60
,
75
,
90
,
105
,
120
,
135
,
150
,
165
,
180
,
195
,
210
,
225
,
240
,
241
,
226
,
211
,
196
,
181
,
166
,
151
,
136
,
121
,
106
,
91
,
76
,
61
,
46
,
31
,
47
,
62
,
77
,
92
,
107
,
122
,
137
,
152
,
167
,
182
,
197
,
212
,
227
,
242
,
243
,
228
,
213
,
198
,
183
,
168
,
153
,
138
,
123
,
108
,
93
,
78
,
63
,
79
,
94
,
109
,
124
,
139
,
154
,
169
,
184
,
199
,
214
,
229
,
244
,
245
,
230
,
215
,
200
,
185
,
170
,
155
,
140
,
125
,
110
,
95
,
111
,
126
,
141
,
156
,
171
,
186
,
201
,
216
,
231
,
246
,
247
,
232
,
217
,
202
,
187
,
172
,
157
,
142
,
127
,
143
,
158
,
173
,
188
,
203
,
218
,
233
,
248
,
249
,
234
,
219
,
204
,
189
,
174
,
159
,
175
,
190
,
205
,
220
,
235
,
250
,
251
,
236
,
221
,
206
,
191
,
207
,
222
,
237
,
252
,
253
,
238
,
223
,
239
,
254
,
255
,
0
,
1
,
16
,
32
,
17
,
2
,
3
,
18
,
33
,
48
,
64
,
49
,
34
,
19
,
4
,
5
,
20
,
35
,
50
,
65
,
80
,
96
,
81
,
66
,
51
,
36
,
21
,
6
,
7
,
22
,
37
,
52
,
67
,
82
,
97
,
112
,
128
,
113
,
98
,
83
,
68
,
53
,
38
,
23
,
8
,
9
,
24
,
39
,
54
,
69
,
84
,
99
,
114
,
129
,
144
,
160
,
145
,
130
,
115
,
100
,
85
,
70
,
55
,
40
,
25
,
10
,
11
,
26
,
41
,
56
,
71
,
86
,
101
,
116
,
131
,
146
,
161
,
176
,
192
,
177
,
162
,
147
,
132
,
117
,
102
,
87
,
72
,
57
,
42
,
27
,
12
,
13
,
28
,
43
,
58
,
73
,
88
,
103
,
118
,
133
,
148
,
163
,
178
,
193
,
208
,
224
,
209
,
194
,
179
,
164
,
149
,
134
,
119
,
104
,
89
,
74
,
59
,
44
,
29
,
14
,
15
,
30
,
45
,
60
,
75
,
90
,
105
,
120
,
135
,
150
,
165
,
180
,
195
,
210
,
225
,
240
,
241
,
226
,
211
,
196
,
181
,
166
,
151
,
136
,
121
,
106
,
91
,
76
,
61
,
46
,
31
,
47
,
62
,
77
,
92
,
107
,
122
,
137
,
152
,
167
,
182
,
197
,
212
,
227
,
242
,
243
,
228
,
213
,
198
,
183
,
168
,
153
,
138
,
123
,
108
,
93
,
78
,
63
,
79
,
94
,
109
,
124
,
139
,
154
,
169
,
184
,
199
,
214
,
229
,
244
,
245
,
230
,
215
,
200
,
185
,
170
,
155
,
140
,
125
,
110
,
95
,
111
,
126
,
141
,
156
,
171
,
186
,
201
,
216
,
231
,
246
,
247
,
232
,
217
,
202
,
187
,
172
,
157
,
142
,
127
,
143
,
158
,
173
,
188
,
203
,
218
,
233
,
248
,
249
,
234
,
219
,
204
,
189
,
174
,
159
,
175
,
190
,
205
,
220
,
235
,
250
,
251
,
236
,
221
,
206
,
191
,
207
,
222
,
237
,
252
,
253
,
238
,
223
,
239
,
254
,
255
,
};
#if CONFIG_TX32X32 && CONFIG_SUPERBLOCKS
#if CONFIG_DWT32X32HYBRID
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_coef_bands_32x32
[
1024
])
=
{
0
,
1
,
2
,
3
,
5
,
4
,
4
,
5
,
5
,
3
,
6
,
3
,
5
,
4
,
6
,
6
,
6
,
6
,
6
,
6
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
};
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_default_zig_zag1d_32x32
[
1024
])
=
{
0
,
1
,
32
,
64
,
33
,
2
,
3
,
34
,
65
,
96
,
128
,
97
,
66
,
35
,
4
,
16
,
512
,
528
,
5
,
36
,
67
,
98
,
129
,
160
,
192
,
161
,
130
,
99
,
68
,
37
,
6
,
7
,
38
,
69
,
100
,
131
,
162
,
193
,
224
,
256
,
225
,
194
,
163
,
132
,
101
,
70
,
39
,
8
,
9
,
40
,
71
,
102
,
133
,
164
,
195
,
226
,
257
,
288
,
320
,
289
,
258
,
227
,
196
,
165
,
134
,
103
,
72
,
41
,
10
,
11
,
42
,
73
,
104
,
135
,
166
,
197
,
228
,
259
,
290
,
321
,
352
,
384
,
353
,
322
,
291
,
260
,
229
,
198
,
167
,
136
,
105
,
74
,
43
,
12
,
13
,
44
,
75
,
106
,
137
,
168
,
199
,
230
,
261
,
292
,
323
,
354
,
385
,
416
,
448
,
417
,
386
,
355
,
324
,
293
,
262
,
231
,
200
,
169
,
138
,
107
,
76
,
45
,
14
,
15
,
46
,
77
,
108
,
139
,
170
,
201
,
232
,
263
,
294
,
325
,
356
,
387
,
418
,
449
,
480
,
481
,
450
,
419
,
388
,
357
,
326
,
295
,
264
,
233
,
202
,
171
,
140
,
109
,
78
,
47
,
79
,
110
,
141
,
172
,
203
,
234
,
265
,
296
,
327
,
358
,
389
,
420
,
451
,
482
,
483
,
452
,
421
,
390
,
359
,
328
,
297
,
266
,
235
,
204
,
173
,
142
,
111
,
143
,
174
,
205
,
236
,
267
,
298
,
329
,
360
,
391
,
422
,
453
,
484
,
485
,
454
,
423
,
392
,
361
,
330
,
299
,
268
,
237
,
206
,
175
,
207
,
238
,
269
,
300
,
331
,
362
,
393
,
424
,
455
,
486
,
487
,
456
,
425
,
394
,
363
,
332
,
301
,
270
,
239
,
271
,
302
,
333
,
364
,
395
,
426
,
457
,
488
,
489
,
458
,
427
,
396
,
365
,
334
,
303
,
335
,
366
,
397
,
428
,
459
,
490
,
491
,
460
,
429
,
398
,
367
,
399
,
430
,
461
,
492
,
493
,
462
,
431
,
463
,
494
,
495
,
17
,
513
,
529
,
48
,
544
,
560
,
80
,
576
,
592
,
49
,
545
,
561
,
18
,
514
,
530
,
19
,
515
,
531
,
50
,
546
,
562
,
81
,
577
,
593
,
112
,
608
,
624
,
144
,
640
,
656
,
113
,
609
,
625
,
82
,
578
,
594
,
51
,
547
,
563
,
20
,
516
,
532
,
21
,
517
,
533
,
52
,
548
,
564
,
83
,
579
,
595
,
114
,
610
,
626
,
145
,
641
,
657
,
176
,
672
,
688
,
208
,
704
,
720
,
177
,
673
,
689
,
146
,
642
,
658
,
115
,
611
,
627
,
84
,
580
,
596
,
53
,
549
,
565
,
22
,
518
,
534
,
23
,
519
,
535
,
54
,
550
,
566
,
85
,
581
,
597
,
116
,
612
,
628
,
147
,
643
,
659
,
178
,
674
,
690
,
209
,
705
,
721
,
240
,
736
,
752
,
272
,
768
,
784
,
241
,
737
,
753
,
210
,
706
,
722
,
179
,
675
,
691
,
148
,
644
,
660
,
117
,
613
,
629
,
86
,
582
,
598
,
55
,
551
,
567
,
24
,
520
,
536
,
25
,
521
,
537
,
56
,
552
,
568
,
87
,
583
,
599
,
118
,
614
,
630
,
149
,
645
,
661
,
180
,
676
,
692
,
211
,
707
,
723
,
242
,
738
,
754
,
273
,
769
,
785
,
304
,
800
,
816
,
336
,
832
,
848
,
305
,
801
,
817
,
274
,
770
,
786
,
243
,
739
,
755
,
212
,
708
,
724
,
181
,
677
,
693
,
150
,
646
,
662
,
119
,
615
,
631
,
88
,
584
,
600
,
57
,
553
,
569
,
26
,
522
,
538
,
27
,
523
,
539
,
58
,
554
,
570
,
89
,
585
,
601
,
120
,
616
,
632
,
151
,
647
,
663
,
182
,
678
,
694
,
213
,
709
,
725
,
244
,
740
,
756
,
275
,
771
,
787
,
306
,
802
,
818
,
337
,
833
,
849
,
368
,
864
,
880
,
400
,
896
,
912
,
369
,
865
,
881
,
338
,
834
,
850
,
307
,
803
,
819
,
276
,
772
,
788
,
245
,
741
,
757
,
214
,
710
,
726
,
183
,
679
,
695
,
152
,
648
,
664
,
121
,
617
,
633
,
90
,
586
,
602
,
59
,
555
,
571
,
28
,
524
,
540
,
29
,
525
,
541
,
60
,
556
,
572
,
91
,
587
,
603
,
122
,
618
,
634
,
153
,
649
,
665
,
184
,
680
,
696
,
215
,
711
,
727
,
246
,
742
,
758
,
277
,
773
,
789
,
308
,
804
,
820
,
339
,
835
,
851
,
370
,
866
,
882
,
401
,
897
,
913
,
432
,
928
,
944
,
464
,
960
,
976
,
433
,
929
,
945
,
402
,
898
,
914
,
371
,
867
,
883
,
340
,
836
,
852
,
309
,
805
,
821
,
278
,
774
,
790
,
247
,
743
,
759
,
216
,
712
,
728
,
185
,
681
,
697
,
154
,
650
,
666
,
123
,
619
,
635
,
92
,
588
,
604
,
61
,
557
,
573
,
30
,
526
,
542
,
31
,
527
,
543
,
62
,
558
,
574
,
93
,
589
,
605
,
124
,
620
,
636
,
155
,
651
,
667
,
186
,
682
,
698
,
217
,
713
,
729
,
248
,
744
,
760
,
279
,
775
,
791
,
310
,
806
,
822
,
341
,
837
,
853
,
372
,
868
,
884
,
403
,
899
,
915
,
434
,
930
,
946
,
465
,
961
,
977
,
496
,
992
,
1008
,
497
,
993
,
1009
,
466
,
962
,
978
,
435
,
931
,
947
,
404
,
900
,
916
,
373
,
869
,
885
,
342
,
838
,
854
,
311
,
807
,
823
,
280
,
776
,
792
,
249
,
745
,
761
,
218
,
714
,
730
,
187
,
683
,
699
,
156
,
652
,
668
,
125
,
621
,
637
,
94
,
590
,
606
,
63
,
559
,
575
,
95
,
591
,
607
,
126
,
622
,
638
,
157
,
653
,
669
,
188
,
684
,
700
,
219
,
715
,
731
,
250
,
746
,
762
,
281
,
777
,
793
,
312
,
808
,
824
,
343
,
839
,
855
,
374
,
870
,
886
,
405
,
901
,
917
,
436
,
932
,
948
,
467
,
963
,
979
,
498
,
994
,
1010
,
499
,
995
,
1011
,
468
,
964
,
980
,
437
,
933
,
949
,
406
,
902
,
918
,
375
,
871
,
887
,
344
,
840
,
856
,
313
,
809
,
825
,
282
,
778
,
794
,
251
,
747
,
763
,
220
,
716
,
732
,
189
,
685
,
701
,
158
,
654
,
670
,
127
,
623
,
639
,
159
,
655
,
671
,
190
,
686
,
702
,
221
,
717
,
733
,
252
,
748
,
764
,
283
,
779
,
795
,
314
,
810
,
826
,
345
,
841
,
857
,
376
,
872
,
888
,
407
,
903
,
919
,
438
,
934
,
950
,
469
,
965
,
981
,
500
,
996
,
1012
,
501
,
997
,
1013
,
470
,
966
,
982
,
439
,
935
,
951
,
408
,
904
,
920
,
377
,
873
,
889
,
346
,
842
,
858
,
315
,
811
,
827
,
284
,
780
,
796
,
253
,
749
,
765
,
222
,
718
,
734
,
191
,
687
,
703
,
223
,
719
,
735
,
254
,
750
,
766
,
285
,
781
,
797
,
316
,
812
,
828
,
347
,
843
,
859
,
378
,
874
,
890
,
409
,
905
,
921
,
440
,
936
,
952
,
471
,
967
,
983
,
502
,
998
,
1014
,
503
,
999
,
1015
,
472
,
968
,
984
,
441
,
937
,
953
,
410
,
906
,
922
,
379
,
875
,
891
,
348
,
844
,
860
,
317
,
813
,
829
,
286
,
782
,
798
,
255
,
751
,
767
,
287
,
783
,
799
,
318
,
814
,
830
,
349
,
845
,
861
,
380
,
876
,
892
,
411
,
907
,
923
,
442
,
938
,
954
,
473
,
969
,
985
,
504
,
1000
,
1016
,
505
,
1001
,
1017
,
474
,
970
,
986
,
443
,
939
,
955
,
412
,
908
,
924
,
381
,
877
,
893
,
350
,
846
,
862
,
319
,
815
,
831
,
351
,
847
,
863
,
382
,
878
,
894
,
413
,
909
,
925
,
444
,
940
,
956
,
475
,
971
,
987
,
506
,
1002
,
1018
,
507
,
1003
,
1019
,
476
,
972
,
988
,
445
,
941
,
957
,
414
,
910
,
926
,
383
,
879
,
895
,
415
,
911
,
927
,
446
,
942
,
958
,
477
,
973
,
989
,
508
,
1004
,
1020
,
509
,
1005
,
1021
,
478
,
974
,
990
,
447
,
943
,
959
,
479
,
975
,
991
,
510
,
1006
,
1022
,
511
,
1007
,
1023
,
};
#else
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_coef_bands_32x32
[
1024
])
=
{
0
,
1
,
2
,
3
,
5
,
4
,
4
,
5
,
5
,
3
,
6
,
3
,
5
,
4
,
6
,
6
,
6
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
...
...
@@ -201,6 +430,7 @@ DECLARE_ALIGNED(16, const int, vp9_coef_bands_32x32[1024]) = {
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
};
DECLARE_ALIGNED
(
16
,
const
int
,
vp9_default_zig_zag1d_32x32
[
1024
])
=
{
0
,
1
,
32
,
64
,
33
,
2
,
3
,
34
,
65
,
96
,
128
,
97
,
66
,
35
,
4
,
5
,
36
,
67
,
98
,
129
,
160
,
192
,
161
,
130
,
99
,
68
,
37
,
6
,
7
,
38
,
69
,
100
,
131
,
162
,
193
,
224
,
256
,
225
,
194
,
163
,
132
,
101
,
70
,
39
,
8
,
9
,
40
,
71
,
102
,
133
,
164
,
195
,
226
,
257
,
288
,
320
,
289
,
258
,
227
,
196
,
165
,
134
,
103
,
72
,
...
...
@@ -235,6 +465,8 @@ DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]) = {
951
,
920
,
889
,
858
,
827
,
796
,
765
,
734
,
703
,
735
,
766
,
797
,
828
,
859
,
890
,
921
,
952
,
983
,
1014
,
1015
,
984
,
953
,
922
,
891
,
860
,
829
,
798
,
767
,
799
,
830
,
861
,
892
,
923
,
954
,
985
,
1016
,
1017
,
986
,
955
,
924
,
893
,
862
,
831
,
863
,
894
,
925
,
956
,
987
,
1018
,
1019
,
988
,
957
,
926
,
895
,
927
,
958
,
989
,
1020
,
1021
,
990
,
959
,
991
,
1022
,
1023
,
};
#endif // CONFIG_DWT32X32HYBRID
#endif
/* Array indices are identical to previously-existing CONTEXT_NODE indices */
...
...
vp9/common/vp9_idctllm.c
View file @
9c318ee3
This diff is collapsed.
Click to expand it.
vp9/encoder/vp9_dct.c
View file @
9c318ee3
...
...
@@ -902,23 +902,24 @@ void vp9_short_walsh8x4_x8_c(short *input, short *output, int pitch) {
#define TEST_INT_16x16_DCT 1
#if !TEST_INT_16x16_DCT
static
const
double
C1
=
0
.
995184726672197
;
static
const
double
C2
=
0
.
98078528040323
;
static
const
double
C3
=
0
.
956940335732209
;
static
const
double
C4
=
0
.
923879532511287
;
static
const
double
C5
=
0
.
881921264348355
;
static
const
double
C6
=
0
.
831469612302545
;
static
const
double
C7
=
0
.
773010453362737
;
static
const
double
C8
=
0
.
707106781186548
;
static
const
double
C9
=
0
.
634393284163646
;
static
const
double
C10
=
0
.
555570233019602
;
static
const
double
C11
=
0
.
471396736825998
;
static
const
double
C12
=
0
.
38268343236509
;
static
const
double
C13
=
0
.
290284677254462
;
static
const
double
C14
=
0
.
195090322016128
;
static
const
double
C15
=
0
.
098017140329561
;
static
void
dct16x16_1d
(
double
input
[
16
],
double
output
[
16
])
{
static
const
double
C1
=
0
.
995184726672197
;
static
const
double
C2
=
0
.
98078528040323
;
static
const
double
C3
=
0
.
956940335732209
;
static
const
double
C4
=
0
.
923879532511287
;
static
const
double
C5
=
0
.
881921264348355
;
static
const
double
C6
=
0
.
831469612302545
;
static
const
double
C7
=
0
.
773010453362737
;
static
const
double
C8
=
0
.
707106781186548
;
static
const
double
C9
=
0
.
634393284163646
;
static
const
double
C10
=
0
.
555570233019602
;
static
const
double
C11
=
0
.
471396736825998
;
static
const
double
C12
=
0
.
38268343236509
;
static
const
double
C13
=
0
.
290284677254462
;
static
const
double
C14
=
0
.
195090322016128
;
static
const
double
C15
=
0
.
098017140329561
;
vp9_clear_system_state
();
// Make it simd safe : __asm emms;
{
double
step
[
16
];
...
...
@@ -1686,15 +1687,18 @@ void vp9_short_fdct32x32_c(int16_t *input, int16_t *out, int pitch) {
#else // CONFIG_DWT32X32HYBRID
#define MAX_BLOCK_LENGTH 64
#define ENH_PRECISION_BITS 1
#define ENH_PRECISION_RND ((1 << ENH_PRECISION_BITS) / 2)
#define DWT_MAX_LENGTH 64
#define DWT_TYPE 26 // 26/53/97
#define DWT_PRECISION_BITS 2
#define DWT_PRECISION_RND ((1 << DWT_PRECISION_BITS) / 2)
#if DWT_TYPE == 53
// Note: block length must be even for this implementation
static
void
analysis_53_row
(
int
length
,
short
*
x
,
short
*
lowpass
,
short
*
highpass
)
{
int
n
;
short
r
,
*
a
,
*
b
;
short
r
,
*
a
,
*
b
;
n
=
length
>>
1
;
b
=
highpass
;
...
...
@@ -1720,7 +1724,7 @@ static void analysis_53_row(int length, short *x,
static
void
analysis_53_col
(
int
length
,
short
*
x
,
short
*
lowpass
,
short
*
highpass
)
{
int
n
;
short
r
,
*
a
,
*
b
;
short
r
,
*
a
,
*
b
;
n
=
length
>>
1
;
b
=
highpass
;
...
...
@@ -1743,15 +1747,13 @@ static void analysis_53_col(int length, short *x,
}
}
// NOTE: Using a 5/3 integer wavelet for now. Explore using a wavelet
// with a better response later
static
void
dyadic_analyze
(
int
levels
,
int
width
,
int
height
,
short
*
x
,
int
pitch_x
,
short
*
c
,
int
pitch_c
)
{
static
void
dyadic_analyze_53
(
int
levels
,
int
width
,
int
height
,
short
*
x
,
int
pitch_x
,
short
*
c
,
int
pitch_c
)
{
int
lv
,
i
,
j
,
nh
,
nw
,
hh
=
height
,
hw
=
width
;
short
buffer
[
2
*
MAX_BLOCK
_LENGTH
];
short
buffer
[
2
*
DWT_MAX
_LENGTH
];
for
(
i
=
0
;
i
<
height
;
i
++
)
{
for
(
j
=
0
;
j
<
width
;
j
++
)
{
c
[
i
*
pitch_c
+
j
]
=
x
[
i
*
pitch_x
+
j
]
<<
ENH
_PRECISION_BITS
;
c
[
i
*
pitch_c
+
j
]
=
x
[
i
*
pitch_x
+
j
]
<<
DWT
_PRECISION_BITS
;
}
}
for
(
lv
=
0
;
lv
<
levels
;
lv
++
)
{
...
...
@@ -1774,17 +1776,398 @@ static void dyadic_analyze(int levels, int width, int height,
}
}
#elif DWT_TYPE == 26
static
void
analysis_26_row
(
int
length
,
short
*
x
,
short
*
lowpass
,
short
*
highpass
)
{
int
i
,
n
;
short
r
,
s
,
*
a
,
*
b
;
a
=
lowpass
;
b
=
highpass
;
for
(
i
=
length
>>
1
;
i
;
i
--
)
{
r
=
*
x
++
;
s
=
*
x
++
;
*
a
++
=
r
+
s
;
*
b
++
=
r
-
s
;
}
n
=
length
>>
1
;
if
(
n
>=
4
)
{
a
=
lowpass
;
b
=
highpass
;
r
=
*
lowpass
;
while
(
--
n
)
{
*
b
++
-=
(
r
-
a
[
1
]
+
4
)
>>
3
;
r
=
*
a
++
;
}
*
b
-=
(
r
-
*
a
+
4
)
>>
3
;
}
}
static
void
analysis_26_col
(
int
length
,
short
*
x
,
short
*
lowpass
,
short
*
highpass
)
{
int
i
,
n
;
short
r
,
s
,
*
a
,
*
b
;
a
=
lowpass
;
b
=
highpass
;
for
(
i
=
length
>>
1
;
i
;
i
--
)
{
r
=
*
x
++
;
s
=
*
x
++
;
*
a
++
=
(
r
+
s
+
1
)
>>
1
;
*
b
++
=
(
r
-
s
+
1
)
>>
1
;
}
n
=
length
>>
1
;
if
(
n
>=
4
)
{
a
=
lowpass
;
b
=
highpass
;
r
=
*
lowpass
;
while
(
--
n
)
{
*
b
++
-=
(
r
-
a
[
1
]
+
4
)
>>
3
;
r
=
*
a
++
;
}
*
b
-=
(
r
-
*
a
+
4
)
>>
3
;
}
}
static
void
dyadic_analyze_26
(
int
levels
,
int
width
,
int
height
,
short
*
x
,
int
pitch_x
,
short
*
c
,
int
pitch_c
)
{
int
lv
,
i
,
j
,
nh
,
nw
,
hh
=
height
,
hw
=
width
;
short
buffer
[
2
*
DWT_MAX_LENGTH
];
for
(
i
=
0
;
i
<
height
;
i
++
)
{
for
(
j
=
0
;
j
<
width
;
j
++
)
{
c
[
i
*
pitch_c
+
j
]
=
x
[
i
*
pitch_x
+
j
]
<<
DWT_PRECISION_BITS
;
}
}
for
(
lv
=
0
;
lv
<
levels
;
lv
++
)
{
nh
=
hh
;
hh
=
(
hh
+
1
)
>>
1
;
nw
=
hw
;
hw
=
(
hw
+
1
)
>>
1
;
if
((
nh
<
2
)
||
(
nw
<
2
))
return
;
for
(
i
=
0
;
i
<
nh
;
i
++
)
{
memcpy
(
buffer
,
&
c
[
i
*
pitch_c
],
nw
*
sizeof
(
short
));
analysis_26_row
(
nw
,
buffer
,
&
c
[
i
*
pitch_c
],
&
c
[
i
*
pitch_c
]
+
hw
);
}
for
(
j
=
0
;
j
<
nw
;
j
++
)
{
for
(
i
=
0
;
i
<
nh
;
i
++
)
buffer
[
i
+
nh
]
=
c
[
i
*
pitch_c
+
j
];
analysis_26_col
(
nh
,
buffer
+
nh
,
buffer
,
buffer
+
hh
);
for
(
i
=
0
;
i
<
nh
;
i
++
)
c
[
i
*
pitch_c
+
j
]
=
buffer
[
i
];
}
}
}
#elif DWT_TYPE == 97
static
void
analysis_97
(
int
length
,
double
*
x
,
double
*
lowpass
,
double
*
highpass
)
{
static
const
double
a_predict1
=
-
1
.
586134342
;
static
const
double
a_update1
=
-
0
.
052
98011854
;
static
const
double
a_predict2
=
0
.
8829110762
;
static
const
double
a_update2
=
0
.
4435068522
;
static
const
double
s_low
=
1
.
149604398
;
static
const
double
s_high
=
1
/
1
.
149604398
;
int
i
;
double
y
[
DWT_MAX_LENGTH
];
// Predict 1
for
(
i
=
1
;
i
<
length
-
2
;
i
+=
2
)
{
x
[
i
]
+=
a_predict1
*
(
x
[
i
-
1
]
+
x
[
i
+
1
]);
}
x
[
length
-
1
]
+=
2
*
a_predict1
*
x
[
length
-
2
];
// Update 1
for
(
i
=
2
;
i
<
length
;
i
+=
2
)
{