From ccf22d3ed181a14019d0c2f02f2ce30ac8e23ef5 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Wed, 8 Sep 2010 10:02:40 +0000 Subject: Merge has_altivec() function into mm_support(), remove it and use mm_support() instead. Reduce complexity and simplify pending move to libavutil. Originally committed as revision 25074 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ppc/check_altivec.c | 15 ++++++++++----- libavcodec/ppc/dsputil_altivec.h | 2 -- libavcodec/ppc/dsputil_ppc.c | 13 +------------ libavcodec/ppc/h264_altivec.c | 4 ++-- libavcodec/ppc/mpegvideo_altivec.c | 2 +- libavcodec/ppc/vp8dsp_altivec.c | 2 +- 6 files changed, 15 insertions(+), 23 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/ppc/check_altivec.c b/libavcodec/ppc/check_altivec.c index 6b9332ce3a..95ca742668 100644 --- a/libavcodec/ppc/check_altivec.c +++ b/libavcodec/ppc/check_altivec.c @@ -43,14 +43,16 @@ * is present. */ -int has_altivec(void) +int mm_support(void) { +#if HAVE_ALTIVEC #ifdef __AMIGAOS4__ ULONG result = 0; extern struct ExecIFace *IExec; IExec->GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE); - if (result == VECTORTYPE_ALTIVEC) return 1; + if (result == VECTORTYPE_ALTIVEC) + return AV_CPU_FLAG_ALTIVEC; return 0; #elif defined(__APPLE__) || defined(__OpenBSD__) #ifdef __OpenBSD__ @@ -64,7 +66,8 @@ int has_altivec(void) err = sysctl(sels, 2, &has_vu, &len, NULL, 0); - if (err == 0) return has_vu != 0; + if (err == 0) + return has_vu ? AV_CPU_FLAG_ALTIVEC : 0; return 0; #elif CONFIG_RUNTIME_CPUDETECT int proc_ver; @@ -76,12 +79,14 @@ int has_altivec(void) proc_ver == 0x0039 || proc_ver == 0x003c || proc_ver == 0x0044 || proc_ver == 0x0045 || proc_ver == 0x0070) - return 1; + return AV_CPU_FLAG_ALTIVEC; return 0; #else // Since we were compiled for AltiVec, just assume we have it // until someone comes up with a proper way (not involving signal hacks). - return 1; + return AV_CPU_FLAG_ALTIVEC; #endif /* __AMIGAOS4__ */ +#endif /* HAVE_ALTIVEC */ + return 0; } diff --git a/libavcodec/ppc/dsputil_altivec.h b/libavcodec/ppc/dsputil_altivec.h index 18f8dd8710..cd44f602b9 100644 --- a/libavcodec/ppc/dsputil_altivec.h +++ b/libavcodec/ppc/dsputil_altivec.h @@ -30,8 +30,6 @@ void put_pixels16_altivec(uint8_t *block, const uint8_t *pixels, int line_size, void avg_pixels16_altivec(uint8_t *block, const uint8_t *pixels, int line_size, int h); -int has_altivec(void); - void fdct_altivec(int16_t *block); void gmc1_altivec(uint8_t *dst, uint8_t *src, int stride, int h, int x16, int y16, int rounder); diff --git a/libavcodec/ppc/dsputil_ppc.c b/libavcodec/ppc/dsputil_ppc.c index 6d004cf221..3c930a8179 100644 --- a/libavcodec/ppc/dsputil_ppc.c +++ b/libavcodec/ppc/dsputil_ppc.c @@ -23,17 +23,6 @@ #include "libavcodec/dsputil.h" #include "dsputil_altivec.h" -int mm_support(void) -{ - int result = 0; -#if HAVE_ALTIVEC - if (has_altivec()) { - result |= AV_CPU_FLAG_ALTIVEC; - } -#endif /* result */ - return result; -} - /* ***** WARNING ***** WARNING ***** WARNING ***** */ /* clear_blocks_dcbz32_ppc will not work properly on PowerPC processors with a @@ -179,7 +168,7 @@ void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx) #if HAVE_ALTIVEC if(CONFIG_H264_DECODER) dsputil_h264_init_ppc(c, avctx); - if (has_altivec()) { + if (mm_support() & AV_CPU_FLAG_ALTIVEC) { dsputil_init_altivec(c, avctx); if(CONFIG_VC1_DECODER) vc1dsp_init_altivec(c, avctx); diff --git a/libavcodec/ppc/h264_altivec.c b/libavcodec/ppc/h264_altivec.c index c9c29442ce..77f80b912d 100644 --- a/libavcodec/ppc/h264_altivec.c +++ b/libavcodec/ppc/h264_altivec.c @@ -969,7 +969,7 @@ H264_WEIGHT( 8, 4) void dsputil_h264_init_ppc(DSPContext* c, AVCodecContext *avctx) { - if (has_altivec()) { + if (mm_support() & AV_CPU_FLAG_ALTIVEC) { c->put_h264_chroma_pixels_tab[0] = put_h264_chroma_mc8_altivec; c->avg_h264_chroma_pixels_tab[0] = avg_h264_chroma_mc8_altivec; c->put_no_rnd_vc1_chroma_pixels_tab[0] = put_no_rnd_vc1_chroma_mc8_altivec; @@ -1001,7 +1001,7 @@ void dsputil_h264_init_ppc(DSPContext* c, AVCodecContext *avctx) { void ff_h264dsp_init_ppc(H264DSPContext *c) { - if (has_altivec()) { + if (mm_support() & AV_CPU_FLAG_ALTIVEC) { c->h264_idct_add = ff_h264_idct_add_altivec; c->h264_idct_add8 = ff_h264_idct_add8_altivec; c->h264_idct_add16 = ff_h264_idct_add16_altivec; diff --git a/libavcodec/ppc/mpegvideo_altivec.c b/libavcodec/ppc/mpegvideo_altivec.c index 19d897fe66..3b34a27bec 100644 --- a/libavcodec/ppc/mpegvideo_altivec.c +++ b/libavcodec/ppc/mpegvideo_altivec.c @@ -570,7 +570,7 @@ static void dct_unquantize_h263_altivec(MpegEncContext *s, void MPV_common_init_altivec(MpegEncContext *s) { - if (!has_altivec()) return; + if (!(mm_support() & AV_CPU_FLAG_ALTIVEC)) return; if (s->avctx->lowres==0) { if ((s->avctx->idct_algo == FF_IDCT_AUTO) || diff --git a/libavcodec/ppc/vp8dsp_altivec.c b/libavcodec/ppc/vp8dsp_altivec.c index f7b3cda7a4..b294154c6c 100644 --- a/libavcodec/ppc/vp8dsp_altivec.c +++ b/libavcodec/ppc/vp8dsp_altivec.c @@ -265,7 +265,7 @@ static void put_vp8_pixels16_altivec(uint8_t *dst, int stride, uint8_t *src, int av_cold void ff_vp8dsp_init_altivec(VP8DSPContext *c) { - if (!has_altivec()) + if (!(mm_support() & AV_CPU_FLAG_ALTIVEC)) return; c->put_vp8_epel_pixels_tab[0][0][0] = put_vp8_pixels16_altivec; -- cgit v1.2.3