mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
x86: cavs: call ff_cavsdsp_init_x86() under if (ARCH_X86)
This commit is contained in:
parent
f101eab1be
commit
cb36febcbc
@ -546,5 +546,6 @@ av_cold void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx) {
|
|||||||
c->cavs_idct8_add = cavs_idct8_add_c;
|
c->cavs_idct8_add = cavs_idct8_add_c;
|
||||||
c->idct_perm = FF_NO_IDCT_PERM;
|
c->idct_perm = FF_NO_IDCT_PERM;
|
||||||
|
|
||||||
if (HAVE_MMX) ff_cavsdsp_init_mmx(c, avctx);
|
if (ARCH_X86)
|
||||||
|
ff_cavsdsp_init_x86(c, avctx);
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,6 @@ typedef struct CAVSDSPContext {
|
|||||||
} CAVSDSPContext;
|
} CAVSDSPContext;
|
||||||
|
|
||||||
void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx);
|
void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx);
|
||||||
void ff_cavsdsp_init_mmx(CAVSDSPContext* c, AVCodecContext *avctx);
|
void ff_cavsdsp_init_x86(CAVSDSPContext* c, AVCodecContext *avctx);
|
||||||
|
|
||||||
#endif /* AVCODEC_CAVSDSP_H */
|
#endif /* AVCODEC_CAVSDSP_H */
|
||||||
|
@ -2,6 +2,7 @@ OBJS += x86/fmtconvert_init.o
|
|||||||
|
|
||||||
OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o
|
OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o
|
||||||
OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o
|
OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o
|
||||||
|
OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o
|
||||||
OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o
|
OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o
|
||||||
OBJS-$(CONFIG_FFT) += x86/fft_init.o
|
OBJS-$(CONFIG_FFT) += x86/fft_init.o
|
||||||
OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o
|
OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o
|
||||||
@ -29,7 +30,6 @@ MMX-OBJS += x86/dsputil_mmx.o \
|
|||||||
x86/idct_sse2_xvid.o \
|
x86/idct_sse2_xvid.o \
|
||||||
x86/simple_idct.o \
|
x86/simple_idct.o \
|
||||||
|
|
||||||
MMX-OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o
|
|
||||||
MMX-OBJS-$(CONFIG_DWT) += x86/snowdsp.o
|
MMX-OBJS-$(CONFIG_DWT) += x86/snowdsp.o
|
||||||
MMX-OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \
|
MMX-OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \
|
||||||
x86/motion_est.o
|
x86/motion_est.o
|
||||||
|
@ -25,11 +25,13 @@
|
|||||||
#include "libavutil/common.h"
|
#include "libavutil/common.h"
|
||||||
#include "libavutil/cpu.h"
|
#include "libavutil/cpu.h"
|
||||||
#include "libavutil/x86/asm.h"
|
#include "libavutil/x86/asm.h"
|
||||||
|
#include "libavutil/x86/cpu.h"
|
||||||
#include "libavcodec/dsputil.h"
|
#include "libavcodec/dsputil.h"
|
||||||
#include "libavcodec/cavsdsp.h"
|
#include "libavcodec/cavsdsp.h"
|
||||||
#include "dsputil_mmx.h"
|
#include "dsputil_mmx.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#if HAVE_INLINE_ASM
|
#if (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE)
|
||||||
|
|
||||||
/* in/out: mma=mma+mmb, mmb=mmb-mma */
|
/* in/out: mma=mma+mmb, mmb=mmb-mma */
|
||||||
#define SUMSUB_BA( a, b ) \
|
#define SUMSUB_BA( a, b ) \
|
||||||
@ -433,15 +435,12 @@ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc03_ ## MMX(uint8_t *dst, ui
|
|||||||
"pavgb " #temp ", " #a " \n\t"\
|
"pavgb " #temp ", " #a " \n\t"\
|
||||||
"mov" #size " " #a ", " #b " \n\t"
|
"mov" #size " " #a ", " #b " \n\t"
|
||||||
|
|
||||||
QPEL_CAVS(put_, PUT_OP, 3dnow)
|
#endif /* (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE) */
|
||||||
QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
|
|
||||||
|
#if HAVE_MMXEXT_INLINE
|
||||||
QPEL_CAVS(put_, PUT_OP, mmx2)
|
QPEL_CAVS(put_, PUT_OP, mmx2)
|
||||||
QPEL_CAVS(avg_, AVG_MMX2_OP, mmx2)
|
QPEL_CAVS(avg_, AVG_MMX2_OP, mmx2)
|
||||||
|
|
||||||
CAVS_MC(put_, 8, 3dnow)
|
|
||||||
CAVS_MC(put_, 16,3dnow)
|
|
||||||
CAVS_MC(avg_, 8, 3dnow)
|
|
||||||
CAVS_MC(avg_, 16,3dnow)
|
|
||||||
CAVS_MC(put_, 8, mmx2)
|
CAVS_MC(put_, 8, mmx2)
|
||||||
CAVS_MC(put_, 16,mmx2)
|
CAVS_MC(put_, 16,mmx2)
|
||||||
CAVS_MC(avg_, 8, mmx2)
|
CAVS_MC(avg_, 8, mmx2)
|
||||||
@ -463,6 +462,16 @@ static void ff_cavsdsp_init_mmx2(CAVSDSPContext* c, AVCodecContext *avctx) {
|
|||||||
c->cavs_idct8_add = cavs_idct8_add_mmx;
|
c->cavs_idct8_add = cavs_idct8_add_mmx;
|
||||||
c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
|
c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_MMXEXT_INLINE */
|
||||||
|
|
||||||
|
#if HAVE_AMD3DNOW_INLINE
|
||||||
|
QPEL_CAVS(put_, PUT_OP, 3dnow)
|
||||||
|
QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
|
||||||
|
|
||||||
|
CAVS_MC(put_, 8, 3dnow)
|
||||||
|
CAVS_MC(put_, 16,3dnow)
|
||||||
|
CAVS_MC(avg_, 8, 3dnow)
|
||||||
|
CAVS_MC(avg_, 16,3dnow)
|
||||||
|
|
||||||
static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) {
|
static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) {
|
||||||
#define dspfunc(PFX, IDX, NUM) \
|
#define dspfunc(PFX, IDX, NUM) \
|
||||||
@ -480,15 +489,16 @@ static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) {
|
|||||||
c->cavs_idct8_add = cavs_idct8_add_mmx;
|
c->cavs_idct8_add = cavs_idct8_add_mmx;
|
||||||
c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
|
c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_AMD3DNOW_INLINE */
|
||||||
|
|
||||||
#endif /* HAVE_INLINE_ASM */
|
av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx)
|
||||||
|
|
||||||
void ff_cavsdsp_init_mmx(CAVSDSPContext *c, AVCodecContext *avctx)
|
|
||||||
{
|
{
|
||||||
int mm_flags = av_get_cpu_flags();
|
int mm_flags = av_get_cpu_flags();
|
||||||
|
|
||||||
#if HAVE_INLINE_ASM
|
#if HAVE_MMXEXT_INLINE
|
||||||
if (mm_flags & AV_CPU_FLAG_MMXEXT) ff_cavsdsp_init_mmx2(c, avctx);
|
if (mm_flags & AV_CPU_FLAG_MMXEXT) ff_cavsdsp_init_mmx2(c, avctx);
|
||||||
|
#endif /* HAVE_MMXEXT_INLINE */
|
||||||
|
#if HAVE_AMD3DNOW_INLINE
|
||||||
if (mm_flags & AV_CPU_FLAG_3DNOW) ff_cavsdsp_init_3dnow(c, avctx);
|
if (mm_flags & AV_CPU_FLAG_3DNOW) ff_cavsdsp_init_3dnow(c, avctx);
|
||||||
#endif /* HAVE_INLINE_ASM */
|
#endif /* HAVE_AMD3DNOW_INLINE */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user