Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
fc6fdf98
Commit
fc6fdf98
authored
Oct 30, 2012
by
Scott LaVarnway
Committed by
Gerrit Code Review
Oct 30, 2012
Browse files
Options
Browse Files
Download
Plain Diff
Merge "dequant invoke macro removal" into experimental
parents
80674b43
df1b8f2f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
112 additions
and
492 deletions
+112
-492
vp8/common/rtcd_defs.sh
vp8/common/rtcd_defs.sh
+35
-0
vp8/decoder/arm/arm_dsystemdependent.c
vp8/decoder/arm/arm_dsystemdependent.c
+0
-52
vp8/decoder/arm/dequantize_arm.h
vp8/decoder/arm/dequantize_arm.h
+0
-73
vp8/decoder/decodframe.c
vp8/decoder/decodframe.c
+33
-37
vp8/decoder/dequantize.h
vp8/decoder/dequantize.h
+39
-173
vp8/decoder/generic/dsystemdependent.c
vp8/decoder/generic/dsystemdependent.c
+0
-46
vp8/decoder/onyxd_if.c
vp8/decoder/onyxd_if.c
+0
-1
vp8/decoder/onyxd_int.h
vp8/decoder/onyxd_int.h
+5
-4
vp8/decoder/x86/dequantize_x86.h
vp8/decoder/x86/dequantize_x86.h
+0
-70
vp8/decoder/x86/x86_dsystemdependent.c
vp8/decoder/x86/x86_dsystemdependent.c
+0
-30
vp8/encoder/onyx_if.c
vp8/encoder/onyx_if.c
+0
-2
vp8/vp8dx.mk
vp8/vp8dx.mk
+0
-2
vp8/vp8dx_arm.mk
vp8/vp8dx_arm.mk
+0
-2
No files found.
vp8/common/rtcd_defs.sh
View file @
fc6fdf98
...
...
@@ -34,6 +34,41 @@ fi
specialize vp8_filter_block2d_8x8_8 ssse3
#sse4_1 sse2
specialize vp8_filter_block2d_16x16_8 ssse3
#sse4_1 sse2
#
# Dequant
#
prototype void vp8_dequantize_b
"struct blockd *x"
specialize vp8_dequantize_b mmx
prototype void vp8_dequantize_b_2x2
"struct blockd *x"
specialize vp8_dequantize_b_2x2
prototype void vp8_dequant_dc_idct_add_y_block_8x8
"short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, short *dc, struct macroblockd *xd"
specialize vp8_dequant_dc_idct_add_y_block_8x8
prototype void vp8_dequant_idct_add_y_block_8x8
"short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, struct macroblockd *xd"
specialize vp8_dequant_idct_add_y_block_8x8
prototype void vp8_dequant_idct_add_uv_block_8x8
"short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, char *eobs, struct macroblockd *xd"
specialize vp8_dequant_idct_add_uv_block_8x8
prototype void vp8_dequant_idct_add_16x16
"short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
specialize vp8_dequant_idct_add_16x16
prototype void vp8_dequant_idct_add
"short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
specialize vp8_dequant_idct_add
prototype void vp8_dequant_dc_idct_add
"short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride, int Dc"
specialize vp8_dequant_dc_idct_add
prototype void vp8_dequant_dc_idct_add_y_block
"short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, short *dc"
specialize vp8_dequant_dc_idct_add_y_block mmx
prototype void vp8_dequant_idct_add_y_block
"short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs"
specialize vp8_dequant_idct_add_y_block mmx
prototype void vp8_dequant_idct_add_uv_block
"short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, char *eobs"
specialize vp8_dequant_idct_add_uv_block mmx
#
# RECON
...
...
vp8/decoder/arm/arm_dsystemdependent.c
deleted
100644 → 0
View file @
80674b43
/*
* 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.
*/
#include "vpx_ports/config.h"
#include "vpx_ports/arm.h"
#include "vp8/common/blockd.h"
#include "vp8/common/pragmas.h"
#include "vp8/decoder/dequantize.h"
#include "vp8/decoder/onyxd_int.h"
void
vp8_arch_arm_decode_init
(
VP8D_COMP
*
pbi
)
{
#if CONFIG_RUNTIME_CPU_DETECT
int
flags
=
pbi
->
common
.
rtcd
.
flags
;
#if HAVE_ARMV5TE
if
(
flags
&
HAS_EDSP
)
{
}
#endif
// The commented functions need to be re-written for vpx.
#if HAVE_ARMV6
if
(
flags
&
HAS_MEDIA
)
{
pbi
->
dequant
.
block
=
vp8_dequantize_b_v6
;
/*pbi->dequant.idct_add = vp8_dequant_idct_add_v6;
pbi->dequant.dc_idct_add = vp8_dequant_dc_idct_add_v6;
pbi->dequant.dc_idct_add_y_block = vp8_dequant_dc_idct_add_y_block_v6;
pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_v6;
pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_v6;*/
}
#endif
#if HAVE_ARMV7
if
(
flags
&
HAS_NEON
)
{
pbi
->
dequant
.
block
=
vp8_dequantize_b_neon
;
// pbi->dequant.idct_add = vp8_dequant_idct_add_neon;
/*This is not used: NEON always dequants two blocks at once.
pbi->dequant.dc_idct_add = vp8_dequant_dc_idct_add_neon;*/
/*pbi->dequant.dc_idct_add_y_block = vp8_dequant_dc_idct_add_y_block_neon;
pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_neon;
pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_neon;*/
}
#endif
#endif
}
vp8/decoder/arm/dequantize_arm.h
deleted
100644 → 0
View file @
80674b43
/*
* 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 DEQUANTIZE_ARM_H
#define DEQUANTIZE_ARM_H
#if HAVE_ARMV6
extern
prototype_dequant_block
(
vp8_dequantize_b_v6
);
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add_v6
);
extern
prototype_dequant_dc_idct_add
(
vp8_dequant_dc_idct_add_v6
);
extern
prototype_dequant_dc_idct_add_y_block
(
vp8_dequant_dc_idct_add_y_block_v6
);
extern
prototype_dequant_idct_add_y_block
(
vp8_dequant_idct_add_y_block_v6
);
extern
prototype_dequant_idct_add_uv_block
(
vp8_dequant_idct_add_uv_block_v6
);
#if !CONFIG_RUNTIME_CPU_DETECT
#undef vp8_dequant_block
#define vp8_dequant_block vp8_dequantize_b_v6
#undef vp8_dequant_idct_add
#define vp8_dequant_idct_add vp8_dequant_idct_add_v6
#undef vp8_dequant_dc_idct_add
#define vp8_dequant_dc_idct_add vp8_dequant_dc_idct_add_v6
#undef vp8_dequant_dc_idct_add_y_block
#define vp8_dequant_dc_idct_add_y_block vp8_dequant_dc_idct_add_y_block_v6
#undef vp8_dequant_idct_add_y_block
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_v6
#undef vp8_dequant_idct_add_uv_block
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_v6
#endif
#endif
#if HAVE_ARMV7
extern
prototype_dequant_block
(
vp8_dequantize_b_neon
);
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add_neon
);
extern
prototype_dequant_dc_idct_add
(
vp8_dequant_dc_idct_add_neon
);
extern
prototype_dequant_dc_idct_add_y_block
(
vp8_dequant_dc_idct_add_y_block_neon
);
extern
prototype_dequant_idct_add_y_block
(
vp8_dequant_idct_add_y_block_neon
);
extern
prototype_dequant_idct_add_uv_block
(
vp8_dequant_idct_add_uv_block_neon
);
#if !CONFIG_RUNTIME_CPU_DETECT
#undef vp8_dequant_block
#define vp8_dequant_block vp8_dequantize_b_neon
#undef vp8_dequant_idct_add
#define vp8_dequant_idct_add vp8_dequant_idct_add_neon
#undef vp8_dequant_dc_idct_add
#define vp8_dequant_dc_idct_add vp8_dequant_dc_idct_add_neon
#undef vp8_dequant_dc_idct_add_y_block
#define vp8_dequant_dc_idct_add_y_block vp8_dequant_dc_idct_add_y_block_neon
#undef vp8_dequant_idct_add_y_block
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_neon
#undef vp8_dequant_idct_add_uv_block
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_neon
#endif
#endif
#endif
vp8/decoder/decodframe.c
View file @
fc6fdf98
...
...
@@ -14,7 +14,6 @@
#include "vp8/common/reconintra.h"
#include "vp8/common/reconintra4x4.h"
#include "vp8/common/reconinter.h"
#include "dequantize.h"
#include "detokenize.h"
#include "vp8/common/invtrans.h"
#include "vp8/common/alloccommon.h"
...
...
@@ -29,7 +28,6 @@
#include "vp8/common/modecont.h"
#include "vpx_mem/vpx_mem.h"
#include "vp8/common/idct.h"
#include "dequantize.h"
#include "dboolhuff.h"
#include "vp8/common/seg_common.h"
...
...
@@ -129,23 +127,29 @@ static void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd) {
pbi
->
common
.
rtcd
.
idct
.
idct1_scalar_add
=
vp8_dc_only_inv_walsh_add_c
;
pbi
->
common
.
rtcd
.
idct
.
iwalsh1
=
vp8_short_inv_walsh4x4_1_lossless_c
;
pbi
->
common
.
rtcd
.
idct
.
iwalsh16
=
vp8_short_inv_walsh4x4_lossless_c
;
pbi
->
dequant
.
idct_add
=
vp8_dequant_idct_add_lossless_c
;
pbi
->
dequant
.
dc_idct_add
=
vp8_dequant_dc_idct_add_lossless_c
;
pbi
->
dequant
.
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block_lossless_c
;
pbi
->
dequant
.
idct_add_y_block
=
vp8_dequant_idct_add_y_block_lossless_c
;
pbi
->
dequant
.
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block_lossless_c
;
pbi
->
idct_add
=
vp8_dequant_idct_add_lossless_c
;
pbi
->
dc_idct_add
=
vp8_dequant_dc_idct_add_lossless_c
;
pbi
->
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block_lossless_c
;
pbi
->
idct_add_y_block
=
vp8_dequant_idct_add_y_block_lossless_c
;
pbi
->
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block_lossless_c
;
}
else
{
pbi
->
common
.
rtcd
.
idct
.
idct1
=
vp8_short_idct4x4llm_1_c
;
pbi
->
common
.
rtcd
.
idct
.
idct16
=
vp8_short_idct4x4llm_c
;
pbi
->
common
.
rtcd
.
idct
.
idct1_scalar_add
=
vp8_dc_only_idct_add_c
;
pbi
->
common
.
rtcd
.
idct
.
iwalsh1
=
vp8_short_inv_walsh4x4_1_c
;
pbi
->
common
.
rtcd
.
idct
.
iwalsh16
=
vp8_short_inv_walsh4x4_c
;
pbi
->
dequant
.
idct_add
=
vp8_dequant_idct_add
_c
;
pbi
->
dequant
.
dc_idct_add
=
vp8_dequant_dc_idct_add
_c
;
pbi
->
dequant
.
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block
_c
;
pbi
->
dequant
.
idct_add_y_block
=
vp8_dequant_idct_add_y_block
_c
;
pbi
->
dequant
.
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block
_c
;
pbi
->
idct_add
=
vp8_dequant_idct_add
;
pbi
->
dc_idct_add
=
vp8_dequant_dc_idct_add
;
pbi
->
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block
;
pbi
->
idct_add_y_block
=
vp8_dequant_idct_add_y_block
;
pbi
->
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block
;
}
#else
pbi
->
idct_add
=
vp8_dequant_idct_add
;
pbi
->
dc_idct_add
=
vp8_dequant_dc_idct_add
;
pbi
->
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block
;
pbi
->
idct_add_y_block
=
vp8_dequant_idct_add_y_block
;
pbi
->
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block
;
#endif
for
(
i
=
16
;
i
<
24
;
i
++
)
{
...
...
@@ -335,23 +339,18 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
}
else
{
for
(
j
=
0
;
j
<
4
;
j
++
)
{
b
=
&
xd
->
block
[
ib
+
iblock
[
j
]];
vp8_dequant_idct_add
_c
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
vp8_dequant_idct_add
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
16
,
b
->
dst_stride
);
}
}
b
=
&
xd
->
block
[
16
+
i
];
vp8_intra_uv4x4_predict
(
b
,
i8x8mode
,
b
->
predictor
);
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
idct_add
)(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
8
,
b
->
dst_stride
);
pbi
->
idct_add
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
8
,
b
->
dst_stride
);
b
=
&
xd
->
block
[
20
+
i
];
vp8_intra_uv4x4_predict
(
b
,
i8x8mode
,
b
->
predictor
);
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
idct_add
)(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
8
,
b
->
dst_stride
);
pbi
->
idct_add
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
8
,
b
->
dst_stride
);
}
}
else
if
(
mode
==
B_PRED
)
{
for
(
i
=
0
;
i
<
16
;
i
++
)
{
...
...
@@ -375,18 +374,17 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
16
,
b
->
dst_stride
);
}
else
{
vp8_dequant_idct_add
_c
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
vp8_dequant_idct_add
(
b
->
qcoeff
,
b
->
dequant
,
b
->
predictor
,
*
(
b
->
base_dst
)
+
b
->
dst
,
16
,
b
->
dst_stride
);
}
}
}
else
if
(
mode
==
SPLITMV
)
{
if
(
tx_size
==
TX_8X8
)
{
vp8_dequant_idct_add_y_block_8x8
_c
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
vp8_dequant_idct_add_y_block_8x8
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
y_stride
,
xd
->
eobs
,
xd
);
}
else
{
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
idct_add_y_block
)(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
pbi
->
idct_add_y_block
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
y_stride
,
xd
->
eobs
);
}
...
...
@@ -401,7 +399,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
16
,
xd
->
dst
.
y_stride
);
}
else
{
vp8_dequant_idct_add_16x16
_c
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
vp8_dequant_idct_add_16x16
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
16
,
xd
->
dst
.
y_stride
);
}
...
...
@@ -437,7 +435,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
if
(
xd
->
mode_info_context
->
mbmi
.
mb_skip_coeff
)
continue
;
// only happens for SBs, which are already in dest buffer
#endif
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
block
_2x2
)
(
b
);
vp8_dequantize_b
_2x2
(
b
);
IDCT_INVOKE
(
RTCD_VTABLE
(
idct
),
ihaar2
)(
&
b
->
dqcoeff
[
0
],
b
->
diff
,
8
);
((
int
*
)
b
->
qcoeff
)[
0
]
=
0
;
// 2nd order block are set to 0 after inverse transform
((
int
*
)
b
->
qcoeff
)[
1
]
=
0
;
...
...
@@ -461,7 +459,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
xd
->
dst
.
uv_stride
,
xd
->
eobs
+
16
,
xd
);
}
else
#endif
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
dc_idct_add_y_block_8x8
)
(
xd
->
qcoeff
,
vp8_
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
);
#if CONFIG_SUPERBLOCKS
...
...
@@ -469,7 +467,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
xd
->
mode_info_context
=
orig
;
#endif
}
else
{
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
block
)
(
b
);
vp8_dequantize_b
(
b
);
if
(
xd
->
eobs
[
24
]
>
1
)
{
IDCT_INVOKE
(
RTCD_VTABLE
(
idct
),
iwalsh16
)(
&
b
->
dqcoeff
[
0
],
b
->
diff
);
((
int
*
)
b
->
qcoeff
)[
0
]
=
0
;
...
...
@@ -485,10 +483,9 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
((
int
*
)
b
->
qcoeff
)[
0
]
=
0
;
}
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
dc_idct_add_y_block
)
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
y_stride
,
xd
->
eobs
,
xd
->
block
[
24
].
diff
);
pbi
->
dc_idct_add_y_block
(
xd
->
qcoeff
,
xd
->
block
[
0
].
dequant
,
xd
->
predictor
,
xd
->
dst
.
y_buffer
,
xd
->
dst
.
y_stride
,
xd
->
eobs
,
xd
->
block
[
24
].
diff
);
}
}
...
...
@@ -500,13 +497,12 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
xd
->
mode_info_context
->
mbmi
.
mode
!=
SPLITMV
)
||
tx_size
==
TX_16X16
)
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
idct_add_uv_block_8x8
)
//
vp8_
dequant
_
idct_add_uv_block_8x8
(
xd
->
qcoeff
+
16
*
16
,
xd
->
block
[
16
].
dequant
,
xd
->
predictor
+
16
*
16
,
xd
->
dst
.
u_buffer
,
xd
->
dst
.
v_buffer
,
xd
->
dst
.
uv_stride
,
xd
->
eobs
+
16
,
xd
);
//
else
if
(
xd
->
mode_info_context
->
mbmi
.
mode
!=
I8X8_PRED
)
DEQUANT_INVOKE
(
&
pbi
->
dequant
,
idct_add_uv_block
)
(
xd
->
qcoeff
+
16
*
16
,
xd
->
block
[
16
].
dequant
,
pbi
->
idct_add_uv_block
(
xd
->
qcoeff
+
16
*
16
,
xd
->
block
[
16
].
dequant
,
xd
->
predictor
+
16
*
16
,
xd
->
dst
.
u_buffer
,
xd
->
dst
.
v_buffer
,
xd
->
dst
.
uv_stride
,
xd
->
eobs
+
16
);
#if CONFIG_SUPERBLOCKS
...
...
vp8/decoder/dequantize.h
View file @
fc6fdf98
...
...
@@ -13,182 +13,48 @@
#define DEQUANTIZE_H
#include "vp8/common/blockd.h"
#define prototype_dequant_block(sym) \
void sym(BLOCKD *x)
#define prototype_dequant_idct_add(sym) \
void sym(short *input, short *dq, \
unsigned char *pred, unsigned char *output, \
int pitch, int stride)
#define prototype_dequant_dc_idct_add(sym) \
void sym(short *input, short *dq, \
unsigned char *pred, unsigned char *output, \
int pitch, int stride, \
int dc)
#define prototype_dequant_dc_idct_add_y_block(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst, \
int stride, char *eobs, short *dc)
#define prototype_dequant_idct_add_y_block(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst, \
int stride, char *eobs)
#define prototype_dequant_idct_add_uv_block(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst_u, \
unsigned char *dst_v, int stride, char *eobs)
#define prototype_dequant_dc_idct_add_y_block_8x8(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst, \
int stride, char *eobs, short *dc, MACROBLOCKD *xd)
#define prototype_dequant_idct_add_y_block_8x8(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst, \
int stride, char *eobs, MACROBLOCKD *xd)
#define prototype_dequant_idct_add_uv_block_8x8(sym) \
void sym(short *q, short *dq, \
unsigned char *pre, unsigned char *dst_u, \
unsigned char *dst_v, int stride, char *eobs, \
MACROBLOCKD *xd)
#if ARCH_X86 || ARCH_X86_64
#include "x86/dequantize_x86.h"
#endif
#if ARCH_ARM
#include "arm/dequantize_arm.h"
#endif
#ifndef vp8_dequant_block
#define vp8_dequant_block vp8_dequantize_b_c
#endif
extern
prototype_dequant_block
(
vp8_dequant_block
);
#ifndef vp8_dequant_idct_add
#define vp8_dequant_idct_add vp8_dequant_idct_add_c
#endif
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add
);
// declare dequantization and inverse transform module of hybrid transform decoder
#ifndef vp8_ht_dequant_idct_add
#define vp8_ht_dequant_idct_add vp8_ht_dequant_idct_add_c
#endif
extern
void
vp8_ht_dequant_idct_add
(
TX_TYPE
tx_type
,
short
*
input
,
short
*
dq
,
#if CONFIG_LOSSLESS
extern
void
vp8_dequant_idct_add_lossless_c
(
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
output
,
int
pitch
,
int
stride
);
extern
void
vp8_dequant_dc_idct_add_lossless_c
(
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
output
,
int
pitch
,
int
stride
,
int
dc
);
extern
void
vp8_dequant_dc_idct_add_y_block_lossless_c
(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst
,
int
stride
,
char
*
eobs
,
short
*
dc
);
extern
void
vp8_dequant_idct_add_y_block_lossless_c
(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst
,
int
stride
,
char
*
eobs
);
extern
void
vp8_dequant_idct_add_uv_block_lossless_c
(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst_u
,
unsigned
char
*
dst_v
,
int
stride
,
char
*
eobs
);
#endif
typedef
void
(
*
vp8_dequant_idct_add_fn_t
)(
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
output
,
int
pitch
,
int
stride
);
typedef
void
(
*
vp8_dequant_dc_idct_add_fn_t
)(
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
output
,
int
pitch
,
int
stride
,
int
dc
);
typedef
void
(
*
vp8_dequant_dc_idct_add_y_block_fn_t
)(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst
,
int
stride
,
char
*
eobs
,
short
*
dc
);
typedef
void
(
*
vp8_dequant_idct_add_y_block_fn_t
)(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst
,
int
stride
,
char
*
eobs
);
typedef
void
(
*
vp8_dequant_idct_add_uv_block_fn_t
)(
short
*
q
,
short
*
dq
,
unsigned
char
*
pre
,
unsigned
char
*
dst_u
,
unsigned
char
*
dst_v
,
int
stride
,
char
*
eobs
);
void
vp8_ht_dequant_idct_add_c
(
TX_TYPE
tx_type
,
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
dest
,
int
pitch
,
int
stride
);
#ifndef vp8_dequant_dc_idct_add
#define vp8_dequant_dc_idct_add vp8_dequant_dc_idct_add_c
#endif
extern
prototype_dequant_dc_idct_add
(
vp8_dequant_dc_idct_add
);
#ifndef vp8_dequant_dc_idct_add_y_block
#define vp8_dequant_dc_idct_add_y_block vp8_dequant_dc_idct_add_y_block_c
#endif
extern
prototype_dequant_dc_idct_add_y_block
(
vp8_dequant_dc_idct_add_y_block
);
#ifndef vp8_dequant_idct_add_y_block
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
#endif
extern
prototype_dequant_idct_add_y_block
(
vp8_dequant_idct_add_y_block
);
#ifndef vp8_dequant_idct_add_uv_block
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
#endif
extern
prototype_dequant_idct_add_uv_block
(
vp8_dequant_idct_add_uv_block
);
#if CONFIG_LOSSLESS
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add_lossless_c
);
extern
prototype_dequant_dc_idct_add
(
vp8_dequant_dc_idct_add_lossless_c
);
extern
prototype_dequant_dc_idct_add_y_block
(
vp8_dequant_dc_idct_add_y_block_lossless_c
);
extern
prototype_dequant_idct_add_y_block
(
vp8_dequant_idct_add_y_block_lossless_c
);
extern
prototype_dequant_idct_add_uv_block
(
vp8_dequant_idct_add_uv_block_lossless_c
);
#endif
#ifndef vp8_dequant_block_2x2
#define vp8_dequant_block_2x2 vp8_dequantize_b_2x2_c
#endif
extern
prototype_dequant_block
(
vp8_dequant_block_2x2
);
#ifndef vp8_dequant_idct_add_8x8
#define vp8_dequant_idct_add_8x8 vp8_dequant_idct_add_8x8_c
#endif
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add_8x8
);
#ifndef vp8_dequant_dc_idct_add_8x8
#define vp8_dequant_dc_idct_add_8x8 vp8_dequant_dc_idct_add_8x8_c
#endif
extern
prototype_dequant_dc_idct_add
(
vp8_dequant_dc_idct_add_8x8
);
#ifndef vp8_dequant_dc_idct_add_y_block_8x8
#define vp8_dequant_dc_idct_add_y_block_8x8 vp8_dequant_dc_idct_add_y_block_8x8_c
#endif
extern
prototype_dequant_dc_idct_add_y_block_8x8
(
vp8_dequant_dc_idct_add_y_block_8x8
);
#ifndef vp8_dequant_idct_add_y_block_8x8
#define vp8_dequant_idct_add_y_block_8x8 vp8_dequant_idct_add_y_block_8x8_c
#endif
extern
prototype_dequant_idct_add_y_block_8x8
(
vp8_dequant_idct_add_y_block_8x8
);
#ifndef vp8_dequant_idct_add_uv_block_8x8
#define vp8_dequant_idct_add_uv_block_8x8 vp8_dequant_idct_add_uv_block_8x8_c
#endif
extern
prototype_dequant_idct_add_uv_block_8x8
(
vp8_dequant_idct_add_uv_block_8x8
);
#ifndef vp8_dequant_idct_add_16x16
#define vp8_dequant_idct_add_16x16 vp8_dequant_idct_add_16x16_c
#endif
extern
prototype_dequant_idct_add
(
vp8_dequant_idct_add_16x16
);
typedef
prototype_dequant_block
((
*
vp8_dequant_block_fn_t
));
typedef
prototype_dequant_idct_add
((
*
vp8_dequant_idct_add_fn_t
));
typedef
prototype_dequant_dc_idct_add
((
*
vp8_dequant_dc_idct_add_fn_t
));
typedef
prototype_dequant_dc_idct_add_y_block
((
*
vp8_dequant_dc_idct_add_y_block_fn_t
));
typedef
prototype_dequant_idct_add_y_block
((
*
vp8_dequant_idct_add_y_block_fn_t
));
typedef
prototype_dequant_idct_add_uv_block
((
*
vp8_dequant_idct_add_uv_block_fn_t
));
typedef
prototype_dequant_dc_idct_add_y_block_8x8
((
*
vp8_dequant_dc_idct_add_y_block_fn_t_8x8
));
typedef
prototype_dequant_idct_add_y_block_8x8
((
*
vp8_dequant_idct_add_y_block_fn_t_8x8
));
typedef
prototype_dequant_idct_add_uv_block_8x8
((
*
vp8_dequant_idct_add_uv_block_fn_t_8x8
));
typedef
struct
{
vp8_dequant_block_fn_t
block
;
vp8_dequant_idct_add_fn_t
idct_add
;
vp8_dequant_dc_idct_add_fn_t
dc_idct_add
;
vp8_dequant_dc_idct_add_y_block_fn_t
dc_idct_add_y_block
;
vp8_dequant_idct_add_y_block_fn_t
idct_add_y_block
;
vp8_dequant_idct_add_uv_block_fn_t
idct_add_uv_block
;
vp8_dequant_block_fn_t
block_2x2
;
vp8_dequant_idct_add_fn_t
idct_add_8x8
;
vp8_dequant_dc_idct_add_fn_t
dc_idct_add_8x8
;
vp8_dequant_dc_idct_add_y_block_fn_t_8x8
dc_idct_add_y_block_8x8
;
vp8_dequant_idct_add_y_block_fn_t_8x8
idct_add_y_block_8x8
;
vp8_dequant_idct_add_uv_block_fn_t_8x8
idct_add_uv_block_8x8
;
vp8_dequant_idct_add_fn_t
idct_add_16x16
;
}
vp8_dequant_rtcd_vtable_t
;
#if CONFIG_RUNTIME_CPU_DETECT
#define DEQUANT_INVOKE(ctx,fn) (ctx)->fn
#else
#define DEQUANT_INVOKE(ctx,fn) vp8_dequant_##fn
#endif
void
vp8_ht_dequant_idct_add_8x8_c
(
TX_TYPE
tx_type
,
short
*
input
,
short
*
dq
,
unsigned
char
*
pred
,
unsigned
char
*
dest
,
int
pitch
,
int
stride
);
...
...
vp8/decoder/generic/dsystemdependent.c
deleted
100644 → 0
View file @
80674b43
/*
* 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.
*/
#include "vpx_ports/config.h"
#include "vp8/decoder/dequantize.h"
#include "vp8/decoder/onyxd_int.h"
extern
void
vp8_arch_x86_decode_init
(
VP8D_COMP
*
pbi
);
extern
void
vp8_arch_arm_decode_init
(
VP8D_COMP
*
pbi
);
void
vp8_dmachine_specific_config
(
VP8D_COMP
*
pbi
)
{
/* Pure C: */
#if CONFIG_RUNTIME_CPU_DETECT
pbi
->
mb
.
rtcd
=
&
pbi
->
common
.
rtcd
;
pbi
->
dequant
.
block_2x2
=
vp8_dequantize_b_2x2_c
;
pbi
->
dequant
.
idct_add_8x8
=
vp8_dequant_idct_add_8x8_c
;
pbi
->
dequant
.
idct_add_16x16
=
vp8_dequant_idct_add_16x16_c
;
pbi
->
dequant
.
dc_idct_add_8x8
=
vp8_dequant_dc_idct_add_8x8_c
;
pbi
->
dequant
.
dc_idct_add_y_block_8x8
=
vp8_dequant_dc_idct_add_y_block_8x8_c
;
pbi
->
dequant
.
idct_add_y_block_8x8
=
vp8_dequant_idct_add_y_block_8x8_c
;
pbi
->
dequant
.
idct_add_uv_block_8x8
=
vp8_dequant_idct_add_uv_block_8x8_c
;
pbi
->
dequant
.
block
=
vp8_dequantize_b_c
;
pbi
->
dequant
.
idct_add
=
vp8_dequant_idct_add_c
;
pbi
->
dequant
.
dc_idct_add
=
vp8_dequant_dc_idct_add_c
;
pbi
->
dequant
.
dc_idct_add_y_block
=
vp8_dequant_dc_idct_add_y_block_c
;
pbi
->
dequant
.
idct_add_y_block
=
vp8_dequant_idct_add_y_block_c
;
pbi
->
dequant
.
idct_add_uv_block
=
vp8_dequant_idct_add_uv_block_c
;
#endif
#if ARCH_X86 || ARCH_X86_64
vp8_arch_x86_decode_init
(
pbi
);
#endif
#if ARCH_ARM
vp8_arch_arm_decode_init
(
pbi
);
#endif
}
vp8/decoder/onyxd_if.c
View file @
fc6fdf98
...
...
@@ -133,7 +133,6 @@ VP8D_PTR vp8dx_create_decompressor(VP8D_CONFIG *oxcf) {
vp8dx_initialize
();