|
1 /* |
|
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
|
3 * |
|
4 * Use of this source code is governed by a BSD-style license |
|
5 * that can be found in the LICENSE file in the root of the source |
|
6 * tree. An additional intellectual property rights grant can be found |
|
7 * in the file PATENTS. All contributing project authors may |
|
8 * be found in the AUTHORS file in the root of the source tree. |
|
9 */ |
|
10 |
|
11 |
|
12 #include <stdlib.h> |
|
13 #include "vp9/common/vp9_sadmxn.h" |
|
14 #include "vp9/encoder/vp9_variance.h" |
|
15 #include "./vpx_config.h" |
|
16 #include "vpx/vpx_integer.h" |
|
17 #include "./vp9_rtcd.h" |
|
18 |
|
19 #define sad_mxn_func(m, n) \ |
|
20 unsigned int vp9_sad##m##x##n##_c(const uint8_t *src_ptr, \ |
|
21 int src_stride, \ |
|
22 const uint8_t *ref_ptr, \ |
|
23 int ref_stride, \ |
|
24 unsigned int max_sad) { \ |
|
25 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, m, n); \ |
|
26 } \ |
|
27 unsigned int vp9_sad##m##x##n##_avg_c(const uint8_t *src_ptr, \ |
|
28 int src_stride, \ |
|
29 const uint8_t *ref_ptr, \ |
|
30 int ref_stride, \ |
|
31 const uint8_t *second_pred, \ |
|
32 unsigned int max_sad) { \ |
|
33 uint8_t comp_pred[m * n]; \ |
|
34 comp_avg_pred(comp_pred, second_pred, m, n, ref_ptr, ref_stride); \ |
|
35 return sad_mx_n_c(src_ptr, src_stride, comp_pred, m, m, n); \ |
|
36 } |
|
37 |
|
38 sad_mxn_func(64, 64) |
|
39 sad_mxn_func(64, 32) |
|
40 sad_mxn_func(32, 64) |
|
41 sad_mxn_func(32, 32) |
|
42 sad_mxn_func(32, 16) |
|
43 sad_mxn_func(16, 32) |
|
44 sad_mxn_func(16, 16) |
|
45 sad_mxn_func(16, 8) |
|
46 sad_mxn_func(8, 16) |
|
47 sad_mxn_func(8, 8) |
|
48 sad_mxn_func(8, 4) |
|
49 sad_mxn_func(4, 8) |
|
50 sad_mxn_func(4, 4) |
|
51 |
|
52 void vp9_sad64x32x4d_c(const uint8_t *src_ptr, |
|
53 int src_stride, |
|
54 const uint8_t* const ref_ptr[], |
|
55 int ref_stride, |
|
56 unsigned int *sad_array) { |
|
57 sad_array[0] = vp9_sad64x32(src_ptr, src_stride, |
|
58 ref_ptr[0], ref_stride, 0x7fffffff); |
|
59 sad_array[1] = vp9_sad64x32(src_ptr, src_stride, |
|
60 ref_ptr[1], ref_stride, 0x7fffffff); |
|
61 sad_array[2] = vp9_sad64x32(src_ptr, src_stride, |
|
62 ref_ptr[2], ref_stride, 0x7fffffff); |
|
63 sad_array[3] = vp9_sad64x32(src_ptr, src_stride, |
|
64 ref_ptr[3], ref_stride, 0x7fffffff); |
|
65 } |
|
66 |
|
67 void vp9_sad32x64x4d_c(const uint8_t *src_ptr, |
|
68 int src_stride, |
|
69 const uint8_t* const ref_ptr[], |
|
70 int ref_stride, |
|
71 unsigned int *sad_array) { |
|
72 sad_array[0] = vp9_sad32x64(src_ptr, src_stride, |
|
73 ref_ptr[0], ref_stride, 0x7fffffff); |
|
74 sad_array[1] = vp9_sad32x64(src_ptr, src_stride, |
|
75 ref_ptr[1], ref_stride, 0x7fffffff); |
|
76 sad_array[2] = vp9_sad32x64(src_ptr, src_stride, |
|
77 ref_ptr[2], ref_stride, 0x7fffffff); |
|
78 sad_array[3] = vp9_sad32x64(src_ptr, src_stride, |
|
79 ref_ptr[3], ref_stride, 0x7fffffff); |
|
80 } |
|
81 |
|
82 void vp9_sad32x16x4d_c(const uint8_t *src_ptr, |
|
83 int src_stride, |
|
84 const uint8_t* const ref_ptr[], |
|
85 int ref_stride, |
|
86 unsigned int *sad_array) { |
|
87 sad_array[0] = vp9_sad32x16(src_ptr, src_stride, |
|
88 ref_ptr[0], ref_stride, 0x7fffffff); |
|
89 sad_array[1] = vp9_sad32x16(src_ptr, src_stride, |
|
90 ref_ptr[1], ref_stride, 0x7fffffff); |
|
91 sad_array[2] = vp9_sad32x16(src_ptr, src_stride, |
|
92 ref_ptr[2], ref_stride, 0x7fffffff); |
|
93 sad_array[3] = vp9_sad32x16(src_ptr, src_stride, |
|
94 ref_ptr[3], ref_stride, 0x7fffffff); |
|
95 } |
|
96 |
|
97 void vp9_sad16x32x4d_c(const uint8_t *src_ptr, |
|
98 int src_stride, |
|
99 const uint8_t* const ref_ptr[], |
|
100 int ref_stride, |
|
101 unsigned int *sad_array) { |
|
102 sad_array[0] = vp9_sad16x32(src_ptr, src_stride, |
|
103 ref_ptr[0], ref_stride, 0x7fffffff); |
|
104 sad_array[1] = vp9_sad16x32(src_ptr, src_stride, |
|
105 ref_ptr[1], ref_stride, 0x7fffffff); |
|
106 sad_array[2] = vp9_sad16x32(src_ptr, src_stride, |
|
107 ref_ptr[2], ref_stride, 0x7fffffff); |
|
108 sad_array[3] = vp9_sad16x32(src_ptr, src_stride, |
|
109 ref_ptr[3], ref_stride, 0x7fffffff); |
|
110 } |
|
111 |
|
112 void vp9_sad64x64x3_c(const uint8_t *src_ptr, |
|
113 int src_stride, |
|
114 const uint8_t *ref_ptr, |
|
115 int ref_stride, |
|
116 unsigned int *sad_array) { |
|
117 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, ref_ptr, ref_stride, |
|
118 0x7fffffff); |
|
119 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 1, ref_stride, |
|
120 0x7fffffff); |
|
121 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 2, ref_stride, |
|
122 0x7fffffff); |
|
123 } |
|
124 |
|
125 void vp9_sad32x32x3_c(const uint8_t *src_ptr, |
|
126 int src_stride, |
|
127 const uint8_t *ref_ptr, |
|
128 int ref_stride, |
|
129 unsigned int *sad_array) { |
|
130 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, |
|
131 ref_ptr, ref_stride, 0x7fffffff); |
|
132 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, |
|
133 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
134 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, |
|
135 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
136 } |
|
137 |
|
138 void vp9_sad64x64x8_c(const uint8_t *src_ptr, |
|
139 int src_stride, |
|
140 const uint8_t *ref_ptr, |
|
141 int ref_stride, |
|
142 unsigned int *sad_array) { |
|
143 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, |
|
144 ref_ptr, ref_stride, |
|
145 0x7fffffff); |
|
146 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, |
|
147 ref_ptr + 1, ref_stride, |
|
148 0x7fffffff); |
|
149 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, |
|
150 ref_ptr + 2, ref_stride, |
|
151 0x7fffffff); |
|
152 sad_array[3] = vp9_sad64x64(src_ptr, src_stride, |
|
153 ref_ptr + 3, ref_stride, |
|
154 0x7fffffff); |
|
155 sad_array[4] = vp9_sad64x64(src_ptr, src_stride, |
|
156 ref_ptr + 4, ref_stride, |
|
157 0x7fffffff); |
|
158 sad_array[5] = vp9_sad64x64(src_ptr, src_stride, |
|
159 ref_ptr + 5, ref_stride, |
|
160 0x7fffffff); |
|
161 sad_array[6] = vp9_sad64x64(src_ptr, src_stride, |
|
162 ref_ptr + 6, ref_stride, |
|
163 0x7fffffff); |
|
164 sad_array[7] = vp9_sad64x64(src_ptr, src_stride, |
|
165 ref_ptr + 7, ref_stride, |
|
166 0x7fffffff); |
|
167 } |
|
168 |
|
169 void vp9_sad32x32x8_c(const uint8_t *src_ptr, |
|
170 int src_stride, |
|
171 const uint8_t *ref_ptr, |
|
172 int ref_stride, |
|
173 unsigned int *sad_array) { |
|
174 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, |
|
175 ref_ptr, ref_stride, |
|
176 0x7fffffff); |
|
177 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, |
|
178 ref_ptr + 1, ref_stride, |
|
179 0x7fffffff); |
|
180 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, |
|
181 ref_ptr + 2, ref_stride, |
|
182 0x7fffffff); |
|
183 sad_array[3] = vp9_sad32x32(src_ptr, src_stride, |
|
184 ref_ptr + 3, ref_stride, |
|
185 0x7fffffff); |
|
186 sad_array[4] = vp9_sad32x32(src_ptr, src_stride, |
|
187 ref_ptr + 4, ref_stride, |
|
188 0x7fffffff); |
|
189 sad_array[5] = vp9_sad32x32(src_ptr, src_stride, |
|
190 ref_ptr + 5, ref_stride, |
|
191 0x7fffffff); |
|
192 sad_array[6] = vp9_sad32x32(src_ptr, src_stride, |
|
193 ref_ptr + 6, ref_stride, |
|
194 0x7fffffff); |
|
195 sad_array[7] = vp9_sad32x32(src_ptr, src_stride, |
|
196 ref_ptr + 7, ref_stride, |
|
197 0x7fffffff); |
|
198 } |
|
199 |
|
200 void vp9_sad16x16x3_c(const uint8_t *src_ptr, |
|
201 int src_stride, |
|
202 const uint8_t *ref_ptr, |
|
203 int ref_stride, |
|
204 unsigned int *sad_array) { |
|
205 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, |
|
206 ref_ptr, ref_stride, 0x7fffffff); |
|
207 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, |
|
208 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
209 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, |
|
210 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
211 } |
|
212 |
|
213 void vp9_sad16x16x8_c(const uint8_t *src_ptr, |
|
214 int src_stride, |
|
215 const uint8_t *ref_ptr, |
|
216 int ref_stride, |
|
217 uint32_t *sad_array) { |
|
218 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, |
|
219 ref_ptr, ref_stride, |
|
220 0x7fffffff); |
|
221 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, |
|
222 ref_ptr + 1, ref_stride, |
|
223 0x7fffffff); |
|
224 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, |
|
225 ref_ptr + 2, ref_stride, |
|
226 0x7fffffff); |
|
227 sad_array[3] = vp9_sad16x16(src_ptr, src_stride, |
|
228 ref_ptr + 3, ref_stride, |
|
229 0x7fffffff); |
|
230 sad_array[4] = vp9_sad16x16(src_ptr, src_stride, |
|
231 ref_ptr + 4, ref_stride, |
|
232 0x7fffffff); |
|
233 sad_array[5] = vp9_sad16x16(src_ptr, src_stride, |
|
234 ref_ptr + 5, ref_stride, |
|
235 0x7fffffff); |
|
236 sad_array[6] = vp9_sad16x16(src_ptr, src_stride, |
|
237 ref_ptr + 6, ref_stride, |
|
238 0x7fffffff); |
|
239 sad_array[7] = vp9_sad16x16(src_ptr, src_stride, |
|
240 ref_ptr + 7, ref_stride, |
|
241 0x7fffffff); |
|
242 } |
|
243 |
|
244 void vp9_sad16x8x3_c(const uint8_t *src_ptr, |
|
245 int src_stride, |
|
246 const uint8_t *ref_ptr, |
|
247 int ref_stride, |
|
248 unsigned int *sad_array) { |
|
249 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, |
|
250 ref_ptr, ref_stride, 0x7fffffff); |
|
251 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, |
|
252 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
253 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, |
|
254 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
255 } |
|
256 |
|
257 void vp9_sad16x8x8_c(const uint8_t *src_ptr, |
|
258 int src_stride, |
|
259 const uint8_t *ref_ptr, |
|
260 int ref_stride, |
|
261 uint32_t *sad_array) { |
|
262 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, |
|
263 ref_ptr, ref_stride, |
|
264 0x7fffffff); |
|
265 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, |
|
266 ref_ptr + 1, ref_stride, |
|
267 0x7fffffff); |
|
268 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, |
|
269 ref_ptr + 2, ref_stride, |
|
270 0x7fffffff); |
|
271 sad_array[3] = vp9_sad16x8(src_ptr, src_stride, |
|
272 ref_ptr + 3, ref_stride, |
|
273 0x7fffffff); |
|
274 sad_array[4] = vp9_sad16x8(src_ptr, src_stride, |
|
275 ref_ptr + 4, ref_stride, |
|
276 0x7fffffff); |
|
277 sad_array[5] = vp9_sad16x8(src_ptr, src_stride, |
|
278 ref_ptr + 5, ref_stride, |
|
279 0x7fffffff); |
|
280 sad_array[6] = vp9_sad16x8(src_ptr, src_stride, |
|
281 ref_ptr + 6, ref_stride, |
|
282 0x7fffffff); |
|
283 sad_array[7] = vp9_sad16x8(src_ptr, src_stride, |
|
284 ref_ptr + 7, ref_stride, |
|
285 0x7fffffff); |
|
286 } |
|
287 |
|
288 void vp9_sad8x8x3_c(const uint8_t *src_ptr, |
|
289 int src_stride, |
|
290 const uint8_t *ref_ptr, |
|
291 int ref_stride, |
|
292 unsigned int *sad_array) { |
|
293 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, |
|
294 ref_ptr, ref_stride, 0x7fffffff); |
|
295 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, |
|
296 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
297 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, |
|
298 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
299 } |
|
300 |
|
301 void vp9_sad8x8x8_c(const uint8_t *src_ptr, |
|
302 int src_stride, |
|
303 const uint8_t *ref_ptr, |
|
304 int ref_stride, |
|
305 uint32_t *sad_array) { |
|
306 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, |
|
307 ref_ptr, ref_stride, |
|
308 0x7fffffff); |
|
309 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, |
|
310 ref_ptr + 1, ref_stride, |
|
311 0x7fffffff); |
|
312 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, |
|
313 ref_ptr + 2, ref_stride, |
|
314 0x7fffffff); |
|
315 sad_array[3] = vp9_sad8x8(src_ptr, src_stride, |
|
316 ref_ptr + 3, ref_stride, |
|
317 0x7fffffff); |
|
318 sad_array[4] = vp9_sad8x8(src_ptr, src_stride, |
|
319 ref_ptr + 4, ref_stride, |
|
320 0x7fffffff); |
|
321 sad_array[5] = vp9_sad8x8(src_ptr, src_stride, |
|
322 ref_ptr + 5, ref_stride, |
|
323 0x7fffffff); |
|
324 sad_array[6] = vp9_sad8x8(src_ptr, src_stride, |
|
325 ref_ptr + 6, ref_stride, |
|
326 0x7fffffff); |
|
327 sad_array[7] = vp9_sad8x8(src_ptr, src_stride, |
|
328 ref_ptr + 7, ref_stride, |
|
329 0x7fffffff); |
|
330 } |
|
331 |
|
332 void vp9_sad8x16x3_c(const uint8_t *src_ptr, |
|
333 int src_stride, |
|
334 const uint8_t *ref_ptr, |
|
335 int ref_stride, |
|
336 unsigned int *sad_array) { |
|
337 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, |
|
338 ref_ptr, ref_stride, 0x7fffffff); |
|
339 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, |
|
340 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
341 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, |
|
342 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
343 } |
|
344 |
|
345 void vp9_sad8x16x8_c(const uint8_t *src_ptr, |
|
346 int src_stride, |
|
347 const uint8_t *ref_ptr, |
|
348 int ref_stride, |
|
349 uint32_t *sad_array) { |
|
350 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, |
|
351 ref_ptr, ref_stride, |
|
352 0x7fffffff); |
|
353 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, |
|
354 ref_ptr + 1, ref_stride, |
|
355 0x7fffffff); |
|
356 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, |
|
357 ref_ptr + 2, ref_stride, |
|
358 0x7fffffff); |
|
359 sad_array[3] = vp9_sad8x16(src_ptr, src_stride, |
|
360 ref_ptr + 3, ref_stride, |
|
361 0x7fffffff); |
|
362 sad_array[4] = vp9_sad8x16(src_ptr, src_stride, |
|
363 ref_ptr + 4, ref_stride, |
|
364 0x7fffffff); |
|
365 sad_array[5] = vp9_sad8x16(src_ptr, src_stride, |
|
366 ref_ptr + 5, ref_stride, |
|
367 0x7fffffff); |
|
368 sad_array[6] = vp9_sad8x16(src_ptr, src_stride, |
|
369 ref_ptr + 6, ref_stride, |
|
370 0x7fffffff); |
|
371 sad_array[7] = vp9_sad8x16(src_ptr, src_stride, |
|
372 ref_ptr + 7, ref_stride, |
|
373 0x7fffffff); |
|
374 } |
|
375 |
|
376 void vp9_sad4x4x3_c(const uint8_t *src_ptr, |
|
377 int src_stride, |
|
378 const uint8_t *ref_ptr, |
|
379 int ref_stride, |
|
380 unsigned int *sad_array) { |
|
381 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, |
|
382 ref_ptr, ref_stride, 0x7fffffff); |
|
383 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, |
|
384 ref_ptr + 1, ref_stride, 0x7fffffff); |
|
385 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, |
|
386 ref_ptr + 2, ref_stride, 0x7fffffff); |
|
387 } |
|
388 |
|
389 void vp9_sad4x4x8_c(const uint8_t *src_ptr, |
|
390 int src_stride, |
|
391 const uint8_t *ref_ptr, |
|
392 int ref_stride, |
|
393 uint32_t *sad_array) { |
|
394 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, |
|
395 ref_ptr, ref_stride, |
|
396 0x7fffffff); |
|
397 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, |
|
398 ref_ptr + 1, ref_stride, |
|
399 0x7fffffff); |
|
400 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, |
|
401 ref_ptr + 2, ref_stride, |
|
402 0x7fffffff); |
|
403 sad_array[3] = vp9_sad4x4(src_ptr, src_stride, |
|
404 ref_ptr + 3, ref_stride, |
|
405 0x7fffffff); |
|
406 sad_array[4] = vp9_sad4x4(src_ptr, src_stride, |
|
407 ref_ptr + 4, ref_stride, |
|
408 0x7fffffff); |
|
409 sad_array[5] = vp9_sad4x4(src_ptr, src_stride, |
|
410 ref_ptr + 5, ref_stride, |
|
411 0x7fffffff); |
|
412 sad_array[6] = vp9_sad4x4(src_ptr, src_stride, |
|
413 ref_ptr + 6, ref_stride, |
|
414 0x7fffffff); |
|
415 sad_array[7] = vp9_sad4x4(src_ptr, src_stride, |
|
416 ref_ptr + 7, ref_stride, |
|
417 0x7fffffff); |
|
418 } |
|
419 |
|
420 void vp9_sad64x64x4d_c(const uint8_t *src_ptr, |
|
421 int src_stride, |
|
422 const uint8_t* const ref_ptr[], |
|
423 int ref_stride, |
|
424 unsigned int *sad_array) { |
|
425 sad_array[0] = vp9_sad64x64(src_ptr, src_stride, |
|
426 ref_ptr[0], ref_stride, 0x7fffffff); |
|
427 sad_array[1] = vp9_sad64x64(src_ptr, src_stride, |
|
428 ref_ptr[1], ref_stride, 0x7fffffff); |
|
429 sad_array[2] = vp9_sad64x64(src_ptr, src_stride, |
|
430 ref_ptr[2], ref_stride, 0x7fffffff); |
|
431 sad_array[3] = vp9_sad64x64(src_ptr, src_stride, |
|
432 ref_ptr[3], ref_stride, 0x7fffffff); |
|
433 } |
|
434 |
|
435 void vp9_sad32x32x4d_c(const uint8_t *src_ptr, |
|
436 int src_stride, |
|
437 const uint8_t* const ref_ptr[], |
|
438 int ref_stride, |
|
439 unsigned int *sad_array) { |
|
440 sad_array[0] = vp9_sad32x32(src_ptr, src_stride, |
|
441 ref_ptr[0], ref_stride, 0x7fffffff); |
|
442 sad_array[1] = vp9_sad32x32(src_ptr, src_stride, |
|
443 ref_ptr[1], ref_stride, 0x7fffffff); |
|
444 sad_array[2] = vp9_sad32x32(src_ptr, src_stride, |
|
445 ref_ptr[2], ref_stride, 0x7fffffff); |
|
446 sad_array[3] = vp9_sad32x32(src_ptr, src_stride, |
|
447 ref_ptr[3], ref_stride, 0x7fffffff); |
|
448 } |
|
449 |
|
450 void vp9_sad16x16x4d_c(const uint8_t *src_ptr, |
|
451 int src_stride, |
|
452 const uint8_t* const ref_ptr[], |
|
453 int ref_stride, |
|
454 unsigned int *sad_array) { |
|
455 sad_array[0] = vp9_sad16x16(src_ptr, src_stride, |
|
456 ref_ptr[0], ref_stride, 0x7fffffff); |
|
457 sad_array[1] = vp9_sad16x16(src_ptr, src_stride, |
|
458 ref_ptr[1], ref_stride, 0x7fffffff); |
|
459 sad_array[2] = vp9_sad16x16(src_ptr, src_stride, |
|
460 ref_ptr[2], ref_stride, 0x7fffffff); |
|
461 sad_array[3] = vp9_sad16x16(src_ptr, src_stride, |
|
462 ref_ptr[3], ref_stride, 0x7fffffff); |
|
463 } |
|
464 |
|
465 void vp9_sad16x8x4d_c(const uint8_t *src_ptr, |
|
466 int src_stride, |
|
467 const uint8_t* const ref_ptr[], |
|
468 int ref_stride, |
|
469 unsigned int *sad_array) { |
|
470 sad_array[0] = vp9_sad16x8(src_ptr, src_stride, |
|
471 ref_ptr[0], ref_stride, 0x7fffffff); |
|
472 sad_array[1] = vp9_sad16x8(src_ptr, src_stride, |
|
473 ref_ptr[1], ref_stride, 0x7fffffff); |
|
474 sad_array[2] = vp9_sad16x8(src_ptr, src_stride, |
|
475 ref_ptr[2], ref_stride, 0x7fffffff); |
|
476 sad_array[3] = vp9_sad16x8(src_ptr, src_stride, |
|
477 ref_ptr[3], ref_stride, 0x7fffffff); |
|
478 } |
|
479 |
|
480 void vp9_sad8x8x4d_c(const uint8_t *src_ptr, |
|
481 int src_stride, |
|
482 const uint8_t* const ref_ptr[], |
|
483 int ref_stride, |
|
484 unsigned int *sad_array) { |
|
485 sad_array[0] = vp9_sad8x8(src_ptr, src_stride, |
|
486 ref_ptr[0], ref_stride, 0x7fffffff); |
|
487 sad_array[1] = vp9_sad8x8(src_ptr, src_stride, |
|
488 ref_ptr[1], ref_stride, 0x7fffffff); |
|
489 sad_array[2] = vp9_sad8x8(src_ptr, src_stride, |
|
490 ref_ptr[2], ref_stride, 0x7fffffff); |
|
491 sad_array[3] = vp9_sad8x8(src_ptr, src_stride, |
|
492 ref_ptr[3], ref_stride, 0x7fffffff); |
|
493 } |
|
494 |
|
495 void vp9_sad8x16x4d_c(const uint8_t *src_ptr, |
|
496 int src_stride, |
|
497 const uint8_t* const ref_ptr[], |
|
498 int ref_stride, |
|
499 unsigned int *sad_array) { |
|
500 sad_array[0] = vp9_sad8x16(src_ptr, src_stride, |
|
501 ref_ptr[0], ref_stride, 0x7fffffff); |
|
502 sad_array[1] = vp9_sad8x16(src_ptr, src_stride, |
|
503 ref_ptr[1], ref_stride, 0x7fffffff); |
|
504 sad_array[2] = vp9_sad8x16(src_ptr, src_stride, |
|
505 ref_ptr[2], ref_stride, 0x7fffffff); |
|
506 sad_array[3] = vp9_sad8x16(src_ptr, src_stride, |
|
507 ref_ptr[3], ref_stride, 0x7fffffff); |
|
508 } |
|
509 |
|
510 void vp9_sad8x4x4d_c(const uint8_t *src_ptr, |
|
511 int src_stride, |
|
512 const uint8_t* const ref_ptr[], |
|
513 int ref_stride, |
|
514 unsigned int *sad_array) { |
|
515 sad_array[0] = vp9_sad8x4(src_ptr, src_stride, |
|
516 ref_ptr[0], ref_stride, 0x7fffffff); |
|
517 sad_array[1] = vp9_sad8x4(src_ptr, src_stride, |
|
518 ref_ptr[1], ref_stride, 0x7fffffff); |
|
519 sad_array[2] = vp9_sad8x4(src_ptr, src_stride, |
|
520 ref_ptr[2], ref_stride, 0x7fffffff); |
|
521 sad_array[3] = vp9_sad8x4(src_ptr, src_stride, |
|
522 ref_ptr[3], ref_stride, 0x7fffffff); |
|
523 } |
|
524 |
|
525 void vp9_sad8x4x8_c(const uint8_t *src_ptr, |
|
526 int src_stride, |
|
527 const uint8_t *ref_ptr, |
|
528 int ref_stride, |
|
529 uint32_t *sad_array) { |
|
530 sad_array[0] = vp9_sad8x4(src_ptr, src_stride, |
|
531 ref_ptr, ref_stride, |
|
532 0x7fffffff); |
|
533 sad_array[1] = vp9_sad8x4(src_ptr, src_stride, |
|
534 ref_ptr + 1, ref_stride, |
|
535 0x7fffffff); |
|
536 sad_array[2] = vp9_sad8x4(src_ptr, src_stride, |
|
537 ref_ptr + 2, ref_stride, |
|
538 0x7fffffff); |
|
539 sad_array[3] = vp9_sad8x4(src_ptr, src_stride, |
|
540 ref_ptr + 3, ref_stride, |
|
541 0x7fffffff); |
|
542 sad_array[4] = vp9_sad8x4(src_ptr, src_stride, |
|
543 ref_ptr + 4, ref_stride, |
|
544 0x7fffffff); |
|
545 sad_array[5] = vp9_sad8x4(src_ptr, src_stride, |
|
546 ref_ptr + 5, ref_stride, |
|
547 0x7fffffff); |
|
548 sad_array[6] = vp9_sad8x4(src_ptr, src_stride, |
|
549 ref_ptr + 6, ref_stride, |
|
550 0x7fffffff); |
|
551 sad_array[7] = vp9_sad8x4(src_ptr, src_stride, |
|
552 ref_ptr + 7, ref_stride, |
|
553 0x7fffffff); |
|
554 } |
|
555 |
|
556 void vp9_sad4x8x4d_c(const uint8_t *src_ptr, |
|
557 int src_stride, |
|
558 const uint8_t* const ref_ptr[], |
|
559 int ref_stride, |
|
560 unsigned int *sad_array) { |
|
561 sad_array[0] = vp9_sad4x8(src_ptr, src_stride, |
|
562 ref_ptr[0], ref_stride, 0x7fffffff); |
|
563 sad_array[1] = vp9_sad4x8(src_ptr, src_stride, |
|
564 ref_ptr[1], ref_stride, 0x7fffffff); |
|
565 sad_array[2] = vp9_sad4x8(src_ptr, src_stride, |
|
566 ref_ptr[2], ref_stride, 0x7fffffff); |
|
567 sad_array[3] = vp9_sad4x8(src_ptr, src_stride, |
|
568 ref_ptr[3], ref_stride, 0x7fffffff); |
|
569 } |
|
570 |
|
571 void vp9_sad4x8x8_c(const uint8_t *src_ptr, |
|
572 int src_stride, |
|
573 const uint8_t *ref_ptr, |
|
574 int ref_stride, |
|
575 uint32_t *sad_array) { |
|
576 sad_array[0] = vp9_sad4x8(src_ptr, src_stride, |
|
577 ref_ptr, ref_stride, |
|
578 0x7fffffff); |
|
579 sad_array[1] = vp9_sad4x8(src_ptr, src_stride, |
|
580 ref_ptr + 1, ref_stride, |
|
581 0x7fffffff); |
|
582 sad_array[2] = vp9_sad4x8(src_ptr, src_stride, |
|
583 ref_ptr + 2, ref_stride, |
|
584 0x7fffffff); |
|
585 sad_array[3] = vp9_sad4x8(src_ptr, src_stride, |
|
586 ref_ptr + 3, ref_stride, |
|
587 0x7fffffff); |
|
588 sad_array[4] = vp9_sad4x8(src_ptr, src_stride, |
|
589 ref_ptr + 4, ref_stride, |
|
590 0x7fffffff); |
|
591 sad_array[5] = vp9_sad4x8(src_ptr, src_stride, |
|
592 ref_ptr + 5, ref_stride, |
|
593 0x7fffffff); |
|
594 sad_array[6] = vp9_sad4x8(src_ptr, src_stride, |
|
595 ref_ptr + 6, ref_stride, |
|
596 0x7fffffff); |
|
597 sad_array[7] = vp9_sad4x8(src_ptr, src_stride, |
|
598 ref_ptr + 7, ref_stride, |
|
599 0x7fffffff); |
|
600 } |
|
601 |
|
602 void vp9_sad4x4x4d_c(const uint8_t *src_ptr, |
|
603 int src_stride, |
|
604 const uint8_t* const ref_ptr[], |
|
605 int ref_stride, |
|
606 unsigned int *sad_array) { |
|
607 sad_array[0] = vp9_sad4x4(src_ptr, src_stride, |
|
608 ref_ptr[0], ref_stride, 0x7fffffff); |
|
609 sad_array[1] = vp9_sad4x4(src_ptr, src_stride, |
|
610 ref_ptr[1], ref_stride, 0x7fffffff); |
|
611 sad_array[2] = vp9_sad4x4(src_ptr, src_stride, |
|
612 ref_ptr[2], ref_stride, 0x7fffffff); |
|
613 sad_array[3] = vp9_sad4x4(src_ptr, src_stride, |
|
614 ref_ptr[3], ref_stride, 0x7fffffff); |
|
615 } |