Demux vp9_loopfilter_x86.c

Allow more careful targeting of compiler flags.

Change-Id: I963ab4a6479dedb165419310dfca52a58a9877b8
This commit is contained in:
Johann 2013-04-02 11:45:01 -07:00
parent 6c147b9d93
commit 3db60c8c6c
3 changed files with 79 additions and 74 deletions

View File

@ -0,0 +1,74 @@
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "vp9/common/vp9_loopfilter.h"
prototype_loopfilter(vp9_loop_filter_vertical_edge_mmx);
prototype_loopfilter(vp9_loop_filter_horizontal_edge_mmx);
/* Horizontal MB filtering */
void vp9_loop_filter_mbh_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
/* Vertical MB Filtering */
void vp9_loop_filter_mbv_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
/* Horizontal B Filtering */
void vp9_loop_filter_bh_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
void vp9_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride,
const unsigned char *blimit) {
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride,
y_stride, blimit);
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride,
y_stride, blimit);
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride,
y_stride, blimit);
}
/* Vertical B Filtering */
void vp9_loop_filter_bv_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
vp9_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
vp9_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
vp9_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
if (u_ptr)
vp9_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
if (v_ptr)
vp9_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
}
void vp9_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride,
const unsigned char *blimit) {
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
}

View File

@ -8,84 +8,16 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include <emmintrin.h> // SSE2
#include "vpx_config.h"
#include <emmintrin.h> /* SSE2 */
#include "vp9/common/vp9_loopfilter.h"
#include "vpx_ports/emmintrin_compat.h"
prototype_loopfilter(vp9_loop_filter_vertical_edge_mmx);
prototype_loopfilter(vp9_loop_filter_horizontal_edge_mmx);
prototype_loopfilter(vp9_loop_filter_vertical_edge_sse2);
prototype_loopfilter(vp9_loop_filter_horizontal_edge_sse2);
extern loop_filter_uvfunction vp9_loop_filter_horizontal_edge_uv_sse2;
extern loop_filter_uvfunction vp9_loop_filter_vertical_edge_uv_sse2;
#if HAVE_MMX
/* Horizontal MB filtering */
void vp9_loop_filter_mbh_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
/* Vertical MB Filtering */
void vp9_loop_filter_mbv_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
/* Horizontal B Filtering */
void vp9_loop_filter_bh_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
}
void vp9_loop_filter_bhs_mmx(unsigned char *y_ptr, int y_stride,
const unsigned char *blimit) {
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 4 * y_stride,
y_stride, blimit);
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 8 * y_stride,
y_stride, blimit);
vp9_loop_filter_simple_horizontal_edge_mmx(y_ptr + 12 * y_stride,
y_stride, blimit);
}
/* Vertical B Filtering */
void vp9_loop_filter_bv_mmx(unsigned char *y_ptr,
unsigned char *u_ptr, unsigned char *v_ptr,
int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
vp9_loop_filter_vertical_edge_mmx(y_ptr + 4, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
vp9_loop_filter_vertical_edge_mmx(y_ptr + 8, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
vp9_loop_filter_vertical_edge_mmx(y_ptr + 12, y_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 2);
if (u_ptr)
vp9_loop_filter_vertical_edge_mmx(u_ptr + 4, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
if (v_ptr)
vp9_loop_filter_vertical_edge_mmx(v_ptr + 4, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
}
void vp9_loop_filter_bvs_mmx(unsigned char *y_ptr, int y_stride,
const unsigned char *blimit) {
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 4, y_stride, blimit);
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 8, y_stride, blimit);
vp9_loop_filter_simple_vertical_edge_mmx(y_ptr + 12, y_stride, blimit);
}
#endif
#if HAVE_SSE2
void vp9_mb_lpf_horizontal_edge_w_sse2(unsigned char *s,
int p,
const unsigned char *_blimit,
@ -1227,5 +1159,3 @@ void vp9_loop_filter_bvs_sse2(unsigned char *y_ptr, int y_stride,
vp9_loop_filter_simple_vertical_edge_sse2(y_ptr + 8, y_stride, blimit);
vp9_loop_filter_simple_vertical_edge_sse2(y_ptr + 12, y_stride, blimit);
}
#endif

View File

@ -83,7 +83,8 @@ VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_subpixel_x86.h
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_x86.h
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_postproc_x86.h
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_asm_stubs.c
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_x86.c
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_intrin_mmx.c
VP9_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp9_loopfilter_intrin_sse2.c
VP9_COMMON_SRCS-$(CONFIG_POSTPROC) += common/vp9_postproc.h
VP9_COMMON_SRCS-$(CONFIG_POSTPROC) += common/vp9_postproc.c
VP9_COMMON_SRCS-$(HAVE_MMX) += common/x86/vp9_iwalsh_mmx.asm
@ -121,10 +122,10 @@ VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_filter_sse2.c
VP9_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp9_sadmxn_sse2.c
ifeq ($(HAVE_SSE2),yes)
vp9/common/x86/vp9_filter_sse2.c.o: CFLAGS += -msse2
vp9/common/x86/vp9_loopfilter_x86.c.o: CFLAGS += -msse2
vp9/common/x86/vp9_loopfilter_intrin_sse2.c.o: CFLAGS += -msse2
vp9/common/x86/vp9_sadmxn_sse2.c.o: CFLAGS += -msse2
vp9/common/x86/vp9_filter_sse2.c.d: CFLAGS += -msse2
vp9/common/x86/vp9_loopfilter_x86.c.d: CFLAGS += -msse2
vp9/common/x86/vp9_loopfilter_intrin_sse2.c.d: CFLAGS += -msse2
vp9/common/x86/vp9_sadmxn_sse2.c.d: CFLAGS += -msse2
endif