From: Jim Bankoski Date: Sun, 25 Nov 2012 03:33:58 +0000 (-0800) Subject: removed the idct rtcd idct calls X-Git-Tag: v1.3.0~1217^2~63^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=510557e2eb058c7f939a7109eaaf6b03d9054390;p=libvpx removed the idct rtcd idct calls More cleanup to do after this, but this is a good chunk of removing rtcd. Change-Id: I551db75e341a0a85c3ad650df1e9a60dc305681a --- diff --git a/test/fdct4x4_test.cc b/test/fdct4x4_test.cc index 3fe4774ab..ebec890d6 100644 --- a/test/fdct4x4_test.cc +++ b/test/fdct4x4_test.cc @@ -15,7 +15,6 @@ #include "third_party/googletest/src/include/gtest/gtest.h" extern "C" { -#include "vp9/common/idct.h" #include "vp9_rtcd.h" } diff --git a/test/fdct8x8_test.cc b/test/fdct8x8_test.cc index 729344d9f..d82f7c3bd 100644 --- a/test/fdct8x8_test.cc +++ b/test/fdct8x8_test.cc @@ -15,7 +15,6 @@ #include "third_party/googletest/src/include/gtest/gtest.h" extern "C" { -#include "vp9/common/idct.h" #include "vp9_rtcd.h" } diff --git a/test/idct8x8_test.cc b/test/idct8x8_test.cc index 099efbf75..7cf7aa0ea 100644 --- a/test/idct8x8_test.cc +++ b/test/idct8x8_test.cc @@ -15,7 +15,6 @@ #include "third_party/googletest/src/include/gtest/gtest.h" extern "C" { -#include "vp9/common/idct.h" #include "vp9_rtcd.h" } diff --git a/vp8/common/ppc/systemdependent.c b/vp8/common/ppc/systemdependent.c index 87f4cac72..6899c0e71 100644 --- a/vp8/common/ppc/systemdependent.c +++ b/vp8/common/ppc/systemdependent.c @@ -12,13 +12,8 @@ #include "subpixel.h" #include "loopfilter.h" #include "recon.h" -#include "idct.h" #include "onyxc_int.h" -void (*vp8_short_idct4x4)(short *input, short *output, int pitch); -void (*vp8_short_idct4x4_1)(short *input, short *output, int pitch); -void (*vp8_dc_only_idct)(short input_dc, short *output, int pitch); - extern void (*vp8_post_proc_down_and_across_mb_row)( unsigned char *src_ptr, unsigned char *dst_ptr, diff --git a/vp9/common/arm/arm_systemdependent.c b/vp9/common/arm/arm_systemdependent.c index 19a01c69f..0a0e8098e 100644 --- a/vp9/common/arm/arm_systemdependent.c +++ b/vp9/common/arm/arm_systemdependent.c @@ -15,7 +15,6 @@ #include "vp9/common/subpixel.h" #include "vp9/common/loopfilter.h" #include "vp9/common/recon.h" -#include "vp9/common/idct.h" #include "vp9/common/onyxc_int.h" void vp9_arch_arm_common_init(VP9_COMMON *ctx) { diff --git a/vp9/common/blockd.h b/vp9/common/blockd.h index 412d2bc93..409c7b8f8 100644 --- a/vp9/common/blockd.h +++ b/vp9/common/blockd.h @@ -145,6 +145,11 @@ typedef enum { #define VP9_MVREFS (1 + SPLITMV - NEARESTMV) +#if CONFIG_LOSSLESS +#define WHT_UPSCALE_FACTOR 3 +#define Y2_WHT_UPSCALE_FACTOR 2 +#endif + typedef enum { B_DC_PRED, /* average of above and left pixels */ B_TM_PRED, @@ -370,6 +375,14 @@ typedef struct macroblockd { unsigned int frames_since_golden; unsigned int frames_till_alt_ref_frame; + + /* Inverse transform function pointers. */ + void (*inv_xform4x4_1_x8)(short *input, short *output, int pitch); + void (*inv_xform4x4_x8)(short *input, short *output, int pitch); + void (*inv_walsh4x4_1)(short *in, short *out); + void (*inv_walsh4x4_lossless)(short *in, short *out); + + vp9_subpix_fn_t subpixel_predict; vp9_subpix_fn_t subpixel_predict8x4; vp9_subpix_fn_t subpixel_predict8x8; diff --git a/vp9/common/generic/systemdependent.c b/vp9/common/generic/systemdependent.c index 958e1146b..6d1a271f5 100644 --- a/vp9/common/generic/systemdependent.c +++ b/vp9/common/generic/systemdependent.c @@ -13,7 +13,6 @@ #include "vp9_rtcd.h" #include "vp9/common/subpixel.h" #include "vp9/common/loopfilter.h" -#include "vp9/common/idct.h" #include "vp9/common/onyxc_int.h" extern void vp9_arch_x86_common_init(VP9_COMMON *ctx); @@ -23,18 +22,6 @@ void vp9_machine_specific_config(VP9_COMMON *ctx) { #if CONFIG_RUNTIME_CPU_DETECT VP9_COMMON_RTCD *rtcd = &ctx->rtcd; - rtcd->idct.idct1 = vp9_short_idct4x4llm_1_c; - rtcd->idct.idct16 = vp9_short_idct4x4llm_c; - rtcd->idct.idct1_scalar_add = vp9_dc_only_idct_add_c; - rtcd->idct.iwalsh1 = vp9_short_inv_walsh4x4_1_c; - rtcd->idct.iwalsh16 = vp9_short_inv_walsh4x4_c; - rtcd->idct.idct8 = vp9_short_idct8x8_c; - rtcd->idct.idct10_8 = vp9_short_idct10_8x8_c; - rtcd->idct.idct1_scalar_add_8x8 = vp9_dc_only_idct_add_8x8_c; - rtcd->idct.ihaar2 = vp9_short_ihaar2x2_c; - rtcd->idct.idct16x16 = vp9_short_idct16x16_c; - rtcd->idct.idct10_16x16 = vp9_short_idct10_16x16_c; - #if CONFIG_POSTPROC || (CONFIG_VP9_ENCODER && CONFIG_INTERNAL_STATS) rtcd->postproc.down = vp9_mbpost_proc_down_c; rtcd->postproc.across = vp9_mbpost_proc_across_ip_c; diff --git a/vp9/common/idct.h b/vp9/common/idct.h deleted file mode 100644 index 0f0478cd5..000000000 --- a/vp9/common/idct.h +++ /dev/null @@ -1,156 +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_IDCT_H -#define __INC_IDCT_H - -#include "vp9/common/blockd.h" - -#define prototype_second_order(sym) \ - void sym(short *input, short *output) - -#define prototype_idct(sym) \ - void sym(short *input, short *output, int pitch) - -#define prototype_idct_scalar_add(sym) \ - void sym(short input, \ - unsigned char *pred, unsigned char *output, \ - int pitch, int stride) - -#if ARCH_X86 || ARCH_X86_64 -#include "x86/idct_x86.h" -#endif - -#ifdef _MSC_VER -/* TODO: remove these after integer implmementations are done */ -#define M_PI 3.14159265358979323846 -#define round(x) (((x)>0)? floor((x)+0.5): ceil((x)-0.5)) -#endif - - -#if ARCH_ARM -#include "arm/idct_arm.h" -#endif - -#if CONFIG_LOSSLESS -#define WHT_UPSCALE_FACTOR 3 -#define Y2_WHT_UPSCALE_FACTOR 2 -#endif - -#ifndef vp9_idct_idct16x16 -#define vp9_idct_idct16x16 vp9_short_idct16x16_c -#endif -extern prototype_idct(vp9_idct_idct16x16); - -#ifndef vp9_idct_idct10_16x16 -#define vp9_idct_idct10_16x16 vp9_short_idct10_16x16_c -#endif -extern prototype_idct(vp9_idct_idct10_16x16); - -#ifndef vp9_idct_idct8 -#define vp9_idct_idct8 vp9_short_idct8x8_c -#endif -extern prototype_idct(vp9_idct_idct8); - -#ifndef vp9_idct_idct10_8 -#define vp9_idct_idct10_8 vp9_short_idct10_8x8_c -#endif -extern prototype_idct(vp9_idct_idct10_8); - -#ifndef vp9_idct_idct8_1 -#define vp9_idct_idct8_1 vp9_short_idct8x8_1_c -#endif -extern prototype_idct(vp9_idct_idct8_1); - -#ifndef vp9_idct_ihaar2 -#define vp9_idct_ihaar2 vp9_short_ihaar2x2_c -#endif -extern prototype_idct(vp9_idct_ihaar2); - -#ifndef vp9_idct_ihaar2_1 -#define vp9_idct_ihaar2_1 vp9_short_ihaar2x2_1_c -#endif -extern prototype_idct(vp9_idct_ihaar2_1); - -#ifndef vp9_idct_idct1_scalar_add_8x8 -#define vp9_idct_idct1_scalar_add_8x8 vp9_dc_only_idct_add_8x8_c -#endif -extern prototype_idct_scalar_add(vp9_idct_idct1_scalar_add_8x8); - - - -#ifndef vp9_idct_idct1 -#define vp9_idct_idct1 vp9_short_idct4x4llm_1_c -#endif -extern prototype_idct(vp9_idct_idct1); - -#ifndef vp9_idct_idct16 -#define vp9_idct_idct16 vp9_short_idct4x4llm_c -#endif -extern prototype_idct(vp9_idct_idct16); - -#ifndef vp9_idct_idct1_scalar_add -#define vp9_idct_idct1_scalar_add vp9_dc_only_idct_add_c -#endif -extern prototype_idct_scalar_add(vp9_idct_idct1_scalar_add); - - -#ifndef vp9_idct_iwalsh1 -#define vp9_idct_iwalsh1 vp9_short_inv_walsh4x4_1_c -#endif -extern prototype_second_order(vp9_idct_iwalsh1); - -#ifndef vp9_idct_iwalsh16 -#define vp9_idct_iwalsh16 vp9_short_inv_walsh4x4_c -#endif -extern prototype_second_order(vp9_idct_iwalsh16); - -#if CONFIG_LOSSLESS -extern prototype_idct(vp9_short_inv_walsh4x4_x8_c); -extern prototype_idct(vp9_short_inv_walsh4x4_1_x8_c); -extern prototype_idct_scalar_add(vp9_dc_only_inv_walsh_add_c); -extern prototype_second_order(vp9_short_inv_walsh4x4_lossless_c); -extern prototype_second_order(vp9_short_inv_walsh4x4_1_lossless_c); -#endif - -void vp9_ihtllm_c(const int16_t *input, int16_t *output, int pitch, - TX_TYPE tx_type, int tx_dim); - -typedef prototype_idct((*vp9_idct_fn_t)); -typedef prototype_idct_scalar_add((*vp9_idct_scalar_add_fn_t)); -typedef prototype_second_order((*vp9_second_order_fn_t)); - -typedef struct { - vp9_idct_fn_t idct1; - vp9_idct_fn_t idct16; - vp9_idct_scalar_add_fn_t idct1_scalar_add; - - vp9_second_order_fn_t iwalsh1; - vp9_second_order_fn_t iwalsh16; - - vp9_idct_fn_t idct8; - vp9_idct_fn_t idct10_8; - vp9_idct_fn_t idct8_1; - vp9_idct_scalar_add_fn_t idct1_scalar_add_8x8; - vp9_idct_fn_t ihaar2; - vp9_idct_fn_t ihaar2_1; - - vp9_idct_fn_t idct16x16; - vp9_idct_fn_t idct10_16x16; -} vp9_idct_rtcd_vtable_t; - -#if CONFIG_RUNTIME_CPU_DETECT -#define IDCT_INVOKE(ctx,fn) (ctx)->fn -#else -#define IDCT_INVOKE(ctx,fn) vp9_idct_##fn -#endif - -#endif diff --git a/vp9/common/idctllm.c b/vp9/common/idctllm.c index aa5665473..55b7a8571 100644 --- a/vp9/common/idctllm.c +++ b/vp9/common/idctllm.c @@ -25,7 +25,6 @@ #include #include #include "vpx_ports/config.h" -#include "vp9/common/idct.h" #include "vp9/common/systemdependent.h" #include "vp9/common/blockd.h" diff --git a/vp9/common/invtrans.c b/vp9/common/invtrans.c index f972afa4c..ac5553e6e 100644 --- a/vp9/common/invtrans.c +++ b/vp9/common/invtrans.c @@ -9,6 +9,7 @@ */ #include "invtrans.h" +#include "./vp9_rtcd.h" static void recon_dcblock(MACROBLOCKD *xd) { BLOCKD *b = &xd->block[24]; @@ -28,108 +29,92 @@ static void recon_dcblock_8x8(MACROBLOCKD *xd) { xd->block[12].dqcoeff[0] = b->diff[8]; } -void vp9_inverse_transform_b_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - BLOCKD *b, int pitch) { +void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int block, int pitch) { + BLOCKD *b = &xd->block[block]; if (b->eob <= 1) - IDCT_INVOKE(rtcd, idct1)(b->dqcoeff, b->diff, pitch); + xd->inv_xform4x4_1_x8(b->dqcoeff, b->diff, pitch); else - IDCT_INVOKE(rtcd, idct16)(b->dqcoeff, b->diff, pitch); + xd->inv_xform4x4_x8(b->dqcoeff, b->diff, pitch); } -void vp9_inverse_transform_mby_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { +void vp9_inverse_transform_mby_4x4(MACROBLOCKD *xd) { int i; BLOCKD *blockd = xd->block; if (xd->mode_info_context->mbmi.mode != SPLITMV) { /* do 2nd order transform on the dc block */ - IDCT_INVOKE(rtcd, iwalsh16)(blockd[24].dqcoeff, blockd[24].diff); + vp9_short_inv_walsh4x4(blockd[24].dqcoeff, blockd[24].diff); recon_dcblock(xd); } for (i = 0; i < 16; i++) { - vp9_inverse_transform_b_4x4(rtcd, &blockd[i], 32); + vp9_inverse_transform_b_4x4(xd, i, 32); } } -void vp9_inverse_transform_mbuv_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { +void vp9_inverse_transform_mbuv_4x4(MACROBLOCKD *xd) { int i; - BLOCKD *blockd = xd->block; - for (i = 16; i < 24; i++) { - vp9_inverse_transform_b_4x4(rtcd, &blockd[i], 16); + vp9_inverse_transform_b_4x4(xd, i, 16); } } -void vp9_inverse_transform_mb_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { - vp9_inverse_transform_mby_4x4(rtcd, xd); - vp9_inverse_transform_mbuv_4x4(rtcd, xd); +void vp9_inverse_transform_mb_4x4(MACROBLOCKD *xd) { + vp9_inverse_transform_mby_4x4(xd); + vp9_inverse_transform_mbuv_4x4(xd); } -void vp9_inverse_transform_b_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - short *input_dqcoeff, short *output_coeff, +void vp9_inverse_transform_b_8x8(short *input_dqcoeff, short *output_coeff, int pitch) { - // int b,i; - // if (b->eob > 1) - IDCT_INVOKE(rtcd, idct8)(input_dqcoeff, output_coeff, pitch); - // else - // IDCT_INVOKE(rtcd, idct8_1)(b->dqcoeff, b->diff, pitch);//pitch + vp9_short_idct8x8(input_dqcoeff, output_coeff, pitch); } -void vp9_inverse_transform_mby_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { +void vp9_inverse_transform_mby_8x8(MACROBLOCKD *xd) { int i; BLOCKD *blockd = xd->block; if (xd->mode_info_context->mbmi.mode != SPLITMV) { // do 2nd order transform on the dc block - IDCT_INVOKE(rtcd, ihaar2)(blockd[24].dqcoeff, blockd[24].diff, 8); + vp9_short_ihaar2x2(blockd[24].dqcoeff, blockd[24].diff, 8); recon_dcblock_8x8(xd); // need to change for 8x8 } for (i = 0; i < 9; i += 8) { - vp9_inverse_transform_b_8x8(rtcd, &blockd[i].dqcoeff[0], + vp9_inverse_transform_b_8x8(&blockd[i].dqcoeff[0], &blockd[i].diff[0], 32); } for (i = 2; i < 11; i += 8) { - vp9_inverse_transform_b_8x8(rtcd, &blockd[i + 2].dqcoeff[0], + vp9_inverse_transform_b_8x8(&blockd[i + 2].dqcoeff[0], &blockd[i].diff[0], 32); } } -void vp9_inverse_transform_mbuv_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { +void vp9_inverse_transform_mbuv_8x8(MACROBLOCKD *xd) { int i; BLOCKD *blockd = xd->block; for (i = 16; i < 24; i += 4) { - vp9_inverse_transform_b_8x8(rtcd, &blockd[i].dqcoeff[0], + vp9_inverse_transform_b_8x8(&blockd[i].dqcoeff[0], &blockd[i].diff[0], 16); } } -void vp9_inverse_transform_mb_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { - vp9_inverse_transform_mby_8x8(rtcd, xd); - vp9_inverse_transform_mbuv_8x8(rtcd, xd); +void vp9_inverse_transform_mb_8x8(MACROBLOCKD *xd) { + vp9_inverse_transform_mby_8x8(xd); + vp9_inverse_transform_mbuv_8x8(xd); } -void vp9_inverse_transform_b_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - short *input_dqcoeff, +void vp9_inverse_transform_b_16x16(short *input_dqcoeff, short *output_coeff, int pitch) { - IDCT_INVOKE(rtcd, idct16x16)(input_dqcoeff, output_coeff, pitch); + vp9_short_idct16x16(input_dqcoeff, output_coeff, pitch); } -void vp9_inverse_transform_mby_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { - vp9_inverse_transform_b_16x16(rtcd, &xd->block[0].dqcoeff[0], +void vp9_inverse_transform_mby_16x16(MACROBLOCKD *xd) { + vp9_inverse_transform_b_16x16(&xd->block[0].dqcoeff[0], &xd->block[0].diff[0], 32); } -void vp9_inverse_transform_mb_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd) { - vp9_inverse_transform_mby_16x16(rtcd, xd); - vp9_inverse_transform_mbuv_8x8(rtcd, xd); +void vp9_inverse_transform_mb_16x16(MACROBLOCKD *xd) { + vp9_inverse_transform_mby_16x16(xd); + vp9_inverse_transform_mbuv_8x8(xd); } diff --git a/vp9/common/invtrans.h b/vp9/common/invtrans.h index 370964f1c..58dc4d704 100644 --- a/vp9/common/invtrans.h +++ b/vp9/common/invtrans.h @@ -12,42 +12,30 @@ #define __INC_INVTRANS_H #include "vpx_ports/config.h" -#include "idct.h" #include "blockd.h" -extern void vp9_inverse_transform_b_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - BLOCKD *b, int pitch); +extern void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int block, int pitch); -extern void vp9_inverse_transform_mb_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mb_4x4(MACROBLOCKD *xd); -extern void vp9_inverse_transform_mby_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mby_4x4(MACROBLOCKD *xd); -extern void vp9_inverse_transform_mbuv_4x4(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mbuv_4x4(MACROBLOCKD *xd); -extern void vp9_inverse_transform_b_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - short *input_dqcoeff, +extern void vp9_inverse_transform_b_8x8(short *input_dqcoeff, short *output_coeff, int pitch); -extern void vp9_inverse_transform_mb_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mb_8x8(MACROBLOCKD *xd); -extern void vp9_inverse_transform_mby_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mby_8x8(MACROBLOCKD *xd); -extern void vp9_inverse_transform_mbuv_8x8(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mbuv_8x8(MACROBLOCKD *xd); -extern void vp9_inverse_transform_b_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - short *input_dqcoeff, +extern void vp9_inverse_transform_b_16x16(short *input_dqcoeff, short *output_coeff, int pitch); -extern void vp9_inverse_transform_mb_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mb_16x16(MACROBLOCKD *xd); -extern void vp9_inverse_transform_mby_16x16(const vp9_idct_rtcd_vtable_t *rtcd, - MACROBLOCKD *xd); +extern void vp9_inverse_transform_mby_16x16(MACROBLOCKD *xd); #endif // __INC_INVTRANS_H diff --git a/vp9/common/onyxc_int.h b/vp9/common/onyxc_int.h index fbb4e599f..27a6ca132 100644 --- a/vp9/common/onyxc_int.h +++ b/vp9/common/onyxc_int.h @@ -19,7 +19,6 @@ #include "entropymv.h" #include "entropy.h" #include "entropymode.h" -#include "idct.h" #if CONFIG_POSTPROC #include "postproc.h" #endif @@ -148,7 +147,6 @@ typedef enum { typedef struct VP9_COMMON_RTCD { #if CONFIG_RUNTIME_CPU_DETECT - vp9_idct_rtcd_vtable_t idct; #if CONFIG_POSTPROC vp9_postproc_rtcd_vtable_t postproc; #endif diff --git a/vp9/common/ppc/systemdependent.c b/vp9/common/ppc/systemdependent.c index ba4f236a8..941c11bd6 100644 --- a/vp9/common/ppc/systemdependent.c +++ b/vp9/common/ppc/systemdependent.c @@ -11,7 +11,6 @@ #include "subpixel.h" #include "loopfilter.h" #include "recon.h" -#include "idct.h" #include "onyxc_int.h" void (*vp8_short_idct4x4)(short *input, short *output, int pitch); diff --git a/vp9/common/rtcd_defs.sh b/vp9/common/rtcd_defs.sh index 260214261..bbef1ec49 100644 --- a/vp9/common/rtcd_defs.sh +++ b/vp9/common/rtcd_defs.sh @@ -227,6 +227,9 @@ specialize vp9_sad16x3 sse2 prototype unsigned int vp9_sad3x16 "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" specialize vp9_sad3x16 sse2 +# +# Sub Pixel Filters +# prototype void vp9_eighttap_predict16x16 "unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch" specialize vp9_eighttap_predict16x16 @@ -311,6 +314,57 @@ specialize vp9_bilinear_predict4x4 mmx prototype void vp9_bilinear_predict_avg4x4 "unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch" specialize vp9_bilinear_predict_avg4x4 +# +# dct +# +prototype void vp9_short_idct4x4llm_1 "short *input, short *output, int pitch" +specialize vp9_short_idct4x4llm_1 mmx + +prototype void vp9_short_idct4x4llm "short *input, short *output, int pitch" +specialize vp9_short_idct4x4llm mmx + +prototype void vp9_short_idct8x8 "short *input, short *output, int pitch" +specialize vp9_short_idct8x8 + +prototype void vp9_short_idct10_8x8 "short *input, short *output, int pitch" +specialize vp9_short_idct10_8x8 + +prototype void vp9_short_ihaar2x2 "short *input, short *output, int pitch" +specialize vp9_short_ihaar2x2 + +prototype void vp9_short_idct16x16 "short *input, short *output, int pitch" +specialize vp9_short_idct16x16 + +prototype void vp9_short_idct10_16x16 "short *input, short *output, int pitch" +specialize vp9_short_idct10_16x16 + +# +# 2nd order +# +prototype void vp9_short_inv_walsh4x4_1 "short *in, short *out" +specialize vp9_short_inv_walsh4x4_1 + +prototype void vp9_short_inv_walsh4x4 "short *in, short *out" +specialize vp9_short_inv_walsh4x4_ + + +# dct and add +prototype void vp9_dc_only_idct_add_8x8 "short input_dc, unsigned char *pred_ptr, unsigned char *dst_ptr, int pitch, int stride" +specialize vp9_dc_only_idct_add_8x8 + +prototype void vp9_dc_only_idct_add "short input_dc, unsigned char *pred_ptr, unsigned char *dst_ptr, int pitch, int stride" +specialize vp9_dc_only_idct_add + +if [ "$CONFIG_LOSSLESS" = "yes" ]; then +prototype void vp9_short_inv_walsh4x4_1_x8 "short *input, short *output, int pitch" +prototype void vp9_short_inv_walsh4x4_x8 "short *input, short *output, int pitch" +prototype void vp9_dc_only_inv_walsh_add "short input_dc, unsigned char *pred_ptr, unsigned char *dst_ptr, int pitch, int stride" +prototype void vp9_short_inv_walsh4x4_1_lossless "short *in, short *out" +prototype void vp9_short_inv_walsh4x4_lossless "short *in, short *out" +fi + + + if [ "$CONFIG_SUPERBLOCKS" = "yes" ]; then prototype unsigned int vp9_sad32x3 "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, int max_sad" diff --git a/vp9/common/x86/x86_systemdependent.c b/vp9/common/x86/x86_systemdependent.c index 3cf381091..62e75ffde 100644 --- a/vp9/common/x86/x86_systemdependent.c +++ b/vp9/common/x86/x86_systemdependent.c @@ -11,7 +11,6 @@ #include "vpx_config.h" #include "vpx_ports/x86.h" #include "vp9/common/loopfilter.h" -#include "vp9/common/idct.h" #include "vp9/common/pragmas.h" #include "vp9/common/onyxc_int.h" @@ -31,11 +30,6 @@ void vp9_arch_x86_common_init(VP9_COMMON *ctx) { #if HAVE_MMX // The commented functions need to be re-written for vpx. if (flags & HAS_MMX) { - rtcd->idct.idct1 = vp9_short_idct4x4llm_1_mmx; - rtcd->idct.idct16 = vp9_short_idct4x4llm_mmx; - rtcd->idct.idct1_scalar_add = vp9_dc_only_idct_add_mmx; - // rtcd->idct.iwalsh16 = vp9_short_inv_walsh4x4_mmx; - // rtcd->idct.iwalsh1 = vp9_short_inv_walsh4x4_1_mmx; #if CONFIG_POSTPROC rtcd->postproc.down = vp9_mbpost_proc_down_mmx; diff --git a/vp9/decoder/arm/armv6/idct_blk_v6.c b/vp9/decoder/arm/armv6/idct_blk_v6.c index e430f2995..bf0c8141d 100644 --- a/vp9/decoder/arm/armv6/idct_blk_v6.c +++ b/vp9/decoder/arm/armv6/idct_blk_v6.c @@ -9,7 +9,7 @@ */ #include "vpx_ports/config.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" #include "vp9/decoder/dequantize.h" void vp8_dequant_dc_idct_add_y_block_v6(short *q, short *dq, diff --git a/vp9/decoder/arm/dequantize_arm.c b/vp9/decoder/arm/dequantize_arm.c index cc2ff313a..5ec78f39f 100644 --- a/vp9/decoder/arm/dequantize_arm.c +++ b/vp9/decoder/arm/dequantize_arm.c @@ -11,7 +11,7 @@ #include "vpx_ports/config.h" #include "vp9/decoder/dequantize.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" #include "vpx_mem/vpx_mem.h" #if HAVE_ARMV7 diff --git a/vp9/decoder/arm/neon/idct_blk_neon.c b/vp9/decoder/arm/neon/idct_blk_neon.c index 5711e86e8..cc68fd496 100644 --- a/vp9/decoder/arm/neon/idct_blk_neon.c +++ b/vp9/decoder/arm/neon/idct_blk_neon.c @@ -9,7 +9,7 @@ */ #include "vpx_ports/config.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" #include "vp9/decoder/dequantize.h" /* place these declarations here because we don't want to maintain them diff --git a/vp9/decoder/decodframe.c b/vp9/decoder/decodframe.c index 46821073f..a57989424 100644 --- a/vp9/decoder/decodframe.c +++ b/vp9/decoder/decodframe.c @@ -27,7 +27,6 @@ #include "vp9/common/extend.h" #include "vp9/common/modecont.h" #include "vpx_mem/vpx_mem.h" -#include "vp9/common/idct.h" #include "dboolhuff.h" #include "vp9/common/seg_common.h" @@ -122,22 +121,20 @@ static void mb_init_dequantizer(VP9D_COMP *pbi, MACROBLOCKD *xd) { #if CONFIG_LOSSLESS if (!QIndex) { - pbi->common.rtcd.idct.idct1 = vp9_short_inv_walsh4x4_1_x8_c; - pbi->common.rtcd.idct.idct16 = vp9_short_inv_walsh4x4_x8_c; - pbi->common.rtcd.idct.idct1_scalar_add = vp9_dc_only_inv_walsh_add_c; - pbi->common.rtcd.idct.iwalsh1 = vp9_short_inv_walsh4x4_1_lossless_c; - pbi->common.rtcd.idct.iwalsh16 = vp9_short_inv_walsh4x4_lossless_c; + pbi->mb.inv_xform4x4_1_x8 = vp9_short_inv_walsh4x4_1_x8; + pbi->mb.inv_xform4x4_x8 = vp9_short_inv_walsh4x4_x8; + pbi->mb.inv_walsh4x4_1 = vp9_short_inv_walsh4x4_1_lossless; + pbi->mb.inv_walsh4x4_lossless = vp9_short_inv_walsh4x4_lossless; pbi->idct_add = vp9_dequant_idct_add_lossless_c; pbi->dc_idct_add = vp9_dequant_dc_idct_add_lossless_c; pbi->dc_idct_add_y_block = vp9_dequant_dc_idct_add_y_block_lossless_c; pbi->idct_add_y_block = vp9_dequant_idct_add_y_block_lossless_c; pbi->idct_add_uv_block = vp9_dequant_idct_add_uv_block_lossless_c; } else { - pbi->common.rtcd.idct.idct1 = vp9_short_idct4x4llm_1_c; - pbi->common.rtcd.idct.idct16 = vp9_short_idct4x4llm_c; - pbi->common.rtcd.idct.idct1_scalar_add = vp9_dc_only_idct_add_c; - pbi->common.rtcd.idct.iwalsh1 = vp9_short_inv_walsh4x4_1_c; - pbi->common.rtcd.idct.iwalsh16 = vp9_short_inv_walsh4x4_c; + pbi->mb.inv_xform4x4_1_x8 = vp9_short_idct4x4llm_1; + pbi->mb.inv_xform4x4_x8 = vp9_short_idct4x4llm; + pbi->mb.inv_walsh4x4_1 = vp9_short_inv_walsh4x4_1; + pbi->mb.inv_walsh4x4_lossless = vp9_short_inv_walsh4x4; pbi->idct_add = vp9_dequant_idct_add; pbi->dc_idct_add = vp9_dequant_dc_idct_add; pbi->dc_idct_add_y_block = vp9_dequant_dc_idct_add_y_block; @@ -145,6 +142,10 @@ static void mb_init_dequantizer(VP9D_COMP *pbi, MACROBLOCKD *xd) { pbi->idct_add_uv_block = vp9_dequant_idct_add_uv_block; } #else + pbi->mb.inv_xform4x4_1_x8 = vp9_short_idct4x4llm_1; + pbi->mb.inv_xform4x4_x8 = vp9_short_idct4x4llm; + pbi->mb.inv_walsh4x4_1 = vp9_short_inv_walsh4x4_1; + pbi->mb.inv_walsh4x4_lossless = vp9_short_inv_walsh4x4; pbi->idct_add = vp9_dequant_idct_add; pbi->dc_idct_add = vp9_dequant_dc_idct_add; pbi->dc_idct_add_y_block = vp9_dequant_dc_idct_add_y_block; @@ -311,7 +312,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd, xd->dst.uv_stride, xd->eobs + 16, xd); } else if (tx_size == TX_8X8) { vp9_dequantize_b_2x2(b); - IDCT_INVOKE(RTCD_VTABLE(idct), ihaar2)(&b->dqcoeff[0], b->diff, 8); + vp9_short_ihaar2x2(&b->dqcoeff[0], b->diff, 8); ((int *)b->qcoeff)[0] = 0; // 2nd order block are set to 0 after idct ((int *)b->qcoeff)[1] = 0; ((int *)b->qcoeff)[2] = 0; @@ -332,7 +333,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd, } else { vp9_dequantize_b(b); if (xd->eobs[24] > 1) { - IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0], b->diff); + vp9_short_inv_walsh4x4(&b->dqcoeff[0], b->diff); ((int *)b->qcoeff)[0] = 0; ((int *)b->qcoeff)[1] = 0; ((int *)b->qcoeff)[2] = 0; @@ -342,7 +343,7 @@ static void decode_superblock(VP9D_COMP *pbi, MACROBLOCKD *xd, ((int *)b->qcoeff)[6] = 0; ((int *)b->qcoeff)[7] = 0; } else { - IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh1)(&b->dqcoeff[0], b->diff); + xd->inv_walsh4x4_1(&b->dqcoeff[0], b->diff); ((int *)b->qcoeff)[0] = 0; } @@ -539,12 +540,12 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd, xd->dst.y_buffer, 16, xd->dst.y_stride); } else { vp9_dequant_idct_add_16x16(xd->qcoeff, xd->block[0].dequant, - xd->predictor, xd->dst.y_buffer, - 16, xd->dst.y_stride, xd->eobs[0]); + xd->predictor, xd->dst.y_buffer, + 16, xd->dst.y_stride, xd->eobs[0]); } } else if (tx_size == TX_8X8) { vp9_dequantize_b_2x2(b); - IDCT_INVOKE(RTCD_VTABLE(idct), ihaar2)(&b->dqcoeff[0], b->diff, 8); + vp9_short_ihaar2x2(&b->dqcoeff[0], b->diff, 8); ((int *)b->qcoeff)[0] = 0; // 2nd order block are set to 0 after idct ((int *)b->qcoeff)[1] = 0; ((int *)b->qcoeff)[2] = 0; @@ -553,13 +554,13 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd, ((int *)b->qcoeff)[5] = 0; ((int *)b->qcoeff)[6] = 0; ((int *)b->qcoeff)[7] = 0; - vp9_dequant_dc_idct_add_y_block_8x8(xd->qcoeff, + vp9_dequant_dc_idct_add_y_block_8x8(xd->qcoeff, xd->block[0].dequant, xd->predictor, xd->dst.y_buffer, xd->dst.y_stride, xd->eobs, xd->block[24].diff, xd); } else { vp9_dequantize_b(b); if (xd->eobs[24] > 1) { - IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0], b->diff); + vp9_short_inv_walsh4x4(&b->dqcoeff[0], b->diff); ((int *)b->qcoeff)[0] = 0; ((int *)b->qcoeff)[1] = 0; ((int *)b->qcoeff)[2] = 0; @@ -569,7 +570,7 @@ static void decode_macroblock(VP9D_COMP *pbi, MACROBLOCKD *xd, ((int *)b->qcoeff)[6] = 0; ((int *)b->qcoeff)[7] = 0; } else { - IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh1)(&b->dqcoeff[0], b->diff); + xd->inv_walsh4x4_1(&b->dqcoeff[0], b->diff); ((int *)b->qcoeff)[0] = 0; } diff --git a/vp9/decoder/dequantize.c b/vp9/decoder/dequantize.c index 4f45af75f..37e8e4cee 100644 --- a/vp9/decoder/dequantize.c +++ b/vp9/decoder/dequantize.c @@ -11,7 +11,6 @@ #include "vp9_rtcd.h" #include "dequantize.h" -#include "vp9/common/idct.h" #include "vpx_mem/vpx_mem.h" #include "onyxd_int.h" diff --git a/vp9/decoder/idct_blk.c b/vp9/decoder/idct_blk.c index 7805aa09e..98eb81ca6 100644 --- a/vp9/decoder/idct_blk.c +++ b/vp9/decoder/idct_blk.c @@ -9,7 +9,7 @@ */ #include "vp9_rtcd.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" void vp9_dequant_dc_idct_add_y_block_c(short *q, const short *dq, unsigned char *pre, diff --git a/vp9/decoder/x86/idct_blk_mmx.c b/vp9/decoder/x86/idct_blk_mmx.c index 22f3e3040..8445b28f0 100644 --- a/vp9/decoder/x86/idct_blk_mmx.c +++ b/vp9/decoder/x86/idct_blk_mmx.c @@ -9,7 +9,7 @@ */ #include "vpx_ports/config.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" #include "vp9/decoder/dequantize.h" void vp9_dequant_dc_idct_add_y_block_mmx(short *q, const short *dq, diff --git a/vp9/decoder/x86/idct_blk_sse2.c b/vp9/decoder/x86/idct_blk_sse2.c index 93c2f3e3f..6e66f5347 100644 --- a/vp9/decoder/x86/idct_blk_sse2.c +++ b/vp9/decoder/x86/idct_blk_sse2.c @@ -9,7 +9,7 @@ */ #include "vpx_ports/config.h" -#include "vp9/common/idct.h" +#include "vp9/common/blockd.h" #include "vp9/decoder/dequantize.h" void vp9_idct_dequant_dc_0_2x_sse2(short *q, const short *dq, diff --git a/vp9/encoder/dct.c b/vp9/encoder/dct.c index 5be2d76d5..108bdbeb0 100644 --- a/vp9/encoder/dct.c +++ b/vp9/encoder/dct.c @@ -12,7 +12,6 @@ #include #include #include "vpx_ports/config.h" -#include "vp9/common/idct.h" #include "vp9/common/systemdependent.h" #include "vp9/common/blockd.h" diff --git a/vp9/encoder/encodeframe.c b/vp9/encoder/encodeframe.c index 7d72dcc30..6ad9eaeed 100644 --- a/vp9/encoder/encodeframe.c +++ b/vp9/encoder/encodeframe.c @@ -2077,14 +2077,14 @@ static void encode_macroblock(VP9_COMP *cpi, MACROBLOCK *x, if (mbmi->ref_frame == INTRA_FRAME) { if (mbmi->mode == B_PRED) { - vp9_encode_intra16x16mbuv(IF_RTCD(&cpi->rtcd), x); - vp9_encode_intra4x4mby(IF_RTCD(&cpi->rtcd), x); + vp9_encode_intra16x16mbuv(x); + vp9_encode_intra4x4mby(x); } else if (mbmi->mode == I8X8_PRED) { - vp9_encode_intra8x8mby(IF_RTCD(&cpi->rtcd), x); - vp9_encode_intra8x8mbuv(IF_RTCD(&cpi->rtcd), x); + vp9_encode_intra8x8mby(x); + vp9_encode_intra8x8mbuv(x); } else { - vp9_encode_intra16x16mbuv(IF_RTCD(&cpi->rtcd), x); - vp9_encode_intra16x16mby(IF_RTCD(&cpi->rtcd), x); + vp9_encode_intra16x16mbuv(x); + vp9_encode_intra16x16mby(x); } if (output_enabled) @@ -2124,7 +2124,7 @@ static void encode_macroblock(VP9_COMP *cpi, MACROBLOCK *x, } if (!x->skip) { - vp9_encode_inter16x16(IF_RTCD(&cpi->rtcd), x); + vp9_encode_inter16x16(x); // Clear mb_skip_coeff if mb_no_coeff_skip is not set if (!cpi->common.mb_no_coeff_skip) @@ -2226,7 +2226,6 @@ static void encode_superblock(VP9_COMP *cpi, MACROBLOCK *x, uint8_t *vdst = xd->dst.v_buffer; int src_y_stride = x->src.y_stride, dst_y_stride = xd->dst.y_stride; int src_uv_stride = x->src.uv_stride, dst_uv_stride = xd->dst.uv_stride; - const VP9_ENCODER_RTCD *rtcd = IF_RTCD(&cpi->rtcd); int seg_ref_active; unsigned char ref_pred_flag; int n; @@ -2343,7 +2342,7 @@ static void encode_superblock(VP9_COMP *cpi, MACROBLOCK *x, udst + x_idx * 8 + y_idx * 8 * dst_uv_stride, vdst + x_idx * 8 + y_idx * 8 * dst_uv_stride, dst_uv_stride); - vp9_fidct_mb(x, rtcd); + vp9_fidct_mb(x); vp9_recon_mby_s_c(&x->e_mbd, dst + x_idx * 16 + y_idx * 16 * dst_y_stride); vp9_recon_mbuv_s_c(&x->e_mbd, diff --git a/vp9/encoder/encodeintra.c b/vp9/encoder/encodeintra.c index a6bc1c3be..42e5e1873 100644 --- a/vp9/encoder/encodeintra.c +++ b/vp9/encoder/encodeintra.c @@ -10,7 +10,6 @@ #include "vpx_ports/config.h" #include "vp9_rtcd.h" -#include "vp9/common/idct.h" #include "quantize.h" #include "vp9/common/reconintra.h" #include "vp9/common/reconintra4x4.h" @@ -38,11 +37,11 @@ int vp9_encode_intra(VP9_COMP *cpi, MACROBLOCK *x, int use_16x16_pred) { mbmi->uv_mode = DC_PRED; mbmi->ref_frame = INTRA_FRAME; - vp9_encode_intra16x16mby(IF_RTCD(&cpi->rtcd), x); + vp9_encode_intra16x16mby(x); } else { for (i = 0; i < 16; i++) { x->e_mbd.block[i].bmi.as_mode.first = B_DC_PRED; - vp9_encode_intra4x4block(IF_RTCD(&cpi->rtcd), x, i); + vp9_encode_intra4x4block(x, i); } } @@ -51,8 +50,7 @@ int vp9_encode_intra(VP9_COMP *cpi, MACROBLOCK *x, int use_16x16_pred) { return intra_pred_var; } -void vp9_encode_intra4x4block(const VP9_ENCODER_RTCD *rtcd, - MACROBLOCK *x, int ib) { +void vp9_encode_intra4x4block(MACROBLOCK *x, int ib) { BLOCKD *b = &x->e_mbd.block[ib]; BLOCK *be = &x->block[ib]; TX_TYPE tx_type; @@ -82,21 +80,21 @@ void vp9_encode_intra4x4block(const VP9_ENCODER_RTCD *rtcd, } else { x->vp9_short_fdct4x4(be->src_diff, be->coeff, 32); x->quantize_b_4x4(be, b) ; - vp9_inverse_transform_b_4x4(IF_RTCD(&rtcd->common->idct), b, 32); + vp9_inverse_transform_b_4x4(&x->e_mbd, ib, 32); } vp9_recon_b(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); } -void vp9_encode_intra4x4mby(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *mb) { +void vp9_encode_intra4x4mby(MACROBLOCK *mb) { int i; for (i = 0; i < 16; i++) - vp9_encode_intra4x4block(rtcd, mb, i); + vp9_encode_intra4x4block(mb, i); return; } -void vp9_encode_intra16x16mby(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_intra16x16mby(MACROBLOCK *x) { MACROBLOCKD *xd = &x->e_mbd; BLOCK *b = &x->block[0]; TX_SIZE tx_size = xd->mode_info_context->mbmi.txfm_size; @@ -120,33 +118,33 @@ void vp9_encode_intra16x16mby(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { vp9_fht(b->src_diff, 32, b->coeff, tx_type, 16); vp9_quantize_mby_16x16(x); if (x->optimize) - vp9_optimize_mby_16x16(x, rtcd); + vp9_optimize_mby_16x16(x); vp9_ihtllm_c(bd->dqcoeff, bd->diff, 32, tx_type, 16); } else { vp9_transform_mby_16x16(x); vp9_quantize_mby_16x16(x); if (x->optimize) - vp9_optimize_mby_16x16(x, rtcd); - vp9_inverse_transform_mby_16x16(IF_RTCD(&rtcd->common->idct), xd); + vp9_optimize_mby_16x16(x); + vp9_inverse_transform_mby_16x16(xd); } } else if (tx_size == TX_8X8) { vp9_transform_mby_8x8(x); vp9_quantize_mby_8x8(x); if (x->optimize) - vp9_optimize_mby_8x8(x, rtcd); - vp9_inverse_transform_mby_8x8(IF_RTCD(&rtcd->common->idct), xd); + vp9_optimize_mby_8x8(x); + vp9_inverse_transform_mby_8x8(xd); } else { vp9_transform_mby_4x4(x); vp9_quantize_mby_4x4(x); if (x->optimize) - vp9_optimize_mby_4x4(x, rtcd); - vp9_inverse_transform_mby_4x4(IF_RTCD(&rtcd->common->idct), xd); + vp9_optimize_mby_4x4(x); + vp9_inverse_transform_mby_4x4(xd); } vp9_recon_mby(xd); } -void vp9_encode_intra16x16mbuv(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_intra16x16mbuv(MACROBLOCK *x) { MACROBLOCKD *xd = &x->e_mbd; TX_SIZE tx_size = xd->mode_info_context->mbmi.txfm_size; @@ -167,21 +165,20 @@ void vp9_encode_intra16x16mbuv(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { vp9_transform_mbuv_4x4(x); vp9_quantize_mbuv_4x4(x); if (x->optimize) - vp9_optimize_mbuv_4x4(x, rtcd); - vp9_inverse_transform_mbuv_4x4(IF_RTCD(&rtcd->common->idct), xd); + vp9_optimize_mbuv_4x4(x); + vp9_inverse_transform_mbuv_4x4(xd); } else /* 16x16 or 8x8 */ { vp9_transform_mbuv_8x8(x); vp9_quantize_mbuv_8x8(x); if (x->optimize) - vp9_optimize_mbuv_8x8(x, rtcd); - vp9_inverse_transform_mbuv_8x8(IF_RTCD(&rtcd->common->idct), xd); + vp9_optimize_mbuv_8x8(x); + vp9_inverse_transform_mbuv_8x8(xd); } vp9_recon_intra_mbuv(xd); } -void vp9_encode_intra8x8(const VP9_ENCODER_RTCD *rtcd, - MACROBLOCK *x, int ib) { +void vp9_encode_intra8x8(MACROBLOCK *x, int ib) { MACROBLOCKD *xd = &x->e_mbd; BLOCKD *b = &xd->block[ib]; BLOCK *be = &x->block[ib]; @@ -216,7 +213,7 @@ void vp9_encode_intra8x8(const VP9_ENCODER_RTCD *rtcd, } else { x->vp9_short_fdct8x8(be->src_diff, (x->block + idx)->coeff, 32); x->quantize_b_8x8(x->block + idx, xd->block + idx); - vp9_idct_idct8(xd->block[idx].dqcoeff, xd->block[ib].diff, 32); + vp9_short_idct8x8(xd->block[idx].dqcoeff, xd->block[ib].diff, 32); } } else { for (i = 0; i < 4; i++) { @@ -225,7 +222,7 @@ void vp9_encode_intra8x8(const VP9_ENCODER_RTCD *rtcd, vp9_subtract_b(be, b, 16); x->vp9_short_fdct4x4(be->src_diff, be->coeff, 32); x->quantize_b_4x4(be, b); - vp9_inverse_transform_b_4x4(IF_RTCD(&rtcd->common->idct), b, 32); + vp9_inverse_transform_b_4x4(xd, ib + iblock[i], 32); } } @@ -237,17 +234,16 @@ void vp9_encode_intra8x8(const VP9_ENCODER_RTCD *rtcd, } } -void vp9_encode_intra8x8mby(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_intra8x8mby(MACROBLOCK *x) { int i, ib; for (i = 0; i < 4; i++) { ib = vp9_i8x8_block[i]; - vp9_encode_intra8x8(rtcd, x, ib); + vp9_encode_intra8x8(x, ib); } } -void vp9_encode_intra_uv4x4(const VP9_ENCODER_RTCD *rtcd, - MACROBLOCK *x, int ib, +void vp9_encode_intra_uv4x4(MACROBLOCK *x, int ib, int mode, int second) { BLOCKD *b = &x->e_mbd.block[ib]; BLOCK *be = &x->block[ib]; @@ -266,13 +262,13 @@ void vp9_encode_intra_uv4x4(const VP9_ENCODER_RTCD *rtcd, x->vp9_short_fdct4x4(be->src_diff, be->coeff, 16); x->quantize_b_4x4(be, b); - vp9_inverse_transform_b_4x4(IF_RTCD(&rtcd->common->idct), b, 16); + vp9_inverse_transform_b_4x4(&x->e_mbd, ib, 16); vp9_recon_uv_b_c(b->predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); } -void vp9_encode_intra8x8mbuv(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_intra8x8mbuv(MACROBLOCK *x) { int i, ib, mode, second; BLOCKD *b; @@ -286,8 +282,8 @@ void vp9_encode_intra8x8mbuv(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { second = -1; #endif /*u */ - vp9_encode_intra_uv4x4(rtcd, x, i + 16, mode, second); + vp9_encode_intra_uv4x4(x, i + 16, mode, second); /*v */ - vp9_encode_intra_uv4x4(rtcd, x, i + 20, mode, second); + vp9_encode_intra_uv4x4(x, i + 20, mode, second); } } diff --git a/vp9/encoder/encodeintra.h b/vp9/encoder/encodeintra.h index 38b42b71e..9326ad657 100644 --- a/vp9/encoder/encodeintra.h +++ b/vp9/encoder/encodeintra.h @@ -14,14 +14,12 @@ #include "onyx_int.h" int vp9_encode_intra(VP9_COMP *cpi, MACROBLOCK *x, int use_16x16_pred); -void vp9_encode_intra16x16mby(const VP9_ENCODER_RTCD *, MACROBLOCK *x); -void vp9_encode_intra16x16mbuv(const VP9_ENCODER_RTCD *, MACROBLOCK *x); -void vp9_encode_intra4x4mby(const VP9_ENCODER_RTCD *, MACROBLOCK *mb); -void vp9_encode_intra4x4block(const VP9_ENCODER_RTCD *rtcd, - MACROBLOCK *x, int ib); -void vp9_encode_intra8x8mby(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x); -void vp9_encode_intra8x8mbuv(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x); -void vp9_encode_intra8x8(const VP9_ENCODER_RTCD *rtcd, - MACROBLOCK *x, int ib); +void vp9_encode_intra16x16mby(MACROBLOCK *x); +void vp9_encode_intra16x16mbuv(MACROBLOCK *x); +void vp9_encode_intra4x4mby(MACROBLOCK *mb); +void vp9_encode_intra4x4block(MACROBLOCK *x, int ib); +void vp9_encode_intra8x8mby(MACROBLOCK *x); +void vp9_encode_intra8x8mbuv(MACROBLOCK *x); +void vp9_encode_intra8x8(MACROBLOCK *x, int ib); #endif // __ENCODEINTRA_H_ diff --git a/vp9/encoder/encodemb.c b/vp9/encoder/encodemb.c index 6774a88f5..136a24893 100644 --- a/vp9/encoder/encodemb.c +++ b/vp9/encoder/encodemb.c @@ -20,12 +20,6 @@ #include "vp9/common/systemdependent.h" #include "vp9_rtcd.h" -#if CONFIG_RUNTIME_CPU_DETECT -#define IF_RTCD(x) (x) -#else -#define IF_RTCD(x) NULL -#endif - void vp9_subtract_b_c(BLOCK *be, BLOCKD *bd, int pitch) { unsigned char *src_ptr = (*(be->base_src) + be->src); short *diff_ptr = be->src_diff; @@ -119,7 +113,7 @@ void vp9_subtract_mby_c(short *diff, unsigned char *src, vp9_subtract_mby_s_c(diff, src, stride, pred, 16); } -static void subtract_mb(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +static void subtract_mb(MACROBLOCK *x) { BLOCK *b = &x->block[0]; vp9_subtract_mby(x->src_diff, *(b->base_src), x->e_mbd.predictor, @@ -265,7 +259,7 @@ static const int plane_rd_mult[4] = { static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type, ENTROPY_CONTEXT *a, ENTROPY_CONTEXT *l, - const VP9_ENCODER_RTCD *rtcd, int tx_size) { + int tx_size) { BLOCK *b; BLOCKD *d; vp9_token_state tokens[65][2]; @@ -567,7 +561,7 @@ static void check_reset_8x8_2nd_coeffs(MACROBLOCKD *xd, } } -void vp9_optimize_mby_4x4(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_optimize_mby_4x4(MACROBLOCK *x) { int b; PLANE_TYPE type; int has_2nd_order; @@ -590,19 +584,19 @@ void vp9_optimize_mby_4x4(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { for (b = 0; b < 16; b++) { optimize_b(x, b, type, - ta + vp9_block2above[b], tl + vp9_block2left[b], rtcd, TX_4X4); + ta + vp9_block2above[b], tl + vp9_block2left[b], TX_4X4); } if (has_2nd_order) { b = 24; optimize_b(x, b, PLANE_TYPE_Y2, - ta + vp9_block2above[b], tl + vp9_block2left[b], rtcd, TX_4X4); + ta + vp9_block2above[b], tl + vp9_block2left[b], TX_4X4); check_reset_2nd_coeffs(&x->e_mbd, ta + vp9_block2above[b], tl + vp9_block2left[b]); } } -void vp9_optimize_mbuv_4x4(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_optimize_mbuv_4x4(MACROBLOCK *x) { int b; ENTROPY_CONTEXT_PLANES t_above, t_left; ENTROPY_CONTEXT *ta; @@ -619,16 +613,16 @@ void vp9_optimize_mbuv_4x4(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { for (b = 16; b < 24; b++) { optimize_b(x, b, PLANE_TYPE_UV, - ta + vp9_block2above[b], tl + vp9_block2left[b], rtcd, TX_4X4); + ta + vp9_block2above[b], tl + vp9_block2left[b], TX_4X4); } } -static void optimize_mb_4x4(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { - vp9_optimize_mby_4x4(x, rtcd); - vp9_optimize_mbuv_4x4(x, rtcd); +static void optimize_mb_4x4(MACROBLOCK *x) { + vp9_optimize_mby_4x4(x); + vp9_optimize_mbuv_4x4(x); } -void vp9_optimize_mby_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_optimize_mby_8x8(MACROBLOCK *x) { int b; PLANE_TYPE type; ENTROPY_CONTEXT_PLANES t_above, t_left; @@ -648,7 +642,7 @@ void vp9_optimize_mby_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { for (b = 0; b < 16; b += 4) { optimize_b(x, b, type, ta + vp9_block2above_8x8[b], tl + vp9_block2left_8x8[b], - rtcd, TX_8X8); + TX_8X8); ta[vp9_block2above_8x8[b] + 1] = ta[vp9_block2above_8x8[b]]; tl[vp9_block2left_8x8[b] + 1] = tl[vp9_block2left_8x8[b]]; } @@ -661,7 +655,7 @@ void vp9_optimize_mby_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { } } -void vp9_optimize_mbuv_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_optimize_mbuv_8x8(MACROBLOCK *x) { int b; ENTROPY_CONTEXT_PLANES t_above, t_left; ENTROPY_CONTEXT *ta; @@ -679,20 +673,19 @@ void vp9_optimize_mbuv_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { for (b = 16; b < 24; b += 4) { optimize_b(x, b, PLANE_TYPE_UV, ta + vp9_block2above_8x8[b], tl + vp9_block2left_8x8[b], - rtcd, TX_8X8); + TX_8X8); ta[vp9_block2above_8x8[b] + 1] = ta[vp9_block2above_8x8[b]]; tl[vp9_block2left_8x8[b] + 1] = tl[vp9_block2left_8x8[b]]; } } -static void optimize_mb_8x8(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { - vp9_optimize_mby_8x8(x, rtcd); - vp9_optimize_mbuv_8x8(x, rtcd); +static void optimize_mb_8x8(MACROBLOCK *x) { + vp9_optimize_mby_8x8(x); + vp9_optimize_mbuv_8x8(x); } static void optimize_b_16x16(MACROBLOCK *mb, int i, PLANE_TYPE type, - ENTROPY_CONTEXT *a, ENTROPY_CONTEXT *l, - const VP9_ENCODER_RTCD *rtcd) { + ENTROPY_CONTEXT *a, ENTROPY_CONTEXT *l) { BLOCK *b = &mb->block[i]; BLOCKD *d = &mb->e_mbd.block[i]; vp9_token_state tokens[257][2]; @@ -864,7 +857,7 @@ static void optimize_b_16x16(MACROBLOCK *mb, int i, PLANE_TYPE type, *a = *l = (d->eob != !type); } -void vp9_optimize_mby_16x16(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_optimize_mby_16x16(MACROBLOCK *x) { ENTROPY_CONTEXT_PLANES t_above, t_left; ENTROPY_CONTEXT *ta, *tl; @@ -876,15 +869,15 @@ void vp9_optimize_mby_16x16(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { ta = (ENTROPY_CONTEXT *)&t_above; tl = (ENTROPY_CONTEXT *)&t_left; - optimize_b_16x16(x, 0, PLANE_TYPE_Y_WITH_DC, ta, tl, rtcd); + optimize_b_16x16(x, 0, PLANE_TYPE_Y_WITH_DC, ta, tl); } -static void optimize_mb_16x16(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { - vp9_optimize_mby_16x16(x, rtcd); - vp9_optimize_mbuv_8x8(x, rtcd); +static void optimize_mb_16x16(MACROBLOCK *x) { + vp9_optimize_mby_16x16(x); + vp9_optimize_mbuv_8x8(x); } -void vp9_fidct_mb(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { +void vp9_fidct_mb(MACROBLOCK *x) { MACROBLOCKD *const xd = &x->e_mbd; TX_SIZE tx_size = xd->mode_info_context->mbmi.txfm_size; @@ -892,8 +885,8 @@ void vp9_fidct_mb(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { vp9_transform_mb_16x16(x); vp9_quantize_mb_16x16(x); if (x->optimize) - optimize_mb_16x16(x, rtcd); - vp9_inverse_transform_mb_16x16(IF_RTCD(&rtcd->common->idct), xd); + optimize_mb_16x16(x); + vp9_inverse_transform_mb_16x16(xd); } else if (tx_size == TX_8X8) { if (xd->mode_info_context->mbmi.mode == SPLITMV) { assert(xd->mode_info_context->mbmi.partitioning != PARTITIONING_4X4); @@ -902,38 +895,38 @@ void vp9_fidct_mb(MACROBLOCK *x, const VP9_ENCODER_RTCD *rtcd) { vp9_quantize_mby_8x8(x); vp9_quantize_mbuv_4x4(x); if (x->optimize) { - vp9_optimize_mby_8x8(x, rtcd); - vp9_optimize_mbuv_4x4(x, rtcd); + vp9_optimize_mby_8x8(x); + vp9_optimize_mbuv_4x4(x); } - vp9_inverse_transform_mby_8x8(IF_RTCD(&rtcd->common->idct), xd); - vp9_inverse_transform_mbuv_4x4(IF_RTCD(&rtcd->common->idct), xd); + vp9_inverse_transform_mby_8x8(xd); + vp9_inverse_transform_mbuv_4x4(xd); } else { vp9_transform_mb_8x8(x); vp9_quantize_mb_8x8(x); if (x->optimize) - optimize_mb_8x8(x, rtcd); - vp9_inverse_transform_mb_8x8(IF_RTCD(&rtcd->common->idct), xd); + optimize_mb_8x8(x); + vp9_inverse_transform_mb_8x8(xd); } } else { transform_mb_4x4(x); vp9_quantize_mb_4x4(x); if (x->optimize) - optimize_mb_4x4(x, rtcd); - vp9_inverse_transform_mb_4x4(IF_RTCD(&rtcd->common->idct), xd); + optimize_mb_4x4(x); + vp9_inverse_transform_mb_4x4(xd); } } -void vp9_encode_inter16x16(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_inter16x16(MACROBLOCK *x) { MACROBLOCKD *const xd = &x->e_mbd; vp9_build_inter_predictors_mb(xd); - subtract_mb(rtcd, x); - vp9_fidct_mb(x, rtcd); + subtract_mb(x); + vp9_fidct_mb(x); vp9_recon_mb(xd); } /* this function is used by first pass only */ -void vp9_encode_inter16x16y(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { +void vp9_encode_inter16x16y(MACROBLOCK *x) { MACROBLOCKD *xd = &x->e_mbd; BLOCK *b = &x->block[0]; @@ -948,7 +941,7 @@ void vp9_encode_inter16x16y(const VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x) { vp9_transform_mby_4x4(x); vp9_quantize_mby_4x4(x); - vp9_inverse_transform_mby_4x4(IF_RTCD(&rtcd->common->idct), xd); + vp9_inverse_transform_mby_4x4(xd); vp9_recon_mby(xd); } diff --git a/vp9/encoder/encodemb.h b/vp9/encoder/encodemb.h index e59ed8a27..905dad3c7 100644 --- a/vp9/encoder/encodemb.h +++ b/vp9/encoder/encodemb.h @@ -35,27 +35,27 @@ typedef struct { #include "onyx_int.h" struct VP9_ENCODER_RTCD; -void vp9_encode_inter16x16(const struct VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x); +void vp9_encode_inter16x16(MACROBLOCK *x); void vp9_transform_mbuv_4x4(MACROBLOCK *x); void vp9_transform_mby_4x4(MACROBLOCK *x); -void vp9_optimize_mby_4x4(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); -void vp9_optimize_mbuv_4x4(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); -void vp9_encode_inter16x16y(const struct VP9_ENCODER_RTCD *rtcd, MACROBLOCK *x); +void vp9_optimize_mby_4x4(MACROBLOCK *x); +void vp9_optimize_mbuv_4x4(MACROBLOCK *x); +void vp9_encode_inter16x16y(MACROBLOCK *x); void vp9_transform_mb_8x8(MACROBLOCK *mb); void vp9_transform_mby_8x8(MACROBLOCK *x); void vp9_transform_mbuv_8x8(MACROBLOCK *x); void vp9_build_dcblock_8x8(MACROBLOCK *b); -void vp9_optimize_mby_8x8(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); -void vp9_optimize_mbuv_8x8(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); +void vp9_optimize_mby_8x8(MACROBLOCK *x); +void vp9_optimize_mbuv_8x8(MACROBLOCK *x); void vp9_transform_mb_16x16(MACROBLOCK *mb); void vp9_transform_mby_16x16(MACROBLOCK *x); -void vp9_optimize_mby_16x16(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); +void vp9_optimize_mby_16x16(MACROBLOCK *x); -void vp9_fidct_mb(MACROBLOCK *x, const struct VP9_ENCODER_RTCD *rtcd); +void vp9_fidct_mb(MACROBLOCK *x); void vp9_subtract_4b_c(BLOCK *be, BLOCKD *bd, int pitch); diff --git a/vp9/encoder/firstpass.c b/vp9/encoder/firstpass.c index db7c4d771..3e232efe8 100644 --- a/vp9/encoder/firstpass.c +++ b/vp9/encoder/firstpass.c @@ -621,7 +621,7 @@ void vp9_first_pass(VP9_COMP *cpi) { this_error = motion_error; vp9_set_mbmode_and_mvs(x, NEWMV, &mv); xd->mode_info_context->mbmi.txfm_size = TX_4X4; - vp9_encode_inter16x16y(IF_RTCD(&cpi->rtcd), x); + vp9_encode_inter16x16y(x); sum_mvr += mv.as_mv.row; sum_mvr_abs += abs(mv.as_mv.row); sum_mvc += mv.as_mv.col; diff --git a/vp9/encoder/onyx_if.c b/vp9/encoder/onyx_if.c index 333a4f30c..7d2a177c3 100644 --- a/vp9/encoder/onyx_if.c +++ b/vp9/encoder/onyx_if.c @@ -23,6 +23,7 @@ #include "ratectrl.h" #include "vp9/common/quant_common.h" #include "segmentation.h" +#include "./vp9_rtcd.h" #if CONFIG_POSTPROC #include "vp9/common/postproc.h" #endif @@ -1267,8 +1268,6 @@ void vp9_set_speed_features(VP9_COMP *cpi) { } #endif - - cpi->mb.quantize_b_4x4 = vp9_regular_quantize_b_4x4; cpi->mb.quantize_b_4x4_pair = vp9_regular_quantize_b_4x4_pair; cpi->mb.quantize_b_8x8 = vp9_regular_quantize_b_8x8; @@ -1584,14 +1583,18 @@ void vp9_change_config(VP9_PTR ptr, VP9_CONFIG *oxcf) { cpi->oxcf.best_allowed_q = q_trans[oxcf->best_allowed_q]; cpi->oxcf.cq_level = q_trans[cpi->oxcf.cq_level]; + cpi->mb.e_mbd.inv_xform4x4_1_x8 = vp9_short_idct4x4llm_1; + cpi->mb.e_mbd.inv_xform4x4_x8 = vp9_short_idct4x4llm; + cpi->mb.e_mbd.inv_walsh4x4_1 = vp9_short_inv_walsh4x4_1; + cpi->mb.e_mbd.inv_walsh4x4_lossless = vp9_short_inv_walsh4x4; + #if CONFIG_LOSSLESS cpi->oxcf.lossless = oxcf->lossless; if (cpi->oxcf.lossless) { - cpi->common.rtcd.idct.idct1 = vp9_short_inv_walsh4x4_1_x8_c; - cpi->common.rtcd.idct.idct16 = vp9_short_inv_walsh4x4_x8_c; - cpi->common.rtcd.idct.idct1_scalar_add = vp9_dc_only_inv_walsh_add_c; - cpi->common.rtcd.idct.iwalsh1 = vp9_short_inv_walsh4x4_1_c; - cpi->common.rtcd.idct.iwalsh16 = vp9_short_inv_walsh4x4_lossless_c; + cpi->mb.e_mbd.inv_xform4x4_1_x8 = vp9_short_inv_walsh4x4_1_x8; + cpi->mb.e_mbd.inv_xform4x4_x8 = vp9_short_inv_walsh4x4_x8; + cpi->mb.e_mbd.inv_walsh4x4_1 = vp9_short_inv_walsh4x4_1_lossless; + cpi->mb.e_mbd.inv_walsh4x4_lossless = vp9_short_inv_walsh4x4_lossless; } #endif diff --git a/vp9/encoder/rdopt.c b/vp9/encoder/rdopt.c index 5d0b111ce..5dee848ba 100644 --- a/vp9/encoder/rdopt.c +++ b/vp9/encoder/rdopt.c @@ -28,7 +28,6 @@ #include "vp9/common/quant_common.h" #include "encodemb.h" #include "quantize.h" -#include "vp9/common/idct.h" #include "variance.h" #include "mcomp.h" #include "rdopt.h" @@ -680,7 +679,6 @@ static int rdcost_mby_4x4(MACROBLOCK *mb, int backup) { static void macro_block_yrd_4x4(MACROBLOCK *mb, int *Rate, int *Distortion, - const VP9_ENCODER_RTCD *rtcd, int *skippable, int backup) { int b; MACROBLOCKD *const xd = &mb->e_mbd; @@ -751,7 +749,6 @@ static int rdcost_mby_8x8(MACROBLOCK *mb, int backup) { static void macro_block_yrd_8x8(MACROBLOCK *mb, int *Rate, int *Distortion, - const VP9_ENCODER_RTCD *rtcd, int *skippable, int backup) { MACROBLOCKD *const xd = &mb->e_mbd; BLOCK *const mb_y2 = mb->block + 24; @@ -802,8 +799,7 @@ static int rdcost_mby_16x16(MACROBLOCK *mb, int backup) { } static void macro_block_yrd_16x16(MACROBLOCK *mb, int *Rate, int *Distortion, - const VP9_ENCODER_RTCD *rtcd, int *skippable, - int backup) { + int *skippable, int backup) { int d; MACROBLOCKD *xd = &mb->e_mbd; BLOCKD *b = &mb->e_mbd.block[0]; @@ -821,7 +817,7 @@ static void macro_block_yrd_16x16(MACROBLOCK *mb, int *Rate, int *Distortion, // trailing coefficients to be zero, instead of running trellis // optimization in the rate-distortion optimization loop? if (mb->e_mbd.mode_info_context->mbmi.mode < I8X8_PRED) - vp9_optimize_mby_16x16(mb, rtcd); + vp9_optimize_mby_16x16(mb); d = vp9_mbblock_error(mb, 0); @@ -902,7 +898,6 @@ static void choose_txfm_size_from_rd(VP9_COMP *cpi, MACROBLOCK *x, static void macro_block_yrd(VP9_COMP *cpi, MACROBLOCK *x, int *rate, int *distortion, int *skippable, int64_t txfm_cache[NB_TXFM_MODES]) { - VP9_COMMON *cm = &cpi->common; MACROBLOCKD *const xd = &x->e_mbd; int r[2][TX_SIZE_MAX], d[TX_SIZE_MAX], s[TX_SIZE_MAX]; @@ -910,11 +905,9 @@ static void macro_block_yrd(VP9_COMP *cpi, MACROBLOCK *x, int *rate, x->block[0].src_stride); macro_block_yrd_16x16(x, &r[0][TX_16X16], &d[TX_16X16], - IF_RTCD(&cpi->rtcd), &s[TX_16X16], 1); - macro_block_yrd_8x8(x, &r[0][TX_8X8], &d[TX_8X8], - IF_RTCD(&cpi->rtcd), &s[TX_8X8], 1); - macro_block_yrd_4x4(x, &r[0][TX_4X4], &d[TX_4X4], - IF_RTCD(&cpi->rtcd), &s[TX_4X4], 1); + &s[TX_16X16], 1); + macro_block_yrd_8x8(x, &r[0][TX_8X8], &d[TX_8X8], &s[TX_8X8], 1); + macro_block_yrd_4x4(x, &r[0][TX_4X4], &d[TX_4X4], &s[TX_4X4], 1); choose_txfm_size_from_rd(cpi, x, r, rate, d, distortion, s, skippable, txfm_cache); @@ -932,7 +925,7 @@ static void copy_predictor(unsigned char *dst, const unsigned char *predictor) { #if CONFIG_SUPERBLOCKS static void super_block_yrd(VP9_COMP *cpi, MACROBLOCK *x, int *rate, int *distortion, - const VP9_ENCODER_RTCD *rtcd, int *skip, + int *skip, int64_t txfm_cache[NB_TXFM_MODES]) { MACROBLOCKD *const xd = &x->e_mbd; int r[2][TX_SIZE_MAX], d[TX_SIZE_MAX], s[TX_SIZE_MAX], n; @@ -961,21 +954,21 @@ static void super_block_yrd(VP9_COMP *cpi, xd->above_context = &t_above[TX_16X16][x_idx]; xd->left_context = &t_left[TX_16X16][y_idx]; - macro_block_yrd_16x16(x, &r_tmp, &d_tmp, IF_RTCD(&cpi->rtcd), &s_tmp, 0); + macro_block_yrd_16x16(x, &r_tmp, &d_tmp, &s_tmp, 0); d[TX_16X16] += d_tmp; r[0][TX_16X16] += r_tmp; s[TX_16X16] = s[TX_16X16] && s_tmp; xd->above_context = &t_above[TX_4X4][x_idx]; xd->left_context = &t_left[TX_4X4][y_idx]; - macro_block_yrd_4x4(x, &r_tmp, &d_tmp, IF_RTCD(&cpi->rtcd), &s_tmp, 0); + macro_block_yrd_4x4(x, &r_tmp, &d_tmp, &s_tmp, 0); d[TX_4X4] += d_tmp; r[0][TX_4X4] += r_tmp; s[TX_4X4] = s[TX_4X4] && s_tmp; xd->above_context = &t_above[TX_8X8][x_idx]; xd->left_context = &t_left[TX_8X8][y_idx]; - macro_block_yrd_8x8(x, &r_tmp, &d_tmp, IF_RTCD(&cpi->rtcd), &s_tmp, 0); + macro_block_yrd_8x8(x, &r_tmp, &d_tmp, &s_tmp, 0); d[TX_8X8] += d_tmp; r[0][TX_8X8] += r_tmp; s[TX_8X8] = s[TX_8X8] && s_tmp; @@ -1144,8 +1137,7 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, BLOCK *be, if (best_tx_type != DCT_DCT) vp9_ihtllm_c(best_dqcoeff, b->diff, 32, best_tx_type, 4); else - IDCT_INVOKE(IF_RTCD(&cpi->rtcd.common->idct), idct16)( - best_dqcoeff, b->diff, 32); + xd->inv_xform4x4_x8(best_dqcoeff, b->diff, 32); vp9_recon_b(best_predictor, b->diff, *(b->base_dst) + b->dst, b->dst_stride); @@ -1261,7 +1253,7 @@ static int64_t rd_pick_intra_sby_mode(VP9_COMP *cpi, vp9_build_intra_predictors_sby_s(&x->e_mbd); super_block_yrd(cpi, x, &this_rate_tokenonly, - &this_distortion, IF_RTCD(&cpi->rtcd), &s, txfm_cache); + &this_distortion, &s, txfm_cache); this_rate = this_rate_tokenonly + x->mbmode_cost[x->e_mbd.frame_type] [x->e_mbd.mode_info_context->mbmi.mode]; @@ -1509,7 +1501,7 @@ static int64_t rd_pick_intra8x8block(VP9_COMP *cpi, MACROBLOCK *x, int ib, #if CONFIG_COMP_INTRA_PRED b->bmi.as_mode.second = (*best_second_mode); #endif - vp9_encode_intra8x8(IF_RTCD(&cpi->rtcd), x, ib); + vp9_encode_intra8x8(x, ib); if (xd->mode_info_context->mbmi.txfm_size == TX_8X8) { a[vp9_block2above_8x8[idx]] = besta0; @@ -1846,7 +1838,6 @@ static void rd_pick_intra_mbuv_mode_8x8(VP9_COMP *cpi, static void super_block_uvrd_8x8(MACROBLOCK *x, int *rate, int *distortion, - const VP9_ENCODER_RTCD *rtcd, int *skippable) { MACROBLOCKD *const xd = &x->e_mbd; int d = 0, r = 0, n, s = 1; @@ -1909,7 +1900,7 @@ static int64_t rd_pick_intra_sbuv_mode(VP9_COMP *cpi, vp9_build_intra_predictors_sbuv_s(&x->e_mbd); super_block_uvrd_8x8(x, &this_rate_tokenonly, - &this_distortion, IF_RTCD(&cpi->rtcd), &s); + &this_distortion, &s); this_rate = this_rate_tokenonly + x->intra_uv_mode_cost[x->e_mbd.frame_type][mode]; this_rd = RDCOST(x->rdmult, x->rddiv, this_rate, this_distortion); @@ -2072,8 +2063,7 @@ static int64_t encode_inter_mb_segment(MACROBLOCK *x, int *labelyrate, int *distortion, ENTROPY_CONTEXT *ta, - ENTROPY_CONTEXT *tl, - const VP9_ENCODER_RTCD *rtcd) { + ENTROPY_CONTEXT *tl) { int i; MACROBLOCKD *xd = &x->e_mbd; @@ -2109,8 +2099,7 @@ static int64_t encode_inter_mb_segment_8x8(MACROBLOCK *x, int *distortion, int64_t *otherrd, ENTROPY_CONTEXT *ta, - ENTROPY_CONTEXT *tl, - const VP9_ENCODER_RTCD *rtcd) { + ENTROPY_CONTEXT *tl) { int i, j; MACROBLOCKD *xd = &x->e_mbd; const int iblock[4] = { 0, 1, 4, 5 }; @@ -2431,13 +2420,12 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x, if (segmentation == PARTITIONING_4X4) { this_rd = encode_inter_mb_segment(x, labels, i, &labelyrate, - &distortion, - ta_s, tl_s, IF_RTCD(&cpi->rtcd)); + &distortion, ta_s, tl_s); other_rd = this_rd; } else { this_rd = encode_inter_mb_segment_8x8(x, labels, i, &labelyrate, &distortion, &other_rd, - ta_s, tl_s, IF_RTCD(&cpi->rtcd)); + ta_s, tl_s); } this_rd += RDCOST(x->rdmult, x->rddiv, rate, 0); rate += labelyrate; @@ -3532,7 +3520,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, // Y cost and distortion super_block_yrd(cpi, x, rate_y, distortion_y, - IF_RTCD(&cpi->rtcd), &skippable_y, txfm_cache); + &skippable_y, txfm_cache); *rate2 += *rate_y; *distortion += *distortion_y; @@ -4712,7 +4700,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, if (ref_frame == INTRA_FRAME) { vp9_build_intra_predictors_sby_s(xd); super_block_yrd(cpi, x, &rate_y, &distortion_y, - IF_RTCD(&cpi->rtcd), &skippable, txfm_cache); + &skippable, txfm_cache); if (mbmi->txfm_size == TX_4X4) { rate_uv = rate_uv_4x4; distortion_uv = dist_uv_4x4;