]> git.sesse.net Git - vlc/commitdiff
* modules/codec/libmpeg2.c:
authorSam Hocevar <sam@videolan.org>
Fri, 16 Jan 2004 09:39:57 +0000 (09:39 +0000)
committerSam Hocevar <sam@videolan.org>
Fri, 16 Jan 2004 09:39:57 +0000 (09:39 +0000)
    + The libmpeg2 plugin honours the --no-mmx, --no-altivec, etc. flags.

modules/codec/libmpeg2.c

index a8d1bd2cfc8611c775d07df79ac00d2a001e90ca..d040cc0be67a7bac3e57b5f40ebdaead6a5157c8 100755 (executable)
@@ -2,7 +2,7 @@
  * libmpeg2.c: mpeg2 video decoder module making use of libmpeg2.
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: libmpeg2.c,v 1.41 2003/12/24 09:46:08 gbazin Exp $
+ * $Id: libmpeg2.c,v 1.42 2004/01/16 09:39:57 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -100,6 +100,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 {
     decoder_t *p_dec = (decoder_t*)p_this;
     decoder_sys_t *p_sys;
+    uint32_t i_accel = 0;
 
     if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','v') &&
         p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','1') &&
@@ -134,6 +135,37 @@ static int OpenDecoder( vlc_object_t *p_this )
     p_sys->b_slice_i  = 0;
     p_sys->b_skip     = 0;
 
+#if defined( __i386__ )
+    if( p_dec->p_libvlc->i_cpu & CPU_CAPABILITY_MMX )
+    {
+        i_accel |= MPEG2_ACCEL_X86_MMX;
+    }
+
+    if( p_dec->p_libvlc->i_cpu & CPU_CAPABILITY_3DNOW )
+    {
+        i_accel |= MPEG2_ACCEL_X86_3DNOW;
+    }
+
+    if( p_dec->p_libvlc->i_cpu & CPU_CAPABILITY_MMXEXT )
+    {
+        i_accel |= MPEG2_ACCEL_X86_MMXEXT;
+    }
+
+#elif defined( __powerpc__ ) || defined( SYS_DARWIN )
+    if( p_dec->p_libvlc->i_cpu & CPU_CAPABILITY_ALTIVEC )
+    {
+        i_accel |= MPEG2_ACCEL_PPC_ALTIVEC;
+    }
+
+#else
+    /* If we do not know this CPU, trust libmpeg2's feature detection */
+    i_accel = MPEG2_ACCEL_DETECT;
+
+#endif
+
+    /* Set CPU acceleration features */
+    mpeg2_accel( i_accel );
+
     /* Initialize decoder */
     p_sys->p_mpeg2dec = mpeg2_init();
     if( p_sys->p_mpeg2dec == NULL)