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 #include "vpx_config.h" 12 #include "vp8_rtcd.h" 13 #include <math.h> 14 #include "vp8/common/filter.h" 15 #include "bilinearfilter_arm.h" 16 17 void vp8_filter_block2d_bil_armv6 18 ( 19 unsigned char *src_ptr, 20 unsigned char *dst_ptr, 21 unsigned int src_pitch, 22 unsigned int dst_pitch, 23 const short *HFilter, 24 const short *VFilter, 25 int Width, 26 int Height 27 ) 28 { 29 unsigned short FData[36*16]; /* Temp data buffer used in filtering */ 30 31 /* First filter 1-D horizontally... */ 32 vp8_filter_block2d_bil_first_pass_armv6(src_ptr, FData, src_pitch, Height + 1, Width, HFilter); 33 34 /* then 1-D vertically... */ 35 vp8_filter_block2d_bil_second_pass_armv6(FData, dst_ptr, dst_pitch, Height, Width, VFilter); 36 } 37 38 39 void vp8_bilinear_predict4x4_armv6 40 ( 41 unsigned char *src_ptr, 42 int src_pixels_per_line, 43 int xoffset, 44 int yoffset, 45 unsigned char *dst_ptr, 46 int dst_pitch 47 ) 48 { 49 const short *HFilter; 50 const short *VFilter; 51 52 HFilter = vp8_bilinear_filters[xoffset]; 53 VFilter = vp8_bilinear_filters[yoffset]; 54 55 vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 4, 4); 56 } 57 58 void vp8_bilinear_predict8x8_armv6 59 ( 60 unsigned char *src_ptr, 61 int src_pixels_per_line, 62 int xoffset, 63 int yoffset, 64 unsigned char *dst_ptr, 65 int dst_pitch 66 ) 67 { 68 const short *HFilter; 69 const short *VFilter; 70 71 HFilter = vp8_bilinear_filters[xoffset]; 72 VFilter = vp8_bilinear_filters[yoffset]; 73 74 vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 8); 75 } 76 77 void vp8_bilinear_predict8x4_armv6 78 ( 79 unsigned char *src_ptr, 80 int src_pixels_per_line, 81 int xoffset, 82 int yoffset, 83 unsigned char *dst_ptr, 84 int dst_pitch 85 ) 86 { 87 const short *HFilter; 88 const short *VFilter; 89 90 HFilter = vp8_bilinear_filters[xoffset]; 91 VFilter = vp8_bilinear_filters[yoffset]; 92 93 vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 4); 94 } 95 96 void vp8_bilinear_predict16x16_armv6 97 ( 98 unsigned char *src_ptr, 99 int src_pixels_per_line, 100 int xoffset, 101 int yoffset, 102 unsigned char *dst_ptr, 103 int dst_pitch 104 ) 105 { 106 const short *HFilter; 107 const short *VFilter; 108 109 HFilter = vp8_bilinear_filters[xoffset]; 110 VFilter = vp8_bilinear_filters[yoffset]; 111 112 vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 16, 16); 113 } 114