Compare commits
1 Commits
main
...
sandbox/jk
Author | SHA1 | Date | |
---|---|---|---|
![]() |
976752507a |
291
build/make/rtcd.sh
Executable file
291
build/make/rtcd.sh
Executable file
@ -0,0 +1,291 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
self=$0
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF >&2
|
||||||
|
Usage: $self [options] FILE
|
||||||
|
|
||||||
|
Reads the Run Time CPU Detections definitions from FILE and generates a
|
||||||
|
C header file on stdout.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--arch=ARCH Architecture to generate defs for (required)
|
||||||
|
--disable-EXT Disable support for EXT extensions
|
||||||
|
--sym=SYMBOL Unique symbol to use for RTCD initialization function
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
echo "$@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
die_argument_required() {
|
||||||
|
die "Option $opt requires argument"
|
||||||
|
}
|
||||||
|
|
||||||
|
for opt; do
|
||||||
|
optval="${opt#*=}"
|
||||||
|
case "$opt" in
|
||||||
|
--arch) die_argument_required;;
|
||||||
|
--arch=*) arch=${optval};;
|
||||||
|
--disable-*) eval "disable_${opt#--disable-}=true";;
|
||||||
|
--sym) die_argument_required;;
|
||||||
|
--sym=*) symbol=${optval};;
|
||||||
|
--rtcd=*) CONFIG_RUNTIME_CPU_DETECT=${optval};;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
die "Unrecognized option: ${opt%%=*}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
defs_file="$defs_file $opt"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
for f in $defs_file; do [ -f "$f" ] || usage; done
|
||||||
|
[ -n "$arch" ] || usage
|
||||||
|
|
||||||
|
#
|
||||||
|
# Routines for the RTCD DSL to call
|
||||||
|
#
|
||||||
|
prototype() {
|
||||||
|
local rtyp="$1"
|
||||||
|
local fn="$2"
|
||||||
|
local args="$3"
|
||||||
|
|
||||||
|
eval "${2}_rtyp='$1'"
|
||||||
|
eval "${2}_args='$3'"
|
||||||
|
ALL_FUNCS="$ALL_FUNCS $fn"
|
||||||
|
}
|
||||||
|
|
||||||
|
specialize() {
|
||||||
|
local fn="$1"
|
||||||
|
shift
|
||||||
|
for opt in c "$@"; do
|
||||||
|
eval "${fn}_${opt}=${fn}_${opt}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
require() {
|
||||||
|
for fn in $ALL_FUNCS; do
|
||||||
|
for opt in "$@"; do
|
||||||
|
local ofn=$(eval "echo \$${fn}_${opt}")
|
||||||
|
[ -z "$ofn" ] && continue
|
||||||
|
|
||||||
|
# if we already have a default, then we can undefine it, as we know
|
||||||
|
# we can do better.
|
||||||
|
local best=$(eval "echo \$${fn}_default")
|
||||||
|
[ -n "$best" ] && eval "unset $best"
|
||||||
|
eval "${fn}_default=${fn}_${opt}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_decls() {
|
||||||
|
ALL_FORWARD_DECLS="$ALL_FORWARD_DECLS $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Include the user's directives
|
||||||
|
#
|
||||||
|
for f in $defs_file; do
|
||||||
|
. $f
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# Process the directives according to the command line
|
||||||
|
#
|
||||||
|
process_forward_decls() {
|
||||||
|
for fn in $ALL_FORWARD_DECLS; do
|
||||||
|
eval $fn
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
determine_indirection() {
|
||||||
|
[ "$CONFIG_RUNTIME_CPU_DETECT" = "yes" ] || require $ALL_ARCHS
|
||||||
|
for fn in $ALL_FUNCS; do
|
||||||
|
local n=""
|
||||||
|
local rtyp=$(eval "echo \$${fn}_rtyp")
|
||||||
|
local args=$(eval "echo \$${fn}_args")
|
||||||
|
local dfn=$(eval "echo \$${fn}_default")
|
||||||
|
dfn=$(eval "echo \$${dfn}")
|
||||||
|
for opt in "$@"; do
|
||||||
|
local ofn=$(eval "echo \$${fn}_${opt}")
|
||||||
|
[ -z "$ofn" ] && continue
|
||||||
|
n="${n}x"
|
||||||
|
done
|
||||||
|
if [ "$n" = "x" ]; then
|
||||||
|
eval "${fn}_indirect=false"
|
||||||
|
else
|
||||||
|
eval "${fn}_indirect=true"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
declare_function_pointers() {
|
||||||
|
for fn in $ALL_FUNCS; do
|
||||||
|
local n=""
|
||||||
|
local rtyp=$(eval "echo \$${fn}_rtyp")
|
||||||
|
local args=$(eval "echo \$${fn}_args")
|
||||||
|
local dfn=$(eval "echo \$${fn}_default")
|
||||||
|
dfn=$(eval "echo \$${dfn}")
|
||||||
|
for opt in "$@"; do
|
||||||
|
local ofn=$(eval "echo \$${fn}_${opt}")
|
||||||
|
[ -z "$ofn" ] && continue
|
||||||
|
n="${n}x"
|
||||||
|
echo "$rtyp ${ofn}($args);"
|
||||||
|
done
|
||||||
|
if [ "$n" = "x" ]; then
|
||||||
|
echo "#define ${fn} ${dfn}"
|
||||||
|
else
|
||||||
|
echo "RTCD_EXTERN $rtyp (*${fn})($args);"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
set_function_pointers() {
|
||||||
|
for fn in $ALL_FUNCS; do
|
||||||
|
local n=""
|
||||||
|
local rtyp=$(eval "echo \$${fn}_rtyp")
|
||||||
|
local args=$(eval "echo \$${fn}_args")
|
||||||
|
local dfn=$(eval "echo \$${fn}_default")
|
||||||
|
dfn=$(eval "echo \$${dfn}")
|
||||||
|
if $(eval "echo \$${fn}_indirect"); then
|
||||||
|
echo " $fn = $dfn;"
|
||||||
|
for opt in "$@"; do
|
||||||
|
local ofn=$(eval "echo \$${fn}_${opt}")
|
||||||
|
[ -z "$ofn" ] && continue
|
||||||
|
[ "$ofn" = "$dfn" ] && continue;
|
||||||
|
echo " if (have_${opt}) $fn = $ofn;"
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
local filtered
|
||||||
|
for opt in "$@"; do
|
||||||
|
[ -z $(eval "echo \$disable_${opt}") ] && filtered="$filtered $opt"
|
||||||
|
done
|
||||||
|
echo $filtered
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Helper functions for generating the arch specific RTCD files
|
||||||
|
#
|
||||||
|
common_top() {
|
||||||
|
local outfile_basename=$(basename ${outfile:-rtcd.h})
|
||||||
|
local include_guard=$(echo -n $outfile_basename | tr [a-z] [A-Z] | tr -c [A-Z] _)
|
||||||
|
cat <<EOF
|
||||||
|
#ifndef ${include_guard}
|
||||||
|
#define ${include_guard}
|
||||||
|
|
||||||
|
#ifdef RTCD_C
|
||||||
|
#define RTCD_EXTERN
|
||||||
|
#else
|
||||||
|
#define RTCD_EXTERN extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
$(process_forward_decls)
|
||||||
|
|
||||||
|
$(declare_function_pointers c $ALL_ARCHS)
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
common_bottom() {
|
||||||
|
cat <<EOF
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
x86() {
|
||||||
|
determine_indirection c $ALL_ARCHS
|
||||||
|
cat <<EOF
|
||||||
|
$(common_top)
|
||||||
|
void ${symbol:-rtcd}(void);
|
||||||
|
|
||||||
|
#ifdef RTCD_C
|
||||||
|
#include "vpx_ports/x86.h"
|
||||||
|
void ${symbol:-rtcd}(void)
|
||||||
|
{
|
||||||
|
int flags = x86_simd_caps();
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Write out the helper variable for each enabled extension
|
||||||
|
for opt in $ALL_ARCHS; do
|
||||||
|
local uc=$(echo -n $opt | tr [a-z] [A-Z])
|
||||||
|
echo " int have_${opt} = flags & HAS_${uc};"
|
||||||
|
done
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
$(set_function_pointers c $ALL_ARCHS)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
$(common_bottom)
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
arm() {
|
||||||
|
determine_indirection c $ALL_ARCHS
|
||||||
|
cat <<EOF
|
||||||
|
$(common_top)
|
||||||
|
#include "vpx_config.h"
|
||||||
|
#include "vp8/decoder/onyxd_int.h"
|
||||||
|
|
||||||
|
void ${symbol:-rtcd}(VP8D_COMP *pbi);
|
||||||
|
|
||||||
|
#ifdef RTCD_C
|
||||||
|
void ${symbol:-rtcd}(VP8D_COMP *pbi)
|
||||||
|
{
|
||||||
|
#if CONFIG_RUNTIME_CPU_DETECT
|
||||||
|
int flags = pbi->common.rtcd.flags;
|
||||||
|
|
||||||
|
int have_v5te = flags & HAS_EDSP;
|
||||||
|
int have_v6 = flags & HAS_MEDIA;
|
||||||
|
int have_neon = flags & HAS_NEON;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
$(set_function_pointers c $ALL_ARCHS)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
$(common_bottom)
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main Driver
|
||||||
|
#
|
||||||
|
require c
|
||||||
|
case $arch in
|
||||||
|
x86)
|
||||||
|
ALL_ARCHS=$(filter mmx sse sse2 sse3 sse4_1)
|
||||||
|
x86
|
||||||
|
;;
|
||||||
|
x86_64)
|
||||||
|
ALL_ARCHS=$(filter mmx sse sse2 sse3 sse4_1)
|
||||||
|
require $(filter mmx sse sse2)
|
||||||
|
x86
|
||||||
|
;;
|
||||||
|
armv5te)
|
||||||
|
ALL_ARCHS=$(filter v5te)
|
||||||
|
arm
|
||||||
|
;;
|
||||||
|
armv6)
|
||||||
|
ALL_ARCHS=$(filter v5te v6)
|
||||||
|
arm
|
||||||
|
;;
|
||||||
|
armv7)
|
||||||
|
ALL_ARCHS=$(filter v5te v6 neon)
|
||||||
|
arm
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "Unrecognized architecture: $arch"
|
||||||
|
esac
|
9
libs.mk
9
libs.mk
@ -322,6 +322,15 @@ endif
|
|||||||
$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
|
$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
|
||||||
CLEAN-OBJS += $(BUILD_PFX)vpx_version.h
|
CLEAN-OBJS += $(BUILD_PFX)vpx_version.h
|
||||||
|
|
||||||
|
#
|
||||||
|
# Rule to generate runtime cpu detection files
|
||||||
|
#
|
||||||
|
$(OBJS-yes:.o=.d): vpx_rtcd.h
|
||||||
|
vpx_rtcd.h: $(sort $(filter %rtcd_defs.sh,$(CODEC_SRCS)))
|
||||||
|
$(SRC_PATH_BARE)/build/make/rtcd.sh --arch=$(TGT_ISA) --sym=vpx_rtcd \
|
||||||
|
--rtcd=$(CONFIG_RUNTIME_CPU_DETECT) $^ > $@
|
||||||
|
CLEAN-OBJS += $(BUILD_PFX)vpx_rtcd.h
|
||||||
|
|
||||||
CODEC_DOC_SRCS += vpx/vpx_codec.h \
|
CODEC_DOC_SRCS += vpx/vpx_codec.h \
|
||||||
vpx/vpx_decoder.h \
|
vpx/vpx_decoder.h \
|
||||||
vpx/vpx_encoder.h \
|
vpx/vpx_encoder.h \
|
||||||
|
@ -182,7 +182,7 @@ typedef struct
|
|||||||
} LOWER_RES_INFO;
|
} LOWER_RES_INFO;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct blockd
|
||||||
{
|
{
|
||||||
short *qcoeff;
|
short *qcoeff;
|
||||||
short *dqcoeff;
|
short *dqcoeff;
|
||||||
|
12
vp8/common/rtcd.c
Normal file
12
vp8/common/rtcd.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 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_config.h"
|
||||||
|
#define RTCD_C
|
||||||
|
#include "vpx_rtcd.h"
|
@ -1,50 +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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "vpx_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
|
|
||||||
|
|
||||||
#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.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;
|
|
||||||
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
|
|
||||||
}
|
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
|
||||||
|
|
||||||
|
|
||||||
void vp8_dequant_idct_add_y_block_v6(short *q, short *dq,
|
void vp8_dequant_idct_add_y_block_v6(short *q, short *dq,
|
||||||
|
@ -10,9 +10,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
#include "vp8/common/blockd.h"
|
||||||
#include "vp8/common/idct.h"
|
|
||||||
#include "vpx_mem/vpx_mem.h"
|
|
||||||
|
|
||||||
#if HAVE_ARMV7
|
#if HAVE_ARMV7
|
||||||
extern void vp8_dequantize_b_loop_neon(short *Q, short *DQC, short *DQ);
|
extern void vp8_dequantize_b_loop_neon(short *Q, short *DQC, short *DQ);
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
|
||||||
|
|
||||||
/* place these declarations here because we don't want to maintain them
|
/* place these declarations here because we don't want to maintain them
|
||||||
* outside of this scope
|
* outside of this scope
|
||||||
|
@ -9,13 +9,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "vpx_config.h"
|
||||||
|
#include "vpx_rtcd.h"
|
||||||
#include "onyxd_int.h"
|
#include "onyxd_int.h"
|
||||||
#include "vp8/common/header.h"
|
#include "vp8/common/header.h"
|
||||||
#include "vp8/common/reconintra.h"
|
#include "vp8/common/reconintra.h"
|
||||||
#include "vp8/common/reconintra4x4.h"
|
#include "vp8/common/reconintra4x4.h"
|
||||||
#include "vp8/common/recon.h"
|
#include "vp8/common/recon.h"
|
||||||
#include "vp8/common/reconinter.h"
|
#include "vp8/common/reconinter.h"
|
||||||
#include "dequantize.h"
|
|
||||||
#include "detokenize.h"
|
#include "detokenize.h"
|
||||||
#include "vp8/common/invtrans.h"
|
#include "vp8/common/invtrans.h"
|
||||||
#include "vp8/common/alloccommon.h"
|
#include "vp8/common/alloccommon.h"
|
||||||
@ -32,7 +33,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "vpx_mem/vpx_mem.h"
|
#include "vpx_mem/vpx_mem.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "dequantize.h"
|
|
||||||
#include "vp8/common/threading.h"
|
#include "vp8/common/threading.h"
|
||||||
#include "decoderthreading.h"
|
#include "decoderthreading.h"
|
||||||
#include "dboolhuff.h"
|
#include "dboolhuff.h"
|
||||||
@ -218,7 +218,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||||||
{
|
{
|
||||||
if (xd->eobs[i] > 1)
|
if (xd->eobs[i] > 1)
|
||||||
{
|
{
|
||||||
DEQUANT_INVOKE(&pbi->dequant, idct_add)
|
vp8_dequant_idct_add
|
||||||
(b->qcoeff, b->dequant,
|
(b->qcoeff, b->dequant,
|
||||||
*(b->base_dst) + b->dst, b->dst_stride);
|
*(b->base_dst) + b->dst, b->dst_stride);
|
||||||
}
|
}
|
||||||
@ -247,7 +247,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||||||
/* do 2nd order transform on the dc block */
|
/* do 2nd order transform on the dc block */
|
||||||
if (xd->eobs[24] > 1)
|
if (xd->eobs[24] > 1)
|
||||||
{
|
{
|
||||||
DEQUANT_INVOKE(&pbi->dequant, block)(b);
|
vp8_dequantize_b(b);
|
||||||
|
|
||||||
IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
|
IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
|
||||||
xd->qcoeff);
|
xd->qcoeff);
|
||||||
@ -272,7 +272,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||||||
DQC[0] = 1;
|
DQC[0] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEQUANT_INVOKE (&pbi->dequant, idct_add_y_block)
|
vp8_dequant_idct_add_y_block
|
||||||
(xd->qcoeff, xd->block[0].dequant,
|
(xd->qcoeff, xd->block[0].dequant,
|
||||||
xd->dst.y_buffer,
|
xd->dst.y_buffer,
|
||||||
xd->dst.y_stride, xd->eobs);
|
xd->dst.y_stride, xd->eobs);
|
||||||
@ -281,7 +281,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
|
|||||||
DQC[0] = dc_dequant_temp;
|
DQC[0] = dc_dequant_temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEQUANT_INVOKE (&pbi->dequant, idct_add_uv_block)
|
vp8_dequant_idct_add_uv_block
|
||||||
(xd->qcoeff+16*16, xd->block[16].dequant,
|
(xd->qcoeff+16*16, xd->block[16].dequant,
|
||||||
xd->dst.u_buffer, xd->dst.v_buffer,
|
xd->dst.u_buffer, xd->dst.v_buffer,
|
||||||
xd->dst.uv_stride, xd->eobs+16);
|
xd->dst.uv_stride, xd->eobs+16);
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "dequantize.h"
|
#include "vpx_rtcd.h"
|
||||||
|
#include "vp8/common/blockd.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "vpx_mem/vpx_mem.h"
|
#include "vpx_mem/vpx_mem.h"
|
||||||
|
|
||||||
|
@ -1,85 +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 DEQUANTIZE_H
|
|
||||||
#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 *output, \
|
|
||||||
int stride)
|
|
||||||
|
|
||||||
#define prototype_dequant_idct_add_y_block(sym) \
|
|
||||||
void sym(short *q, short *dq, \
|
|
||||||
unsigned char *dst, \
|
|
||||||
int stride, char *eobs)
|
|
||||||
|
|
||||||
#define prototype_dequant_idct_add_uv_block(sym) \
|
|
||||||
void sym(short *q, short *dq, \
|
|
||||||
unsigned char *dst_u, \
|
|
||||||
unsigned char *dst_v, int stride, char *eobs)
|
|
||||||
|
|
||||||
#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);
|
|
||||||
|
|
||||||
#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);
|
|
||||||
|
|
||||||
|
|
||||||
typedef prototype_dequant_block((*vp8_dequant_block_fn_t));
|
|
||||||
|
|
||||||
typedef prototype_dequant_idct_add((*vp8_dequant_idct_add_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 struct
|
|
||||||
{
|
|
||||||
vp8_dequant_block_fn_t block;
|
|
||||||
vp8_dequant_idct_add_fn_t idct_add;
|
|
||||||
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_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
|
|
||||||
|
|
||||||
#endif
|
|
@ -10,28 +10,16 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
#include "vpx_rtcd.h"
|
||||||
#include "vp8/decoder/onyxd_int.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)
|
void vp8_dmachine_specific_config(VP8D_COMP *pbi)
|
||||||
{
|
{
|
||||||
/* Pure C: */
|
/* Pure C: */
|
||||||
#if CONFIG_RUNTIME_CPU_DETECT
|
#if CONFIG_RUNTIME_CPU_DETECT
|
||||||
pbi->mb.rtcd = &pbi->common.rtcd;
|
pbi->mb.rtcd = &pbi->common.rtcd;
|
||||||
pbi->dequant.block = vp8_dequantize_b_c;
|
|
||||||
pbi->dequant.idct_add = vp8_dequant_idct_add_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
|
#endif
|
||||||
|
|
||||||
#if ARCH_X86 || ARCH_X86_64
|
/* Move this to common once we use it from more than one place. */
|
||||||
vp8_arch_x86_decode_init(pbi);
|
vpx_rtcd();
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ARCH_ARM
|
|
||||||
vp8_arch_arm_decode_init(pbi);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "dequantize.h"
|
|
||||||
|
|
||||||
void vp8_dequant_idct_add_c(short *input, short *dq,
|
void vp8_dequant_idct_add_c(short *input, short *dq,
|
||||||
unsigned char *dest, int stride);
|
unsigned char *dest, int stride);
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#include "treereader.h"
|
#include "treereader.h"
|
||||||
#include "vp8/common/onyxc_int.h"
|
#include "vp8/common/onyxc_int.h"
|
||||||
#include "vp8/common/threading.h"
|
#include "vp8/common/threading.h"
|
||||||
#include "dequantize.h"
|
|
||||||
#if CONFIG_ERROR_CONCEALMENT
|
#if CONFIG_ERROR_CONCEALMENT
|
||||||
#include "ec_types.h"
|
#include "ec_types.h"
|
||||||
#endif
|
#endif
|
||||||
@ -93,10 +92,6 @@ typedef struct VP8Decompressor
|
|||||||
|
|
||||||
DATARATE dr[16];
|
DATARATE dr[16];
|
||||||
|
|
||||||
#if CONFIG_RUNTIME_CPU_DETECT
|
|
||||||
vp8_dequant_rtcd_vtable_t dequant;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
vp8_prob prob_intra;
|
vp8_prob prob_intra;
|
||||||
vp8_prob prob_last;
|
vp8_prob prob_last;
|
||||||
|
18
vp8/decoder/rtcd_defs.sh
Normal file
18
vp8/decoder/rtcd_defs.sh
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
decoder_forward_decls() {
|
||||||
|
cat <<EOF
|
||||||
|
struct blockd;
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
forward_decls decoder_forward_decls
|
||||||
|
|
||||||
|
prototype void vp8_dequantize_b "struct blockd*"
|
||||||
|
specialize vp8_dequantize_b mmx v6 neon
|
||||||
|
|
||||||
|
prototype void vp8_dequant_idct_add "short *input, short *dq, unsigned char *output, int stride"
|
||||||
|
specialize vp8_dequant_idct_add mmx v6 neon
|
||||||
|
|
||||||
|
prototype void vp8_dequant_idct_add_y_block "short *q, short *dq, unsigned char *dst, int stride, char *eobs"
|
||||||
|
specialize vp8_dequant_idct_add_y_block mmx sse2 v6 neon
|
||||||
|
|
||||||
|
prototype void vp8_dequant_idct_add_uv_block "short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs"
|
||||||
|
specialize vp8_dequant_idct_add_uv_block mmx sse2 v6 neon
|
@ -9,6 +9,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "vpx_config.h"
|
||||||
|
#include "vpx_rtcd.h"
|
||||||
#if !defined(WIN32) && CONFIG_OS_SUPPORT == 1
|
#if !defined(WIN32) && CONFIG_OS_SUPPORT == 1
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -189,7 +191,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
|
|||||||
{
|
{
|
||||||
if (xd->eobs[i] > 1)
|
if (xd->eobs[i] > 1)
|
||||||
{
|
{
|
||||||
DEQUANT_INVOKE(&pbi->dequant, idct_add)
|
vp8_dequant_idct_add
|
||||||
(b->qcoeff, b->dequant,
|
(b->qcoeff, b->dequant,
|
||||||
*(b->base_dst) + b->dst, b->dst_stride);
|
*(b->base_dst) + b->dst, b->dst_stride);
|
||||||
}
|
}
|
||||||
@ -217,7 +219,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
|
|||||||
/* do 2nd order transform on the dc block */
|
/* do 2nd order transform on the dc block */
|
||||||
if (xd->eobs[24] > 1)
|
if (xd->eobs[24] > 1)
|
||||||
{
|
{
|
||||||
DEQUANT_INVOKE(&pbi->dequant, block)(b);
|
vp8_dequantize_b(b);
|
||||||
|
|
||||||
IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
|
IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
|
||||||
xd->qcoeff);
|
xd->qcoeff);
|
||||||
@ -248,13 +250,13 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
|
|||||||
DQC = local_dequant;
|
DQC = local_dequant;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEQUANT_INVOKE (&pbi->dequant, idct_add_y_block)
|
vp8_dequant_idct_add_y_block
|
||||||
(xd->qcoeff, DQC,
|
(xd->qcoeff, DQC,
|
||||||
xd->dst.y_buffer,
|
xd->dst.y_buffer,
|
||||||
xd->dst.y_stride, xd->eobs);
|
xd->dst.y_stride, xd->eobs);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEQUANT_INVOKE (&pbi->dequant, idct_add_uv_block)
|
vp8_dequant_idct_add_uv_block
|
||||||
(xd->qcoeff+16*16, xd->block[16].dequant,
|
(xd->qcoeff+16*16, xd->block[16].dequant,
|
||||||
xd->dst.u_buffer, xd->dst.v_buffer,
|
xd->dst.u_buffer, xd->dst.v_buffer,
|
||||||
xd->dst.uv_stride, xd->eobs+16);
|
xd->dst.uv_stride, xd->eobs+16);
|
||||||
|
@ -1,58 +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 DEQUANTIZE_X86_H
|
|
||||||
#define DEQUANTIZE_X86_H
|
|
||||||
|
|
||||||
|
|
||||||
/* Note:
|
|
||||||
*
|
|
||||||
* This platform is commonly built for runtime CPU detection. If you modify
|
|
||||||
* any of the function mappings present in this file, be sure to also update
|
|
||||||
* them in the function pointer initialization code
|
|
||||||
*/
|
|
||||||
#if HAVE_MMX
|
|
||||||
extern prototype_dequant_block(vp8_dequantize_b_mmx);
|
|
||||||
extern prototype_dequant_idct_add(vp8_dequant_idct_add_mmx);
|
|
||||||
extern prototype_dequant_idct_add_y_block(vp8_dequant_idct_add_y_block_mmx);
|
|
||||||
extern prototype_dequant_idct_add_uv_block(vp8_dequant_idct_add_uv_block_mmx);
|
|
||||||
|
|
||||||
#if !CONFIG_RUNTIME_CPU_DETECT
|
|
||||||
#undef vp8_dequant_block
|
|
||||||
#define vp8_dequant_block vp8_dequantize_b_mmx
|
|
||||||
|
|
||||||
#undef vp8_dequant_idct_add
|
|
||||||
#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
|
|
||||||
|
|
||||||
#undef vp8_dequant_idct_add_y_block
|
|
||||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_mmx
|
|
||||||
|
|
||||||
#undef vp8_dequant_idct_add_uv_block
|
|
||||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_mmx
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_SSE2
|
|
||||||
extern prototype_dequant_idct_add_y_block(vp8_dequant_idct_add_y_block_sse2);
|
|
||||||
extern prototype_dequant_idct_add_uv_block(vp8_dequant_idct_add_uv_block_sse2);
|
|
||||||
|
|
||||||
#if !CONFIG_RUNTIME_CPU_DETECT
|
|
||||||
#undef vp8_dequant_idct_add_y_block
|
|
||||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
|
|
||||||
|
|
||||||
#undef vp8_dequant_idct_add_uv_block
|
|
||||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -9,8 +9,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
|
#include "vpx_rtcd.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
|
||||||
|
|
||||||
void vp8_dequant_idct_add_y_block_mmx
|
void vp8_dequant_idct_add_y_block_mmx
|
||||||
(short *q, short *dq,
|
(short *q, short *dq,
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vp8/common/idct.h"
|
#include "vp8/common/idct.h"
|
||||||
#include "vp8/decoder/dequantize.h"
|
|
||||||
|
|
||||||
void vp8_idct_dequant_0_2x_sse2
|
void vp8_idct_dequant_0_2x_sse2
|
||||||
(short *q, short *dq ,
|
(short *q, short *dq ,
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "vpx_config.h"
|
#include "vpx_config.h"
|
||||||
#include "vpx_ports/x86.h"
|
#include "vpx_rtcd.h"
|
||||||
#include "vp8/decoder/onyxd_int.h"
|
#include "vp8/common/blockd.h"
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_MMX
|
#if HAVE_MMX
|
||||||
@ -25,35 +25,3 @@ void vp8_dequantize_b_mmx(BLOCKD *d)
|
|||||||
vp8_dequantize_b_impl_mmx(sq, dq, q);
|
vp8_dequantize_b_impl_mmx(sq, dq, q);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vp8_arch_x86_decode_init(VP8D_COMP *pbi)
|
|
||||||
{
|
|
||||||
#if CONFIG_RUNTIME_CPU_DETECT
|
|
||||||
int flags = x86_simd_caps();
|
|
||||||
|
|
||||||
/* Note:
|
|
||||||
*
|
|
||||||
* This platform can be built without runtime CPU detection as well. If
|
|
||||||
* you modify any of the function mappings present in this file, be sure
|
|
||||||
* to also update them in static mapings (<arch>/filename_<arch>.h)
|
|
||||||
*/
|
|
||||||
/* Override default functions with fastest ones for this CPU. */
|
|
||||||
#if HAVE_MMX
|
|
||||||
if (flags & HAS_MMX)
|
|
||||||
{
|
|
||||||
pbi->dequant.block = vp8_dequantize_b_mmx;
|
|
||||||
pbi->dequant.idct_add = vp8_dequant_idct_add_mmx;
|
|
||||||
pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_mmx;
|
|
||||||
pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_mmx;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if HAVE_SSE2
|
|
||||||
if (flags & HAS_SSE2)
|
|
||||||
{
|
|
||||||
pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_sse2;
|
|
||||||
pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_sse2;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
@ -51,6 +51,7 @@ VP8_COMMON_SRCS-yes += common/recon.h
|
|||||||
VP8_COMMON_SRCS-yes += common/reconinter.h
|
VP8_COMMON_SRCS-yes += common/reconinter.h
|
||||||
VP8_COMMON_SRCS-yes += common/reconintra.h
|
VP8_COMMON_SRCS-yes += common/reconintra.h
|
||||||
VP8_COMMON_SRCS-yes += common/reconintra4x4.h
|
VP8_COMMON_SRCS-yes += common/reconintra4x4.h
|
||||||
|
VP8_COMMON_SRCS-yes += common/rtcd.c
|
||||||
VP8_COMMON_SRCS-yes += common/setupintrarecon.h
|
VP8_COMMON_SRCS-yes += common/setupintrarecon.h
|
||||||
VP8_COMMON_SRCS-yes += common/subpixel.h
|
VP8_COMMON_SRCS-yes += common/subpixel.h
|
||||||
VP8_COMMON_SRCS-yes += common/swapyv12buffer.h
|
VP8_COMMON_SRCS-yes += common/swapyv12buffer.h
|
||||||
|
@ -61,7 +61,6 @@ VP8_DX_SRCS-yes += decoder/generic/dsystemdependent.c
|
|||||||
VP8_DX_SRCS-yes += decoder/dboolhuff.h
|
VP8_DX_SRCS-yes += decoder/dboolhuff.h
|
||||||
VP8_DX_SRCS-yes += decoder/decodemv.h
|
VP8_DX_SRCS-yes += decoder/decodemv.h
|
||||||
VP8_DX_SRCS-yes += decoder/decoderthreading.h
|
VP8_DX_SRCS-yes += decoder/decoderthreading.h
|
||||||
VP8_DX_SRCS-yes += decoder/dequantize.h
|
|
||||||
VP8_DX_SRCS-yes += decoder/detokenize.h
|
VP8_DX_SRCS-yes += decoder/detokenize.h
|
||||||
VP8_DX_SRCS-yes += decoder/onyxd_int.h
|
VP8_DX_SRCS-yes += decoder/onyxd_int.h
|
||||||
VP8_DX_SRCS-yes += decoder/treereader.h
|
VP8_DX_SRCS-yes += decoder/treereader.h
|
||||||
@ -70,10 +69,10 @@ VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/threading.c
|
|||||||
VP8_DX_SRCS-yes += decoder/idct_blk.c
|
VP8_DX_SRCS-yes += decoder/idct_blk.c
|
||||||
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.h
|
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.h
|
||||||
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.c
|
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.c
|
||||||
|
VP8_DX_SRCS-yes += decoder/rtcd_defs.sh
|
||||||
|
|
||||||
VP8_DX_SRCS-yes := $(filter-out $(VP8_DX_SRCS_REMOVE-yes),$(VP8_DX_SRCS-yes))
|
VP8_DX_SRCS-yes := $(filter-out $(VP8_DX_SRCS_REMOVE-yes),$(VP8_DX_SRCS-yes))
|
||||||
|
|
||||||
VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/dequantize_x86.h
|
|
||||||
VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/x86_dsystemdependent.c
|
VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/x86_dsystemdependent.c
|
||||||
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/dequantize_mmx.asm
|
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/dequantize_mmx.asm
|
||||||
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/idct_blk_mmx.c
|
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/idct_blk_mmx.c
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
|
|
||||||
#VP8_DX_SRCS list is modified according to different platforms.
|
#VP8_DX_SRCS list is modified according to different platforms.
|
||||||
|
|
||||||
VP8_DX_SRCS-$(ARCH_ARM) += decoder/arm/arm_dsystemdependent.c
|
|
||||||
VP8_DX_SRCS-$(ARCH_ARM) += decoder/arm/dequantize_arm.c
|
VP8_DX_SRCS-$(ARCH_ARM) += decoder/arm/dequantize_arm.c
|
||||||
VP8_DX_SRCS-$(ARCH_ARM) += decoder/arm/dequantize_arm.h
|
VP8_DX_SRCS-$(ARCH_ARM) += decoder/arm/dequantize_arm.h
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user