diff options
author | Ronald S. Bultje <rbultje@google.com> | 2012-11-01 11:09:58 -0700 |
---|---|---|
committer | Ronald S. Bultje <rbultje@google.com> | 2012-11-01 16:31:22 -0700 |
commit | 4b2c2b9aa4a273a23d90ddb3bbf6dfb3482e0b8f (patch) | |
tree | 20eef975f1a8c28978d826a354092433b9093588 /vp9/common/idct.h | |
parent | 6c280c2299f078a475dc87e7615fdf1a4998cd31 (diff) | |
download | libvpx-4b2c2b9aa4a273a23d90ddb3bbf6dfb3482e0b8f.tar libvpx-4b2c2b9aa4a273a23d90ddb3bbf6dfb3482e0b8f.tar.gz libvpx-4b2c2b9aa4a273a23d90ddb3bbf6dfb3482e0b8f.tar.bz2 libvpx-4b2c2b9aa4a273a23d90ddb3bbf6dfb3482e0b8f.zip |
Rename vp8/ codec directory to vp9/.
Change-Id: Ic084c475844b24092a433ab88138cf58af3abbe4
Diffstat (limited to 'vp9/common/idct.h')
-rw-r--r-- | vp9/common/idct.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/vp9/common/idct.h b/vp9/common/idct.h new file mode 100644 index 000000000..cbe1169bc --- /dev/null +++ b/vp9/common/idct.h @@ -0,0 +1,144 @@ +/* + * 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_idct8 +#define vp9_idct_idct8 vp9_short_idct8x8_c +#endif +extern prototype_idct(vp9_idct_idct8); + +#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 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_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 |