Originally committed as revision 24909 to svn://svn.ffmpeg.org/ffmpeg/trunktags/n0.8
@@ -150,10 +150,11 @@ static void nop(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||||
/* A run time test is not simple. If this file is compiled in | /* A run time test is not simple. If this file is compiled in | ||||
* then we should install the functions | * then we should install the functions | ||||
*/ | */ | ||||
int mm_flags = FF_MM_IWMMXT; /* multimedia extension flags */ | |||||
void ff_dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx) | void ff_dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx) | ||||
{ | { | ||||
int mm_flags = FF_MM_IWMMXT; /* multimedia extension flags */ | |||||
if (avctx->dsp_mask) { | if (avctx->dsp_mask) { | ||||
if (avctx->dsp_mask & FF_MM_FORCE) | if (avctx->dsp_mask & FF_MM_FORCE) | ||||
mm_flags |= (avctx->dsp_mask & 0xffff); | mm_flags |= (avctx->dsp_mask & 0xffff); | ||||
@@ -618,7 +618,6 @@ static inline int get_penalty_factor(int lambda, int lambda2, int type){ | |||||
/* should be defined by architectures supporting | /* should be defined by architectures supporting | ||||
one or more MultiMedia extension */ | one or more MultiMedia extension */ | ||||
int mm_support(void); | int mm_support(void); | ||||
extern int mm_flags; | |||||
void dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx); | void dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx); | ||||
void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx); | void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx); | ||||
@@ -647,12 +646,7 @@ static inline void emms(void) | |||||
__asm__ volatile ("emms;":::"memory"); | __asm__ volatile ("emms;":::"memory"); | ||||
} | } | ||||
#define emms_c() \ | |||||
{\ | |||||
if (mm_flags & FF_MM_MMX)\ | |||||
emms();\ | |||||
} | |||||
#define emms_c() emms() | |||||
#elif ARCH_ARM | #elif ARCH_ARM | ||||
@@ -670,7 +664,6 @@ static inline void emms(void) | |||||
#else | #else | ||||
#define mm_flags 0 | |||||
#define mm_support() 0 | #define mm_support() 0 | ||||
#endif | #endif | ||||
@@ -553,7 +553,7 @@ retry: | |||||
#endif | #endif | ||||
#if HAVE_MMX | #if HAVE_MMX | ||||
if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build>=0 && avctx->idct_algo == FF_IDCT_AUTO && (mm_flags & FF_MM_MMX)){ | |||||
if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build>=0 && avctx->idct_algo == FF_IDCT_AUTO && (mm_support() & FF_MM_MMX)){ | |||||
avctx->idct_algo= FF_IDCT_XVIDMMX; | avctx->idct_algo= FF_IDCT_XVIDMMX; | ||||
avctx->coded_width= 0; // force reinit | avctx->coded_width= 0; // force reinit | ||||
// dsputil_init(&s->dsp, avctx); | // dsputil_init(&s->dsp, avctx); | ||||
@@ -23,8 +23,6 @@ | |||||
#include "libavcodec/dsputil.h" | #include "libavcodec/dsputil.h" | ||||
#include "dsputil_altivec.h" | #include "dsputil_altivec.h" | ||||
int mm_flags = 0; | |||||
int mm_support(void) | int mm_support(void) | ||||
{ | { | ||||
int result = 0; | int result = 0; | ||||
@@ -182,8 +180,6 @@ void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx) | |||||
if(CONFIG_H264_DECODER) dsputil_h264_init_ppc(c, avctx); | if(CONFIG_H264_DECODER) dsputil_h264_init_ppc(c, avctx); | ||||
if (has_altivec()) { | if (has_altivec()) { | ||||
mm_flags |= FF_MM_ALTIVEC; | |||||
dsputil_init_altivec(c, avctx); | dsputil_init_altivec(c, avctx); | ||||
if(CONFIG_VC1_DECODER) | if(CONFIG_VC1_DECODER) | ||||
vc1dsp_init_altivec(c, avctx); | vc1dsp_init_altivec(c, avctx); | ||||
@@ -570,7 +570,7 @@ static void dct_unquantize_h263_altivec(MpegEncContext *s, | |||||
void MPV_common_init_altivec(MpegEncContext *s) | void MPV_common_init_altivec(MpegEncContext *s) | ||||
{ | { | ||||
if ((mm_flags & FF_MM_ALTIVEC) == 0) return; | |||||
if (!has_altivec()) return; | |||||
if (s->avctx->lowres==0) { | if (s->avctx->lowres==0) { | ||||
if ((s->avctx->idct_algo == FF_IDCT_AUTO) || | if ((s->avctx->idct_algo == FF_IDCT_AUTO) || | ||||
@@ -52,7 +52,7 @@ static void get_pixels_8x4_sym_sse2(DCTELEM *block, const uint8_t *pixels, int l | |||||
void ff_dnxhd_init_mmx(DNXHDEncContext *ctx) | void ff_dnxhd_init_mmx(DNXHDEncContext *ctx) | ||||
{ | { | ||||
if (mm_flags & FF_MM_SSE2) { | |||||
if (mm_support() & FF_MM_SSE2) { | |||||
ctx->get_pixels_8x4_sym = get_pixels_8x4_sym_sse2; | ctx->get_pixels_8x4_sym = get_pixels_8x4_sym_sse2; | ||||
} | } | ||||
} | } |
@@ -37,8 +37,6 @@ | |||||
//#undef NDEBUG | //#undef NDEBUG | ||||
//#include <assert.h> | //#include <assert.h> | ||||
int mm_flags; /* multimedia extension flags */ | |||||
/* pixel operations */ | /* pixel operations */ | ||||
DECLARE_ALIGNED(8, const uint64_t, ff_bone) = 0x0101010101010101ULL; | DECLARE_ALIGNED(8, const uint64_t, ff_bone) = 0x0101010101010101ULL; | ||||
DECLARE_ALIGNED(8, const uint64_t, ff_wtwo) = 0x0002000200020002ULL; | DECLARE_ALIGNED(8, const uint64_t, ff_wtwo) = 0x0002000200020002ULL; | ||||
@@ -2504,7 +2502,7 @@ float ff_scalarproduct_float_sse(const float *v1, const float *v2, int order); | |||||
void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) | void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
if (avctx->dsp_mask) { | if (avctx->dsp_mask) { | ||||
if (avctx->dsp_mask & FF_MM_FORCE) | if (avctx->dsp_mask & FF_MM_FORCE) | ||||
@@ -2941,7 +2939,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) | |||||
#if CONFIG_H264DSP | #if CONFIG_H264DSP | ||||
void ff_h264dsp_init_x86(H264DSPContext *c) | void ff_h264dsp_init_x86(H264DSPContext *c) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
c->h264_idct_dc_add= | c->h264_idct_dc_add= | ||||
@@ -1350,6 +1350,8 @@ static int ssd_int8_vs_int16_mmx(const int8_t *pix1, const int16_t *pix2, int si | |||||
void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx) | void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx) | ||||
{ | { | ||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
const int dct_algo = avctx->dct_algo; | const int dct_algo = avctx->dct_algo; | ||||
if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){ | if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){ | ||||
@@ -2368,7 +2368,7 @@ void ff_pred4x4_vertical_vp8_mmxext(uint8_t *src, const uint8_t *topright, int s | |||||
#if CONFIG_H264PRED | #if CONFIG_H264PRED | ||||
void ff_h264_pred_init_x86(H264PredContext *h, int codec_id) | void ff_h264_pred_init_x86(H264PredContext *h, int codec_id) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
#if HAVE_YASM | #if HAVE_YASM | ||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
@@ -427,6 +427,8 @@ PIX_SAD(mmx2) | |||||
void dsputil_init_pix_mmx(DSPContext* c, AVCodecContext *avctx) | void dsputil_init_pix_mmx(DSPContext* c, AVCodecContext *avctx) | ||||
{ | { | ||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
c->pix_abs[0][0] = sad16_mmx; | c->pix_abs[0][0] = sad16_mmx; | ||||
c->pix_abs[0][1] = sad16_x2_mmx; | c->pix_abs[0][1] = sad16_x2_mmx; | ||||
@@ -149,7 +149,7 @@ static void apply_window_mp3(float *in, float *win, int *unused, float *out, | |||||
void ff_mpegaudiodec_init_mmx(MPADecodeContext *s) | void ff_mpegaudiodec_init_mmx(MPADecodeContext *s) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_SSE2) { | if (mm_flags & FF_MM_SSE2) { | ||||
s->apply_window_mp3 = apply_window_mp3; | s->apply_window_mp3 = apply_window_mp3; | ||||
@@ -625,6 +625,8 @@ static void denoise_dct_sse2(MpegEncContext *s, DCTELEM *block){ | |||||
void MPV_common_init_mmx(MpegEncContext *s) | void MPV_common_init_mmx(MpegEncContext *s) | ||||
{ | { | ||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
const int dct_algo = s->avctx->dct_algo; | const int dct_algo = s->avctx->dct_algo; | ||||
@@ -874,7 +874,7 @@ static void ff_snow_inner_add_yblock_mmx(const uint8_t *obmc, const int obmc_str | |||||
void ff_dwt_init_x86(DWTContext *c) | void ff_dwt_init_x86(DWTContext *c) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||
if(mm_flags & FF_MM_SSE2 & 0){ | if(mm_flags & FF_MM_SSE2 & 0){ | ||||
@@ -714,7 +714,7 @@ static void vc1_h_loop_filter16_sse4(uint8_t *src, int stride, int pq) | |||||
#endif | #endif | ||||
void ff_vc1dsp_init_mmx(DSPContext* dsp, AVCodecContext *avctx) { | void ff_vc1dsp_init_mmx(DSPContext* dsp, AVCodecContext *avctx) { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
dsp->put_vc1_mspel_pixels_tab[ 0] = ff_put_vc1_mspel_mc00_mmx; | dsp->put_vc1_mspel_pixels_tab[ 0] = ff_put_vc1_mspel_mc00_mmx; | ||||
dsp->put_vc1_mspel_pixels_tab[ 4] = put_vc1_mspel_mc01_mmx; | dsp->put_vc1_mspel_pixels_tab[ 4] = put_vc1_mspel_mc01_mmx; | ||||
@@ -282,7 +282,7 @@ DECLARE_LOOP_FILTER(sse4) | |||||
av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c) | av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c) | ||||
{ | { | ||||
mm_flags = mm_support(); | |||||
int mm_flags = mm_support(); | |||||
#if HAVE_YASM | #if HAVE_YASM | ||||
if (mm_flags & FF_MM_MMX) { | if (mm_flags & FF_MM_MMX) { | ||||