From 55f74c59c735b589f253ba1427a1fec1f6837039 Mon Sep 17 00:00:00 2001 From: John Koleszar <jkoleszar@google.com> Date: Thu, 12 Jan 2012 16:15:42 -0800 Subject: [PATCH] RTCD: add loopfilter functions This commit continues the process of converting to the new RTCD system. Change-Id: Ic8a4047d72ff3a54ec98977dd90e70c13213db71 --- vp8/common/arm/arm_systemdependent.c | 20 ---- vp8/common/arm/loopfilter_arm.c | 5 + vp8/common/arm/loopfilter_arm.h | 93 ------------------- vp8/common/generic/systemdependent.c | 9 -- vp8/common/loopfilter.c | 133 +++++---------------------- vp8/common/loopfilter.h | 83 +---------------- vp8/common/loopfilter_filters.c | 76 +++++++++++++++ vp8/common/onyxc_int.h | 1 - vp8/common/rtcd_defs.sh | 56 +++++++++++ vp8/common/x86/loopfilter_x86.c | 9 ++ vp8/common/x86/loopfilter_x86.h | 100 -------------------- vp8/common/x86/x86_systemdependent.c | 18 ---- vp8/decoder/threading.c | 32 +++---- vp8/vp8_common.mk | 2 - 14 files changed, 189 insertions(+), 448 deletions(-) delete mode 100644 vp8/common/arm/loopfilter_arm.h delete mode 100644 vp8/common/x86/loopfilter_x86.h diff --git a/vp8/common/arm/arm_systemdependent.c b/vp8/common/arm/arm_systemdependent.c index 43a0b77454..9b1f2dc9e7 100644 --- a/vp8/common/arm/arm_systemdependent.c +++ b/vp8/common/arm/arm_systemdependent.c @@ -47,17 +47,6 @@ void vp8_arch_arm_common_init(VP8_COMMON *ctx) rtcd->idct.idct16 = vp8_short_idct4x4llm_v6_dual; rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_v6; - rtcd->loopfilter.normal_mb_v = vp8_loop_filter_mbv_armv6; - rtcd->loopfilter.normal_b_v = vp8_loop_filter_bv_armv6; - rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_armv6; - rtcd->loopfilter.normal_b_h = vp8_loop_filter_bh_armv6; - rtcd->loopfilter.simple_mb_v = - vp8_loop_filter_simple_vertical_edge_armv6; - rtcd->loopfilter.simple_b_v = vp8_loop_filter_bvs_armv6; - rtcd->loopfilter.simple_mb_h = - vp8_loop_filter_simple_horizontal_edge_armv6; - rtcd->loopfilter.simple_b_h = vp8_loop_filter_bhs_armv6; - rtcd->recon.copy16x16 = vp8_copy_mem16x16_v6; rtcd->recon.copy8x8 = vp8_copy_mem8x8_v6; rtcd->recon.copy8x4 = vp8_copy_mem8x4_v6; @@ -80,15 +69,6 @@ void vp8_arch_arm_common_init(VP8_COMMON *ctx) rtcd->idct.idct16 = vp8_short_idct4x4llm_neon; rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_neon; - rtcd->loopfilter.normal_mb_v = vp8_loop_filter_mbv_neon; - rtcd->loopfilter.normal_b_v = vp8_loop_filter_bv_neon; - rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_neon; - rtcd->loopfilter.normal_b_h = vp8_loop_filter_bh_neon; - rtcd->loopfilter.simple_mb_v = vp8_loop_filter_mbvs_neon; - rtcd->loopfilter.simple_b_v = vp8_loop_filter_bvs_neon; - rtcd->loopfilter.simple_mb_h = vp8_loop_filter_mbhs_neon; - rtcd->loopfilter.simple_b_h = vp8_loop_filter_bhs_neon; - rtcd->recon.copy16x16 = vp8_copy_mem16x16_neon; rtcd->recon.copy8x8 = vp8_copy_mem8x8_neon; rtcd->recon.copy8x4 = vp8_copy_mem8x4_neon; diff --git a/vp8/common/arm/loopfilter_arm.c b/vp8/common/arm/loopfilter_arm.c index 4e253e1aa7..b8f9bd90ef 100644 --- a/vp8/common/arm/loopfilter_arm.c +++ b/vp8/common/arm/loopfilter_arm.c @@ -10,9 +10,14 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "vp8/common/loopfilter.h" #include "vp8/common/onyxc_int.h" +#define prototype_loopfilter(sym) \ + void sym(unsigned char *src, int pitch, const unsigned char *blimit,\ + const unsigned char *limit, const unsigned char *thresh, int count) + #if HAVE_MEDIA extern prototype_loopfilter(vp8_loop_filter_horizontal_edge_armv6); extern prototype_loopfilter(vp8_loop_filter_vertical_edge_armv6); diff --git a/vp8/common/arm/loopfilter_arm.h b/vp8/common/arm/loopfilter_arm.h deleted file mode 100644 index 28d454e899..0000000000 --- a/vp8/common/arm/loopfilter_arm.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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. - */ - - -#ifndef LOOPFILTER_ARM_H -#define LOOPFILTER_ARM_H - -#include "vpx_config.h" - -#if HAVE_MEDIA -extern prototype_loopfilter_block(vp8_loop_filter_mbv_armv6); -extern prototype_loopfilter_block(vp8_loop_filter_bv_armv6); -extern prototype_loopfilter_block(vp8_loop_filter_mbh_armv6); -extern prototype_loopfilter_block(vp8_loop_filter_bh_armv6); -extern prototype_simple_loopfilter(vp8_loop_filter_bvs_armv6); -extern prototype_simple_loopfilter(vp8_loop_filter_bhs_armv6); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_armv6); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_armv6); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_lf_normal_mb_v -#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_armv6 - -#undef vp8_lf_normal_b_v -#define vp8_lf_normal_b_v vp8_loop_filter_bv_armv6 - -#undef vp8_lf_normal_mb_h -#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_armv6 - -#undef vp8_lf_normal_b_h -#define vp8_lf_normal_b_h vp8_loop_filter_bh_armv6 - -#undef vp8_lf_simple_mb_v -#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_armv6 - -#undef vp8_lf_simple_b_v -#define vp8_lf_simple_b_v vp8_loop_filter_bvs_armv6 - -#undef vp8_lf_simple_mb_h -#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_armv6 - -#undef vp8_lf_simple_b_h -#define vp8_lf_simple_b_h vp8_loop_filter_bhs_armv6 -#endif /* !CONFIG_RUNTIME_CPU_DETECT */ - -#endif /* HAVE_MEDIA */ - -#if HAVE_NEON -extern prototype_loopfilter_block(vp8_loop_filter_mbv_neon); -extern prototype_loopfilter_block(vp8_loop_filter_bv_neon); -extern prototype_loopfilter_block(vp8_loop_filter_mbh_neon); -extern prototype_loopfilter_block(vp8_loop_filter_bh_neon); -extern prototype_simple_loopfilter(vp8_loop_filter_mbvs_neon); -extern prototype_simple_loopfilter(vp8_loop_filter_bvs_neon); -extern prototype_simple_loopfilter(vp8_loop_filter_mbhs_neon); -extern prototype_simple_loopfilter(vp8_loop_filter_bhs_neon); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_lf_normal_mb_v -#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_neon - -#undef vp8_lf_normal_b_v -#define vp8_lf_normal_b_v vp8_loop_filter_bv_neon - -#undef vp8_lf_normal_mb_h -#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_neon - -#undef vp8_lf_normal_b_h -#define vp8_lf_normal_b_h vp8_loop_filter_bh_neon - -#undef vp8_lf_simple_mb_v -#define vp8_lf_simple_mb_v vp8_loop_filter_mbvs_neon - -#undef vp8_lf_simple_b_v -#define vp8_lf_simple_b_v vp8_loop_filter_bvs_neon - -#undef vp8_lf_simple_mb_h -#define vp8_lf_simple_mb_h vp8_loop_filter_mbhs_neon - -#undef vp8_lf_simple_b_h -#define vp8_lf_simple_b_h vp8_loop_filter_bhs_neon -#endif /* !CONFIG_RUNTIME_CPU_DETECT */ - -#endif /* HAVE_NEON */ - -#endif /* LOOPFILTER_ARM_H */ diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c index 05c54fb607..7f43bf54f8 100644 --- a/vp8/common/generic/systemdependent.c +++ b/vp8/common/generic/systemdependent.c @@ -100,15 +100,6 @@ void vp8_machine_specific_config(VP8_COMMON *ctx) rtcd->subpix.bilinear8x4 = vp8_bilinear_predict8x4_c; rtcd->subpix.bilinear4x4 = vp8_bilinear_predict4x4_c; - rtcd->loopfilter.normal_mb_v = vp8_loop_filter_mbv_c; - rtcd->loopfilter.normal_b_v = vp8_loop_filter_bv_c; - rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_c; - rtcd->loopfilter.normal_b_h = vp8_loop_filter_bh_c; - rtcd->loopfilter.simple_mb_v = vp8_loop_filter_simple_vertical_edge_c; - rtcd->loopfilter.simple_b_v = vp8_loop_filter_bvs_c; - rtcd->loopfilter.simple_mb_h = vp8_loop_filter_simple_horizontal_edge_c; - rtcd->loopfilter.simple_b_h = vp8_loop_filter_bhs_c; - #if CONFIG_POSTPROC || (CONFIG_VP8_ENCODER && CONFIG_INTERNAL_STATS) rtcd->postproc.down = vp8_mbpost_proc_down_c; rtcd->postproc.across = vp8_mbpost_proc_across_ip_c; diff --git a/vp8/common/loopfilter.c b/vp8/common/loopfilter.c index a38b49eb91..66b280d334 100644 --- a/vp8/common/loopfilter.c +++ b/vp8/common/loopfilter.c @@ -10,96 +10,13 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "loopfilter.h" #include "onyxc_int.h" #include "vpx_mem/vpx_mem.h" typedef unsigned char uc; -prototype_loopfilter(vp8_loop_filter_horizontal_edge_c); -prototype_loopfilter(vp8_loop_filter_vertical_edge_c); -prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_c); -prototype_loopfilter(vp8_mbloop_filter_vertical_edge_c); - -prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_c); -prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_c); - -/* Horizontal MB filtering */ -void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr, - unsigned char *v_ptr, int y_stride, int uv_stride, - loop_filter_info *lfi) -{ - vp8_mbloop_filter_horizontal_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); - - if (u_ptr) - vp8_mbloop_filter_horizontal_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); - - if (v_ptr) - vp8_mbloop_filter_horizontal_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); -} - -/* Vertical MB Filtering */ -void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr, - unsigned char *v_ptr, int y_stride, int uv_stride, - loop_filter_info *lfi) -{ - vp8_mbloop_filter_vertical_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); - - if (u_ptr) - vp8_mbloop_filter_vertical_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); - - if (v_ptr) - vp8_mbloop_filter_vertical_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); -} - -/* Horizontal B Filtering */ -void vp8_loop_filter_bh_c(unsigned char *y_ptr, unsigned char *u_ptr, - unsigned char *v_ptr, int y_stride, int uv_stride, - loop_filter_info *lfi) -{ - vp8_loop_filter_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - vp8_loop_filter_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - vp8_loop_filter_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - - if (u_ptr) - vp8_loop_filter_horizontal_edge_c(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); - - if (v_ptr) - vp8_loop_filter_horizontal_edge_c(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); -} - -void vp8_loop_filter_bhs_c(unsigned char *y_ptr, int y_stride, - const unsigned char *blimit) -{ - vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, blimit); - vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, blimit); - vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, blimit); -} - -/* Vertical B Filtering */ -void vp8_loop_filter_bv_c(unsigned char *y_ptr, unsigned char *u_ptr, - unsigned char *v_ptr, int y_stride, int uv_stride, - loop_filter_info *lfi) -{ - vp8_loop_filter_vertical_edge_c(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - vp8_loop_filter_vertical_edge_c(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - vp8_loop_filter_vertical_edge_c(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); - - if (u_ptr) - vp8_loop_filter_vertical_edge_c(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); - - if (v_ptr) - vp8_loop_filter_vertical_edge_c(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); -} - -void vp8_loop_filter_bvs_c(unsigned char *y_ptr, int y_stride, - const unsigned char *blimit) -{ - vp8_loop_filter_simple_vertical_edge_c(y_ptr + 4, y_stride, blimit); - vp8_loop_filter_simple_vertical_edge_c(y_ptr + 8, y_stride, blimit); - vp8_loop_filter_simple_vertical_edge_c(y_ptr + 12, y_stride, blimit); -} - static void lf_init_lut(loop_filter_info_n *lfi) { int filt_lvl; @@ -335,39 +252,39 @@ void vp8_loop_filter_frame lfi.hev_thr = lfi_n->hev_thr[hev_index]; if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_v) + vp8_loop_filter_mbv (y_ptr, u_ptr, v_ptr, post->y_stride, post->uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_v) + vp8_loop_filter_bv (y_ptr, u_ptr, v_ptr, post->y_stride, post->uv_stride, &lfi); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_h) + vp8_loop_filter_mbh (y_ptr, u_ptr, v_ptr, post->y_stride, post->uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_h) + vp8_loop_filter_bh (y_ptr, u_ptr, v_ptr, post->y_stride, post->uv_stride, &lfi); } else { if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_v) + vp8_loop_filter_simple_mbv (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_v) + vp8_loop_filter_simple_bv (y_ptr, post->y_stride, lfi_n->blim[filter_level]); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_h) + vp8_loop_filter_simple_mbh (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_h) + vp8_loop_filter_simple_bh (y_ptr, post->y_stride, lfi_n->blim[filter_level]); } } @@ -446,39 +363,39 @@ void vp8_loop_filter_frame_yonly lfi.hev_thr = lfi_n->hev_thr[hev_index]; if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_v) + vp8_loop_filter_mbv (y_ptr, 0, 0, post->y_stride, 0, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_v) + vp8_loop_filter_bv (y_ptr, 0, 0, post->y_stride, 0, &lfi); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_h) + vp8_loop_filter_mbh (y_ptr, 0, 0, post->y_stride, 0, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_h) + vp8_loop_filter_bh (y_ptr, 0, 0, post->y_stride, 0, &lfi); } else { if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_v) + vp8_loop_filter_simple_mbv (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_v) + vp8_loop_filter_simple_bv (y_ptr, post->y_stride, lfi_n->blim[filter_level]); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_h) + vp8_loop_filter_simple_mbh (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_h) + vp8_loop_filter_simple_bh (y_ptr, post->y_stride, lfi_n->blim[filter_level]); } } @@ -578,35 +495,35 @@ void vp8_loop_filter_partial_frame lfi.hev_thr = lfi_n->hev_thr[hev_index]; if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_v) + vp8_loop_filter_mbv (y_ptr, 0, 0, post->y_stride, 0, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_v) + vp8_loop_filter_bv (y_ptr, 0, 0, post->y_stride, 0, &lfi); - LF_INVOKE(&cm->rtcd.loopfilter, normal_mb_h) + vp8_loop_filter_mbh (y_ptr, 0, 0, post->y_stride, 0, &lfi); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, normal_b_h) + vp8_loop_filter_bh (y_ptr, 0, 0, post->y_stride, 0, &lfi); } else { if (mb_col > 0) - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_v) + vp8_loop_filter_simple_mbv (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_v) + vp8_loop_filter_simple_bv (y_ptr, post->y_stride, lfi_n->blim[filter_level]); - LF_INVOKE(&cm->rtcd.loopfilter, simple_mb_h) + vp8_loop_filter_simple_mbh (y_ptr, post->y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&cm->rtcd.loopfilter, simple_b_h) + vp8_loop_filter_simple_bh (y_ptr, post->y_stride, lfi_n->blim[filter_level]); } } diff --git a/vp8/common/loopfilter.h b/vp8/common/loopfilter.h index 340339a91a..6a4ea0fb5e 100644 --- a/vp8/common/loopfilter.h +++ b/vp8/common/loopfilter.h @@ -14,6 +14,7 @@ #include "vpx_ports/mem.h" #include "vpx_config.h" +#include "vpx_rtcd.h" #define MAX_LOOP_FILTER 63 /* fraction of total macroblock rows to be used in fast filter level picking */ @@ -46,7 +47,7 @@ typedef struct unsigned char mode_lf_lut[10]; } loop_filter_info_n; -typedef struct +typedef struct loop_filter_info { const unsigned char * mblim; const unsigned char * blim; @@ -55,86 +56,6 @@ typedef struct } loop_filter_info; -#define prototype_loopfilter(sym) \ - void sym(unsigned char *src, int pitch, const unsigned char *blimit,\ - const unsigned char *limit, const unsigned char *thresh, int count) - -#define prototype_loopfilter_block(sym) \ - void sym(unsigned char *y, unsigned char *u, unsigned char *v, \ - int ystride, int uv_stride, loop_filter_info *lfi) - -#define prototype_simple_loopfilter(sym) \ - void sym(unsigned char *y, int ystride, const unsigned char *blimit) - -#if ARCH_X86 || ARCH_X86_64 -#include "x86/loopfilter_x86.h" -#endif - -#if ARCH_ARM -#include "arm/loopfilter_arm.h" -#endif - -#ifndef vp8_lf_normal_mb_v -#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_c -#endif -extern prototype_loopfilter_block(vp8_lf_normal_mb_v); - -#ifndef vp8_lf_normal_b_v -#define vp8_lf_normal_b_v vp8_loop_filter_bv_c -#endif -extern prototype_loopfilter_block(vp8_lf_normal_b_v); - -#ifndef vp8_lf_normal_mb_h -#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_c -#endif -extern prototype_loopfilter_block(vp8_lf_normal_mb_h); - -#ifndef vp8_lf_normal_b_h -#define vp8_lf_normal_b_h vp8_loop_filter_bh_c -#endif -extern prototype_loopfilter_block(vp8_lf_normal_b_h); - -#ifndef vp8_lf_simple_mb_v -#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_c -#endif -extern prototype_simple_loopfilter(vp8_lf_simple_mb_v); - -#ifndef vp8_lf_simple_b_v -#define vp8_lf_simple_b_v vp8_loop_filter_bvs_c -#endif -extern prototype_simple_loopfilter(vp8_lf_simple_b_v); - -#ifndef vp8_lf_simple_mb_h -#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_c -#endif -extern prototype_simple_loopfilter(vp8_lf_simple_mb_h); - -#ifndef vp8_lf_simple_b_h -#define vp8_lf_simple_b_h vp8_loop_filter_bhs_c -#endif -extern prototype_simple_loopfilter(vp8_lf_simple_b_h); - -typedef prototype_loopfilter_block((*vp8_lf_block_fn_t)); -typedef prototype_simple_loopfilter((*vp8_slf_block_fn_t)); - -typedef struct -{ - vp8_lf_block_fn_t normal_mb_v; - vp8_lf_block_fn_t normal_b_v; - vp8_lf_block_fn_t normal_mb_h; - vp8_lf_block_fn_t normal_b_h; - vp8_slf_block_fn_t simple_mb_v; - vp8_slf_block_fn_t simple_b_v; - vp8_slf_block_fn_t simple_mb_h; - vp8_slf_block_fn_t simple_b_h; -} vp8_loopfilter_rtcd_vtable_t; - -#if CONFIG_RUNTIME_CPU_DETECT -#define LF_INVOKE(ctx,fn) (ctx)->fn -#else -#define LF_INVOKE(ctx,fn) vp8_lf_##fn -#endif - typedef void loop_filter_uvfunction ( unsigned char *u, /* source pointer */ diff --git a/vp8/common/loopfilter_filters.c b/vp8/common/loopfilter_filters.c index 1412797c2b..60a7ff262a 100644 --- a/vp8/common/loopfilter_filters.c +++ b/vp8/common/loopfilter_filters.c @@ -352,3 +352,79 @@ void vp8_loop_filter_simple_vertical_edge_c while (++i < 16); } + +/* Horizontal MB filtering */ +void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr, + unsigned char *v_ptr, int y_stride, int uv_stride, + loop_filter_info *lfi) +{ + vp8_mbloop_filter_horizontal_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); + + if (u_ptr) + vp8_mbloop_filter_horizontal_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); + + if (v_ptr) + vp8_mbloop_filter_horizontal_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); +} + +/* Vertical MB Filtering */ +void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr, + unsigned char *v_ptr, int y_stride, int uv_stride, + loop_filter_info *lfi) +{ + vp8_mbloop_filter_vertical_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 2); + + if (u_ptr) + vp8_mbloop_filter_vertical_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); + + if (v_ptr) + vp8_mbloop_filter_vertical_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim, lfi->hev_thr, 1); +} + +/* Horizontal B Filtering */ +void vp8_loop_filter_bh_c(unsigned char *y_ptr, unsigned char *u_ptr, + unsigned char *v_ptr, int y_stride, int uv_stride, + loop_filter_info *lfi) +{ + vp8_loop_filter_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + vp8_loop_filter_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + vp8_loop_filter_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + + if (u_ptr) + vp8_loop_filter_horizontal_edge_c(u_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); + + if (v_ptr) + vp8_loop_filter_horizontal_edge_c(v_ptr + 4 * uv_stride, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); +} + +void vp8_loop_filter_bhs_c(unsigned char *y_ptr, int y_stride, + const unsigned char *blimit) +{ + vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, blimit); + vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, blimit); + vp8_loop_filter_simple_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, blimit); +} + +/* Vertical B Filtering */ +void vp8_loop_filter_bv_c(unsigned char *y_ptr, unsigned char *u_ptr, + unsigned char *v_ptr, int y_stride, int uv_stride, + loop_filter_info *lfi) +{ + vp8_loop_filter_vertical_edge_c(y_ptr + 4, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + vp8_loop_filter_vertical_edge_c(y_ptr + 8, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + vp8_loop_filter_vertical_edge_c(y_ptr + 12, y_stride, lfi->blim, lfi->lim, lfi->hev_thr, 2); + + if (u_ptr) + vp8_loop_filter_vertical_edge_c(u_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); + + if (v_ptr) + vp8_loop_filter_vertical_edge_c(v_ptr + 4, uv_stride, lfi->blim, lfi->lim, lfi->hev_thr, 1); +} + +void vp8_loop_filter_bvs_c(unsigned char *y_ptr, int y_stride, + const unsigned char *blimit) +{ + vp8_loop_filter_simple_vertical_edge_c(y_ptr + 4, y_stride, blimit); + vp8_loop_filter_simple_vertical_edge_c(y_ptr + 8, y_stride, blimit); + vp8_loop_filter_simple_vertical_edge_c(y_ptr + 12, y_stride, blimit); +} diff --git a/vp8/common/onyxc_int.h b/vp8/common/onyxc_int.h index 63022f5e49..b4875d83a7 100644 --- a/vp8/common/onyxc_int.h +++ b/vp8/common/onyxc_int.h @@ -76,7 +76,6 @@ typedef struct VP8_COMMON_RTCD vp8_idct_rtcd_vtable_t idct; vp8_recon_rtcd_vtable_t recon; vp8_subpix_rtcd_vtable_t subpix; - vp8_loopfilter_rtcd_vtable_t loopfilter; #if CONFIG_POSTPROC vp8_postproc_rtcd_vtable_t postproc; #endif diff --git a/vp8/common/rtcd_defs.sh b/vp8/common/rtcd_defs.sh index 0fb40f731d..44218d4487 100644 --- a/vp8/common/rtcd_defs.sh +++ b/vp8/common/rtcd_defs.sh @@ -1,10 +1,14 @@ common_forward_decls() { cat <<EOF struct blockd; +struct loop_filter_info; EOF } forward_decls common_forward_decls +# +# Dequant +# prototype void vp8_dequantize_b "struct blockd*, short *dqc" specialize vp8_dequantize_b mmx media neon vp8_dequantize_b_media=vp8_dequantize_b_v6 @@ -20,3 +24,55 @@ vp8_dequant_idct_add_y_block_media=vp8_dequant_idct_add_y_block_v6 prototype void vp8_dequant_idct_add_uv_block "short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs" specialize vp8_dequant_idct_add_uv_block mmx sse2 media neon vp8_dequant_idct_add_uv_block_media=vp8_dequant_idct_add_uv_block_v6 + +# +# Loopfilter +# +prototype void vp8_loop_filter_mbv "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi" +specialize vp8_loop_filter_mbv mmx sse2 media neon +vp8_loop_filter_mbv_media=vp8_loop_filter_mbv_armv6 + +prototype void vp8_loop_filter_bv "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi" +specialize vp8_loop_filter_bv mmx sse2 media neon +vp8_loop_filter_bv_media=vp8_loop_filter_bv_armv6 + +prototype void vp8_loop_filter_mbh "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi" +specialize vp8_loop_filter_mbh mmx sse2 media neon +vp8_loop_filter_mbh_media=vp8_loop_filter_mbh_armv6 + +prototype void vp8_loop_filter_bh "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi" +specialize vp8_loop_filter_bh mmx sse2 media neon +vp8_loop_filter_bh_media=vp8_loop_filter_bh_armv6 + + +prototype void vp8_loop_filter_simple_mbv "unsigned char *y, int ystride, const unsigned char *blimit" +specialize vp8_loop_filter_simple_mbv mmx sse2 media neon +vp8_loop_filter_simple_mbv_c=vp8_loop_filter_simple_vertical_edge_c +vp8_loop_filter_simple_mbv_mmx=vp8_loop_filter_simple_vertical_edge_mmx +vp8_loop_filter_simple_mbv_sse2=vp8_loop_filter_simple_vertical_edge_sse2 +vp8_loop_filter_simple_mbv_media=vp8_loop_filter_simple_vertical_edge_armv6 +vp8_loop_filter_simple_mbv_neon=vp8_loop_filter_mbvs_neon + +prototype void vp8_loop_filter_simple_mbh "unsigned char *y, int ystride, const unsigned char *blimit" +specialize vp8_loop_filter_simple_mbh mmx sse2 media neon +vp8_loop_filter_simple_mbh_c=vp8_loop_filter_simple_horizontal_edge_c +vp8_loop_filter_simple_mbh_mmx=vp8_loop_filter_simple_horizontal_edge_mmx +vp8_loop_filter_simple_mbh_sse2=vp8_loop_filter_simple_horizontal_edge_sse2 +vp8_loop_filter_simple_mbh_media=vp8_loop_filter_simple_horizontal_edge_armv6 +vp8_loop_filter_simple_mbh_neon=vp8_loop_filter_mbhs_neon + +prototype void vp8_loop_filter_simple_bv "unsigned char *y, int ystride, const unsigned char *blimit" +specialize vp8_loop_filter_simple_bv mmx sse2 media neon +vp8_loop_filter_simple_bv_c=vp8_loop_filter_bvs_c +vp8_loop_filter_simple_bv_mmx=vp8_loop_filter_bvs_mmx +vp8_loop_filter_simple_bv_sse2=vp8_loop_filter_bvs_sse2 +vp8_loop_filter_simple_bv_media=vp8_loop_filter_bvs_armv6 +vp8_loop_filter_simple_bv_neon=vp8_loop_filter_bvs_neon + +prototype void vp8_loop_filter_simple_bh "unsigned char *y, int ystride, const unsigned char *blimit" +specialize vp8_loop_filter_simple_bh mmx sse2 media neon +vp8_loop_filter_simple_bh_c=vp8_loop_filter_bhs_c +vp8_loop_filter_simple_bh_mmx=vp8_loop_filter_bhs_mmx +vp8_loop_filter_simple_bh_sse2=vp8_loop_filter_bhs_sse2 +vp8_loop_filter_simple_bh_media=vp8_loop_filter_bhs_armv6 +vp8_loop_filter_simple_bh_neon=vp8_loop_filter_bhs_neon diff --git a/vp8/common/x86/loopfilter_x86.c b/vp8/common/x86/loopfilter_x86.c index 6d0a07ae4d..066df43527 100644 --- a/vp8/common/x86/loopfilter_x86.c +++ b/vp8/common/x86/loopfilter_x86.c @@ -12,10 +12,19 @@ #include "vpx_config.h" #include "vp8/common/loopfilter.h" +#define prototype_loopfilter(sym) \ + void sym(unsigned char *src, int pitch, const unsigned char *blimit,\ + const unsigned char *limit, const unsigned char *thresh, int count) + +#define prototype_simple_loopfilter(sym) \ + void sym(unsigned char *y, int ystride, const unsigned char *blimit) + prototype_loopfilter(vp8_mbloop_filter_vertical_edge_mmx); prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_mmx); prototype_loopfilter(vp8_loop_filter_vertical_edge_mmx); prototype_loopfilter(vp8_loop_filter_horizontal_edge_mmx); +prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_mmx); +prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_mmx); #if HAVE_SSE2 && ARCH_X86_64 prototype_loopfilter(vp8_loop_filter_bv_y_sse2); diff --git a/vp8/common/x86/loopfilter_x86.h b/vp8/common/x86/loopfilter_x86.h deleted file mode 100644 index 1ed6c213f2..0000000000 --- a/vp8/common/x86/loopfilter_x86.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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. - */ - - -#ifndef LOOPFILTER_X86_H -#define LOOPFILTER_X86_H - -/* Note: - * - * This platform is commonly built for runtime CPU detection. If you modify - * any of the function mappings present in this file, be sure to also update - * them in the function pointer initialization code - */ - -#if HAVE_MMX -extern prototype_loopfilter_block(vp8_loop_filter_mbv_mmx); -extern prototype_loopfilter_block(vp8_loop_filter_bv_mmx); -extern prototype_loopfilter_block(vp8_loop_filter_mbh_mmx); -extern prototype_loopfilter_block(vp8_loop_filter_bh_mmx); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_mmx); -extern prototype_simple_loopfilter(vp8_loop_filter_bvs_mmx); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_mmx); -extern prototype_simple_loopfilter(vp8_loop_filter_bhs_mmx); - - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_lf_normal_mb_v -#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_mmx - -#undef vp8_lf_normal_b_v -#define vp8_lf_normal_b_v vp8_loop_filter_bv_mmx - -#undef vp8_lf_normal_mb_h -#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_mmx - -#undef vp8_lf_normal_b_h -#define vp8_lf_normal_b_h vp8_loop_filter_bh_mmx - -#undef vp8_lf_simple_mb_v -#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_mmx - -#undef vp8_lf_simple_b_v -#define vp8_lf_simple_b_v vp8_loop_filter_bvs_mmx - -#undef vp8_lf_simple_mb_h -#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_mmx - -#undef vp8_lf_simple_b_h -#define vp8_lf_simple_b_h vp8_loop_filter_bhs_mmx -#endif -#endif - - -#if HAVE_SSE2 -extern prototype_loopfilter_block(vp8_loop_filter_mbv_sse2); -extern prototype_loopfilter_block(vp8_loop_filter_bv_sse2); -extern prototype_loopfilter_block(vp8_loop_filter_mbh_sse2); -extern prototype_loopfilter_block(vp8_loop_filter_bh_sse2); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_vertical_edge_sse2); -extern prototype_simple_loopfilter(vp8_loop_filter_bvs_sse2); -extern prototype_simple_loopfilter(vp8_loop_filter_simple_horizontal_edge_sse2); -extern prototype_simple_loopfilter(vp8_loop_filter_bhs_sse2); - - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_lf_normal_mb_v -#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_sse2 - -#undef vp8_lf_normal_b_v -#define vp8_lf_normal_b_v vp8_loop_filter_bv_sse2 - -#undef vp8_lf_normal_mb_h -#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_sse2 - -#undef vp8_lf_normal_b_h -#define vp8_lf_normal_b_h vp8_loop_filter_bh_sse2 - -#undef vp8_lf_simple_mb_v -#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_sse2 - -#undef vp8_lf_simple_b_v -#define vp8_lf_simple_b_v vp8_loop_filter_bvs_sse2 - -#undef vp8_lf_simple_mb_h -#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_sse2 - -#undef vp8_lf_simple_b_h -#define vp8_lf_simple_b_h vp8_loop_filter_bhs_sse2 -#endif -#endif - - -#endif diff --git a/vp8/common/x86/x86_systemdependent.c b/vp8/common/x86/x86_systemdependent.c index 1aab1b80fa..d780bba45e 100644 --- a/vp8/common/x86/x86_systemdependent.c +++ b/vp8/common/x86/x86_systemdependent.c @@ -53,15 +53,6 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) rtcd->subpix.bilinear8x4 = vp8_bilinear_predict8x4_mmx; rtcd->subpix.bilinear4x4 = vp8_bilinear_predict4x4_mmx; - rtcd->loopfilter.normal_mb_v = vp8_loop_filter_mbv_mmx; - rtcd->loopfilter.normal_b_v = vp8_loop_filter_bv_mmx; - rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_mmx; - rtcd->loopfilter.normal_b_h = vp8_loop_filter_bh_mmx; - rtcd->loopfilter.simple_mb_v = vp8_loop_filter_simple_vertical_edge_mmx; - rtcd->loopfilter.simple_b_v = vp8_loop_filter_bvs_mmx; - rtcd->loopfilter.simple_mb_h = vp8_loop_filter_simple_horizontal_edge_mmx; - rtcd->loopfilter.simple_b_h = vp8_loop_filter_bhs_mmx; - #if CONFIG_POSTPROC rtcd->postproc.down = vp8_mbpost_proc_down_mmx; /*rtcd->postproc.across = vp8_mbpost_proc_across_ip_c;*/ @@ -93,15 +84,6 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) rtcd->subpix.bilinear16x16 = vp8_bilinear_predict16x16_sse2; rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_sse2; - rtcd->loopfilter.normal_mb_v = vp8_loop_filter_mbv_sse2; - rtcd->loopfilter.normal_b_v = vp8_loop_filter_bv_sse2; - rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_sse2; - rtcd->loopfilter.normal_b_h = vp8_loop_filter_bh_sse2; - rtcd->loopfilter.simple_mb_v = vp8_loop_filter_simple_vertical_edge_sse2; - rtcd->loopfilter.simple_b_v = vp8_loop_filter_bvs_sse2; - rtcd->loopfilter.simple_mb_h = vp8_loop_filter_simple_horizontal_edge_sse2; - rtcd->loopfilter.simple_b_h = vp8_loop_filter_bhs_sse2; - #if CONFIG_POSTPROC rtcd->postproc.down = vp8_mbpost_proc_down_xmm; rtcd->postproc.across = vp8_mbpost_proc_across_ip_xmm; diff --git a/vp8/decoder/threading.c b/vp8/decoder/threading.c index 23c5da4e02..b1932512ad 100644 --- a/vp8/decoder/threading.c +++ b/vp8/decoder/threading.c @@ -442,39 +442,39 @@ static THREAD_FUNCTION thread_decoding_proc(void *p_data) lfi.hev_thr = lfi_n->hev_thr[hev_index]; if (mb_col > 0) - LF_INVOKE(&pc->rtcd.loopfilter, normal_mb_v) + vp8_loop_filter_mbv (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, normal_b_v) + vp8_loop_filter_bv (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&pc->rtcd.loopfilter, normal_mb_h) + vp8_loop_filter_mbh (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, normal_b_h) + vp8_loop_filter_bh (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); } else { if (mb_col > 0) - LF_INVOKE(&pc->rtcd.loopfilter, simple_mb_v) + vp8_loop_filter_simple_mbv (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, simple_b_v) + vp8_loop_filter_simple_bv (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&pc->rtcd.loopfilter, simple_mb_h) + vp8_loop_filter_simple_mbh (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, simple_b_h) + vp8_loop_filter_simple_bh (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]); } } @@ -940,39 +940,39 @@ void vp8mt_decode_mb_rows( VP8D_COMP *pbi, MACROBLOCKD *xd) lfi.hev_thr = lfi_n->hev_thr[hev_index]; if (mb_col > 0) - LF_INVOKE(&pc->rtcd.loopfilter, normal_mb_v) + vp8_loop_filter_mbv (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, normal_b_v) + vp8_loop_filter_bv (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&pc->rtcd.loopfilter, normal_mb_h) + vp8_loop_filter_mbh (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, normal_b_h) + vp8_loop_filter_bh (xd->dst.y_buffer, xd->dst.u_buffer, xd->dst.v_buffer, recon_y_stride, recon_uv_stride, &lfi); } else { if (mb_col > 0) - LF_INVOKE(&pc->rtcd.loopfilter, simple_mb_v) + vp8_loop_filter_simple_mbv (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, simple_b_v) + vp8_loop_filter_simple_bv (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]); /* don't apply across umv border */ if (mb_row > 0) - LF_INVOKE(&pc->rtcd.loopfilter, simple_mb_h) + vp8_loop_filter_simple_mbh (xd->dst.y_buffer, recon_y_stride, lfi_n->mblim[filter_level]); if (!skip_lf) - LF_INVOKE(&pc->rtcd.loopfilter, simple_b_h) + vp8_loop_filter_simple_bh (xd->dst.y_buffer, recon_y_stride, lfi_n->blim[filter_level]); } } diff --git a/vp8/vp8_common.mk b/vp8/vp8_common.mk index b0f45f2b04..4d4d0f3845 100644 --- a/vp8/vp8_common.mk +++ b/vp8/vp8_common.mk @@ -80,7 +80,6 @@ VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/filter_x86.h VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/idct_x86.h VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/subpixel_x86.h VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/recon_x86.h -VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/loopfilter_x86.h VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/postproc_x86.h VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/x86_systemdependent.c VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/vp8_asm_stubs.c @@ -115,7 +114,6 @@ VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/arm_systemdependent.c VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/filter_arm.c VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/idct_arm.h VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/loopfilter_arm.c -VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/loopfilter_arm.h VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/recon_arm.h VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/reconintra_arm.c VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/subpixel_arm.h -- GitLab