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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 uint8_t temp2[68 * 64]; | 209 uint8_t temp2[68 * 64]; |
210 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 64 * 64); // compound pred buffer | 210 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 64 * 64); // compound pred buffer |
211 const int16_t *hfilter, *vfilter; | 211 const int16_t *hfilter, *vfilter; |
212 | 212 |
213 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 213 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
214 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 214 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
215 | 215 |
216 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 216 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
217 1, 33, 64, hfilter); | 217 1, 33, 64, hfilter); |
218 var_filter_block2d_bil_second_pass(fdata3, temp2, 64, 64, 32, 64, vfilter); | 218 var_filter_block2d_bil_second_pass(fdata3, temp2, 64, 64, 32, 64, vfilter); |
219 comp_avg_pred(temp3, second_pred, 64, 32, temp2, 64); | 219 vp9_comp_avg_pred(temp3, second_pred, 64, 32, temp2, 64); |
220 return vp9_variance64x32(temp3, 64, dst_ptr, dst_pixels_per_line, sse); | 220 return vp9_variance64x32(temp3, 64, dst_ptr, dst_pixels_per_line, sse); |
221 } | 221 } |
222 | 222 |
223 unsigned int vp9_variance32x64_c(const uint8_t *src_ptr, | 223 unsigned int vp9_variance32x64_c(const uint8_t *src_ptr, |
224 int source_stride, | 224 int source_stride, |
225 const uint8_t *ref_ptr, | 225 const uint8_t *ref_ptr, |
226 int recon_stride, | 226 int recon_stride, |
227 unsigned int *sse) { | 227 unsigned int *sse) { |
228 unsigned int var; | 228 unsigned int var; |
229 int avg; | 229 int avg; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 uint8_t temp2[68 * 64]; | 266 uint8_t temp2[68 * 64]; |
267 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 64); // compound pred buffer | 267 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 64); // compound pred buffer |
268 const int16_t *hfilter, *vfilter; | 268 const int16_t *hfilter, *vfilter; |
269 | 269 |
270 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 270 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
271 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 271 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
272 | 272 |
273 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 273 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
274 1, 65, 32, hfilter); | 274 1, 65, 32, hfilter); |
275 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 64, 32, vfilter); | 275 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 64, 32, vfilter); |
276 comp_avg_pred(temp3, second_pred, 32, 64, temp2, 32); | 276 vp9_comp_avg_pred(temp3, second_pred, 32, 64, temp2, 32); |
277 return vp9_variance32x64(temp3, 32, dst_ptr, dst_pixels_per_line, sse); | 277 return vp9_variance32x64(temp3, 32, dst_ptr, dst_pixels_per_line, sse); |
278 } | 278 } |
279 | 279 |
280 unsigned int vp9_variance32x16_c(const uint8_t *src_ptr, | 280 unsigned int vp9_variance32x16_c(const uint8_t *src_ptr, |
281 int source_stride, | 281 int source_stride, |
282 const uint8_t *ref_ptr, | 282 const uint8_t *ref_ptr, |
283 int recon_stride, | 283 int recon_stride, |
284 unsigned int *sse) { | 284 unsigned int *sse) { |
285 unsigned int var; | 285 unsigned int var; |
286 int avg; | 286 int avg; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 uint8_t temp2[36 * 32]; | 323 uint8_t temp2[36 * 32]; |
324 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 16); // compound pred buffer | 324 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 16); // compound pred buffer |
325 const int16_t *hfilter, *vfilter; | 325 const int16_t *hfilter, *vfilter; |
326 | 326 |
327 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 327 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
328 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 328 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
329 | 329 |
330 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 330 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
331 1, 17, 32, hfilter); | 331 1, 17, 32, hfilter); |
332 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 16, 32, vfilter); | 332 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 16, 32, vfilter); |
333 comp_avg_pred(temp3, second_pred, 32, 16, temp2, 32); | 333 vp9_comp_avg_pred(temp3, second_pred, 32, 16, temp2, 32); |
334 return vp9_variance32x16(temp3, 32, dst_ptr, dst_pixels_per_line, sse); | 334 return vp9_variance32x16(temp3, 32, dst_ptr, dst_pixels_per_line, sse); |
335 } | 335 } |
336 | 336 |
337 unsigned int vp9_variance16x32_c(const uint8_t *src_ptr, | 337 unsigned int vp9_variance16x32_c(const uint8_t *src_ptr, |
338 int source_stride, | 338 int source_stride, |
339 const uint8_t *ref_ptr, | 339 const uint8_t *ref_ptr, |
340 int recon_stride, | 340 int recon_stride, |
341 unsigned int *sse) { | 341 unsigned int *sse) { |
342 unsigned int var; | 342 unsigned int var; |
343 int avg; | 343 int avg; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 uint8_t temp2[36 * 32]; | 380 uint8_t temp2[36 * 32]; |
381 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 32); // compound pred buffer | 381 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 32); // compound pred buffer |
382 const int16_t *hfilter, *vfilter; | 382 const int16_t *hfilter, *vfilter; |
383 | 383 |
384 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 384 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
385 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 385 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
386 | 386 |
387 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 387 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
388 1, 33, 16, hfilter); | 388 1, 33, 16, hfilter); |
389 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 32, 16, vfilter); | 389 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 32, 16, vfilter); |
390 comp_avg_pred(temp3, second_pred, 16, 32, temp2, 16); | 390 vp9_comp_avg_pred(temp3, second_pred, 16, 32, temp2, 16); |
391 return vp9_variance16x32(temp3, 16, dst_ptr, dst_pixels_per_line, sse); | 391 return vp9_variance16x32(temp3, 16, dst_ptr, dst_pixels_per_line, sse); |
392 } | 392 } |
393 | 393 |
394 unsigned int vp9_variance64x64_c(const uint8_t *src_ptr, | 394 unsigned int vp9_variance64x64_c(const uint8_t *src_ptr, |
395 int source_stride, | 395 int source_stride, |
396 const uint8_t *ref_ptr, | 396 const uint8_t *ref_ptr, |
397 int recon_stride, | 397 int recon_stride, |
398 unsigned int *sse) { | 398 unsigned int *sse) { |
399 unsigned int var; | 399 unsigned int var; |
400 int avg; | 400 int avg; |
401 | 401 |
402 variance(src_ptr, source_stride, ref_ptr, recon_stride, 64, 64, &var, &avg); | 402 variance(src_ptr, source_stride, ref_ptr, recon_stride, 64, 64, &var, &avg); |
403 *sse = var; | 403 *sse = var; |
404 return (var - (((int64_t)avg * avg) >> 12)); | 404 return (var - (((int64_t)avg * avg) >> 12)); |
405 } | 405 } |
406 | 406 |
407 unsigned int vp9_variance32x32_c(const uint8_t *src_ptr, | 407 unsigned int vp9_variance32x32_c(const uint8_t *src_ptr, |
408 int source_stride, | 408 int source_stride, |
409 const uint8_t *ref_ptr, | 409 const uint8_t *ref_ptr, |
410 int recon_stride, | 410 int recon_stride, |
411 unsigned int *sse) { | 411 unsigned int *sse) { |
412 unsigned int var; | 412 unsigned int var; |
413 int avg; | 413 int avg; |
414 | 414 |
415 variance(src_ptr, source_stride, ref_ptr, recon_stride, 32, 32, &var, &avg); | 415 variance(src_ptr, source_stride, ref_ptr, recon_stride, 32, 32, &var, &avg); |
416 *sse = var; | 416 *sse = var; |
417 return (var - (((int64_t)avg * avg) >> 10)); | 417 return (var - (((int64_t)avg * avg) >> 10)); |
418 } | 418 } |
419 | 419 |
| 420 void vp9_get_sse_sum_16x16_c(const uint8_t *src_ptr, int source_stride, |
| 421 const uint8_t *ref_ptr, int ref_stride, |
| 422 unsigned int *sse, int *sum) { |
| 423 variance(src_ptr, source_stride, ref_ptr, ref_stride, 16, 16, sse, sum); |
| 424 } |
| 425 |
420 unsigned int vp9_variance16x16_c(const uint8_t *src_ptr, | 426 unsigned int vp9_variance16x16_c(const uint8_t *src_ptr, |
421 int source_stride, | 427 int source_stride, |
422 const uint8_t *ref_ptr, | 428 const uint8_t *ref_ptr, |
423 int recon_stride, | 429 int recon_stride, |
424 unsigned int *sse) { | 430 unsigned int *sse) { |
425 unsigned int var; | 431 unsigned int var; |
426 int avg; | 432 int avg; |
427 | 433 |
428 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg); | 434 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg); |
429 *sse = var; | 435 *sse = var; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 | 613 |
608 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 614 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
609 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 615 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
610 | 616 |
611 // First filter 1d Horizontal | 617 // First filter 1d Horizontal |
612 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 618 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
613 1, 5, 4, hfilter); | 619 1, 5, 4, hfilter); |
614 | 620 |
615 // Now filter Verticaly | 621 // Now filter Verticaly |
616 var_filter_block2d_bil_second_pass(fdata3, temp2, 4, 4, 4, 4, vfilter); | 622 var_filter_block2d_bil_second_pass(fdata3, temp2, 4, 4, 4, 4, vfilter); |
617 comp_avg_pred(temp3, second_pred, 4, 4, temp2, 4); | 623 vp9_comp_avg_pred(temp3, second_pred, 4, 4, temp2, 4); |
618 return vp9_variance4x4(temp3, 4, dst_ptr, dst_pixels_per_line, sse); | 624 return vp9_variance4x4(temp3, 4, dst_ptr, dst_pixels_per_line, sse); |
619 } | 625 } |
620 | 626 |
621 unsigned int vp9_sub_pixel_variance8x8_c(const uint8_t *src_ptr, | 627 unsigned int vp9_sub_pixel_variance8x8_c(const uint8_t *src_ptr, |
622 int src_pixels_per_line, | 628 int src_pixels_per_line, |
623 int xoffset, | 629 int xoffset, |
624 int yoffset, | 630 int yoffset, |
625 const uint8_t *dst_ptr, | 631 const uint8_t *dst_ptr, |
626 int dst_pixels_per_line, | 632 int dst_pixels_per_line, |
627 unsigned int *sse) { | 633 unsigned int *sse) { |
(...skipping 23 matching lines...) Expand all Loading... |
651 uint8_t temp2[20 * 16]; | 657 uint8_t temp2[20 * 16]; |
652 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 8); // compound pred buffer | 658 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 8); // compound pred buffer |
653 const int16_t *hfilter, *vfilter; | 659 const int16_t *hfilter, *vfilter; |
654 | 660 |
655 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 661 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
656 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 662 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
657 | 663 |
658 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 664 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
659 1, 9, 8, hfilter); | 665 1, 9, 8, hfilter); |
660 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 8, 8, vfilter); | 666 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 8, 8, vfilter); |
661 comp_avg_pred(temp3, second_pred, 8, 8, temp2, 8); | 667 vp9_comp_avg_pred(temp3, second_pred, 8, 8, temp2, 8); |
662 return vp9_variance8x8(temp3, 8, dst_ptr, dst_pixels_per_line, sse); | 668 return vp9_variance8x8(temp3, 8, dst_ptr, dst_pixels_per_line, sse); |
663 } | 669 } |
664 | 670 |
665 unsigned int vp9_sub_pixel_variance16x16_c(const uint8_t *src_ptr, | 671 unsigned int vp9_sub_pixel_variance16x16_c(const uint8_t *src_ptr, |
666 int src_pixels_per_line, | 672 int src_pixels_per_line, |
667 int xoffset, | 673 int xoffset, |
668 int yoffset, | 674 int yoffset, |
669 const uint8_t *dst_ptr, | 675 const uint8_t *dst_ptr, |
670 int dst_pixels_per_line, | 676 int dst_pixels_per_line, |
671 unsigned int *sse) { | 677 unsigned int *sse) { |
(...skipping 24 matching lines...) Expand all Loading... |
696 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 16); // compound pred buffer | 702 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 16); // compound pred buffer |
697 const int16_t *hfilter, *vfilter; | 703 const int16_t *hfilter, *vfilter; |
698 | 704 |
699 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 705 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
700 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 706 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
701 | 707 |
702 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 708 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
703 1, 17, 16, hfilter); | 709 1, 17, 16, hfilter); |
704 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 16, 16, vfilter); | 710 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 16, 16, vfilter); |
705 | 711 |
706 comp_avg_pred(temp3, second_pred, 16, 16, temp2, 16); | 712 vp9_comp_avg_pred(temp3, second_pred, 16, 16, temp2, 16); |
707 return vp9_variance16x16(temp3, 16, dst_ptr, dst_pixels_per_line, sse); | 713 return vp9_variance16x16(temp3, 16, dst_ptr, dst_pixels_per_line, sse); |
708 } | 714 } |
709 | 715 |
710 unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr, | 716 unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr, |
711 int src_pixels_per_line, | 717 int src_pixels_per_line, |
712 int xoffset, | 718 int xoffset, |
713 int yoffset, | 719 int yoffset, |
714 const uint8_t *dst_ptr, | 720 const uint8_t *dst_ptr, |
715 int dst_pixels_per_line, | 721 int dst_pixels_per_line, |
716 unsigned int *sse) { | 722 unsigned int *sse) { |
(...skipping 23 matching lines...) Expand all Loading... |
740 uint8_t temp2[68 * 64]; | 746 uint8_t temp2[68 * 64]; |
741 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 64 * 64); // compound pred buffer | 747 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 64 * 64); // compound pred buffer |
742 const int16_t *hfilter, *vfilter; | 748 const int16_t *hfilter, *vfilter; |
743 | 749 |
744 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 750 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
745 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 751 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
746 | 752 |
747 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 753 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
748 1, 65, 64, hfilter); | 754 1, 65, 64, hfilter); |
749 var_filter_block2d_bil_second_pass(fdata3, temp2, 64, 64, 64, 64, vfilter); | 755 var_filter_block2d_bil_second_pass(fdata3, temp2, 64, 64, 64, 64, vfilter); |
750 comp_avg_pred(temp3, second_pred, 64, 64, temp2, 64); | 756 vp9_comp_avg_pred(temp3, second_pred, 64, 64, temp2, 64); |
751 return vp9_variance64x64(temp3, 64, dst_ptr, dst_pixels_per_line, sse); | 757 return vp9_variance64x64(temp3, 64, dst_ptr, dst_pixels_per_line, sse); |
752 } | 758 } |
753 | 759 |
754 unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr, | 760 unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr, |
755 int src_pixels_per_line, | 761 int src_pixels_per_line, |
756 int xoffset, | 762 int xoffset, |
757 int yoffset, | 763 int yoffset, |
758 const uint8_t *dst_ptr, | 764 const uint8_t *dst_ptr, |
759 int dst_pixels_per_line, | 765 int dst_pixels_per_line, |
760 unsigned int *sse) { | 766 unsigned int *sse) { |
(...skipping 23 matching lines...) Expand all Loading... |
784 uint8_t temp2[36 * 32]; | 790 uint8_t temp2[36 * 32]; |
785 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 32); // compound pred buffer | 791 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 32); // compound pred buffer |
786 const int16_t *hfilter, *vfilter; | 792 const int16_t *hfilter, *vfilter; |
787 | 793 |
788 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 794 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
789 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 795 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
790 | 796 |
791 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 797 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
792 1, 33, 32, hfilter); | 798 1, 33, 32, hfilter); |
793 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 32, 32, vfilter); | 799 var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 32, 32, vfilter); |
794 comp_avg_pred(temp3, second_pred, 32, 32, temp2, 32); | 800 vp9_comp_avg_pred(temp3, second_pred, 32, 32, temp2, 32); |
795 return vp9_variance32x32(temp3, 32, dst_ptr, dst_pixels_per_line, sse); | 801 return vp9_variance32x32(temp3, 32, dst_ptr, dst_pixels_per_line, sse); |
796 } | 802 } |
797 | 803 |
798 unsigned int vp9_variance_halfpixvar16x16_h_c(const uint8_t *src_ptr, | 804 unsigned int vp9_variance_halfpixvar16x16_h_c(const uint8_t *src_ptr, |
799 int source_stride, | 805 int source_stride, |
800 const uint8_t *ref_ptr, | 806 const uint8_t *ref_ptr, |
801 int recon_stride, | 807 int recon_stride, |
802 unsigned int *sse) { | 808 unsigned int *sse) { |
803 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0, | 809 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0, |
804 ref_ptr, recon_stride, sse); | 810 ref_ptr, recon_stride, sse); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 uint8_t temp2[20 * 16]; | 954 uint8_t temp2[20 * 16]; |
949 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 8); // compound pred buffer | 955 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 8); // compound pred buffer |
950 const int16_t *hfilter, *vfilter; | 956 const int16_t *hfilter, *vfilter; |
951 | 957 |
952 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 958 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
953 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 959 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
954 | 960 |
955 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 961 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
956 1, 9, 16, hfilter); | 962 1, 9, 16, hfilter); |
957 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 8, 16, vfilter); | 963 var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 8, 16, vfilter); |
958 comp_avg_pred(temp3, second_pred, 16, 8, temp2, 16); | 964 vp9_comp_avg_pred(temp3, second_pred, 16, 8, temp2, 16); |
959 return vp9_variance16x8(temp3, 16, dst_ptr, dst_pixels_per_line, sse); | 965 return vp9_variance16x8(temp3, 16, dst_ptr, dst_pixels_per_line, sse); |
960 } | 966 } |
961 | 967 |
962 unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr, | 968 unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr, |
963 int src_pixels_per_line, | 969 int src_pixels_per_line, |
964 int xoffset, | 970 int xoffset, |
965 int yoffset, | 971 int yoffset, |
966 const uint8_t *dst_ptr, | 972 const uint8_t *dst_ptr, |
967 int dst_pixels_per_line, | 973 int dst_pixels_per_line, |
968 unsigned int *sse) { | 974 unsigned int *sse) { |
(...skipping 23 matching lines...) Expand all Loading... |
992 uint8_t temp2[20 * 16]; | 998 uint8_t temp2[20 * 16]; |
993 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 16); // compound pred buffer | 999 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 16); // compound pred buffer |
994 const int16_t *hfilter, *vfilter; | 1000 const int16_t *hfilter, *vfilter; |
995 | 1001 |
996 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 1002 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
997 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 1003 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
998 | 1004 |
999 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 1005 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
1000 1, 17, 8, hfilter); | 1006 1, 17, 8, hfilter); |
1001 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 16, 8, vfilter); | 1007 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 16, 8, vfilter); |
1002 comp_avg_pred(temp3, second_pred, 8, 16, temp2, 8); | 1008 vp9_comp_avg_pred(temp3, second_pred, 8, 16, temp2, 8); |
1003 return vp9_variance8x16(temp3, 8, dst_ptr, dst_pixels_per_line, sse); | 1009 return vp9_variance8x16(temp3, 8, dst_ptr, dst_pixels_per_line, sse); |
1004 } | 1010 } |
1005 | 1011 |
1006 unsigned int vp9_sub_pixel_variance8x4_c(const uint8_t *src_ptr, | 1012 unsigned int vp9_sub_pixel_variance8x4_c(const uint8_t *src_ptr, |
1007 int src_pixels_per_line, | 1013 int src_pixels_per_line, |
1008 int xoffset, | 1014 int xoffset, |
1009 int yoffset, | 1015 int yoffset, |
1010 const uint8_t *dst_ptr, | 1016 const uint8_t *dst_ptr, |
1011 int dst_pixels_per_line, | 1017 int dst_pixels_per_line, |
1012 unsigned int *sse) { | 1018 unsigned int *sse) { |
(...skipping 23 matching lines...) Expand all Loading... |
1036 uint8_t temp2[20 * 16]; | 1042 uint8_t temp2[20 * 16]; |
1037 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 4); // compound pred buffer | 1043 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 8 * 4); // compound pred buffer |
1038 const int16_t *hfilter, *vfilter; | 1044 const int16_t *hfilter, *vfilter; |
1039 | 1045 |
1040 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 1046 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
1041 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 1047 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
1042 | 1048 |
1043 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 1049 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
1044 1, 5, 8, hfilter); | 1050 1, 5, 8, hfilter); |
1045 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 4, 8, vfilter); | 1051 var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 4, 8, vfilter); |
1046 comp_avg_pred(temp3, second_pred, 8, 4, temp2, 8); | 1052 vp9_comp_avg_pred(temp3, second_pred, 8, 4, temp2, 8); |
1047 return vp9_variance8x4(temp3, 8, dst_ptr, dst_pixels_per_line, sse); | 1053 return vp9_variance8x4(temp3, 8, dst_ptr, dst_pixels_per_line, sse); |
1048 } | 1054 } |
1049 | 1055 |
1050 unsigned int vp9_sub_pixel_variance4x8_c(const uint8_t *src_ptr, | 1056 unsigned int vp9_sub_pixel_variance4x8_c(const uint8_t *src_ptr, |
1051 int src_pixels_per_line, | 1057 int src_pixels_per_line, |
1052 int xoffset, | 1058 int xoffset, |
1053 int yoffset, | 1059 int yoffset, |
1054 const uint8_t *dst_ptr, | 1060 const uint8_t *dst_ptr, |
1055 int dst_pixels_per_line, | 1061 int dst_pixels_per_line, |
1056 unsigned int *sse) { | 1062 unsigned int *sse) { |
(...skipping 25 matching lines...) Expand all Loading... |
1082 uint8_t temp2[20 * 16]; | 1088 uint8_t temp2[20 * 16]; |
1083 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 4 * 8); // compound pred buffer | 1089 DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 4 * 8); // compound pred buffer |
1084 const int16_t *hfilter, *vfilter; | 1090 const int16_t *hfilter, *vfilter; |
1085 | 1091 |
1086 hfilter = BILINEAR_FILTERS_2TAP(xoffset); | 1092 hfilter = BILINEAR_FILTERS_2TAP(xoffset); |
1087 vfilter = BILINEAR_FILTERS_2TAP(yoffset); | 1093 vfilter = BILINEAR_FILTERS_2TAP(yoffset); |
1088 | 1094 |
1089 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, | 1095 var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, |
1090 1, 9, 4, hfilter); | 1096 1, 9, 4, hfilter); |
1091 var_filter_block2d_bil_second_pass(fdata3, temp2, 4, 4, 8, 4, vfilter); | 1097 var_filter_block2d_bil_second_pass(fdata3, temp2, 4, 4, 8, 4, vfilter); |
1092 comp_avg_pred(temp3, second_pred, 4, 8, temp2, 4); | 1098 vp9_comp_avg_pred(temp3, second_pred, 4, 8, temp2, 4); |
1093 return vp9_variance4x8(temp3, 4, dst_ptr, dst_pixels_per_line, sse); | 1099 return vp9_variance4x8(temp3, 4, dst_ptr, dst_pixels_per_line, sse); |
1094 } | 1100 } |
| 1101 |
| 1102 |
| 1103 void vp9_comp_avg_pred(uint8_t *comp_pred, const uint8_t *pred, int width, |
| 1104 int height, const uint8_t *ref, int ref_stride) { |
| 1105 int i, j; |
| 1106 |
| 1107 for (i = 0; i < height; i++) { |
| 1108 for (j = 0; j < width; j++) { |
| 1109 int tmp; |
| 1110 tmp = pred[j] + ref[j]; |
| 1111 comp_pred[j] = (tmp + 1) >> 1; |
| 1112 } |
| 1113 comp_pred += width; |
| 1114 pred += width; |
| 1115 ref += ref_stride; |
| 1116 } |
| 1117 } |
OLD | NEW |