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 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "vpx_config.h" 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "vp8/common/loopfilter.h" 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 155c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org#define prototype_loopfilter(sym) \ 165c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org void sym(unsigned char *src, int pitch, const unsigned char *blimit,\ 175c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org const unsigned char *limit, const unsigned char *thresh, int count) 185c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 195c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org#define prototype_loopfilter_nc(sym) \ 205c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org void sym(unsigned char *src, int pitch, const unsigned char *blimit,\ 215c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org const unsigned char *limit, const unsigned char *thresh) 225c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 235c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org#define prototype_simple_loopfilter(sym) \ 245c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org void sym(unsigned char *y, int ystride, const unsigned char *blimit) 255c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprototype_loopfilter(vp8_mbloop_filter_vertical_edge_mmx); 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprototype_loopfilter(vp8_mbloop_filter_horizontal_edge_mmx); 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprototype_loopfilter(vp8_loop_filter_vertical_edge_mmx); 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprototype_loopfilter(vp8_loop_filter_horizontal_edge_mmx); 305c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_mmx); 315c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_mmx); 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 33167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#if HAVE_SSE2 && ARCH_X86_64 34167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprototype_loopfilter(vp8_loop_filter_bv_y_sse2); 35167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprototype_loopfilter(vp8_loop_filter_bh_y_sse2); 36167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#else 375c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_loopfilter_nc(vp8_loop_filter_vertical_edge_sse2); 385c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_loopfilter_nc(vp8_loop_filter_horizontal_edge_sse2); 39167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#endif 405c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_loopfilter_nc(vp8_mbloop_filter_vertical_edge_sse2); 415c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgprototype_loopfilter_nc(vp8_mbloop_filter_horizontal_edge_sse2); 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgextern loop_filter_uvfunction vp8_loop_filter_horizontal_edge_uv_sse2; 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgextern loop_filter_uvfunction vp8_loop_filter_vertical_edge_uv_sse2; 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgextern loop_filter_uvfunction vp8_mbloop_filter_horizontal_edge_uv_sse2; 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgextern loop_filter_uvfunction vp8_mbloop_filter_vertical_edge_uv_sse2; 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#if HAVE_MMX 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Horizontal MB filtering */ 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_mbh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_horizontal_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_horizontal_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); 57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (v_ptr) 59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_horizontal_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); 60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Vertical MB Filtering */ 64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_mbv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_vertical_edge_mmx(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_vertical_edge_mmx(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); 71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (v_ptr) 73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_vertical_edge_mmx(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); 74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Horizontal B Filtering */ 78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bh_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_mmx(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); 87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (v_ptr) 89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_mmx(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); 90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 91474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit) 94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride, y_stride, blimit); 96474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride, y_stride, blimit); 97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride, y_stride, blimit); 98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Vertical B Filtering */ 102474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bv_mmx(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 104474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 105474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 110474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); 111474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 112474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (v_ptr) 113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); 114474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 116474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 117474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride, const unsigned char *blimit) 118474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 119474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit); 120474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit); 121474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit); 122474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 123474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif 124474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 125474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 126474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Horizontal MB filtering */ 127474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#if HAVE_SSE2 128474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_mbh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 129474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 130474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 1315c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_mbloop_filter_horizontal_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr); 132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 134474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_horizontal_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr); 135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Vertical MB Filtering */ 139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_mbv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 140474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 141474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 1425c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_mbloop_filter_vertical_edge_sse2(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr); 143474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 144474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 145474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_mbloop_filter_vertical_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, v_ptr); 146474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 147474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 148474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 149474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Horizontal B Filtering */ 150474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bh_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 151474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 152474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 153167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#if ARCH_X86_64 154167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org vp8_loop_filter_bh_y_sse2(y_ptr, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 155167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#else 1565c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 1575c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 1585c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 159167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#endif 160474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 161474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 162474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_horizontal_edge_uv_sse2(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4 * uv_stride); 163474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bhs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit) 167474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 168474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 4 * y_stride, y_stride, blimit); 169474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 8 * y_stride, y_stride, blimit); 170474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_horizontal_edge_sse2(y_ptr + 12 * y_stride, y_stride, blimit); 171474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 172474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 173474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 174474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* Vertical B Filtering */ 175474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bv_sse2(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, 176474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int y_stride, int uv_stride, loop_filter_info *lfi) 177474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 178167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#if ARCH_X86_64 179167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org vp8_loop_filter_bv_y_sse2(y_ptr, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); 180167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#else 1815c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_vertical_edge_sse2(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 1825c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_vertical_edge_sse2(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 1835c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org vp8_loop_filter_vertical_edge_sse2(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr); 184167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#endif 185474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 186474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (u_ptr) 187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_vertical_edge_uv_sse2(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, v_ptr + 4); 188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride, const unsigned char *blimit) 192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 4, y_stride, blimit); 194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 8, y_stride, blimit); 195474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vp8_loop_filter_simple_vertical_edge_sse2(y_ptr + 12, y_stride, blimit); 196474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 197474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif 199