OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 void vp8_sixtap_predict4x4_mmx | 120 void vp8_sixtap_predict4x4_mmx |
121 ( | 121 ( |
122 unsigned char *src_ptr, | 122 unsigned char *src_ptr, |
123 int src_pixels_per_line, | 123 int src_pixels_per_line, |
124 int xoffset, | 124 int xoffset, |
125 int yoffset, | 125 int yoffset, |
126 unsigned char *dst_ptr, | 126 unsigned char *dst_ptr, |
127 int dst_pitch | 127 int dst_pitch |
128 ) | 128 ) |
129 { | 129 { |
130 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 16*16); /* Temp data buff
fer used in filtering */ | 130 DECLARE_ALIGNED(16, unsigned short, FData2[16*16]); /* Temp data bufffer us
ed in filtering */ |
131 const short *HFilter, *VFilter; | 131 const short *HFilter, *VFilter; |
132 HFilter = vp8_six_tap_mmx[xoffset]; | 132 HFilter = vp8_six_tap_mmx[xoffset]; |
133 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_p
ixels_per_line, 1, 9, 8, HFilter); | 133 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2, src_p
ixels_per_line, 1, 9, 8, HFilter); |
134 VFilter = vp8_six_tap_mmx[yoffset]; | 134 VFilter = vp8_six_tap_mmx[yoffset]; |
135 vp8_filter_block1dc_v6_mmx(FData2 + 8, dst_ptr, dst_pitch, 8, 4 , 4, 4, VFil
ter); | 135 vp8_filter_block1dc_v6_mmx(FData2 + 8, dst_ptr, dst_pitch, 8, 4 , 4, 4, VFil
ter); |
136 | 136 |
137 } | 137 } |
138 | 138 |
139 | 139 |
140 void vp8_sixtap_predict16x16_mmx | 140 void vp8_sixtap_predict16x16_mmx |
141 ( | 141 ( |
142 unsigned char *src_ptr, | 142 unsigned char *src_ptr, |
143 int src_pixels_per_line, | 143 int src_pixels_per_line, |
144 int xoffset, | 144 int xoffset, |
145 int yoffset, | 145 int yoffset, |
146 unsigned char *dst_ptr, | 146 unsigned char *dst_ptr, |
147 int dst_pitch | 147 int dst_pitch |
148 ) | 148 ) |
149 { | 149 { |
150 | 150 |
151 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 24*24); /* Temp data buff
fer used in filtering */ | 151 DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer us
ed in filtering */ |
152 | 152 |
153 const short *HFilter, *VFilter; | 153 const short *HFilter, *VFilter; |
154 | 154 |
155 | 155 |
156 HFilter = vp8_six_tap_mmx[xoffset]; | 156 HFilter = vp8_six_tap_mmx[xoffset]; |
157 | 157 |
158 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 21, 32, HFilter); | 158 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 21, 32, HFilter); |
159 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 21, 32, HFilter); | 159 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 21, 32, HFilter); |
160 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 8, FData2 +
8, src_pixels_per_line, 1, 21, 32, HFilter); | 160 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 8, FData2 +
8, src_pixels_per_line, 1, 21, 32, HFilter); |
161 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 12, FData2 +
12, src_pixels_per_line, 1, 21, 32, HFilter); | 161 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 12, FData2 +
12, src_pixels_per_line, 1, 21, 32, HFilter); |
(...skipping 11 matching lines...) Expand all Loading... |
173 ( | 173 ( |
174 unsigned char *src_ptr, | 174 unsigned char *src_ptr, |
175 int src_pixels_per_line, | 175 int src_pixels_per_line, |
176 int xoffset, | 176 int xoffset, |
177 int yoffset, | 177 int yoffset, |
178 unsigned char *dst_ptr, | 178 unsigned char *dst_ptr, |
179 int dst_pitch | 179 int dst_pitch |
180 ) | 180 ) |
181 { | 181 { |
182 | 182 |
183 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data buff
fer used in filtering */ | 183 DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer us
ed in filtering */ |
184 | 184 |
185 const short *HFilter, *VFilter; | 185 const short *HFilter, *VFilter; |
186 | 186 |
187 HFilter = vp8_six_tap_mmx[xoffset]; | 187 HFilter = vp8_six_tap_mmx[xoffset]; |
188 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 13, 16, HFilter); | 188 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 13, 16, HFilter); |
189 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 13, 16, HFilter); | 189 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 13, 16, HFilter); |
190 | 190 |
191 VFilter = vp8_six_tap_mmx[yoffset]; | 191 VFilter = vp8_six_tap_mmx[yoffset]; |
192 vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 8, 8,
VFilter); | 192 vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 8, 8,
VFilter); |
193 vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 8, 8
, VFilter); | 193 vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 8, 8
, VFilter); |
194 | 194 |
195 } | 195 } |
196 | 196 |
197 | 197 |
198 void vp8_sixtap_predict8x4_mmx | 198 void vp8_sixtap_predict8x4_mmx |
199 ( | 199 ( |
200 unsigned char *src_ptr, | 200 unsigned char *src_ptr, |
201 int src_pixels_per_line, | 201 int src_pixels_per_line, |
202 int xoffset, | 202 int xoffset, |
203 int yoffset, | 203 int yoffset, |
204 unsigned char *dst_ptr, | 204 unsigned char *dst_ptr, |
205 int dst_pitch | 205 int dst_pitch |
206 ) | 206 ) |
207 { | 207 { |
208 | 208 |
209 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data buff
fer used in filtering */ | 209 DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer us
ed in filtering */ |
210 | 210 |
211 const short *HFilter, *VFilter; | 211 const short *HFilter, *VFilter; |
212 | 212 |
213 HFilter = vp8_six_tap_mmx[xoffset]; | 213 HFilter = vp8_six_tap_mmx[xoffset]; |
214 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 9, 16, HFilter); | 214 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line), FData2,
src_pixels_per_line, 1, 9, 16, HFilter); |
215 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 9, 16, HFilter); | 215 vp8_filter_block1d_h6_mmx(src_ptr - (2 * src_pixels_per_line) + 4, FData2 +
4, src_pixels_per_line, 1, 9, 16, HFilter); |
216 | 216 |
217 VFilter = vp8_six_tap_mmx[yoffset]; | 217 VFilter = vp8_six_tap_mmx[yoffset]; |
218 vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 4, 8,
VFilter); | 218 vp8_filter_block1dc_v6_mmx(FData2 + 16, dst_ptr, dst_pitch, 16, 8 , 4, 8,
VFilter); |
219 vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 4, 8
, VFilter); | 219 vp8_filter_block1dc_v6_mmx(FData2 + 20, dst_ptr + 4, dst_pitch, 16, 8 , 4, 8
, VFilter); |
(...skipping 25 matching lines...) Expand all Loading... |
245 ( | 245 ( |
246 unsigned char *src_ptr, | 246 unsigned char *src_ptr, |
247 int src_pixels_per_line, | 247 int src_pixels_per_line, |
248 int xoffset, | 248 int xoffset, |
249 int yoffset, | 249 int yoffset, |
250 unsigned char *dst_ptr, | 250 unsigned char *dst_ptr, |
251 int dst_pitch | 251 int dst_pitch |
252 | 252 |
253 ) | 253 ) |
254 { | 254 { |
255 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 24*24); /* Temp data bu
fffer used in filtering */ | 255 DECLARE_ALIGNED(16, unsigned short, FData2[24*24]); /* Temp data bufffer
used in filtering */ |
256 | 256 |
257 const short *HFilter, *VFilter; | 257 const short *HFilter, *VFilter; |
258 | 258 |
259 if (xoffset) | 259 if (xoffset) |
260 { | 260 { |
261 if (yoffset) | 261 if (yoffset) |
262 { | 262 { |
263 HFilter = vp8_six_tap_mmx[xoffset]; | 263 HFilter = vp8_six_tap_mmx[xoffset]; |
264 vp8_filter_block1d16_h6_sse2(src_ptr - (2 * src_pixels_per_line), FD
ata2, src_pixels_per_line, 1, 21, 32, HFilter); | 264 vp8_filter_block1d16_h6_sse2(src_ptr - (2 * src_pixels_per_line), FD
ata2, src_pixels_per_line, 1, 21, 32, HFilter); |
265 VFilter = vp8_six_tap_mmx[yoffset]; | 265 VFilter = vp8_six_tap_mmx[yoffset]; |
(...skipping 19 matching lines...) Expand all Loading... |
285 void vp8_sixtap_predict8x8_sse2 | 285 void vp8_sixtap_predict8x8_sse2 |
286 ( | 286 ( |
287 unsigned char *src_ptr, | 287 unsigned char *src_ptr, |
288 int src_pixels_per_line, | 288 int src_pixels_per_line, |
289 int xoffset, | 289 int xoffset, |
290 int yoffset, | 290 int yoffset, |
291 unsigned char *dst_ptr, | 291 unsigned char *dst_ptr, |
292 int dst_pitch | 292 int dst_pitch |
293 ) | 293 ) |
294 { | 294 { |
295 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffe
r used in filtering */ | 295 DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used
in filtering */ |
296 const short *HFilter, *VFilter; | 296 const short *HFilter, *VFilter; |
297 | 297 |
298 if (xoffset) | 298 if (xoffset) |
299 { | 299 { |
300 if (yoffset) | 300 if (yoffset) |
301 { | 301 { |
302 HFilter = vp8_six_tap_mmx[xoffset]; | 302 HFilter = vp8_six_tap_mmx[xoffset]; |
303 vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FDa
ta2, src_pixels_per_line, 1, 13, 16, HFilter); | 303 vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FDa
ta2, src_pixels_per_line, 1, 13, 16, HFilter); |
304 VFilter = vp8_six_tap_mmx[yoffset]; | 304 VFilter = vp8_six_tap_mmx[yoffset]; |
305 vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8
, 8, dst_pitch, VFilter); | 305 vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8
, 8, dst_pitch, VFilter); |
(...skipping 17 matching lines...) Expand all Loading... |
323 void vp8_sixtap_predict8x4_sse2 | 323 void vp8_sixtap_predict8x4_sse2 |
324 ( | 324 ( |
325 unsigned char *src_ptr, | 325 unsigned char *src_ptr, |
326 int src_pixels_per_line, | 326 int src_pixels_per_line, |
327 int xoffset, | 327 int xoffset, |
328 int yoffset, | 328 int yoffset, |
329 unsigned char *dst_ptr, | 329 unsigned char *dst_ptr, |
330 int dst_pitch | 330 int dst_pitch |
331 ) | 331 ) |
332 { | 332 { |
333 DECLARE_ALIGNED_ARRAY(16, unsigned short, FData2, 256); /* Temp data bufffe
r used in filtering */ | 333 DECLARE_ALIGNED(16, unsigned short, FData2[256]); /* Temp data bufffer used
in filtering */ |
334 const short *HFilter, *VFilter; | 334 const short *HFilter, *VFilter; |
335 | 335 |
336 if (xoffset) | 336 if (xoffset) |
337 { | 337 { |
338 if (yoffset) | 338 if (yoffset) |
339 { | 339 { |
340 HFilter = vp8_six_tap_mmx[xoffset]; | 340 HFilter = vp8_six_tap_mmx[xoffset]; |
341 vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FDa
ta2, src_pixels_per_line, 1, 9, 16, HFilter); | 341 vp8_filter_block1d8_h6_sse2(src_ptr - (2 * src_pixels_per_line), FDa
ta2, src_pixels_per_line, 1, 9, 16, HFilter); |
342 VFilter = vp8_six_tap_mmx[yoffset]; | 342 VFilter = vp8_six_tap_mmx[yoffset]; |
343 vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8
, 4, dst_pitch, VFilter); | 343 vp8_filter_block1d8_v6_sse2(FData2 + 16, dst_ptr, dst_pitch, 16, 8
, 4, dst_pitch, VFilter); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 ( | 425 ( |
426 unsigned char *src_ptr, | 426 unsigned char *src_ptr, |
427 int src_pixels_per_line, | 427 int src_pixels_per_line, |
428 int xoffset, | 428 int xoffset, |
429 int yoffset, | 429 int yoffset, |
430 unsigned char *dst_ptr, | 430 unsigned char *dst_ptr, |
431 int dst_pitch | 431 int dst_pitch |
432 | 432 |
433 ) | 433 ) |
434 { | 434 { |
435 DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 24*24); | 435 DECLARE_ALIGNED(16, unsigned char, FData2[24*24]); |
436 | 436 |
437 if (xoffset) | 437 if (xoffset) |
438 { | 438 { |
439 if (yoffset) | 439 if (yoffset) |
440 { | 440 { |
441 vp8_filter_block1d16_h6_ssse3(src_ptr - (2 * src_pixels_per_line), | 441 vp8_filter_block1d16_h6_ssse3(src_ptr - (2 * src_pixels_per_line), |
442 src_pixels_per_line, FData2, | 442 src_pixels_per_line, FData2, |
443 16, 21, xoffset); | 443 16, 21, xoffset); |
444 vp8_filter_block1d16_v6_ssse3(FData2 , 16, dst_ptr, dst_pitch, | 444 vp8_filter_block1d16_v6_ssse3(FData2 , 16, dst_ptr, dst_pitch, |
445 16, yoffset); | 445 16, yoffset); |
(...skipping 27 matching lines...) Expand all Loading... |
473 void vp8_sixtap_predict8x8_ssse3 | 473 void vp8_sixtap_predict8x8_ssse3 |
474 ( | 474 ( |
475 unsigned char *src_ptr, | 475 unsigned char *src_ptr, |
476 int src_pixels_per_line, | 476 int src_pixels_per_line, |
477 int xoffset, | 477 int xoffset, |
478 int yoffset, | 478 int yoffset, |
479 unsigned char *dst_ptr, | 479 unsigned char *dst_ptr, |
480 int dst_pitch | 480 int dst_pitch |
481 ) | 481 ) |
482 { | 482 { |
483 DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 256); | 483 DECLARE_ALIGNED(16, unsigned char, FData2[256]); |
484 | 484 |
485 if (xoffset) | 485 if (xoffset) |
486 { | 486 { |
487 if (yoffset) | 487 if (yoffset) |
488 { | 488 { |
489 vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line), | 489 vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line), |
490 src_pixels_per_line, FData2, | 490 src_pixels_per_line, FData2, |
491 8, 13, xoffset); | 491 8, 13, xoffset); |
492 vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch, | 492 vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch, |
493 8, yoffset); | 493 8, yoffset); |
(...skipping 27 matching lines...) Expand all Loading... |
521 void vp8_sixtap_predict8x4_ssse3 | 521 void vp8_sixtap_predict8x4_ssse3 |
522 ( | 522 ( |
523 unsigned char *src_ptr, | 523 unsigned char *src_ptr, |
524 int src_pixels_per_line, | 524 int src_pixels_per_line, |
525 int xoffset, | 525 int xoffset, |
526 int yoffset, | 526 int yoffset, |
527 unsigned char *dst_ptr, | 527 unsigned char *dst_ptr, |
528 int dst_pitch | 528 int dst_pitch |
529 ) | 529 ) |
530 { | 530 { |
531 DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 256); | 531 DECLARE_ALIGNED(16, unsigned char, FData2[256]); |
532 | 532 |
533 if (xoffset) | 533 if (xoffset) |
534 { | 534 { |
535 if (yoffset) | 535 if (yoffset) |
536 { | 536 { |
537 vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line), | 537 vp8_filter_block1d8_h6_ssse3(src_ptr - (2 * src_pixels_per_line), |
538 src_pixels_per_line, FData2, | 538 src_pixels_per_line, FData2, |
539 8, 9, xoffset); | 539 8, 9, xoffset); |
540 vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch, | 540 vp8_filter_block1d8_v6_ssse3(FData2, 8, dst_ptr, dst_pitch, |
541 4, yoffset); | 541 4, yoffset); |
(...skipping 27 matching lines...) Expand all Loading... |
569 void vp8_sixtap_predict4x4_ssse3 | 569 void vp8_sixtap_predict4x4_ssse3 |
570 ( | 570 ( |
571 unsigned char *src_ptr, | 571 unsigned char *src_ptr, |
572 int src_pixels_per_line, | 572 int src_pixels_per_line, |
573 int xoffset, | 573 int xoffset, |
574 int yoffset, | 574 int yoffset, |
575 unsigned char *dst_ptr, | 575 unsigned char *dst_ptr, |
576 int dst_pitch | 576 int dst_pitch |
577 ) | 577 ) |
578 { | 578 { |
579 DECLARE_ALIGNED_ARRAY(16, unsigned char, FData2, 4*9); | 579 DECLARE_ALIGNED(16, unsigned char, FData2[4*9]); |
580 | 580 |
581 if (xoffset) | 581 if (xoffset) |
582 { | 582 { |
583 if (yoffset) | 583 if (yoffset) |
584 { | 584 { |
585 vp8_filter_block1d4_h6_ssse3(src_ptr - (2 * src_pixels_per_line), | 585 vp8_filter_block1d4_h6_ssse3(src_ptr - (2 * src_pixels_per_line), |
586 src_pixels_per_line, | 586 src_pixels_per_line, |
587 FData2, 4, 9, xoffset); | 587 FData2, 4, 9, xoffset); |
588 vp8_filter_block1d4_v6_ssse3(FData2, 4, dst_ptr, dst_pitch, | 588 vp8_filter_block1d4_v6_ssse3(FData2, 4, dst_ptr, dst_pitch, |
589 4, yoffset); | 589 4, yoffset); |
(...skipping 26 matching lines...) Expand all Loading... |
616 dst_ptr[2] = src_ptr[2]; | 616 dst_ptr[2] = src_ptr[2]; |
617 dst_ptr[3] = src_ptr[3]; | 617 dst_ptr[3] = src_ptr[3]; |
618 dst_ptr += dst_pitch; | 618 dst_ptr += dst_pitch; |
619 src_ptr += src_pixels_per_line; | 619 src_ptr += src_pixels_per_line; |
620 } | 620 } |
621 } | 621 } |
622 } | 622 } |
623 } | 623 } |
624 | 624 |
625 #endif | 625 #endif |
OLD | NEW |