RTCD: add recon functions This commit continues the process of converting to the new RTCD system. Change-Id: I9bfcf9bef65c3d4ba0fb9a3e1532bad1463a10d6
diff --git a/vp8/common/arm/arm_systemdependent.c b/vp8/common/arm/arm_systemdependent.c index c2ef71f..0c993f4 100644 --- a/vp8/common/arm/arm_systemdependent.c +++ b/vp8/common/arm/arm_systemdependent.c
@@ -14,7 +14,6 @@ #include "vp8/common/pragmas.h" #include "vp8/common/subpixel.h" #include "vp8/common/loopfilter.h" -#include "vp8/common/recon.h" #include "vp8/common/onyxc_int.h" void vp8_arch_arm_common_init(VP8_COMMON *ctx) @@ -42,11 +41,6 @@ rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_armv6; rtcd->subpix.bilinear8x4 = vp8_bilinear_predict8x4_armv6; rtcd->subpix.bilinear4x4 = vp8_bilinear_predict4x4_armv6; - - rtcd->recon.copy16x16 = vp8_copy_mem16x16_v6; - rtcd->recon.copy8x8 = vp8_copy_mem8x8_v6; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_v6; - rtcd->recon.intra4x4_predict = vp8_intra4x4_predict_armv6; } #endif @@ -61,14 +55,6 @@ rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_neon; rtcd->subpix.bilinear8x4 = vp8_bilinear_predict8x4_neon; rtcd->subpix.bilinear4x4 = vp8_bilinear_predict4x4_neon; - - rtcd->recon.copy16x16 = vp8_copy_mem16x16_neon; - rtcd->recon.copy8x8 = vp8_copy_mem8x8_neon; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_neon; - rtcd->recon.build_intra_predictors_mby = - vp8_build_intra_predictors_mby_neon; - rtcd->recon.build_intra_predictors_mby_s = - vp8_build_intra_predictors_mby_s_neon; } #endif
diff --git a/vp8/common/arm/recon_arm.h b/vp8/common/arm/recon_arm.h deleted file mode 100644 index e2baa5b..0000000 --- a/vp8/common/arm/recon_arm.h +++ /dev/null
@@ -1,65 +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_ARM_H -#define RECON_ARM_H - -#if HAVE_MEDIA - -extern prototype_copy_block(vp8_copy_mem8x8_v6); -extern prototype_copy_block(vp8_copy_mem8x4_v6); -extern prototype_copy_block(vp8_copy_mem16x16_v6); -extern prototype_intra4x4_predict(vp8_intra4x4_predict_armv6); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_recon_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_v6 - -#undef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_v6 - -#undef vp8_recon_copy16x16 -#define vp8_recon_copy16x16 vp8_copy_mem16x16_v6 - -#undef vp8_recon_intra4x4_predict -#define vp8_recon_intra4x4_predict vp8_intra4x4_predict_armv6 -#endif -#endif - -#if HAVE_NEON - -extern prototype_copy_block(vp8_copy_mem8x8_neon); -extern prototype_copy_block(vp8_copy_mem8x4_neon); -extern prototype_copy_block(vp8_copy_mem16x16_neon); - -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_neon); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_s_neon); - -#if !CONFIG_RUNTIME_CPU_DETECT -#undef vp8_recon_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_neon - -#undef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_neon - -#undef vp8_recon_copy16x16 -#define vp8_recon_copy16x16 vp8_copy_mem16x16_neon - -#undef vp8_recon_build_intra_predictors_mby -#define vp8_recon_build_intra_predictors_mby vp8_build_intra_predictors_mby_neon - -#undef vp8_recon_build_intra_predictors_mby_s -#define vp8_recon_build_intra_predictors_mby_s vp8_build_intra_predictors_mby_s_neon - -#endif -#endif - -#endif
diff --git a/vp8/common/arm/reconintra_arm.c b/vp8/common/arm/reconintra_arm.c index c167d92..121e090 100644 --- a/vp8/common/arm/reconintra_arm.c +++ b/vp8/common/arm/reconintra_arm.c
@@ -10,10 +10,9 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "vp8/common/blockd.h" -#include "vp8/common/reconintra.h" #include "vpx_mem/vpx_mem.h" -#include "vp8/common/recon.h" #if HAVE_NEON extern void vp8_build_intra_predictors_mby_neon_func(
diff --git a/vp8/common/blockd.h b/vp8/common/blockd.h index 6b58397..187a669 100644 --- a/vp8/common/blockd.h +++ b/vp8/common/blockd.h
@@ -200,7 +200,7 @@ union b_mode_info bmi; } BLOCKD; -typedef struct MacroBlockD +typedef struct macroblockd { DECLARE_ALIGNED(16, unsigned char, predictor[384]); DECLARE_ALIGNED(16, short, qcoeff[400]);
diff --git a/vp8/common/generic/systemdependent.c b/vp8/common/generic/systemdependent.c index 2887861..51a797a 100644 --- a/vp8/common/generic/systemdependent.c +++ b/vp8/common/generic/systemdependent.c
@@ -13,7 +13,6 @@ #include "vpx_rtcd.h" #include "vp8/common/subpixel.h" #include "vp8/common/loopfilter.h" -#include "vp8/common/recon.h" #include "vp8/common/onyxc_int.h" #if CONFIG_MULTITHREAD @@ -69,22 +68,6 @@ #if CONFIG_RUNTIME_CPU_DETECT VP8_COMMON_RTCD *rtcd = &ctx->rtcd; - - rtcd->recon.copy16x16 = vp8_copy_mem16x16_c; - rtcd->recon.copy8x8 = vp8_copy_mem8x8_c; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_c; - - rtcd->recon.build_intra_predictors_mby = - vp8_build_intra_predictors_mby; - 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; - rtcd->recon.intra4x4_predict = - vp8_intra4x4_predict_c; - rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_c; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_c; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_c;
diff --git a/vp8/common/loopfilter.h b/vp8/common/loopfilter.h index 6a4ea0f..0fa8375 100644 --- a/vp8/common/loopfilter.h +++ b/vp8/common/loopfilter.h
@@ -68,22 +68,22 @@ /* assorted loopfilter functions which get used elsewhere */ struct VP8Common; -struct MacroBlockD; +struct macroblockd; void vp8_loop_filter_init(struct VP8Common *cm); void vp8_loop_filter_frame_init(struct VP8Common *cm, - struct MacroBlockD *mbd, + struct macroblockd *mbd, int default_filt_lvl); -void vp8_loop_filter_frame(struct VP8Common *cm, struct MacroBlockD *mbd); +void vp8_loop_filter_frame(struct VP8Common *cm, struct macroblockd *mbd); void vp8_loop_filter_partial_frame(struct VP8Common *cm, - struct MacroBlockD *mbd, + struct macroblockd *mbd, int default_filt_lvl); void vp8_loop_filter_frame_yonly(struct VP8Common *cm, - struct MacroBlockD *mbd, + struct macroblockd *mbd, int default_filt_lvl); void vp8_loop_filter_update_sharpness(loop_filter_info_n *lfi,
diff --git a/vp8/common/onyxc_int.h b/vp8/common/onyxc_int.h index 47d374d..8523619 100644 --- a/vp8/common/onyxc_int.h +++ b/vp8/common/onyxc_int.h
@@ -13,11 +13,11 @@ #define __INC_VP8C_INT_H #include "vpx_config.h" +#include "vpx_rtcd.h" #include "vpx/internal/vpx_codec_internal.h" #include "loopfilter.h" #include "entropymv.h" #include "entropy.h" -#include "recon.h" #if CONFIG_POSTPROC #include "postproc.h" #endif @@ -72,7 +72,6 @@ typedef struct VP8_COMMON_RTCD { #if CONFIG_RUNTIME_CPU_DETECT - vp8_recon_rtcd_vtable_t recon; vp8_subpix_rtcd_vtable_t subpix; #if CONFIG_POSTPROC vp8_postproc_rtcd_vtable_t postproc;
diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c index 3ee04fb..f55ceed 100644 --- a/vp8/common/postproc.c +++ b/vp8/common/postproc.c
@@ -10,10 +10,10 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "vpx_scale/yv12config.h" #include "postproc.h" #include "common.h" -#include "recon.h" #include "vpx_scale/yv12extend.h" #include "vpx_scale/vpxscale.h" #include "systemdependent.h" @@ -779,13 +779,13 @@ { if (blksize == 16) { - vp8_recon_copy16x16(y, y_stride, yd, yd_stride); - vp8_recon_copy8x8(u, uv_stride, ud, uvd_stride); - vp8_recon_copy8x8(v, uv_stride, vd, uvd_stride); + vp8_copy_mem16x16(y, y_stride, yd, yd_stride); + vp8_copy_mem8x8(u, uv_stride, ud, uvd_stride); + vp8_copy_mem8x8(v, uv_stride, vd, uvd_stride); } else if (blksize == 8) { - vp8_recon_copy8x8(y, y_stride, yd, yd_stride); + vp8_copy_mem8x8(y, y_stride, yd, yd_stride); for (up = u, udp = ud, i = 0; i < blksizeby2; ++i, up += uv_stride, udp += uvd_stride) vpx_memcpy(udp, up, blksizeby2); for (vp = v, vdp = vd, i = 0; i < blksizeby2; ++i, vp += uv_stride, vdp += uvd_stride) @@ -886,9 +886,9 @@ } else { - vp8_recon_copy16x16(y_ptr, show->y_stride, yd_ptr, dest->y_stride); - vp8_recon_copy8x8(u_ptr, show->uv_stride, ud_ptr, dest->uv_stride); - vp8_recon_copy8x8(v_ptr, show->uv_stride, vd_ptr, dest->uv_stride); + vp8_copy_mem16x16(y_ptr, show->y_stride, yd_ptr, dest->y_stride); + vp8_copy_mem8x8(u_ptr, show->uv_stride, ud_ptr, dest->uv_stride); + vp8_copy_mem8x8(v_ptr, show->uv_stride, vd_ptr, dest->uv_stride); } y_ptr += 16; u_ptr += 8;
diff --git a/vp8/common/recon.h b/vp8/common/recon.h deleted file mode 100644 index 98c5f63..0000000 --- a/vp8/common/recon.h +++ /dev/null
@@ -1,111 +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, int diff_stride, unsigned char *dst, int pitch) - -#define prototype_recon_macroblock(sym) \ - void sym(const struct vp8_recon_rtcd_vtable *rtcd, MACROBLOCKD *x) - -#define prototype_build_intra_predictors(sym) \ - void sym(MACROBLOCKD *x) - -#define prototype_intra4x4_predict(sym) \ - void sym(unsigned char *src, int src_stride, int b_mode, \ - unsigned char *dst, int dst_stride) - -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_copy16x16 -#define vp8_recon_copy16x16 vp8_copy_mem16x16_c -#endif -extern prototype_copy_block(vp8_recon_copy16x16); - -#ifndef vp8_recon_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_c -#endif -extern prototype_copy_block(vp8_recon_copy8x8); - -#ifndef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_c -#endif -extern prototype_copy_block(vp8_recon_copy8x4); - -#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); - -#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_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_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); - -#ifndef vp8_recon_intra4x4_predict -#define vp8_recon_intra4x4_predict vp8_intra4x4_predict_c -#endif -extern prototype_intra4x4_predict\ - (vp8_recon_intra4x4_predict); - - -typedef prototype_copy_block((*vp8_copy_block_fn_t)); -typedef prototype_build_intra_predictors((*vp8_build_intra_pred_fn_t)); -typedef prototype_intra4x4_predict((*vp8_intra4x4_pred_fn_t)); -typedef struct vp8_recon_rtcd_vtable -{ - vp8_copy_block_fn_t copy16x16; - vp8_copy_block_fn_t copy8x8; - vp8_copy_block_fn_t copy8x4; - - vp8_build_intra_pred_fn_t build_intra_predictors_mby_s; - vp8_build_intra_pred_fn_t build_intra_predictors_mby; - vp8_build_intra_pred_fn_t build_intra_predictors_mbuv_s; - vp8_build_intra_pred_fn_t build_intra_predictors_mbuv; - vp8_intra4x4_pred_fn_t intra4x4_predict; -} 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 - -#endif
diff --git a/vp8/common/reconinter.c b/vp8/common/reconinter.c index 6c7af41..472960a 100644 --- a/vp8/common/reconinter.c +++ b/vp8/common/reconinter.c
@@ -10,8 +10,8 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "vpx/vpx_integer.h" -#include "recon.h" #include "subpixel.h" #include "blockd.h" #include "reconinter.h" @@ -172,7 +172,7 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy8x8)(ptr, d->pre_stride, dst, dst_stride); + vp8_copy_mem8x8(ptr, d->pre_stride, dst, dst_stride); } } @@ -190,7 +190,7 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy8x4)(ptr, d->pre_stride, dst, dst_stride); + vp8_copy_mem8x4(ptr, d->pre_stride, dst, dst_stride); } } @@ -269,8 +269,8 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy8x8)(uptr, pre_stride, upred_ptr, 8); - RECON_INVOKE(&x->rtcd->recon, copy8x8)(vptr, pre_stride, vpred_ptr, 8); + vp8_copy_mem8x8(uptr, pre_stride, upred_ptr, 8); + vp8_copy_mem8x8(vptr, pre_stride, vpred_ptr, 8); } } @@ -354,7 +354,7 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy16x16)(ptr, pre_stride, dst_y, + vp8_copy_mem16x16(ptr, pre_stride, dst_y, dst_ystride); } } @@ -426,7 +426,7 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy16x16)(ptr, pre_stride, dst_y, dst_ystride); + vp8_copy_mem16x16(ptr, pre_stride, dst_y, dst_ystride); } /* calc uv motion vectors */ @@ -458,8 +458,8 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy8x8)(uptr, pre_stride, dst_u, dst_uvstride); - RECON_INVOKE(&x->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); } }
diff --git a/vp8/common/reconintra.c b/vp8/common/reconintra.c index c0863ee..62af368 100644 --- a/vp8/common/reconintra.c +++ b/vp8/common/reconintra.c
@@ -10,15 +10,15 @@ #include "vpx_config.h" -#include "recon.h" -#include "reconintra.h" +#include "vpx_rtcd.h" #include "vpx_mem/vpx_mem.h" +#include "blockd.h" /* For skip_recon_mb(), add vp8_build_intra_predictors_mby_s(MACROBLOCKD *x) and * vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x). */ -void vp8_build_intra_predictors_mby(MACROBLOCKD *x) +void vp8_build_intra_predictors_mby_c(MACROBLOCKD *x) { unsigned char *yabove_row = x->dst.y_buffer - x->dst.y_stride; @@ -136,7 +136,7 @@ } } -void vp8_build_intra_predictors_mby_s(MACROBLOCKD *x) +void vp8_build_intra_predictors_mby_s_c(MACROBLOCKD *x) { unsigned char *yabove_row = x->dst.y_buffer - x->dst.y_stride; @@ -262,7 +262,7 @@ } } -void vp8_build_intra_predictors_mbuv(MACROBLOCKD *x) +void vp8_build_intra_predictors_mbuv_c(MACROBLOCKD *x) { unsigned char *uabove_row = x->dst.u_buffer - x->dst.uv_stride; unsigned char uleft_col[16]; @@ -400,7 +400,7 @@ } } -void vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x) +void vp8_build_intra_predictors_mbuv_s_c(MACROBLOCKD *x) { unsigned char *uabove_row = x->dst.u_buffer - x->dst.uv_stride; unsigned char uleft_col[16];
diff --git a/vp8/common/reconintra.h b/vp8/common/reconintra.h deleted file mode 100644 index 47e4792..0000000 --- a/vp8/common/reconintra.h +++ /dev/null
@@ -1,17 +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_RECONINTRA_H -#define __INC_RECONINTRA_H - -extern void init_intra_left_above_pixels(MACROBLOCKD *x); - -#endif
diff --git a/vp8/common/reconintra4x4.c b/vp8/common/reconintra4x4.c index 64dac5d..7c2b46d 100644 --- a/vp8/common/reconintra4x4.c +++ b/vp8/common/reconintra4x4.c
@@ -9,7 +9,9 @@ */ -#include "recon.h" +#include "vpx_config.h" +#include "vpx_rtcd.h" +#include "blockd.h" void vp8_intra4x4_predict_c(unsigned char *src, int src_stride, int b_mode,
diff --git a/vp8/common/rtcd_defs.sh b/vp8/common/rtcd_defs.sh index 31df5e6..33fd51a 100644 --- a/vp8/common/rtcd_defs.sh +++ b/vp8/common/rtcd_defs.sh
@@ -1,6 +1,7 @@ common_forward_decls() { cat <<EOF struct blockd; +struct macroblockd; struct loop_filter_info; EOF } @@ -98,3 +99,34 @@ prototype void vp8_dc_only_idct_add "short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride" specialize vp8_dc_only_idct_add mmx media neon vp8_dc_only_idct_add_media=vp8_dc_only_idct_add_v6 + +# +# RECON +# +prototype void vp8_copy_mem16x16 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem16x16 mmx sse2 media neon +vp8_copy_mem16x16_media=vp8_copy_mem16x16_v6 + +prototype void vp8_copy_mem8x8 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem8x8 mmx media neon +vp8_copy_mem8x8_media=vp8_copy_mem8x8_v6 + +prototype void vp8_copy_mem8x4 "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch" +specialize vp8_copy_mem8x4 mmx media neon +vp8_copy_mem8x4_media=vp8_copy_mem8x4_v6 + +prototype void vp8_build_intra_predictors_mby "struct macroblockd *x" +specialize vp8_build_intra_predictors_mby sse2 ssse3 neon + +prototype void vp8_build_intra_predictors_mby_s "struct macroblockd *x" +specialize vp8_build_intra_predictors_mby_s sse2 ssse3 neon + +prototype void vp8_build_intra_predictors_mbuv "struct macroblockd *x" +specialize vp8_build_intra_predictors_mbuv sse2 ssse3 + +prototype void vp8_build_intra_predictors_mbuv_s "struct macroblockd *x" +specialize vp8_build_intra_predictors_mbuv_s sse2 ssse3 + +prototype void vp8_intra4x4_predict "unsigned char *src, int src_stride, int b_mode, unsigned char *dst, int dst_stride" +specialize vp8_intra4x4_predict media +vp8_intra4x4_predict_media=vp8_intra4x4_predict_armv6
diff --git a/vp8/common/x86/recon_wrapper_sse2.c b/vp8/common/x86/recon_wrapper_sse2.c index 44221cd..cb9ab80 100644 --- a/vp8/common/x86/recon_wrapper_sse2.c +++ b/vp8/common/x86/recon_wrapper_sse2.c
@@ -9,9 +9,9 @@ */ #include "vpx_config.h" -#include "vp8/common/recon.h" -#include "recon_x86.h" +#include "vpx_rtcd.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 afacc60..0000000 --- a/vp8/common/x86/recon_x86.h +++ /dev/null
@@ -1,88 +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_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_copy8x8 -#define vp8_recon_copy8x8 vp8_copy_mem8x8_mmx - -#undef vp8_recon_copy8x4 -#define vp8_recon_copy8x4 vp8_copy_mem8x4_mmx - -#undef vp8_recon_copy16x16 -#define vp8_recon_copy16x16 vp8_copy_mem16x16_mmx - -#endif -#endif - -#if HAVE_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); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_sse2); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_s_sse2); - -#if !CONFIG_RUNTIME_CPU_DETECT -#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 - -#undef vp8_recon_build_intra_predictors_mby -#define vp8_recon_build_intra_predictors_mby vp8_build_intra_predictors_mby_sse2 - -#undef vp8_recon_build_intra_predictors_mby_s -#define vp8_recon_build_intra_predictors_mby_s vp8_build_intra_predictors_mby_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); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_ssse3); -extern prototype_build_intra_predictors(vp8_build_intra_predictors_mby_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 - -#undef vp8_recon_build_intra_predictors_mby -#define vp8_recon_build_intra_predictors_mby vp8_build_intra_predictors_mby_ssse3 - -#undef vp8_recon_build_intra_predictors_mby_s -#define vp8_recon_build_intra_predictors_mby_s vp8_build_intra_predictors_mby_s_ssse3 - -#endif -#endif -#endif
diff --git a/vp8/common/x86/x86_systemdependent.c b/vp8/common/x86/x86_systemdependent.c index 2b42f43..2368956 100644 --- a/vp8/common/x86/x86_systemdependent.c +++ b/vp8/common/x86/x86_systemdependent.c
@@ -13,7 +13,6 @@ #include "vpx_ports/x86.h" #include "vp8/common/subpixel.h" #include "vp8/common/loopfilter.h" -#include "vp8/common/recon.h" #include "vp8/common/pragmas.h" #include "vp8/common/onyxc_int.h" @@ -35,10 +34,6 @@ if (flags & HAS_MMX) { - rtcd->recon.copy8x8 = vp8_copy_mem8x8_mmx; - rtcd->recon.copy8x4 = vp8_copy_mem8x4_mmx; - rtcd->recon.copy16x16 = vp8_copy_mem16x16_mmx; - rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_mmx; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_mmx; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_mmx; @@ -61,16 +56,6 @@ if (flags & HAS_SSE2) { - rtcd->recon.copy16x16 = vp8_copy_mem16x16_sse2; - 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->recon.build_intra_predictors_mby = - vp8_build_intra_predictors_mby_sse2; - rtcd->recon.build_intra_predictors_mby_s = - vp8_build_intra_predictors_mby_s_sse2; - rtcd->subpix.sixtap16x16 = vp8_sixtap_predict16x16_sse2; rtcd->subpix.sixtap8x8 = vp8_sixtap_predict8x8_sse2; rtcd->subpix.sixtap8x4 = vp8_sixtap_predict8x4_sse2; @@ -97,15 +82,6 @@ rtcd->subpix.sixtap4x4 = vp8_sixtap_predict4x4_ssse3; rtcd->subpix.bilinear16x16 = vp8_bilinear_predict16x16_ssse3; rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_ssse3; - - rtcd->recon.build_intra_predictors_mbuv = - vp8_build_intra_predictors_mbuv_ssse3; - rtcd->recon.build_intra_predictors_mbuv_s = - vp8_build_intra_predictors_mbuv_s_ssse3; - rtcd->recon.build_intra_predictors_mby = - vp8_build_intra_predictors_mby_ssse3; - rtcd->recon.build_intra_predictors_mby_s = - vp8_build_intra_predictors_mby_s_ssse3; } #endif
diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c index f90f242..7877330 100644 --- a/vp8/decoder/decodframe.c +++ b/vp8/decoder/decodframe.c
@@ -13,9 +13,7 @@ #include "vpx_rtcd.h" #include "onyxd_int.h" #include "vp8/common/header.h" -#include "vp8/common/reconintra.h" #include "vp8/common/reconintra4x4.h" -#include "vp8/common/recon.h" #include "vp8/common/reconinter.h" #include "detokenize.h" #include "vp8/common/invtrans.h" @@ -163,12 +161,11 @@ /* do prediction */ if (xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) { - RECON_INVOKE(&pbi->common.rtcd.recon, build_intra_predictors_mbuv_s)(xd); + vp8_build_intra_predictors_mbuv_s(xd); if (mode != B_PRED) { - RECON_INVOKE(&pbi->common.rtcd.recon, - build_intra_predictors_mby_s)(xd); + vp8_build_intra_predictors_mby_s(xd); } else { @@ -185,7 +182,7 @@ BLOCKD *b = &xd->block[i]; int b_mode = xd->mode_info_context->bmi[i].as_mode; - RECON_INVOKE(RTCD_VTABLE(recon), intra4x4_predict) + vp8_intra4x4_predict ( *(b->base_dst) + b->dst, b->dst_stride, b_mode, *(b->base_dst) + b->dst, b->dst_stride );
diff --git a/vp8/decoder/error_concealment.c b/vp8/decoder/error_concealment.c index b77d743..7750728 100644 --- a/vp8/decoder/error_concealment.c +++ b/vp8/decoder/error_concealment.c
@@ -12,7 +12,6 @@ #include "onyxd_int.h" #include "decodemv.h" #include "vpx_mem/vpx_mem.h" -#include "vp8/common/recon.h" #include "vp8/common/findnearmv.h" #include <assert.h>
diff --git a/vp8/decoder/reconintra_mt.c b/vp8/decoder/reconintra_mt.c index bcb2636..31425a4 100644 --- a/vp8/decoder/reconintra_mt.c +++ b/vp8/decoder/reconintra_mt.c
@@ -10,8 +10,7 @@ #include "vpx_config.h" -#include "vp8/common/recon.h" -#include "vp8/common/reconintra.h" +#include "vpx_rtcd.h" #include "vpx_mem/vpx_mem.h" #include "onyxd_int.h"
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index da24723..e2c8261 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c
@@ -24,7 +24,6 @@ #include "rdopt.h" #include "pickinter.h" #include "vp8/common/findnearmv.h" -#include "vp8/common/reconintra.h" #include <stdio.h> #include <limits.h> #include "vp8/common/subpixel.h" @@ -299,7 +298,7 @@ recon_yoffset += 16; #endif //Copy current mb to a buffer - RECON_INVOKE(&xd->rtcd->recon, copy16x16)(x->src.y_buffer, x->src.y_stride, x->thismb, 16); + vp8_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16); // measure activity mb_activity = mb_activity_measure( cpi, x, mb_row, mb_col ); @@ -441,7 +440,7 @@ x->rdmult = cpi->RDMULT; //Copy current mb to a buffer - RECON_INVOKE(&xd->rtcd->recon, copy16x16)(x->src.y_buffer, x->src.y_stride, x->thismb, 16); + vp8_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16); #if CONFIG_MULTITHREAD if ((cpi->b_multi_threaded != 0) && (mb_row != 0))
diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c index 3593410..04d7bd4 100644 --- a/vp8/encoder/encodeintra.c +++ b/vp8/encoder/encodeintra.c
@@ -12,11 +12,9 @@ #include "vpx_config.h" #include "vpx_rtcd.h" #include "quantize.h" -#include "vp8/common/reconintra.h" #include "vp8/common/reconintra4x4.h" #include "encodemb.h" #include "vp8/common/invtrans.h" -#include "vp8/common/recon.h" #include "dct.h" #include "encodeintra.h" @@ -66,7 +64,7 @@ BLOCKD *b = &x->e_mbd.block[ib]; BLOCK *be = &x->block[ib]; - RECON_INVOKE(&rtcd->common->recon, intra4x4_predict) + vp8_intra4x4_predict (*(b->base_dst) + b->dst, b->dst_stride, b->bmi.as_mode, b->predictor, 16); @@ -106,7 +104,7 @@ BLOCK *b = &x->block[0]; MACROBLOCKD *xd = &x->e_mbd; - RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mby_s)(&x->e_mbd); + vp8_build_intra_predictors_mby_s(&x->e_mbd); ENCODEMB_INVOKE(&rtcd->encodemb, submby) (x->src_diff, *(b->base_src), b->src_stride, xd->dst.y_buffer, xd->dst.y_stride); @@ -123,7 +121,7 @@ { MACROBLOCKD *xd = &x->e_mbd; - RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mbuv_s)(&x->e_mbd); + vp8_build_intra_predictors_mbuv_s(&x->e_mbd); ENCODEMB_INVOKE(&rtcd->encodemb, submbuv)(x->src_diff, x->src.u_buffer, x->src.v_buffer, x->src.uv_stride, xd->dst.u_buffer,
diff --git a/vp8/encoder/encodemb.c b/vp8/encoder/encodemb.c index c9f7553..b107482 100644 --- a/vp8/encoder/encodemb.c +++ b/vp8/encoder/encodemb.c
@@ -10,13 +10,12 @@ #include "vpx_config.h" +#include "vpx_rtcd.h" #include "encodemb.h" #include "vp8/common/reconinter.h" #include "quantize.h" #include "tokenize.h" #include "vp8/common/invtrans.h" -#include "vp8/common/recon.h" -#include "vp8/common/reconintra.h" #include "dct.h" #include "vpx_mem/vpx_mem.h" #include "rdopt.h"
diff --git a/vp8/encoder/ethreading.c b/vp8/encoder/ethreading.c index 24339a5..b4a0177 100644 --- a/vp8/encoder/ethreading.c +++ b/vp8/encoder/ethreading.c
@@ -148,7 +148,7 @@ x->rdmult = cpi->RDMULT; //Copy current mb to a buffer - RECON_INVOKE(&xd->rtcd->recon, copy16x16)(x->src.y_buffer, x->src.y_stride, x->thismb, 16); + vp8_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16); if (cpi->oxcf.tuning == VP8_TUNE_SSIM) vp8_activity_masking(cpi, x);
diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c index 346c06f..03d6397 100644 --- a/vp8/encoder/firstpass.c +++ b/vp8/encoder/firstpass.c
@@ -576,7 +576,7 @@ xd->left_available = (mb_col != 0); //Copy current mb to a buffer - RECON_INVOKE(&xd->rtcd->recon, copy16x16)(x->src.y_buffer, x->src.y_stride, x->thismb, 16); + vp8_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16); // do intra 16x16 prediction this_error = vp8_encode_intra(cpi, x, use_dc_pred);
diff --git a/vp8/encoder/pickinter.c b/vp8/encoder/pickinter.c index 3612cc3..e8a5d95 100644 --- a/vp8/encoder/pickinter.c +++ b/vp8/encoder/pickinter.c
@@ -19,7 +19,6 @@ #include "vp8/common/findnearmv.h" #include "encodemb.h" #include "vp8/common/reconinter.h" -#include "vp8/common/reconintra.h" #include "vp8/common/reconintra4x4.h" #include "variance.h" #include "mcomp.h" @@ -155,7 +154,7 @@ int this_rd; rate = mode_costs[mode]; - RECON_INVOKE(&rtcd->common->recon, intra4x4_predict) + vp8_intra4x4_predict (*(b->base_dst) + b->dst, b->dst_stride, mode, b->predictor, 16); distortion = get_prediction_error(be, b, &rtcd->variance); @@ -699,7 +698,7 @@ case V_PRED: case H_PRED: case TM_PRED: - RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby) + vp8_build_intra_predictors_mby (&x->e_mbd); distortion2 = VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) (*(b->base_src), b->src_stride, @@ -1070,7 +1069,7 @@ for (mode = DC_PRED; mode <= TM_PRED; mode ++) { x->e_mbd.mode_info_context->mbmi.mode = mode; - RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby) + vp8_build_intra_predictors_mby (&x->e_mbd); distortion = VARIANCE_INVOKE(&cpi->rtcd.variance, var16x16) (*(b->base_src), b->src_stride, x->e_mbd.predictor, 16, &sse);
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index daf3dd7..2784455 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c
@@ -24,7 +24,6 @@ #include "encodeintra.h" #include "vp8/common/entropymode.h" #include "vp8/common/reconinter.h" -#include "vp8/common/reconintra.h" #include "vp8/common/reconintra4x4.h" #include "vp8/common/findnearmv.h" #include "encodemb.h" @@ -653,7 +652,7 @@ rate = bmode_costs[mode]; - RECON_INVOKE(&cpi->rtcd.common->recon, intra4x4_predict) + vp8_intra4x4_predict (*(b->base_dst) + b->dst, b->dst_stride, mode, b->predictor, 16); ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), subb)(be, b, 16); @@ -773,7 +772,7 @@ { x->e_mbd.mode_info_context->mbmi.mode = mode; - RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby) + vp8_build_intra_predictors_mby (&x->e_mbd); macro_block_yrd(x, &ratey, &distortion, IF_RTCD(&cpi->rtcd.encodemb)); @@ -868,7 +867,7 @@ int this_rd; x->e_mbd.mode_info_context->mbmi.uv_mode = mode; - RECON_INVOKE(&cpi->rtcd.common->recon, build_intra_predictors_mbuv) + vp8_build_intra_predictors_mbuv (&x->e_mbd); ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), submbuv)(x->src_diff, x->src.u_buffer, x->src.v_buffer, x->src.uv_stride, @@ -1948,7 +1947,7 @@ case H_PRED: case TM_PRED: x->e_mbd.mode_info_context->mbmi.ref_frame = INTRA_FRAME; - RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby) + vp8_build_intra_predictors_mby (&x->e_mbd); macro_block_yrd(x, &rate_y, &distortion, IF_RTCD(&cpi->rtcd.encodemb)) ; rate2 += rate_y;
diff --git a/vp8/encoder/temporal_filter.c b/vp8/encoder/temporal_filter.c index 545e4f2..62a7ec3 100644 --- a/vp8/encoder/temporal_filter.c +++ b/vp8/encoder/temporal_filter.c
@@ -61,7 +61,7 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy16x16)(yptr, stride, &pred[0], 16); + vp8_copy_mem16x16(yptr, stride, &pred[0], 16); } // U & V @@ -81,8 +81,8 @@ } else { - RECON_INVOKE(&x->rtcd->recon, copy8x8)(uptr, stride, &pred[256], 8); - RECON_INVOKE(&x->rtcd->recon, copy8x8)(vptr, stride, &pred[320], 8); + vp8_copy_mem8x8(uptr, stride, &pred[256], 8); + vp8_copy_mem8x8(vptr, stride, &pred[320], 8); } } void vp8_temporal_filter_apply_c
diff --git a/vp8/vp8_common.mk b/vp8/vp8_common.mk index 43bdb1b..a978324 100644 --- a/vp8/vp8_common.mk +++ b/vp8/vp8_common.mk
@@ -45,9 +45,7 @@ VP8_COMMON_SRCS-yes += common/mv.h VP8_COMMON_SRCS-yes += common/onyxc_int.h VP8_COMMON_SRCS-yes += common/quant_common.h -VP8_COMMON_SRCS-yes += common/recon.h VP8_COMMON_SRCS-yes += common/reconinter.h -VP8_COMMON_SRCS-yes += common/reconintra.h VP8_COMMON_SRCS-yes += common/reconintra4x4.h VP8_COMMON_SRCS-yes += common/rtcd.c VP8_COMMON_SRCS-yes += common/rtcd_defs.sh @@ -77,7 +75,6 @@ VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/filter_x86.c VP8_COMMON_SRCS-$(ARCH_X86)$(ARCH_X86_64) += common/x86/filter_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/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 @@ -111,7 +108,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/loopfilter_arm.c -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 VP8_COMMON_SRCS-$(ARCH_ARM) += common/arm/dequantize_arm.c