diff options
Diffstat (limited to 'vp8/common')
-rw-r--r-- | vp8/common/generic/systemdependent.c | 52 | ||||
-rw-r--r-- | vp8/common/onyxc_int.h | 2 | ||||
-rw-r--r-- | vp8/common/recon.c | 59 | ||||
-rw-r--r-- | vp8/common/recon.h | 268 | ||||
-rw-r--r-- | vp8/common/reconinter.c | 28 | ||||
-rw-r--r-- | vp8/common/reconinter.h | 2 | ||||
-rw-r--r-- | vp8/common/reconintra.c | 8 | ||||
-rw-r--r-- | vp8/common/reconintra4x4.c | 9 | ||||
-rw-r--r-- | vp8/common/rtcd_defs.sh | 96 | ||||
-rw-r--r-- | vp8/common/x86/recon_wrapper_sse2.c | 3 | ||||
-rw-r--r-- | vp8/common/x86/recon_x86.h | 81 | ||||
-rw-r--r-- | vp8/common/x86/x86_systemdependent.c | 13 |
12 files changed, 119 insertions, 502 deletions
diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c index 0e5e7da33..363ad098a 100644 --- a/vp8/common/generic/systemdependent.c +++ b/vp8/common/generic/systemdependent.c @@ -14,7 +14,6 @@ #include "vp8/common/g_common.h" #include "vp8/common/subpixel.h" #include "vp8/common/loopfilter.h" -#include "vp8/common/recon.h" #include "vp8/common/idct.h" #include "vp8/common/onyxc_int.h" @@ -34,57 +33,6 @@ void vp8_machine_specific_config(VP8_COMMON *ctx) { rtcd->idct.idct1_scalar_add_8x8 = vp8_dc_only_idct_add_8x8_c; rtcd->idct.ihaar2 = vp8_short_ihaar2x2_c; rtcd->idct.idct16x16 = vp8_short_idct16x16_c; - rtcd->recon.copy16x16 = vp8_copy_mem16x16_c; - rtcd->recon.copy8x8 = vp8_copy_mem8x8_c; - rtcd->recon.avg16x16 = vp8_avg_mem16x16_c; - rtcd->recon.avg8x8 = vp8_avg_mem8x8_c; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_c; - rtcd->recon.recon = vp8_recon_b_c; - rtcd->recon.recon_uv = vp8_recon_uv_b_c; - rtcd->recon.recon2 = vp8_recon2b_c; - rtcd->recon.recon4 = vp8_recon4b_c; - rtcd->recon.recon_mb = vp8_recon_mb_c; - rtcd->recon.recon_mby = vp8_recon_mby_c; -#if CONFIG_SUPERBLOCKS - rtcd->recon.build_intra_predictors_sby_s = - vp8_build_intra_predictors_sby_s; - rtcd->recon.build_intra_predictors_sbuv_s = - vp8_build_intra_predictors_sbuv_s; -#endif - rtcd->recon.build_intra_predictors_mby = - vp8_build_intra_predictors_mby; -#if CONFIG_COMP_INTRA_PRED - rtcd->recon.build_comp_intra_predictors_mby = - vp8_build_comp_intra_predictors_mby; -#endif - rtcd->recon.build_intra_predictors_mby_s = - vp8_build_intra_predictors_mby_s; - rtcd->recon.build_intra_predictors_mbuv = - vp8_build_intra_predictors_mbuv; - rtcd->recon.build_intra_predictors_mbuv_s = - vp8_build_intra_predictors_mbuv_s; -#if CONFIG_COMP_INTRA_PRED - rtcd->recon.build_comp_intra_predictors_mbuv = - vp8_build_comp_intra_predictors_mbuv; -#endif - rtcd->recon.intra4x4_predict = - vp8_intra4x4_predict; -#if CONFIG_COMP_INTRA_PRED - rtcd->recon.comp_intra4x4_predict = - vp8_comp_intra4x4_predict; -#endif - rtcd->recon.intra8x8_predict = - vp8_intra8x8_predict; -#if CONFIG_COMP_INTRA_PRED - rtcd->recon.comp_intra8x8_predict = - vp8_comp_intra8x8_predict; -#endif - rtcd->recon.intra_uv4x4_predict = - vp8_intra_uv4x4_predict; -#if CONFIG_COMP_INTRA_PRED - rtcd->recon.comp_intra_uv4x4_predict = - vp8_comp_intra_uv4x4_predict; -#endif rtcd->subpix.eighttap16x16 = vp8_eighttap_predict16x16_c; rtcd->subpix.eighttap8x8 = vp8_eighttap_predict8x8_c; diff --git a/vp8/common/onyxc_int.h b/vp8/common/onyxc_int.h index 31dd6c15c..e99f69bdc 100644 --- a/vp8/common/onyxc_int.h +++ b/vp8/common/onyxc_int.h @@ -20,7 +20,6 @@ #include "entropy.h" #include "entropymode.h" #include "idct.h" -#include "recon.h" #if CONFIG_POSTPROC #include "postproc.h" #endif @@ -171,7 +170,6 @@ typedef enum { typedef struct VP8_COMMON_RTCD { #if CONFIG_RUNTIME_CPU_DETECT 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 diff --git a/vp8/common/recon.c b/vp8/common/recon.c index cf2d2fb85..ce35e4b12 100644 --- a/vp8/common/recon.c +++ b/vp8/common/recon.c @@ -10,7 +10,7 @@ #include "vpx_ports/config.h" -#include "recon.h" +#include "vpx_rtcd.h" #include "blockd.h" void vp8_recon_b_c @@ -125,7 +125,7 @@ void vp8_recon2b_c } #if CONFIG_SUPERBLOCKS -void vp8_recon_mby_s_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd, uint8_t *dst) { +void vp8_recon_mby_s_c(MACROBLOCKD *xd, uint8_t *dst) { int x, y; BLOCKD *b = &xd->block[0]; int stride = b->dst_stride; @@ -145,7 +145,7 @@ void vp8_recon_mby_s_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd, uin } } -void vp8_recon_mbuv_s_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) { +void vp8_recon_mbuv_s_c(MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) { int x, y, i; uint8_t *dst = udst; @@ -170,71 +170,28 @@ void vp8_recon_mbuv_s_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd, ui } #endif -void vp8_recon_mby_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd) { -#if ARCH_ARM - BLOCKD *b = &xd->block[0]; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - - /*b = &xd->block[4];*/ - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - - /*b = &xd->block[8];*/ - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - - /*b = &xd->block[12];*/ - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); -#else +void vp8_recon_mby_c(MACROBLOCKD *xd) { int i; for (i = 0; i < 16; i += 4) { BLOCKD *b = &xd->block[i]; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); + vp8_recon4b(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); } -#endif } -void vp8_recon_mb_c(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *xd) { -#if ARCH_ARM - BLOCKD *b = &xd->block[0]; - - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b += 4; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b += 4; - - /*b = &xd->block[16];*/ - - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b++; - b++; - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b++; - b++; - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); - b++; - b++; - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); -#else +void vp8_recon_mb_c(MACROBLOCKD *xd) { int i; for (i = 0; i < 16; i += 4) { BLOCKD *b = &xd->block[i]; - RECON_INVOKE(rtcd, recon4)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); + vp8_recon4b(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); } for (i = 16; i < 24; i += 2) { BLOCKD *b = &xd->block[i]; - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); + vp8_recon2b(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); } -#endif } diff --git a/vp8/common/recon.h b/vp8/common/recon.h deleted file mode 100644 index 54d133b85..000000000 --- a/vp8/common/recon.h +++ /dev/null @@ -1,268 +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 __INC_RECON_H -#define __INC_RECON_H - -#include "blockd.h" - -#define prototype_copy_block(sym) \ - void sym(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch) - -#define prototype_recon_block(sym) \ - void sym(unsigned char *pred, short *diff, unsigned char *dst, int pitch) - -#define prototype_recon_macroblock(sym) \ - void sym(const struct vp8_recon_rtcd_vtable *rtcd, MACROBLOCKD *xd) - -#define prototype_build_intra_predictors(sym) \ - void sym(MACROBLOCKD *xd) - -#define prototype_intra4x4_predict(sym) \ - void sym(BLOCKD *x, int b_mode, unsigned char *predictor) - -#if CONFIG_COMP_INTRA_PRED -#define prototype_comp_intra4x4_predict(sym) \ - void sym(BLOCKD *x, int b_mode, int mode2, unsigned char *predictor) -#endif - -struct vp8_recon_rtcd_vtable; - -#if ARCH_X86 || ARCH_X86_64 -#include "x86/recon_x86.h" -#endif - -#if ARCH_ARM -#include "arm/recon_arm.h" -#endif - -#ifndef vp8_recon_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_c -#endif -extern prototype_copy_block(vp8_recon_copy8x8); - -#ifndef vp8_recon_avg16x16 -#define vp8_recon_avg16x16 vp8_avg_mem16x16_c -#endif -extern prototype_copy_block(vp8_recon_avg16x16); - -#ifndef vp8_recon_avg8x8 -#define vp8_recon_avg8x8 vp8_avg_mem8x8_c -#endif -extern prototype_copy_block(vp8_recon_avg8x8); - -#ifndef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_c -#endif -extern prototype_copy_block(vp8_recon_copy8x4); - -#ifndef vp8_recon_recon -#define vp8_recon_recon vp8_recon_b_c -#endif -extern prototype_recon_block(vp8_recon_recon); - -#ifndef vp8_recon_recon_uv -#define vp8_recon_recon_uv vp8_recon_uv_b_c -#endif -extern prototype_recon_block(vp8_recon_recon_uv); - -extern prototype_recon_block(vp8_recon_recon); -#ifndef vp8_recon_recon2 -#define vp8_recon_recon2 vp8_recon2b_c -#endif -extern prototype_recon_block(vp8_recon_recon2); - -#ifndef vp8_recon_recon4 -#define vp8_recon_recon4 vp8_recon4b_c -#endif -extern prototype_recon_block(vp8_recon_recon4); - -#ifndef vp8_recon_recon_mb -#define vp8_recon_recon_mb vp8_recon_mb_c -#endif -extern prototype_recon_macroblock(vp8_recon_recon_mb); - -#ifndef vp8_recon_recon_mby -#define vp8_recon_recon_mby vp8_recon_mby_c -#endif -extern prototype_recon_macroblock(vp8_recon_recon_mby); - -#ifndef vp8_recon_build_intra_predictors_sby_s -#define vp8_recon_build_intra_predictors_sby_s vp8_build_intra_predictors_sby_s -#endif -extern prototype_build_intra_predictors(vp8_recon_build_intra_predictors_sby_s); - -#ifndef vp8_recon_build_intra_predictors_mby -#define vp8_recon_build_intra_predictors_mby vp8_build_intra_predictors_mby -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra_predictors_mby); - -#if CONFIG_COMP_INTRA_PRED -#ifndef vp8_recon_build_comp_intra_predictors_mby -#define vp8_recon_build_comp_intra_predictors_mby vp8_build_comp_intra_predictors_mby -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_comp_intra_predictors_mby); -#endif - -#ifndef vp8_recon_build_intra8x8_predictors_mby -#define vp8_recon_build_intra8x8_predictors_mby vp8_build_intra8x8_predictors_mby -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra8x8_predictors_mby); - -#ifndef vp8_recon_build_intra_predictors_mby_s -#define vp8_recon_build_intra_predictors_mby_s vp8_build_intra_predictors_mby_s -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra_predictors_mby_s); - -#ifndef vp8_recon_build_intra_predictors_sbuv_s -#define vp8_recon_build_intra_predictors_sbuv_s vp8_build_intra_predictors_sbuv_s -#endif -extern prototype_build_intra_predictors(vp8_recon_build_intra_predictors_sbuv_s); - -#ifndef vp8_recon_build_intra_predictors_mbuv -#define vp8_recon_build_intra_predictors_mbuv vp8_build_intra_predictors_mbuv -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra_predictors_mbuv); - -#ifndef vp8_recon_build_intra8x8_predictors_mbuv -#define vp8_recon_build_intra8x8_predictors_mbuv vp8_build_intra8x8_predictors_mbuv -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra8x8_predictors_mbuv); - -#ifndef vp8_recon_build_intra_predictors_mbuv_s -#define vp8_recon_build_intra_predictors_mbuv_s vp8_build_intra_predictors_mbuv_s -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_intra_predictors_mbuv_s); - -#if CONFIG_COMP_INTRA_PRED -#ifndef vp8_recon_build_comp_intra_predictors_mbuv -#define vp8_recon_build_comp_intra_predictors_mbuv vp8_build_comp_intra_predictors_mbuv -#endif -extern prototype_build_intra_predictors\ -(vp8_recon_build_comp_intra_predictors_mbuv); -#endif - -#ifndef vp8_recon_intra4x4_predict -#define vp8_recon_intra4x4_predict vp8_intra4x4_predict -#endif -extern prototype_intra4x4_predict\ -(vp8_recon_intra4x4_predict); - -#if CONFIG_COMP_INTRA_PRED -#ifndef vp8_recon_comp_intra4x4_predict -#define vp8_recon_comp_intra4x4_predict vp8_comp_intra4x4_predict -#endif -extern prototype_comp_intra4x4_predict\ -(vp8_recon_comp_intra4x4_predict); -#endif - -#ifndef vp8_recon_intra8x8_predict -#define vp8_recon_intra8x8_predict vp8_intra8x8_predict -#endif -extern prototype_intra4x4_predict\ -(vp8_recon_intra8x8_predict); - -#if CONFIG_COMP_INTRA_PRED -#ifndef vp8_recon_comp_intra8x8_predict -#define vp8_recon_comp_intra8x8_predict vp8_comp_intra8x8_predict -#endif -extern prototype_comp_intra4x4_predict\ -(vp8_recon_comp_intra8x8_predict); -#endif - -#ifndef vp8_recon_intra_uv4x4_predict -#define vp8_recon_intra_uv4x4_predict vp8_intra_uv4x4_predict -#endif -extern prototype_intra4x4_predict\ -(vp8_recon_intra_uv4x4_predict); - -#if CONFIG_COMP_INTRA_PRED -#ifndef vp8_recon_comp_intra_uv4x4_predict -#define vp8_recon_comp_intra_uv4x4_predict vp8_comp_intra_uv4x4_predict -#endif -extern prototype_comp_intra4x4_predict\ -(vp8_recon_comp_intra_uv4x4_predict); -#endif - -typedef prototype_copy_block((*vp8_copy_block_fn_t)); -typedef prototype_recon_block((*vp8_recon_fn_t)); -typedef prototype_recon_macroblock((*vp8_recon_mb_fn_t)); -typedef prototype_build_intra_predictors((*vp8_build_intra_pred_fn_t)); -typedef prototype_intra4x4_predict((*vp8_intra4x4_pred_fn_t)); -#if CONFIG_COMP_INTRA_PRED -typedef prototype_comp_intra4x4_predict((*vp8_comp_intra4x4_pred_fn_t)); -#endif -typedef struct vp8_recon_rtcd_vtable { - vp8_copy_block_fn_t copy16x16; - vp8_copy_block_fn_t copy8x8; - vp8_copy_block_fn_t avg16x16; - vp8_copy_block_fn_t avg8x8; - vp8_copy_block_fn_t copy8x4; - vp8_recon_fn_t recon; - vp8_recon_fn_t recon_uv; - vp8_recon_fn_t recon2; - vp8_recon_fn_t recon4; - vp8_recon_mb_fn_t recon_mb; - vp8_recon_mb_fn_t recon_mby; -#if CONFIG_SUPERBLOCKS - vp8_build_intra_pred_fn_t build_intra_predictors_sby_s; -#endif - vp8_build_intra_pred_fn_t build_intra_predictors_mby_s; - vp8_build_intra_pred_fn_t build_intra_predictors_mby; -#if CONFIG_COMP_INTRA_PRED - vp8_build_intra_pred_fn_t build_comp_intra_predictors_mby; -#endif -#if CONFIG_SUPERBLOCKS - vp8_build_intra_pred_fn_t build_intra_predictors_sbuv_s; -#endif - vp8_build_intra_pred_fn_t build_intra_predictors_mbuv_s; - vp8_build_intra_pred_fn_t build_intra_predictors_mbuv; -#if CONFIG_COMP_INTRA_PRED - vp8_build_intra_pred_fn_t build_comp_intra_predictors_mbuv; -#endif - vp8_intra4x4_pred_fn_t intra4x4_predict; -#if CONFIG_COMP_INTRA_PRED - vp8_comp_intra4x4_pred_fn_t comp_intra4x4_predict; -#endif - vp8_intra4x4_pred_fn_t intra8x8_predict; -#if CONFIG_COMP_INTRA_PRED - vp8_comp_intra4x4_pred_fn_t comp_intra8x8_predict; -#endif - vp8_intra4x4_pred_fn_t intra_uv4x4_predict; -#if CONFIG_COMP_INTRA_PRED - vp8_comp_intra4x4_pred_fn_t comp_intra_uv4x4_predict; -#endif -} vp8_recon_rtcd_vtable_t; - -#if CONFIG_RUNTIME_CPU_DETECT -#define RECON_INVOKE(ctx,fn) (ctx)->fn -#else -#define RECON_INVOKE(ctx,fn) vp8_recon_##fn -#endif - -void vp8_recon_intra_mbuv(const vp8_recon_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); - -#if CONFIG_SUPERBLOCKS -extern void vp8_recon_mby_s_c(const vp8_recon_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd, uint8_t *dst); -extern void vp8_recon_mbuv_s_c(const vp8_recon_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst); -#endif - -#endif diff --git a/vp8/common/reconinter.c b/vp8/common/reconinter.c index 5b50b0335..1c4cdb386 100644 --- a/vp8/common/reconinter.c +++ b/vp8/common/reconinter.c @@ -11,7 +11,6 @@ #include "vpx_ports/config.h" #include "vpx/vpx_integer.h" -#include "recon.h" #include "subpixel.h" #include "blockd.h" #include "reconinter.h" @@ -310,8 +309,7 @@ static void build_inter_predictors4b(MACROBLOCKD *xd, BLOCKD *d, int pitch) { xd->subpixel_predict8x8(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); } else { - RECON_INVOKE(&xd->rtcd->recon, copy8x8) - (ptr, d->pre_stride, pred_ptr, pitch); + vp8_copy_mem8x8(ptr, d->pre_stride, pred_ptr, pitch); } } @@ -337,8 +335,7 @@ static void build_2nd_inter_predictors4b(MACROBLOCKD *xd, xd->subpixel_predict_avg8x8(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); } else { - RECON_INVOKE(&xd->rtcd->recon, avg8x8) - (ptr, d->pre_stride, pred_ptr, pitch); + vp8_avg_mem8x8(ptr, d->pre_stride, pred_ptr, pitch); } } @@ -357,7 +354,7 @@ static void build_inter_predictors2b(MACROBLOCKD *xd, BLOCKD *d, int pitch) { xd->subpixel_predict8x4(ptr, d->pre_stride, (mv.as_mv.col & 7) << 1, (mv.as_mv.row & 7) << 1, pred_ptr, pitch); } else { - RECON_INVOKE(&xd->rtcd->recon, copy8x4)(ptr, d->pre_stride, pred_ptr, pitch); + vp8_copy_mem8x4(ptr, d->pre_stride, pred_ptr, pitch); } } @@ -741,10 +738,8 @@ void vp8_build_1st_inter16x16_predictors_mbuv(MACROBLOCKD *xd, xd->subpixel_predict8x8(vptr, pre_stride, _o16x16mv.as_mv.col & 15, _o16x16mv.as_mv.row & 15, dst_v, dst_uvstride); } else { - RECON_INVOKE(&xd->rtcd->recon, copy8x8) - (uptr, pre_stride, dst_u, dst_uvstride); - RECON_INVOKE(&xd->rtcd->recon, copy8x8) - (vptr, pre_stride, dst_v, dst_uvstride); + vp8_copy_mem8x8(uptr, pre_stride, dst_u, dst_uvstride); + vp8_copy_mem8x8(vptr, pre_stride, dst_v, dst_uvstride); } } @@ -863,8 +858,7 @@ void vp8_build_2nd_inter16x16_predictors_mby(MACROBLOCKD *xd, } else { // TODO Needs to AVERAGE with the dst_y // For now, do not apply the prediction filter in these cases! - RECON_INVOKE(&xd->rtcd->recon, avg16x16)(ptr, pre_stride, dst_y, - dst_ystride); + vp8_avg_mem16x16(ptr, pre_stride, dst_y, dst_ystride); } } else #endif // CONFIG_PRED_FILTER @@ -873,8 +867,7 @@ void vp8_build_2nd_inter16x16_predictors_mby(MACROBLOCKD *xd, xd->subpixel_predict_avg16x16(ptr, pre_stride, (mv_col & 7) << 1, (mv_row & 7) << 1, dst_y, dst_ystride); } else { - RECON_INVOKE(&xd->rtcd->recon, avg16x16)(ptr, pre_stride, dst_y, - dst_ystride); + vp8_avg_mem16x16(ptr, pre_stride, dst_y, dst_ystride); } } } @@ -937,8 +930,7 @@ void vp8_build_2nd_inter16x16_predictors_mbuv(MACROBLOCKD *xd, } else { // TODO Needs to AVERAGE with the dst_[u|v] // For now, do not apply the prediction filter here! - RECON_INVOKE(&xd->rtcd->recon, avg8x8)(pSrc, pre_stride, pDst, - dst_uvstride); + vp8_avg_mem8x8(pSrc, pre_stride, pDst, dst_uvstride); } // V @@ -953,8 +945,8 @@ void vp8_build_2nd_inter16x16_predictors_mbuv(MACROBLOCKD *xd, xd->subpixel_predict_avg8x8(vptr, pre_stride, omv_col & 15, omv_row & 15, dst_v, dst_uvstride); } else { - RECON_INVOKE(&xd->rtcd->recon, avg8x8)(uptr, pre_stride, dst_u, dst_uvstride); - RECON_INVOKE(&xd->rtcd->recon, avg8x8)(vptr, pre_stride, dst_v, dst_uvstride); + vp8_avg_mem8x8(uptr, pre_stride, dst_u, dst_uvstride); + vp8_avg_mem8x8(vptr, pre_stride, dst_v, dst_uvstride); } } diff --git a/vp8/common/reconinter.h b/vp8/common/reconinter.h index 37e34b5e1..55044e5aa 100644 --- a/vp8/common/reconinter.h +++ b/vp8/common/reconinter.h @@ -12,9 +12,7 @@ #ifndef __INC_RECONINTER_H #define __INC_RECONINTER_H -#if CONFIG_RUNTIME_CPU_DETECT #include "onyxc_int.h" -#endif extern void vp8_build_1st_inter16x16_predictors_mby(MACROBLOCKD *xd, unsigned char *dst_y, diff --git a/vp8/common/reconintra.c b/vp8/common/reconintra.c index cad9652b7..9bee3a7da 100644 --- a/vp8/common/reconintra.c +++ b/vp8/common/reconintra.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "vpx_ports/config.h" -#include "recon.h" +#include "vpx_rtcd.h" #include "reconintra.h" #include "vpx_mem/vpx_mem.h" @@ -196,14 +196,12 @@ void d153_predictor(unsigned char *ypred_ptr, int y_stride, int n, } } -void vp8_recon_intra_mbuv(const vp8_recon_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { +void vp8_recon_intra_mbuv(MACROBLOCKD *xd) { int i; for (i = 16; i < 24; i += 2) { BLOCKD *b = &xd->block[i]; - RECON_INVOKE(rtcd, recon2)(b->predictor, b->diff, - *(b->base_dst) + b->dst, b->dst_stride); + vp8_recon2b(b->predictor, b->diff,*(b->base_dst) + b->dst, b->dst_stride); } } diff --git a/vp8/common/reconintra4x4.c b/vp8/common/reconintra4x4.c index 69faab09d..0ba0a2cff 100644 --- a/vp8/common/reconintra4x4.c +++ b/vp8/common/reconintra4x4.c @@ -10,13 +10,12 @@ #include "vpx_ports/config.h" -#include "recon.h" #include "vpx_mem/vpx_mem.h" #include "reconintra.h" +#include "vpx_rtcd.h" -void vp8_intra4x4_predict(BLOCKD *x, - int b_mode, - unsigned char *predictor) { +void vp8_intra4x4_predict_c(BLOCKD *x, int b_mode, + unsigned char *predictor) { int i, r, c; unsigned char *Above = *(x->base_dst) + x->dst - x->dst_stride; @@ -276,7 +275,7 @@ void vp8_intra4x4_predict(BLOCKD *x, } #if CONFIG_COMP_INTRA_PRED -void vp8_comp_intra4x4_predict(BLOCKD *x, +void vp8_comp_intra4x4_predict_c(BLOCKD *x, int b_mode, int b_mode2, unsigned char *out_predictor) { unsigned char predictor[2][4 * 16]; diff --git a/vp8/common/rtcd_defs.sh b/vp8/common/rtcd_defs.sh index 6667c6562..247796356 100644 --- a/vp8/common/rtcd_defs.sh +++ b/vp8/common/rtcd_defs.sh @@ -1,12 +1,17 @@ common_forward_decls() { cat <<EOF -struct blockd; +#include "vp8/common/blockd.h" + +struct loop_filter_info; + +/* Encoder forward decls */ +struct variance_vtable; +union int_mv; +struct yv12_buffer_config; EOF } forward_decls common_forward_decls - - prototype void vp8_filter_block2d_4x4_8 "const unsigned char *src_ptr, const unsigned int src_stride, const short *HFilter_aligned16, const short *VFilter_aligned16, unsigned char *dst_ptr, unsigned int dst_stride" prototype void vp8_filter_block2d_8x4_8 "const unsigned char *src_ptr, const unsigned int src_stride, const short *HFilter_aligned16, const short *VFilter_aligned16, unsigned char *dst_ptr, unsigned int dst_stride" prototype void vp8_filter_block2d_8x8_8 "const unsigned char *src_ptr, const unsigned int src_stride, const short *HFilter_aligned16, const short *VFilter_aligned16, unsigned char *dst_ptr, unsigned int dst_stride" @@ -30,3 +35,88 @@ prototype void vp8_copy_mem16x16 "unsigned char *src, int src_pitch, unsigned ch specialize vp8_copy_mem16x16 mmx sse2 media neon dspr2 vp8_copy_mem16x16_media=vp8_copy_mem16x16_v6 vp8_copy_mem16x16_dspr2=vp8_copy_mem16x16_dspr2 + +prototype void vp8_copy_mem8x8 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem8x8 mmx media neon dspr2 +vp8_copy_mem8x8_media=vp8_copy_mem8x8_v6 +vp8_copy_mem8x8_dspr2=vp8_copy_mem8x8_dspr2 + +prototype void vp8_copy_mem8x4 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem8x4 mmx + +prototype void vp8_intra4x4_predict "unsigned char *Above, unsigned char *yleft, int left_stride, B_PREDICTION_MODE b_mode, unsigned char *dst, int dst_stride, unsigned char top_left" +specialize vp8_intra4x4_predict + +prototype void vp8_avg_mem16x16 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_avg_mem16x16 + +prototype void vp8_avg_mem8x8 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_avg_mem8x8 + +prototype void vp8_copy_mem8x4 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem8x4 mmx media neon dspr2 +vp8_copy_mem8x4_media=vp8_copy_mem8x4_v6 +vp8_copy_mem8x4_dspr2=vp8_copy_mem8x4_dspr2 + +prototype void vp8_recon_b "unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride" +specialize vp8_recon_b + +prototype void vp8_recon_uv_b "unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride" +specialize vp8_recon_uv_b + +prototype void vp8_recon2b "unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride" +specialize vp8_recon2b sse2 + +prototype void vp8_recon4b "unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride" +specialize vp8_recon4b sse2 + +prototype void vp8_recon_mb "MACROBLOCKD *x" +specialize vp8_recon_mb + +prototype void vp8_recon_mby "MACROBLOCKD *x" +specialize vp8_recon_mby + +prototype void vp8_build_intra_predictors_mby_s "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_mby_s + +prototype void vp8_build_intra_predictors_sby_s "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_sby_s; + +prototype void vp8_build_intra_predictors_sbuv_s "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_sbuv_s; + +prototype void vp8_build_intra_predictors_mby "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_mby; + +prototype void vp8_build_comp_intra_predictors_mby "MACROBLOCKD *x" +specialize vp8_build_comp_intra_predictors_mby; + +prototype void vp8_build_intra_predictors_mby_s "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_mby_s; + +prototype void vp8_build_intra_predictors_mbuv "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_mbuv; + +prototype void vp8_build_intra_predictors_mbuv_s "MACROBLOCKD *x" +specialize vp8_build_intra_predictors_mbuv_s; + +prototype void vp8_build_comp_intra_predictors_mbuv "MACROBLOCKD *x" +specialize vp8_build_comp_intra_predictors_mbuv; + +prototype void vp8_intra4x4_predict "BLOCKD *x, int b_mode, unsigned char *predictor" +specialize vp8_intra4x4_predict; + +prototype void vp8_comp_intra4x4_predict "BLOCKD *x, int b_mode, int second_mode, unsigned char *predictor" +specialize vp8_comp_intra4x4_predict; + +prototype void vp8_intra8x8_predict "BLOCKD *x, int b_mode, unsigned char *predictor" +specialize vp8_intra8x8_predict; + +prototype void vp8_comp_intra8x8_predict "BLOCKD *x, int b_mode, int second_mode, unsigned char *predictor" +specialize vp8_comp_intra8x8_predict; + +prototype void vp8_intra_uv4x4_predict "BLOCKD *x, int b_mode, unsigned char *predictor" +specialize vp8_intra_uv4x4_predict; + +prototype void vp8_comp_intra_uv4x4_predict "BLOCKD *x, int b_mode, int second_mode, unsigned char *predictor" +specialize vp8_comp_intra_uv4x4_predict; diff --git a/vp8/common/x86/recon_wrapper_sse2.c b/vp8/common/x86/recon_wrapper_sse2.c index e304d055b..681aff81e 100644 --- a/vp8/common/x86/recon_wrapper_sse2.c +++ b/vp8/common/x86/recon_wrapper_sse2.c @@ -9,9 +9,8 @@ */ #include "vpx_ports/config.h" -#include "vp8/common/recon.h" -#include "recon_x86.h" #include "vpx_mem/vpx_mem.h" +#include "vp8/common/blockd.h" #define build_intra_predictors_mbuv_prototype(sym) \ void sym(unsigned char *dst, int dst_stride, \ diff --git a/vp8/common/x86/recon_x86.h b/vp8/common/x86/recon_x86.h deleted file mode 100644 index c0180cc56..000000000 --- a/vp8/common/x86/recon_x86.h +++ /dev/null @@ -1,81 +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 RECON_X86_H -#define RECON_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_recon_block(vp8_recon_b_mmx); -extern prototype_copy_block(vp8_copy_mem8x8_mmx); -extern prototype_copy_block(vp8_copy_mem8x4_mmx); -extern prototype_copy_block(vp8_copy_mem16x16_mmx); - - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_recon_recon -#define vp8_recon_recon vp8_recon_b_mmx - -#undef vp8_recon_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_mmx - -#undef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_mmx - -#endif -#endif - -#if HAVE_SSE2 -extern prototype_recon_block(vp8_recon2b_sse2); -extern prototype_recon_block(vp8_recon4b_sse2); -extern prototype_copy_block(vp8_copy_mem16x16_sse2); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mbuv_sse2); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mbuv_s_sse2); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_recon_recon2 -#define vp8_recon_recon2 vp8_recon2b_sse2 - -#undef vp8_recon_recon4 -#define vp8_recon_recon4 vp8_recon4b_sse2 - -#undef vp8_recon_copy16x16 -#define vp8_recon_copy16x16 vp8_copy_mem16x16_sse2 - -#undef vp8_recon_build_intra_predictors_mbuv -#define vp8_recon_build_intra_predictors_mbuv vp8_build_intra_predictors_mbuv_sse2 - -#undef vp8_recon_build_intra_predictors_mbuv_s -#define vp8_recon_build_intra_predictors_mbuv_s vp8_build_intra_predictors_mbuv_s_sse2 - -#endif -#endif - -#if HAVE_SSSE3 -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mbuv_ssse3); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mbuv_s_ssse3); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_recon_build_intra_predictors_mbuv -#define vp8_recon_build_intra_predictors_mbuv vp8_build_intra_predictors_mbuv_ssse3 - -#undef vp8_recon_build_intra_predictors_mbuv_s -#define vp8_recon_build_intra_predictors_mbuv_s vp8_build_intra_predictors_mbuv_s_ssse3 - -#endif -#endif -#endif diff --git a/vp8/common/x86/x86_systemdependent.c b/vp8/common/x86/x86_systemdependent.c index c50778521..5618cd7a3 100644 --- a/vp8/common/x86/x86_systemdependent.c +++ b/vp8/common/x86/x86_systemdependent.c @@ -14,7 +14,6 @@ #include "vp8/common/g_common.h" #include "vp8/common/subpixel.h" #include "vp8/common/loopfilter.h" -#include "vp8/common/recon.h" #include "vp8/common/idct.h" #include "vp8/common/pragmas.h" #include "vp8/common/onyxc_int.h" @@ -41,10 +40,6 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) { // rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_mmx; // rtcd->idct.iwalsh1 = vp8_short_inv_walsh4x4_1_mmx; - rtcd->recon.recon = vp8_recon_b_mmx; - rtcd->recon.copy8x8 = vp8_copy_mem8x8_mmx; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_mmx; - /* Disabled due to unsupported enhanced interpolation/high_prec mv rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_mmx; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_mmx; @@ -77,15 +72,7 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) { #if HAVE_SSE2 if (flags & HAS_SSE2) { - rtcd->recon.recon2 = vp8_recon2b_sse2; - rtcd->recon.recon4 = vp8_recon4b_sse2; - /* these are disable because of unsupported diagonal pred modes - rtcd->recon.build_intra_predictors_mbuv = - vp8_build_intra_predictors_mbuv_sse2; - rtcd->recon.build_intra_predictors_mbuv_s = - vp8_build_intra_predictors_mbuv_s_sse2; - */ // rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_sse2; |