Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Yushin Cho
aom-rav1e
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
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
)
{
x
[
i
]
+=
a_update1
*
(
x
[
i
-
1
]
+
x
[
i
+
1
]);
}
x
[
0
]
+=
2
*
a_update1
*
x
[
1
];
// Predict 2
for
(
i
=
1
;
i
<
length
-
2
;
i
+=
2
)
{
x
[
i
]
+=
a_predict2
*
(
x
[
i
-
1
]
+
x
[
i
+
1
]);
}
x
[
length
-
1
]
+=
2
*
a_predict2
*
x
[
length