Remove intermediate step in vp8_dequantize_b
With the intrinsics it is no longer necessary to have a stub/helper function. Change-Id: I3695961c3c94f1bb750d3b7b29716e509ebba482
This commit is contained in:
parent
4dcc6d9707
commit
2f6f955a17
@ -38,8 +38,9 @@
|
|||||||
# For this we import the 'cpufeatures' module from the NDK sources.
|
# For this we import the 'cpufeatures' module from the NDK sources.
|
||||||
# libvpx can also be configured without this runtime detection method.
|
# libvpx can also be configured without this runtime detection method.
|
||||||
# Configuring with --disable-runtime-cpu-detect will assume presence of NEON.
|
# Configuring with --disable-runtime-cpu-detect will assume presence of NEON.
|
||||||
# Configuring with --disable-runtime-cpu-detect --disable-neon will remove any
|
# Configuring with --disable-runtime-cpu-detect --disable-neon \
|
||||||
# NEON dependency.
|
# --disable-neon-asm
|
||||||
|
# will remove any NEON dependency.
|
||||||
|
|
||||||
# To change to building armeabi, run ./libvpx/configure again, but with
|
# To change to building armeabi, run ./libvpx/configure again, but with
|
||||||
# --target=arm5te-android-gcc and modify the Application.mk file to
|
# --target=arm5te-android-gcc and modify the Application.mk file to
|
||||||
|
@ -12,26 +12,9 @@
|
|||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/common/blockd.h"
|
#include "vp8/common/blockd.h"
|
||||||
|
|
||||||
#if HAVE_NEON_ASM
|
|
||||||
extern void vp8_dequantize_b_loop_neon(short *Q, short *DQC, short *DQ);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_MEDIA
|
#if HAVE_MEDIA
|
||||||
extern void vp8_dequantize_b_loop_v6(short *Q, short *DQC, short *DQ);
|
extern void vp8_dequantize_b_loop_v6(short *Q, short *DQC, short *DQ);
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_NEON_ASM
|
|
||||||
|
|
||||||
void vp8_dequantize_b_neon(BLOCKD *d, short *DQC)
|
|
||||||
{
|
|
||||||
short *DQ = d->dqcoeff;
|
|
||||||
short *Q = d->qcoeff;
|
|
||||||
|
|
||||||
vp8_dequantize_b_loop_neon(Q, DQC, DQ);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_MEDIA
|
|
||||||
void vp8_dequantize_b_v6(BLOCKD *d, short *DQC)
|
void vp8_dequantize_b_v6(BLOCKD *d, short *DQC)
|
||||||
{
|
{
|
||||||
short *DQ = d->dqcoeff;
|
short *DQ = d->dqcoeff;
|
||||||
|
@ -10,18 +10,16 @@
|
|||||||
|
|
||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
|
|
||||||
void vp8_dequantize_b_loop_neon(
|
#include "vp8/common/blockd.h"
|
||||||
int16_t *Q,
|
|
||||||
int16_t *DQC,
|
void vp8_dequantize_b_neon(BLOCKD *d, short *DQC) {
|
||||||
int16_t *DQ) {
|
|
||||||
int16x8x2_t qQ, qDQC, qDQ;
|
int16x8x2_t qQ, qDQC, qDQ;
|
||||||
|
|
||||||
qQ = vld2q_s16(Q);
|
qQ = vld2q_s16(d->qcoeff);
|
||||||
qDQC = vld2q_s16(DQC);
|
qDQC = vld2q_s16(DQC);
|
||||||
|
|
||||||
qDQ.val[0] = vmulq_s16(qQ.val[0], qDQC.val[0]);
|
qDQ.val[0] = vmulq_s16(qQ.val[0], qDQC.val[0]);
|
||||||
qDQ.val[1] = vmulq_s16(qQ.val[1], qDQC.val[1]);
|
qDQ.val[1] = vmulq_s16(qQ.val[1], qDQC.val[1]);
|
||||||
|
|
||||||
vst2q_s16(DQ, qDQ);
|
vst2q_s16(d->dqcoeff, qDQ);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
@ -29,9 +29,8 @@ $vp8_clear_system_state_mmx=vpx_reset_mmx_state;
|
|||||||
# Dequant
|
# Dequant
|
||||||
#
|
#
|
||||||
add_proto qw/void vp8_dequantize_b/, "struct blockd*, short *dqc";
|
add_proto qw/void vp8_dequantize_b/, "struct blockd*, short *dqc";
|
||||||
specialize qw/vp8_dequantize_b mmx media neon_asm/;
|
specialize qw/vp8_dequantize_b mmx media neon/;
|
||||||
$vp8_dequantize_b_media=vp8_dequantize_b_v6;
|
$vp8_dequantize_b_media=vp8_dequantize_b_v6;
|
||||||
$vp8_dequantize_b_neon_asm=vp8_dequantize_b_neon;
|
|
||||||
|
|
||||||
add_proto qw/void vp8_dequant_idct_add/, "short *input, short *dq, unsigned char *output, int stride";
|
add_proto qw/void vp8_dequant_idct_add/, "short *input, short *dq, unsigned char *output, int stride";
|
||||||
specialize qw/vp8_dequant_idct_add mmx media neon dspr2/;
|
specialize qw/vp8_dequant_idct_add mmx media neon dspr2/;
|
||||||
|
Loading…
Reference in New Issue
Block a user