From 6c5ef7f65732e87866218b601eba6bd28acb5cb5 Mon Sep 17 00:00:00 2001 From: ZhouXiaoyong Date: Wed, 15 Apr 2015 20:18:15 +0800 Subject: [PATCH] avcodec/mips: disable assembly not supported for Loongson-3 Signed-off-by: Michael Niedermayer --- libavcodec/mips/aacsbr_mips.h | 4 ++-- libavcodec/mips/iirfilter_mips.c | 4 ++++ libavcodec/mips/mpegaudiodsp_mips_float.c | 6 ++++++ libavcodec/mips/sbrdsp_mips.c | 4 ++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libavcodec/mips/aacsbr_mips.h b/libavcodec/mips/aacsbr_mips.h index da8389f484..e525197a40 100644 --- a/libavcodec/mips/aacsbr_mips.h +++ b/libavcodec/mips/aacsbr_mips.h @@ -149,7 +149,7 @@ static void sbr_qmf_analysis_mips(AVFloatDSPContext *fdsp, FFTContext *mdct, } } -#if HAVE_MIPSFPU +#if (HAVE_MIPSFPU && !HAVE_LOONGSON3) static void sbr_qmf_synthesis_mips(FFTContext *mdct, SBRDSPContext *sbrdsp, AVFloatDSPContext *fdsp, float *out, float X[2][38][64], @@ -488,7 +488,7 @@ static void sbr_qmf_synthesis_mips(FFTContext *mdct, #define sbr_qmf_analysis sbr_qmf_analysis_mips #define sbr_qmf_synthesis sbr_qmf_synthesis_mips -#endif /* HAVE_MIPSFPU */ +#endif /* (HAVE_MIPSFPU && !HAVE_LOONGSON3) */ #endif /* HAVE_INLINE_ASM */ #endif /* AVCODEC_MIPS_AACSBR_FLOAT_H */ diff --git a/libavcodec/mips/iirfilter_mips.c b/libavcodec/mips/iirfilter_mips.c index a5646cde8b..5a145cff58 100644 --- a/libavcodec/mips/iirfilter_mips.c +++ b/libavcodec/mips/iirfilter_mips.c @@ -55,6 +55,7 @@ #include "libavcodec/iirfilter.h" #if HAVE_INLINE_ASM +#if !HAVE_LOONGSON3 typedef struct FFIIRFilterCoeffs { int order; float gain; @@ -195,10 +196,13 @@ static void ff_iir_filter_flt_mips(const struct FFIIRFilterCoeffs *c, } } } +#endif /* !HAVE_LOONGSON3 */ #endif /* HAVE_INLINE_ASM */ void ff_iir_filter_init_mips(FFIIRFilterContext *f) { #if HAVE_INLINE_ASM +#if !HAVE_LOONGSON3 f->filter_flt = ff_iir_filter_flt_mips; +#endif /* !HAVE_LOONGSON3 */ #endif /* HAVE_INLINE_ASM */ } diff --git a/libavcodec/mips/mpegaudiodsp_mips_float.c b/libavcodec/mips/mpegaudiodsp_mips_float.c index bd36894d31..beebace544 100644 --- a/libavcodec/mips/mpegaudiodsp_mips_float.c +++ b/libavcodec/mips/mpegaudiodsp_mips_float.c @@ -278,6 +278,7 @@ static void ff_mpadsp_apply_window_mips_float(float *synth_buf, float *window, ); } +#if !HAVE_LOONGSON3 static void ff_dct32_mips_float(float *out, const float *tab) { float val0 , val1 , val2 , val3 , val4 , val5 , val6 , val7, @@ -786,6 +787,7 @@ static void ff_dct32_mips_float(float *out, const float *tab) out[15] = val30 + val17; out[31] = val31; } +#endif /* !HAVE_LOONGSON3 */ static void imdct36_mips_float(float *out, float *buf, float *in, float *win) { @@ -1224,6 +1226,7 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win) ); } +#if !HAVE_LOONGSON3 static void ff_imdct36_blocks_mips_float(float *out, float *buf, float *in, int count, int switch_point, int block_type) { @@ -1242,10 +1245,13 @@ static void ff_imdct36_blocks_mips_float(float *out, float *buf, float *in, out++; } } +#endif /* !HAVE_LOONGSON3 */ void ff_mpadsp_init_mipsfpu(MPADSPContext *s) { s->apply_window_float = ff_mpadsp_apply_window_mips_float; +#if !HAVE_LOONGSON3 s->imdct36_blocks_float = ff_imdct36_blocks_mips_float; s->dct32_float = ff_dct32_mips_float; +#endif /* !HAVE_LOONGSON3 */ } diff --git a/libavcodec/mips/sbrdsp_mips.c b/libavcodec/mips/sbrdsp_mips.c index c203095548..63361e4e1b 100644 --- a/libavcodec/mips/sbrdsp_mips.c +++ b/libavcodec/mips/sbrdsp_mips.c @@ -438,6 +438,7 @@ static void sbr_qmf_deint_bfly_mips(float *v, const float *src0, const float *sr } } +#if !HAVE_LOONGSON3 static void sbr_autocorrelate_mips(const float x[40][2], float phi[3][2][2]) { int i; @@ -606,6 +607,7 @@ static void sbr_autocorrelate_mips(const float x[40][2], float phi[3][2][2]) : "memory" ); } +#endif /* !HAVE_LOONGSON3 */ static void sbr_hf_gen_mips(float (*X_high)[2], const float (*X_low)[2], const float alpha0[2], const float alpha1[2], @@ -894,7 +896,9 @@ void ff_sbrdsp_init_mips(SBRDSPContext *s) s->sum64x5 = sbr_sum64x5_mips; s->sum_square = sbr_sum_square_mips; s->qmf_deint_bfly = sbr_qmf_deint_bfly_mips; +#if !HAVE_LOONGSON3 s->autocorrelate = sbr_autocorrelate_mips; +#endif /* !HAVE_LOONGSON3 */ s->hf_gen = sbr_hf_gen_mips; s->hf_g_filt = sbr_hf_g_filt_mips;