Apply optimized functions according to cpuflags. MSA is always put after MMI as it's usually faster than MMI.
Signed-off-by: Jiaxun Yang <jiaxun.y...@flygoat.com> --- libavcodec/mips/blockdsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/cabac.h | 2 +- libavcodec/mips/h263dsp_init_mips.c | 12 +++++++--- libavcodec/mips/h264chroma_init_mips.c | 22 +++++++++++++----- libavcodec/mips/h264dsp_init_mips.c | 25 ++++++++++++++++----- libavcodec/mips/h264pred_init_mips.c | 25 ++++++++++++++++----- libavcodec/mips/h264qpel_init_mips.c | 22 +++++++++++++----- libavcodec/mips/hevcdsp_init_mips.c | 24 +++++++++++++++----- libavcodec/mips/hevcpred_init_mips.c | 12 +++++++--- libavcodec/mips/hpeldsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/idctdsp_init_mips.c | 24 +++++++++++++++----- libavcodec/mips/me_cmp_init_mips.c | 12 +++++++--- libavcodec/mips/mpegvideo_init_mips.c | 22 +++++++++++++----- libavcodec/mips/mpegvideoencdsp_init_mips.c | 13 ++++++++--- libavcodec/mips/pixblockdsp_init_mips.c | 25 ++++++++++++++++----- libavcodec/mips/qpeldsp_init_mips.c | 12 +++++++--- libavcodec/mips/vc1dsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/videodsp_init.c | 12 +++++++--- libavcodec/mips/vp3dsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/vp8dsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/vp9dsp_init_mips.c | 22 +++++++++++++----- libavcodec/mips/wmv2dsp_init_mips.c | 12 +++++++--- libavcodec/mips/xvididct_init_mips.c | 13 ++++++++--- 23 files changed, 312 insertions(+), 109 deletions(-) diff --git a/libavcodec/mips/blockdsp_init_mips.c b/libavcodec/mips/blockdsp_init_mips.c index 55ac1c3e99..47170c17ef 100644 --- a/libavcodec/mips/blockdsp_init_mips.c +++ b/libavcodec/mips/blockdsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "blockdsp_mips.h" #if HAVE_MSA @@ -30,6 +31,10 @@ static av_cold void blockdsp_init_msa(BlockDSPContext *c) c->fill_block_tab[0] = ff_fill_block16_msa; c->fill_block_tab[1] = ff_fill_block8_msa; } +#else +static av_cold void blockdsp_init_msa(BlockDSPContext *c) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -41,14 +46,19 @@ static av_cold void blockdsp_init_mmi(BlockDSPContext *c) c->fill_block_tab[0] = ff_fill_block16_mmi; c->fill_block_tab[1] = ff_fill_block8_mmi; } +#else +static av_cold void blockdsp_init_mmi(BlockDSPContext *c) +{ +} #endif /* HAVE_MMI */ void ff_blockdsp_init_mips(BlockDSPContext *c) { -#if HAVE_MMI - blockdsp_init_mmi(c); -#endif /* HAVE_MMI */ -#if HAVE_MSA - blockdsp_init_msa(c); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + blockdsp_init_mmi(c); + + if (have_msa(cpu_flags)) + blockdsp_init_msa(c); } diff --git a/libavcodec/mips/cabac.h b/libavcodec/mips/cabac.h index 03b5010edc..c595915eda 100644 --- a/libavcodec/mips/cabac.h +++ b/libavcodec/mips/cabac.h @@ -25,7 +25,7 @@ #define AVCODEC_MIPS_CABAC_H #include "libavcodec/cabac.h" -#include "libavutil/mips/mmiutils.h" +#include "libavutil/mips/asmdefs.h" #include "config.h" #define get_cabac_inline get_cabac_inline_mips diff --git a/libavcodec/mips/h263dsp_init_mips.c b/libavcodec/mips/h263dsp_init_mips.c index 09bd93707d..b88b76368b 100644 --- a/libavcodec/mips/h263dsp_init_mips.c +++ b/libavcodec/mips/h263dsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "h263dsp_mips.h" #if HAVE_MSA @@ -26,11 +27,16 @@ static av_cold void h263dsp_init_msa(H263DSPContext *c) c->h263_h_loop_filter = ff_h263_h_loop_filter_msa; c->h263_v_loop_filter = ff_h263_v_loop_filter_msa; } +#else +static av_cold void h263dsp_init_msa(H263DSPContext *c) +{ +} #endif // #if HAVE_MSA av_cold void ff_h263dsp_init_mips(H263DSPContext *c) { -#if HAVE_MSA - h263dsp_init_msa(c); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + h263dsp_init_msa(c); } diff --git a/libavcodec/mips/h264chroma_init_mips.c b/libavcodec/mips/h264chroma_init_mips.c index ae817e47ae..84d335da59 100644 --- a/libavcodec/mips/h264chroma_init_mips.c +++ b/libavcodec/mips/h264chroma_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "h264chroma_mips.h" #if HAVE_MSA @@ -36,6 +37,10 @@ static av_cold void h264chroma_init_msa(H264ChromaContext *c, int bit_depth) c->avg_h264_chroma_pixels_tab[2] = ff_avg_h264_chroma_mc2_msa; } } +#else +static av_cold void h264chroma_init_msa(H264ChromaContext *c, int bit_depth) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -50,14 +55,19 @@ static av_cold void h264chroma_init_mmi(H264ChromaContext *c, int bit_depth) c->avg_h264_chroma_pixels_tab[1] = ff_avg_h264_chroma_mc4_mmi; } } +#else +static av_cold void h264chroma_init_mmi(H264ChromaContext *c, int bit_depth) +{ +} #endif /* HAVE_MMI */ av_cold void ff_h264chroma_init_mips(H264ChromaContext *c, int bit_depth) { -#if HAVE_MMI - h264chroma_init_mmi(c, bit_depth); -#endif /* HAVE_MMI */ -#if HAVE_MSA - h264chroma_init_msa(c, bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + h264chroma_init_mmi(c, bit_depth); + + if (have_msa(cpu_flags)) + h264chroma_init_msa(c, bit_depth); } diff --git a/libavcodec/mips/h264dsp_init_mips.c b/libavcodec/mips/h264dsp_init_mips.c index dc08a25800..7b89cfc393 100644 --- a/libavcodec/mips/h264dsp_init_mips.c +++ b/libavcodec/mips/h264dsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "h264dsp_mips.h" #if HAVE_MSA @@ -79,6 +80,12 @@ static av_cold void h264dsp_init_msa(H264DSPContext *c, c->h264_luma_dc_dequant_idct = ff_h264_deq_idct_luma_dc_msa; } // if (8 == bit_depth) } +#else +static av_cold void h264dsp_init_msa(H264DSPContext *c, + const int bit_depth, + const int chroma_format_idc) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -133,15 +140,21 @@ static av_cold void h264dsp_init_mmi(H264DSPContext * c, const int bit_depth, c->h264_h_loop_filter_luma_intra = ff_deblock_h_luma_intra_8_mmi; } } +#else +static av_cold void h264dsp_init_mmi(H264DSPContext * c, const int bit_depth, + const int chroma_format_idc) +{ +} #endif /* HAVE_MMI */ av_cold void ff_h264dsp_init_mips(H264DSPContext *c, const int bit_depth, const int chroma_format_idc) { -#if HAVE_MMI - h264dsp_init_mmi(c, bit_depth, chroma_format_idc); -#endif /* HAVE_MMI */ -#if HAVE_MSA - h264dsp_init_msa(c, bit_depth, chroma_format_idc); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + h264dsp_init_mmi(c, bit_depth, chroma_format_idc); + + if (have_msa(cpu_flags)) + h264dsp_init_msa(c, bit_depth, chroma_format_idc); } diff --git a/libavcodec/mips/h264pred_init_mips.c b/libavcodec/mips/h264pred_init_mips.c index e537ad8bd4..633d157b50 100644 --- a/libavcodec/mips/h264pred_init_mips.c +++ b/libavcodec/mips/h264pred_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "h264dsp_mips.h" #include "h264pred_mips.h" @@ -91,6 +92,12 @@ static av_cold void h264_pred_init_msa(H264PredContext *h, int codec_id, h->pred16x16[DC_128_PRED8x8] = ff_h264_intra_pred_dc_128_16x16_msa; } } +#else +static av_cold void h264_pred_init_msa(H264PredContext *h, int codec_id, + const int bit_depth, + const int chroma_format_idc) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -137,16 +144,22 @@ static av_cold void h264_pred_init_mmi(H264PredContext *h, int codec_id, } } } +#else +static av_cold void h264_pred_init_mmi(H264PredContext *h, int codec_id, + const int bit_depth, const int chroma_format_idc) +{ +} #endif /* HAVE_MMI */ av_cold void ff_h264_pred_init_mips(H264PredContext *h, int codec_id, int bit_depth, const int chroma_format_idc) { -#if HAVE_MMI - h264_pred_init_mmi(h, codec_id, bit_depth, chroma_format_idc); -#endif /* HAVE_MMI */ -#if HAVE_MSA - h264_pred_init_msa(h, codec_id, bit_depth, chroma_format_idc); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + h264_pred_init_mmi(h, codec_id, bit_depth, chroma_format_idc); + + if (have_msa(cpu_flags)) + h264_pred_init_msa(h, codec_id, bit_depth, chroma_format_idc); } diff --git a/libavcodec/mips/h264qpel_init_mips.c b/libavcodec/mips/h264qpel_init_mips.c index 33bae3093a..c1d584b14b 100644 --- a/libavcodec/mips/h264qpel_init_mips.c +++ b/libavcodec/mips/h264qpel_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "h264dsp_mips.h" #if HAVE_MSA @@ -127,6 +128,10 @@ static av_cold void h264qpel_init_msa(H264QpelContext *c, int bit_depth) c->avg_h264_qpel_pixels_tab[2][15] = ff_avg_h264_qpel4_mc33_msa; } } +#else +static av_cold void h264qpel_init_msa(H264QpelContext *c, int bit_depth) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -236,14 +241,19 @@ static av_cold void h264qpel_init_mmi(H264QpelContext *c, int bit_depth) c->avg_h264_qpel_pixels_tab[2][15] = ff_avg_h264_qpel4_mc33_mmi; } } +#else +static av_cold void h264qpel_init_mmi(H264QpelContext *c, int bit_depth) +{ +} #endif /* HAVE_MMI */ av_cold void ff_h264qpel_init_mips(H264QpelContext *c, int bit_depth) { -#if HAVE_MMI - h264qpel_init_mmi(c, bit_depth); -#endif /* HAVE_MMI */ -#if HAVE_MSA - h264qpel_init_msa(c, bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + h264qpel_init_mmi(c, bit_depth); + + if (have_msa(cpu_flags)) + h264qpel_init_msa(c, bit_depth); } diff --git a/libavcodec/mips/hevcdsp_init_mips.c b/libavcodec/mips/hevcdsp_init_mips.c index 88337f462e..246d71b74e 100644 --- a/libavcodec/mips/hevcdsp_init_mips.c +++ b/libavcodec/mips/hevcdsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "libavcodec/mips/hevcdsp_mips.h" #if HAVE_MMI @@ -90,6 +91,11 @@ static av_cold void hevc_dsp_init_mmi(HEVCDSPContext *c, c->put_hevc_qpel_uni[9][1][1] = ff_hevc_put_hevc_qpel_uni_hv64_8_mmi; } } +#else +static av_cold void hevc_dsp_init_mmi(HEVCDSPContext *c, + const int bit_depth) +{ +} #endif // #if HAVE_MMI #if HAVE_MSA @@ -516,14 +522,20 @@ static av_cold void hevc_dsp_init_msa(HEVCDSPContext *c, c->transform_4x4_luma = ff_hevc_idct_luma_4x4_msa; } } +#else +static av_cold void hevc_dsp_init_msa(HEVCDSPContext *c, + const int bit_depth) +{ +} #endif // #if HAVE_MSA void ff_hevc_dsp_init_mips(HEVCDSPContext *c, const int bit_depth) { -#if HAVE_MMI - hevc_dsp_init_mmi(c, bit_depth); -#endif // #if HAVE_MMI -#if HAVE_MSA - hevc_dsp_init_msa(c, bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + hevc_dsp_init_mmi(c, bit_depth); + + if (have_msa(cpu_flags)) + hevc_dsp_init_msa(c, bit_depth); } diff --git a/libavcodec/mips/hevcpred_init_mips.c b/libavcodec/mips/hevcpred_init_mips.c index e987698d66..f829561ddf 100644 --- a/libavcodec/mips/hevcpred_init_mips.c +++ b/libavcodec/mips/hevcpred_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" #include "libavcodec/mips/hevcpred_mips.h" @@ -39,11 +40,16 @@ static av_cold void hevc_pred_init_msa(HEVCPredContext *c, const int bit_depth) c->pred_angular[3] = ff_pred_intra_pred_angular_3_msa; } } +#else +static av_cold void hevc_pred_init_msa(HEVCPredContext *c, const int bit_depth) +{ +} #endif // #if HAVE_MSA void ff_hevc_pred_init_mips(HEVCPredContext *c, const int bit_depth) { -#if HAVE_MSA - hevc_pred_init_msa(c, bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + hevc_pred_init_msa(c, bit_depth); } diff --git a/libavcodec/mips/hpeldsp_init_mips.c b/libavcodec/mips/hpeldsp_init_mips.c index d6f7a9793d..9e12bde547 100644 --- a/libavcodec/mips/hpeldsp_init_mips.c +++ b/libavcodec/mips/hpeldsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "../hpeldsp.h" #include "libavcodec/mips/hpeldsp_mips.h" @@ -64,6 +65,10 @@ static void ff_hpeldsp_init_msa(HpelDSPContext *c, int flags) c->avg_pixels_tab[2][2] = ff_avg_pixels4_y2_msa; c->avg_pixels_tab[2][3] = ff_avg_pixels4_xy2_msa; } +#else +static void ff_hpeldsp_init_msa(HpelDSPContext *c, int flags) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -109,14 +114,19 @@ static void ff_hpeldsp_init_mmi(HpelDSPContext *c, int flags) c->avg_pixels_tab[2][2] = ff_avg_pixels4_y2_8_mmi; c->avg_pixels_tab[2][3] = ff_avg_pixels4_xy2_8_mmi; } +#else +static void ff_hpeldsp_init_mmi(HpelDSPContext *c, int flags) +{ +} #endif // #if HAVE_MMI void ff_hpeldsp_init_mips(HpelDSPContext *c, int flags) { -#if HAVE_MMI - ff_hpeldsp_init_mmi(c, flags); -#endif // #if HAVE_MMI -#if HAVE_MSA - ff_hpeldsp_init_msa(c, flags); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + ff_hpeldsp_init_mmi(c, flags); + + if (have_msa(cpu_flags)) + ff_hpeldsp_init_msa(c, flags); } diff --git a/libavcodec/mips/idctdsp_init_mips.c b/libavcodec/mips/idctdsp_init_mips.c index 85b76ca478..a1a5ad5449 100644 --- a/libavcodec/mips/idctdsp_init_mips.c +++ b/libavcodec/mips/idctdsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "idctdsp_mips.h" #include "xvididct_mips.h" @@ -40,6 +41,11 @@ static av_cold void idctdsp_init_msa(IDCTDSPContext *c, AVCodecContext *avctx, c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_msa; c->add_pixels_clamped = ff_add_pixels_clamped_msa; } +#else +static av_cold void idctdsp_init_msa(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -60,15 +66,21 @@ static av_cold void idctdsp_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx, c->add_pixels_clamped = ff_add_pixels_clamped_mmi; c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_mmi; } +#else +static av_cold void idctdsp_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth) +{ +} #endif /* HAVE_MMI */ av_cold void ff_idctdsp_init_mips(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) { -#if HAVE_MMI - idctdsp_init_mmi(c, avctx, high_bit_depth); -#endif /* HAVE_MMI */ -#if HAVE_MSA - idctdsp_init_msa(c, avctx, high_bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + idctdsp_init_mmi(c, avctx, high_bit_depth); + + if (have_msa(cpu_flags)) + idctdsp_init_msa(c, avctx, high_bit_depth); } diff --git a/libavcodec/mips/me_cmp_init_mips.c b/libavcodec/mips/me_cmp_init_mips.c index 219a0dc00c..3b5c01ecd4 100644 --- a/libavcodec/mips/me_cmp_init_mips.c +++ b/libavcodec/mips/me_cmp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "me_cmp_mips.h" #if HAVE_MSA @@ -46,11 +47,16 @@ static av_cold void me_cmp_msa(MECmpContext *c, AVCodecContext *avctx) c->sse[2] = ff_sse4_msa; #endif } +#else +static av_cold void me_cmp_msa(MECmpContext *c, AVCodecContext *avctx) +{ +} #endif // #if HAVE_MSA av_cold void ff_me_cmp_init_mips(MECmpContext *c, AVCodecContext *avctx) { -#if HAVE_MSA - me_cmp_msa(c, avctx); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + me_cmp_msa(c, avctx); } diff --git a/libavcodec/mips/mpegvideo_init_mips.c b/libavcodec/mips/mpegvideo_init_mips.c index be77308140..cc6d4b1785 100644 --- a/libavcodec/mips/mpegvideo_init_mips.c +++ b/libavcodec/mips/mpegvideo_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "h263dsp_mips.h" #include "mpegvideo_mips.h" @@ -29,6 +30,10 @@ static av_cold void dct_unquantize_init_msa(MpegEncContext *s) if (!s->q_scale_type) s->dct_unquantize_mpeg2_inter = ff_dct_unquantize_mpeg2_inter_msa; } +#else +static av_cold void dct_unquantize_init_msa(MpegEncContext *s) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -45,14 +50,19 @@ static av_cold void dct_unquantize_init_mmi(MpegEncContext *s) s->denoise_dct= ff_denoise_dct_mmi; } +#else +static av_cold void dct_unquantize_init_mmi(MpegEncContext *s) +{ +} #endif /* HAVE_MMI */ av_cold void ff_mpv_common_init_mips(MpegEncContext *s) { -#if HAVE_MMI - dct_unquantize_init_mmi(s); -#endif /* HAVE_MMI */ -#if HAVE_MSA - dct_unquantize_init_msa(s); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + dct_unquantize_init_mmi(s); + + if (have_msa(cpu_flags)) + dct_unquantize_init_msa(s); } diff --git a/libavcodec/mips/mpegvideoencdsp_init_mips.c b/libavcodec/mips/mpegvideoencdsp_init_mips.c index 9bfe94e4cd..543f429aa4 100644 --- a/libavcodec/mips/mpegvideoencdsp_init_mips.c +++ b/libavcodec/mips/mpegvideoencdsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "libavcodec/bit_depth_template.c" #include "h263dsp_mips.h" @@ -29,12 +30,18 @@ static av_cold void mpegvideoencdsp_init_msa(MpegvideoEncDSPContext *c, c->pix_sum = ff_pix_sum_msa; #endif } +#else +static av_cold void mpegvideoencdsp_init_msa(MpegvideoEncDSPContext *c, + AVCodecContext *avctx) +{ +} #endif // #if HAVE_MSA av_cold void ff_mpegvideoencdsp_init_mips(MpegvideoEncDSPContext *c, AVCodecContext *avctx) { -#if HAVE_MSA - mpegvideoencdsp_init_msa(c, avctx); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + mpegvideoencdsp_init_msa(c, avctx); } diff --git a/libavcodec/mips/pixblockdsp_init_mips.c b/libavcodec/mips/pixblockdsp_init_mips.c index fd0238d79b..cf4f986ba7 100644 --- a/libavcodec/mips/pixblockdsp_init_mips.c +++ b/libavcodec/mips/pixblockdsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "pixblockdsp_mips.h" #if HAVE_MSA @@ -43,6 +44,12 @@ static av_cold void pixblockdsp_init_msa(PixblockDSPContext *c, break; } } +#else +static av_cold void pixblockdsp_init_msa(PixblockDSPContext *c, + AVCodecContext *avctx, + unsigned high_bit_depth) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -55,15 +62,21 @@ static av_cold void pixblockdsp_init_mmi(PixblockDSPContext *c, c->get_pixels = ff_get_pixels_8_mmi; } } +#else +static av_cold void pixblockdsp_init_mmi(PixblockDSPContext *c, + AVCodecContext *avctx, unsigned high_bit_depth) +{ +} #endif /* HAVE_MMI */ void ff_pixblockdsp_init_mips(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) { -#if HAVE_MMI - pixblockdsp_init_mmi(c, avctx, high_bit_depth); -#endif /* HAVE_MMI */ -#if HAVE_MSA - pixblockdsp_init_msa(c, avctx, high_bit_depth); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + pixblockdsp_init_mmi(c, avctx, high_bit_depth); + + if (have_msa(cpu_flags)) + pixblockdsp_init_msa(c, avctx, high_bit_depth); } diff --git a/libavcodec/mips/qpeldsp_init_mips.c b/libavcodec/mips/qpeldsp_init_mips.c index 140e8f89c9..2d136f5d6f 100644 --- a/libavcodec/mips/qpeldsp_init_mips.c +++ b/libavcodec/mips/qpeldsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "qpeldsp_mips.h" #if HAVE_MSA @@ -157,11 +158,16 @@ static av_cold void qpeldsp_init_msa(QpelDSPContext *c) c->avg_qpel_pixels_tab[1][14] = ff_hv_mc_qpel_avg_dst_aver_v_src1_8x8_msa; c->avg_qpel_pixels_tab[1][15] = ff_hv_mc_qpel_avg_dst_aver_hv_src11_8x8_msa; } +#else +static av_cold void qpeldsp_init_msa(QpelDSPContext *c) +{ +} #endif // #if HAVE_MSA void ff_qpeldsp_init_mips(QpelDSPContext *c) { -#if HAVE_MSA - qpeldsp_init_msa(c); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + qpeldsp_init_msa(c); } diff --git a/libavcodec/mips/vc1dsp_init_mips.c b/libavcodec/mips/vc1dsp_init_mips.c index c0007ff650..09840c6b83 100644 --- a/libavcodec/mips/vc1dsp_init_mips.c +++ b/libavcodec/mips/vc1dsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "libavutil/attributes.h" #include "libavcodec/vc1dsp.h" #include "vc1dsp_mips.h" @@ -98,6 +99,10 @@ static av_cold void vc1dsp_init_mmi(VC1DSPContext *dsp) dsp->put_no_rnd_vc1_chroma_pixels_tab[1] = ff_put_no_rnd_vc1_chroma_mc4_mmi; dsp->avg_no_rnd_vc1_chroma_pixels_tab[1] = ff_avg_no_rnd_vc1_chroma_mc4_mmi; } +#else +static av_cold void vc1dsp_init_mmi(VC1DSPContext *dsp) +{ +} #endif /* HAVE_MMI */ #if HAVE_MSA @@ -117,14 +122,19 @@ static av_cold void vc1dsp_init_msa(VC1DSPContext *dsp) FN_ASSIGN(put_, 3, 2, _msa); FN_ASSIGN(put_, 3, 3, _msa); } +#else +static av_cold void vc1dsp_init_msa(VC1DSPContext *dsp) +{ +} #endif /* HAVE_MSA */ av_cold void ff_vc1dsp_init_mips(VC1DSPContext *dsp) { -#if HAVE_MMI - vc1dsp_init_mmi(dsp); -#endif /* HAVE_MMI */ -#if HAVE_MSA - vc1dsp_init_msa(dsp); -#endif /* HAVE_MSA */ + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + vc1dsp_init_mmi(dsp); + + if (have_msa(cpu_flags)) + vc1dsp_init_msa(dsp); } diff --git a/libavcodec/mips/videodsp_init.c b/libavcodec/mips/videodsp_init.c index 817040420b..9d64d88a48 100644 --- a/libavcodec/mips/videodsp_init.c +++ b/libavcodec/mips/videodsp_init.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" #include "libavutil/mips/asmdefs.h" @@ -41,11 +42,16 @@ static void prefetch_mips(uint8_t *mem, ptrdiff_t stride, int h) : [stride] "r" (stride) ); } +#else +static void prefetch_mips(uint8_t *mem, ptrdiff_t stride, int h) +{ +} #endif // #if HAVE_MSA av_cold void ff_videodsp_init_mips(VideoDSPContext *ctx, int bpc) { -#if HAVE_MSA - ctx->prefetch = prefetch_mips; -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_msa(cpu_flags)) + ctx->prefetch = prefetch_mips; } diff --git a/libavcodec/mips/vp3dsp_init_mips.c b/libavcodec/mips/vp3dsp_init_mips.c index e183db35b6..fcbd7e8332 100644 --- a/libavcodec/mips/vp3dsp_init_mips.c +++ b/libavcodec/mips/vp3dsp_init_mips.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" #include "libavcodec/avcodec.h" @@ -36,6 +37,10 @@ static av_cold void vp3dsp_init_msa(VP3DSPContext *c, int flags) c->v_loop_filter = ff_vp3_v_loop_filter_msa; c->h_loop_filter = ff_vp3_h_loop_filter_msa; } +#else +static av_cold void vp3dsp_init_msa(VP3DSPContext *c, int flags) +{ +} #endif /* HAVE_MSA */ #if HAVE_MMI @@ -47,14 +52,19 @@ static av_cold void vp3dsp_init_mmi(VP3DSPContext *c, int flags) c->idct_put = ff_vp3_idct_put_mmi; c->idct_dc_add = ff_vp3_idct_dc_add_mmi; } +#else +static av_cold void vp3dsp_init_mmi(VP3DSPContext *c, int flags) +{ +} #endif /* HAVE_MMI */ av_cold void ff_vp3dsp_init_mips(VP3DSPContext *c, int flags) { -#if HAVE_MMI - vp3dsp_init_mmi(c, flags); -#endif /* HAVE_MMI */ -#if HAVE_MSA - vp3dsp_init_msa(c, flags); -#endif /* HAVE_MSA */ + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + vp3dsp_init_mmi(c, flags); + + if (have_msa(cpu_flags)) + vp3dsp_init_msa(c, flags); } diff --git a/libavcodec/mips/vp8dsp_init_mips.c b/libavcodec/mips/vp8dsp_init_mips.c index 7fd8fb0d32..73f172b64f 100644 --- a/libavcodec/mips/vp8dsp_init_mips.c +++ b/libavcodec/mips/vp8dsp_init_mips.c @@ -24,6 +24,7 @@ * VP8 compatible video decoder */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" #include "libavcodec/vp8dsp.h" @@ -104,6 +105,10 @@ static av_cold void vp8dsp_init_msa(VP8DSPContext *dsp) dsp->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter_simple_msa; dsp->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_msa; } +#else +static av_cold void vp8dsp_init_msa(VP8DSPContext *dsp) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -189,14 +194,19 @@ static av_cold void vp8dsp_init_mmi(VP8DSPContext *dsp) dsp->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter_simple_mmi; dsp->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_mmi; } +#else +static av_cold void vp8dsp_init_mmi(VP8DSPContext *dsp) +{ +} #endif /* HAVE_MMI */ av_cold void ff_vp8dsp_init_mips(VP8DSPContext *dsp) { -#if HAVE_MMI - vp8dsp_init_mmi(dsp); -#endif /* HAVE_MMI */ -#if HAVE_MSA - vp8dsp_init_msa(dsp); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + vp8dsp_init_mmi(dsp); + + if (have_msa(cpu_flags)) + vp8dsp_init_msa(dsp); } diff --git a/libavcodec/mips/vp9dsp_init_mips.c b/libavcodec/mips/vp9dsp_init_mips.c index 5990fa6952..ddbbd9f838 100644 --- a/libavcodec/mips/vp9dsp_init_mips.c +++ b/libavcodec/mips/vp9dsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/common.h" #include "libavcodec/vp9dsp.h" @@ -166,6 +167,10 @@ static av_cold void vp9dsp_init_msa(VP9DSPContext *dsp, int bpp) vp9dsp_mc_init_msa(dsp, bpp); vp9dsp_loopfilter_init_msa(dsp, bpp); } +#else +static av_cold void vp9dsp_init_msa(VP9DSPContext *dsp, int bpp) +{ +} #endif // #if HAVE_MSA #if HAVE_MMI @@ -205,14 +210,19 @@ static av_cold void vp9dsp_init_mmi(VP9DSPContext *dsp, int bpp) vp9dsp_mc_init_mmi(dsp); } } +#else +static av_cold void vp9dsp_init_mmi(VP9DSPContext *dsp, int bpp) +{ +} #endif // #if HAVE_MMI av_cold void ff_vp9dsp_init_mips(VP9DSPContext *dsp, int bpp) { -#if HAVE_MMI - vp9dsp_init_mmi(dsp, bpp); -#endif // #if HAVE_MMI -#if HAVE_MSA - vp9dsp_init_msa(dsp, bpp); -#endif // #if HAVE_MSA + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + vp9dsp_init_mmi(dsp, bpp); + + if (have_msa(cpu_flags)) + vp9dsp_init_msa(dsp, bpp); } diff --git a/libavcodec/mips/wmv2dsp_init_mips.c b/libavcodec/mips/wmv2dsp_init_mips.c index 51dd2078d9..9dc3aeb29a 100644 --- a/libavcodec/mips/wmv2dsp_init_mips.c +++ b/libavcodec/mips/wmv2dsp_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" #include "wmv2dsp_mips.h" @@ -28,11 +29,16 @@ static av_cold void wmv2dsp_init_mmi(WMV2DSPContext *c) c->idct_add = ff_wmv2_idct_add_mmi; c->idct_put = ff_wmv2_idct_put_mmi; } +#else +static av_cold void wmv2dsp_init_mmi(WMV2DSPContext *c) +{ +} #endif /* HAVE_MMI */ av_cold void ff_wmv2dsp_init_mips(WMV2DSPContext *c) { -#if HAVE_MMI - wmv2dsp_init_mmi(c); -#endif /* HAVE_MMI */ + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + wmv2dsp_init_mmi(c); } diff --git a/libavcodec/mips/xvididct_init_mips.c b/libavcodec/mips/xvididct_init_mips.c index c1d82cc30c..9193cbb401 100644 --- a/libavcodec/mips/xvididct_init_mips.c +++ b/libavcodec/mips/xvididct_init_mips.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/mips/cpu.h" #include "xvididct_mips.h" #if HAVE_MMI @@ -34,12 +35,18 @@ static av_cold void xvid_idct_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx, } } } +#else +static av_cold void xvid_idct_init_mmi(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth) +{ +} #endif /* HAVE_MMI */ av_cold void ff_xvid_idct_init_mips(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) { -#if HAVE_MMI - xvid_idct_init_mmi(c, avctx, high_bit_depth); -#endif /* HAVE_MMI */ + int cpu_flags = av_get_cpu_flags(); + + if (have_mmi(cpu_flags)) + xvid_idct_init_mmi(c, avctx, high_bit_depth); } -- 2.20.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".