/* A run time test is not simple. If this file is compiled in
* then we should install the functions
*/
-int mm_flags = FF_MM_IWMMXT; /* multimedia extension flags */
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 & FF_MM_FORCE)
mm_flags |= (avctx->dsp_mask & 0xffff);
/* should be defined by architectures supporting
one or more MultiMedia extension */
int mm_support(void);
-extern int mm_flags;
void dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx);
void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx);
__asm__ volatile ("emms;":::"memory");
}
-
-#define emms_c() \
-{\
- if (mm_flags & FF_MM_MMX)\
- emms();\
-}
+#define emms_c() emms()
#elif ARCH_ARM
#else
-#define mm_flags 0
#define mm_support() 0
#endif
#endif
#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->coded_width= 0; // force reinit
// dsputil_init(&s->dsp, avctx);
#include "libavcodec/dsputil.h"
#include "dsputil_altivec.h"
-int mm_flags = 0;
-
int mm_support(void)
{
int result = 0;
if(CONFIG_H264_DECODER) dsputil_h264_init_ppc(c, avctx);
if (has_altivec()) {
- mm_flags |= FF_MM_ALTIVEC;
-
dsputil_init_altivec(c, avctx);
if(CONFIG_VC1_DECODER)
vc1dsp_init_altivec(c, avctx);
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->idct_algo == FF_IDCT_AUTO) ||
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;
}
}
//#undef NDEBUG
//#include <assert.h>
-int mm_flags; /* multimedia extension flags */
-
/* pixel operations */
DECLARE_ALIGNED(8, const uint64_t, ff_bone) = 0x0101010101010101ULL;
DECLARE_ALIGNED(8, const uint64_t, ff_wtwo) = 0x0002000200020002ULL;
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 & FF_MM_FORCE)
#if CONFIG_H264DSP
void ff_h264dsp_init_x86(H264DSPContext *c)
{
- mm_flags = mm_support();
+ int mm_flags = mm_support();
if (mm_flags & FF_MM_MMX) {
c->h264_idct_dc_add=
void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx)
{
+ int mm_flags = mm_support();
+
if (mm_flags & FF_MM_MMX) {
const int dct_algo = avctx->dct_algo;
if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){
#if CONFIG_H264PRED
void ff_h264_pred_init_x86(H264PredContext *h, int codec_id)
{
- mm_flags = mm_support();
+ int mm_flags = mm_support();
#if HAVE_YASM
if (mm_flags & FF_MM_MMX) {
void dsputil_init_pix_mmx(DSPContext* c, AVCodecContext *avctx)
{
+ int mm_flags = mm_support();
+
if (mm_flags & FF_MM_MMX) {
c->pix_abs[0][0] = sad16_mmx;
c->pix_abs[0][1] = sad16_x2_mmx;
void ff_mpegaudiodec_init_mmx(MPADecodeContext *s)
{
- mm_flags = mm_support();
+ int mm_flags = mm_support();
if (mm_flags & FF_MM_SSE2) {
s->apply_window_mp3 = apply_window_mp3;
void MPV_common_init_mmx(MpegEncContext *s)
{
+ int mm_flags = mm_support();
+
if (mm_flags & FF_MM_MMX) {
const int dct_algo = s->avctx->dct_algo;
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_SSE2 & 0){
#endif
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[ 4] = put_vc1_mspel_mc01_mmx;
av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
{
- mm_flags = mm_support();
+ int mm_flags = mm_support();
#if HAVE_YASM
if (mm_flags & FF_MM_MMX) {