1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Use of this source code is governed by a BSD-style license 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * that can be found in the LICENSE file in the root of the source 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * tree. An additional intellectual property rights grant can be found 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * in the file PATENTS. All contributing project authors may 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * be found in the AUTHORS file in the root of the source tree. 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */ 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 115c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org#include "vpx_config.h" 126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org#include "vp8_rtcd.h" 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include <math.h> 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "vp8/common/filter.h" 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "bilinearfilter_arm.h" 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_filter_block2d_bil_armv6 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org( 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *src_ptr, 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *dst_ptr, 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned int src_pitch, 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned int dst_pitch, 23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *HFilter, 24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *VFilter, 25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int Width, 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int Height 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org) 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned short FData[36*16]; /* Temp data buffer used in filtering */ 30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org /* First filter 1-D horizontally... */ 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_first_pass_armv6(src_ptr, FData, src_pitch, Height + 1, Width, HFilter); 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org /* then 1-D vertically... */ 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_second_pass_armv6(FData, dst_ptr, dst_pitch, Height, Width, VFilter); 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_bilinear_predict4x4_armv6 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org( 41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *src_ptr, 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int src_pixels_per_line, 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int xoffset, 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int yoffset, 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *dst_ptr, 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int dst_pitch 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org) 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *HFilter; 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *VFilter; 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org HFilter = vp8_bilinear_filters[xoffset]; 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VFilter = vp8_bilinear_filters[yoffset]; 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 4, 4); 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_bilinear_predict8x8_armv6 59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org( 60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *src_ptr, 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int src_pixels_per_line, 62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int xoffset, 63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int yoffset, 64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *dst_ptr, 65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int dst_pitch 66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org) 67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *HFilter; 69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *VFilter; 70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org HFilter = vp8_bilinear_filters[xoffset]; 72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VFilter = vp8_bilinear_filters[yoffset]; 73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 8); 75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_bilinear_predict8x4_armv6 78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org( 79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *src_ptr, 80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int src_pixels_per_line, 81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int xoffset, 82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int yoffset, 83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *dst_ptr, 84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int dst_pitch 85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org) 86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *HFilter; 88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *VFilter; 89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org HFilter = vp8_bilinear_filters[xoffset]; 91474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VFilter = vp8_bilinear_filters[yoffset]; 92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 8, 4); 94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 96474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_bilinear_predict16x16_armv6 97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org( 98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *src_ptr, 99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int src_pixels_per_line, 100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int xoffset, 101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int yoffset, 102474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unsigned char *dst_ptr, 103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int dst_pitch 104474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org) 105474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *HFilter; 107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org const short *VFilter; 108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org HFilter = vp8_bilinear_filters[xoffset]; 110474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VFilter = vp8_bilinear_filters[yoffset]; 111474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 112474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_filter_block2d_bil_armv6(src_ptr, dst_ptr, src_pixels_per_line, dst_pitch, HFilter, VFilter, 16, 16); 113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 114