Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: source/libvpx/vp9/encoder/vp9_sad_c.c

Issue 11555023: libvpx: Add VP9 decoder. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
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 "vpx_ports/config.h"
15 #include "vpx/vpx_integer.h"
16
17 unsigned int vp9_sad32x32_c(const unsigned char *src_ptr,
18 int src_stride,
19 const unsigned char *ref_ptr,
20 int ref_stride,
21 int max_sad) {
22 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 32, 32);
23 }
24
25 unsigned int vp9_sad16x16_c(const unsigned char *src_ptr,
26 int src_stride,
27 const unsigned char *ref_ptr,
28 int ref_stride,
29 int max_sad) {
30 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 16);
31 }
32
33 unsigned int vp9_sad8x8_c(const unsigned char *src_ptr,
34 int src_stride,
35 const unsigned char *ref_ptr,
36 int ref_stride,
37 int max_sad) {
38 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 8);
39 }
40
41
42 unsigned int vp9_sad16x8_c(const unsigned char *src_ptr,
43 int src_stride,
44 const unsigned char *ref_ptr,
45 int ref_stride,
46 int max_sad) {
47 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 8);
48 }
49
50 unsigned int vp9_sad8x16_c(const unsigned char *src_ptr,
51 int src_stride,
52 const unsigned char *ref_ptr,
53 int ref_stride,
54 int max_sad) {
55 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 16);
56 }
57
58
59 unsigned int vp9_sad4x4_c(const unsigned char *src_ptr,
60 int src_stride,
61 const unsigned char *ref_ptr,
62 int ref_stride,
63 int max_sad) {
64 return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 4, 4);
65 }
66
67 void vp9_sad32x32x3_c(const unsigned char *src_ptr,
68 int src_stride,
69 const unsigned char *ref_ptr,
70 int ref_stride,
71 unsigned int *sad_array
72 ) {
73 sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride,
74 ref_ptr, ref_stride, 0x7fffffff);
75 sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride,
76 ref_ptr + 1, ref_stride, 0x7fffffff);
77 sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride,
78 ref_ptr + 2, ref_stride, 0x7fffffff);
79 }
80
81 void vp9_sad32x32x8_c(const unsigned char *src_ptr,
82 int src_stride,
83 const unsigned char *ref_ptr,
84 int ref_stride,
85 unsigned short *sad_array
86 ) {
87 sad_array[0] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
88 ref_ptr, ref_stride,
89 0x7fffffff);
90 sad_array[1] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
91 ref_ptr + 1, ref_stride,
92 0x7fffffff);
93 sad_array[2] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
94 ref_ptr + 2, ref_stride,
95 0x7fffffff);
96 sad_array[3] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
97 ref_ptr + 3, ref_stride,
98 0x7fffffff);
99 sad_array[4] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
100 ref_ptr + 4, ref_stride,
101 0x7fffffff);
102 sad_array[5] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
103 ref_ptr + 5, ref_stride,
104 0x7fffffff);
105 sad_array[6] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
106 ref_ptr + 6, ref_stride,
107 0x7fffffff);
108 sad_array[7] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
109 ref_ptr + 7, ref_stride,
110 0x7fffffff);
111 }
112
113 void vp9_sad16x16x3_c(const unsigned char *src_ptr,
114 int src_stride,
115 const unsigned char *ref_ptr,
116 int ref_stride,
117 unsigned int *sad_array) {
118 sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride,
119 ref_ptr, ref_stride, 0x7fffffff);
120 sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride,
121 ref_ptr + 1, ref_stride, 0x7fffffff);
122 sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride,
123 ref_ptr + 2, ref_stride, 0x7fffffff);
124 }
125
126 void vp9_sad16x16x8_c(const unsigned char *src_ptr,
127 int src_stride,
128 const unsigned char *ref_ptr,
129 int ref_stride,
130 unsigned short *sad_array) {
131 sad_array[0] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
132 ref_ptr, ref_stride,
133 0x7fffffff);
134 sad_array[1] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
135 ref_ptr + 1, ref_stride,
136 0x7fffffff);
137 sad_array[2] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
138 ref_ptr + 2, ref_stride,
139 0x7fffffff);
140 sad_array[3] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
141 ref_ptr + 3, ref_stride,
142 0x7fffffff);
143 sad_array[4] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
144 ref_ptr + 4, ref_stride,
145 0x7fffffff);
146 sad_array[5] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
147 ref_ptr + 5, ref_stride,
148 0x7fffffff);
149 sad_array[6] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
150 ref_ptr + 6, ref_stride,
151 0x7fffffff);
152 sad_array[7] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
153 ref_ptr + 7, ref_stride,
154 0x7fffffff);
155 }
156
157 void vp9_sad16x8x3_c(const unsigned char *src_ptr,
158 int src_stride,
159 const unsigned char *ref_ptr,
160 int ref_stride,
161 unsigned int *sad_array) {
162 sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride,
163 ref_ptr, ref_stride, 0x7fffffff);
164 sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride,
165 ref_ptr + 1, ref_stride, 0x7fffffff);
166 sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride,
167 ref_ptr + 2, ref_stride, 0x7fffffff);
168 }
169
170 void vp9_sad16x8x8_c(const unsigned char *src_ptr,
171 int src_stride,
172 const unsigned char *ref_ptr,
173 int ref_stride,
174 unsigned short *sad_array) {
175 sad_array[0] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
176 ref_ptr, ref_stride,
177 0x7fffffff);
178 sad_array[1] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
179 ref_ptr + 1, ref_stride,
180 0x7fffffff);
181 sad_array[2] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
182 ref_ptr + 2, ref_stride,
183 0x7fffffff);
184 sad_array[3] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
185 ref_ptr + 3, ref_stride,
186 0x7fffffff);
187 sad_array[4] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
188 ref_ptr + 4, ref_stride,
189 0x7fffffff);
190 sad_array[5] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
191 ref_ptr + 5, ref_stride,
192 0x7fffffff);
193 sad_array[6] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
194 ref_ptr + 6, ref_stride,
195 0x7fffffff);
196 sad_array[7] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
197 ref_ptr + 7, ref_stride,
198 0x7fffffff);
199 }
200
201 void vp9_sad8x8x3_c(const unsigned char *src_ptr,
202 int src_stride,
203 const unsigned char *ref_ptr,
204 int ref_stride,
205 unsigned int *sad_array) {
206 sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride,
207 ref_ptr, ref_stride, 0x7fffffff);
208 sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride,
209 ref_ptr + 1, ref_stride, 0x7fffffff);
210 sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride,
211 ref_ptr + 2, ref_stride, 0x7fffffff);
212 }
213
214 void vp9_sad8x8x8_c(const unsigned char *src_ptr,
215 int src_stride,
216 const unsigned char *ref_ptr,
217 int ref_stride,
218 unsigned short *sad_array) {
219 sad_array[0] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
220 ref_ptr, ref_stride,
221 0x7fffffff);
222 sad_array[1] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
223 ref_ptr + 1, ref_stride,
224 0x7fffffff);
225 sad_array[2] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
226 ref_ptr + 2, ref_stride,
227 0x7fffffff);
228 sad_array[3] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
229 ref_ptr + 3, ref_stride,
230 0x7fffffff);
231 sad_array[4] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
232 ref_ptr + 4, ref_stride,
233 0x7fffffff);
234 sad_array[5] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
235 ref_ptr + 5, ref_stride,
236 0x7fffffff);
237 sad_array[6] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
238 ref_ptr + 6, ref_stride,
239 0x7fffffff);
240 sad_array[7] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
241 ref_ptr + 7, ref_stride,
242 0x7fffffff);
243 }
244
245 void vp9_sad8x16x3_c(const unsigned char *src_ptr,
246 int src_stride,
247 const unsigned char *ref_ptr,
248 int ref_stride,
249 unsigned int *sad_array) {
250 sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride,
251 ref_ptr, ref_stride, 0x7fffffff);
252 sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride,
253 ref_ptr + 1, ref_stride, 0x7fffffff);
254 sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride,
255 ref_ptr + 2, ref_stride, 0x7fffffff);
256 }
257
258 void vp9_sad8x16x8_c(const unsigned char *src_ptr,
259 int src_stride,
260 const unsigned char *ref_ptr,
261 int ref_stride,
262 unsigned short *sad_array) {
263 sad_array[0] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
264 ref_ptr, ref_stride,
265 0x7fffffff);
266 sad_array[1] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
267 ref_ptr + 1, ref_stride,
268 0x7fffffff);
269 sad_array[2] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
270 ref_ptr + 2, ref_stride,
271 0x7fffffff);
272 sad_array[3] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
273 ref_ptr + 3, ref_stride,
274 0x7fffffff);
275 sad_array[4] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
276 ref_ptr + 4, ref_stride,
277 0x7fffffff);
278 sad_array[5] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
279 ref_ptr + 5, ref_stride,
280 0x7fffffff);
281 sad_array[6] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
282 ref_ptr + 6, ref_stride,
283 0x7fffffff);
284 sad_array[7] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
285 ref_ptr + 7, ref_stride,
286 0x7fffffff);
287 }
288
289 void vp9_sad4x4x3_c(const unsigned char *src_ptr,
290 int src_stride,
291 const unsigned char *ref_ptr,
292 int ref_stride,
293 unsigned int *sad_array) {
294 sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride,
295 ref_ptr, ref_stride, 0x7fffffff);
296 sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride,
297 ref_ptr + 1, ref_stride, 0x7fffffff);
298 sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride,
299 ref_ptr + 2, ref_stride, 0x7fffffff);
300 }
301
302 void vp9_sad4x4x8_c(const unsigned char *src_ptr,
303 int src_stride,
304 const unsigned char *ref_ptr,
305 int ref_stride,
306 unsigned short *sad_array) {
307 sad_array[0] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
308 ref_ptr, ref_stride,
309 0x7fffffff);
310 sad_array[1] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
311 ref_ptr + 1, ref_stride,
312 0x7fffffff);
313 sad_array[2] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
314 ref_ptr + 2, ref_stride,
315 0x7fffffff);
316 sad_array[3] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
317 ref_ptr + 3, ref_stride,
318 0x7fffffff);
319 sad_array[4] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
320 ref_ptr + 4, ref_stride,
321 0x7fffffff);
322 sad_array[5] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
323 ref_ptr + 5, ref_stride,
324 0x7fffffff);
325 sad_array[6] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
326 ref_ptr + 6, ref_stride,
327 0x7fffffff);
328 sad_array[7] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
329 ref_ptr + 7, ref_stride,
330 0x7fffffff);
331 }
332
333 void vp9_sad32x32x4d_c(const unsigned char *src_ptr,
334 int src_stride,
335 unsigned char *ref_ptr[],
336 int ref_stride,
337 unsigned int *sad_array
338 ) {
339 sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride,
340 ref_ptr[0], ref_stride, 0x7fffffff);
341 sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride,
342 ref_ptr[1], ref_stride, 0x7fffffff);
343 sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride,
344 ref_ptr[2], ref_stride, 0x7fffffff);
345 sad_array[3] = vp9_sad32x32_c(src_ptr, src_stride,
346 ref_ptr[3], ref_stride, 0x7fffffff);
347 }
348
349 void vp9_sad16x16x4d_c(const unsigned char *src_ptr,
350 int src_stride,
351 unsigned char *ref_ptr[],
352 int ref_stride,
353 unsigned int *sad_array) {
354 sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride,
355 ref_ptr[0], ref_stride, 0x7fffffff);
356 sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride,
357 ref_ptr[1], ref_stride, 0x7fffffff);
358 sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride,
359 ref_ptr[2], ref_stride, 0x7fffffff);
360 sad_array[3] = vp9_sad16x16_c(src_ptr, src_stride,
361 ref_ptr[3], ref_stride, 0x7fffffff);
362 }
363
364 void vp9_sad16x8x4d_c(const unsigned char *src_ptr,
365 int src_stride,
366 unsigned char *ref_ptr[],
367 int ref_stride,
368 unsigned int *sad_array) {
369 sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride,
370 ref_ptr[0], ref_stride, 0x7fffffff);
371 sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride,
372 ref_ptr[1], ref_stride, 0x7fffffff);
373 sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride,
374 ref_ptr[2], ref_stride, 0x7fffffff);
375 sad_array[3] = vp9_sad16x8_c(src_ptr, src_stride,
376 ref_ptr[3], ref_stride, 0x7fffffff);
377 }
378
379 void vp9_sad8x8x4d_c(const unsigned char *src_ptr,
380 int src_stride,
381 unsigned char *ref_ptr[],
382 int ref_stride,
383 unsigned int *sad_array) {
384 sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride,
385 ref_ptr[0], ref_stride, 0x7fffffff);
386 sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride,
387 ref_ptr[1], ref_stride, 0x7fffffff);
388 sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride,
389 ref_ptr[2], ref_stride, 0x7fffffff);
390 sad_array[3] = vp9_sad8x8_c(src_ptr, src_stride,
391 ref_ptr[3], ref_stride, 0x7fffffff);
392 }
393
394 void vp9_sad8x16x4d_c(const unsigned char *src_ptr,
395 int src_stride,
396 unsigned char *ref_ptr[],
397 int ref_stride,
398 unsigned int *sad_array) {
399 sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride,
400 ref_ptr[0], ref_stride, 0x7fffffff);
401 sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride,
402 ref_ptr[1], ref_stride, 0x7fffffff);
403 sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride,
404 ref_ptr[2], ref_stride, 0x7fffffff);
405 sad_array[3] = vp9_sad8x16_c(src_ptr, src_stride,
406 ref_ptr[3], ref_stride, 0x7fffffff);
407 }
408
409 void vp9_sad4x4x4d_c(const unsigned char *src_ptr,
410 int src_stride,
411 unsigned char *ref_ptr[],
412 int ref_stride,
413 unsigned int *sad_array) {
414 sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride,
415 ref_ptr[0], ref_stride, 0x7fffffff);
416 sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride,
417 ref_ptr[1], ref_stride, 0x7fffffff);
418 sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride,
419 ref_ptr[2], ref_stride, 0x7fffffff);
420 sad_array[3] = vp9_sad4x4_c(src_ptr, src_stride,
421 ref_ptr[3], ref_stride, 0x7fffffff);
422 }
423
424 /* Copy 2 macroblocks to a buffer */
425 void vp9_copy32xn_c(unsigned char *src_ptr,
426 int src_stride,
427 unsigned char *dst_ptr,
428 int dst_stride,
429 int height) {
430 int r;
431
432 for (r = 0; r < height; r++) {
433 #if !(CONFIG_FAST_UNALIGNED)
434 dst_ptr[0] = src_ptr[0];
435 dst_ptr[1] = src_ptr[1];
436 dst_ptr[2] = src_ptr[2];
437 dst_ptr[3] = src_ptr[3];
438 dst_ptr[4] = src_ptr[4];
439 dst_ptr[5] = src_ptr[5];
440 dst_ptr[6] = src_ptr[6];
441 dst_ptr[7] = src_ptr[7];
442 dst_ptr[8] = src_ptr[8];
443 dst_ptr[9] = src_ptr[9];
444 dst_ptr[10] = src_ptr[10];
445 dst_ptr[11] = src_ptr[11];
446 dst_ptr[12] = src_ptr[12];
447 dst_ptr[13] = src_ptr[13];
448 dst_ptr[14] = src_ptr[14];
449 dst_ptr[15] = src_ptr[15];
450 dst_ptr[16] = src_ptr[16];
451 dst_ptr[17] = src_ptr[17];
452 dst_ptr[18] = src_ptr[18];
453 dst_ptr[19] = src_ptr[19];
454 dst_ptr[20] = src_ptr[20];
455 dst_ptr[21] = src_ptr[21];
456 dst_ptr[22] = src_ptr[22];
457 dst_ptr[23] = src_ptr[23];
458 dst_ptr[24] = src_ptr[24];
459 dst_ptr[25] = src_ptr[25];
460 dst_ptr[26] = src_ptr[26];
461 dst_ptr[27] = src_ptr[27];
462 dst_ptr[28] = src_ptr[28];
463 dst_ptr[29] = src_ptr[29];
464 dst_ptr[30] = src_ptr[30];
465 dst_ptr[31] = src_ptr[31];
466 #else
467 ((uint32_t *)dst_ptr)[0] = ((uint32_t *)src_ptr)[0];
468 ((uint32_t *)dst_ptr)[1] = ((uint32_t *)src_ptr)[1];
469 ((uint32_t *)dst_ptr)[2] = ((uint32_t *)src_ptr)[2];
470 ((uint32_t *)dst_ptr)[3] = ((uint32_t *)src_ptr)[3];
471 ((uint32_t *)dst_ptr)[4] = ((uint32_t *)src_ptr)[4];
472 ((uint32_t *)dst_ptr)[5] = ((uint32_t *)src_ptr)[5];
473 ((uint32_t *)dst_ptr)[6] = ((uint32_t *)src_ptr)[6];
474 ((uint32_t *)dst_ptr)[7] = ((uint32_t *)src_ptr)[7];
475 #endif
476 src_ptr += src_stride;
477 dst_ptr += dst_stride;
478
479 }
480 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698