Commit 510557e2 authored by Jim Bankoski's avatar Jim Bankoski

removed the idct rtcd idct calls

More cleanup to do after this,  but this is a good chunk of removing rtcd.

Change-Id: I551db75e341a0a85c3ad650df1e9a60dc305681a
parent 91d703b2
......@@ -15,7 +15,6 @@
#include "third_party/googletest/src/include/gtest/gtest.h"
extern "C" {
#include "vp9/common/idct.h"
#include "vp9_rtcd.h"
}
......
......@@ -15,7 +15,6 @@
#include "third_party/googletest/src/include/gtest/gtest.h"
extern "C" {
#include "vp9/common/idct.h"
#include "vp9_rtcd.h"
}
......
......@@ -15,7 +15,6 @@
#include "third_party/googletest/src/include/gtest/gtest.h"
extern "C" {
#include "vp9/common/idct.h"
#include "vp9_rtcd.h"
}
......
......@@ -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,
......
......@@ -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) {
......
......@@ -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;
......
......@@ -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;
......
/*
* 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
......@@ -25,7 +25,6 @@
#include <assert.h>
#include <math.h>
#include "vpx_ports/config.h"
#include "vp9/common/idct.h"
#include "vp9/common/systemdependent.h"
#include "vp9/common/blockd.h"
......
......@@ -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);
}
......@@ -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
......@@ -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
......
......@@ -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);
......
......@@ -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"
......
......@@ -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;
......
......@@ -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,
......
......@@ -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
......
......@@ -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
......
......@@ -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;