]> git.sesse.net Git - vlc/blobdiff - src/libvlc.c
Added SSSE3/SSE4.1/SSE4.2 support to libvlc.
[vlc] / src / libvlc.c
index 9965e3f8738fad3ad6a7f2fc2f47641fb82ff5bd..04eaaf952c3f044f438c6573e5b34064ae616277 100644 (file)
 #   include <dbus/dbus.h>
 #endif
 
-#ifdef HAVE_HAL
-#   include <hal/libhal.h>
-#endif
-
 #include <vlc_playlist.h>
 #include <vlc_interface.h>
 
@@ -227,8 +223,6 @@ static void PauseConsole  ( void );
 #endif
 static int  ConsoleWidth  ( void );
 
-static void InitDeviceValues( libvlc_int_t * );
-
 static vlc_mutex_t global_lock = VLC_STATIC_MUTEX;
 
 /**
@@ -542,11 +536,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
         return i_ret;
     }
 
-    /*
-     * Init device values
-     */
-    InitDeviceValues( p_libvlc );
-
     /*
      * Override default configuration with config file settings
      */
@@ -738,9 +727,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     if( priv->b_color )
         priv->b_color = config_GetInt( p_libvlc, "color" ) > 0;
 
-    if( !config_GetInt( p_libvlc, "fpu" ) )
-        cpu_flags &= ~CPU_CAPABILITY_FPU;
-
     char p_capabilities[200];
 #define PRINT_CAPABILITY( capability, string )                              \
     if( vlc_CPU() & capability )                                            \
@@ -764,6 +750,12 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
         cpu_flags &= ~CPU_CAPABILITY_SSE2;
     if( !config_GetInt( p_libvlc, "sse3" ) )
         cpu_flags &= ~CPU_CAPABILITY_SSE3;
+    if( !config_GetInt( p_libvlc, "ssse3" ) )
+        cpu_flags &= ~CPU_CAPABILITY_SSSE3;
+    if( !config_GetInt( p_libvlc, "sse41" ) )
+        cpu_flags &= ~CPU_CAPABILITY_SSE4_1;
+    if( !config_GetInt( p_libvlc, "sse42" ) )
+        cpu_flags &= ~CPU_CAPABILITY_SSE4_2;
 
     PRINT_CAPABILITY( CPU_CAPABILITY_MMX, "MMX" );
     PRINT_CAPABILITY( CPU_CAPABILITY_3DNOW, "3DNow!" );
@@ -771,6 +763,10 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     PRINT_CAPABILITY( CPU_CAPABILITY_SSE, "SSE" );
     PRINT_CAPABILITY( CPU_CAPABILITY_SSE2, "SSE2" );
     PRINT_CAPABILITY( CPU_CAPABILITY_SSE3, "SSE3" );
+    PRINT_CAPABILITY( CPU_CAPABILITY_SSE3, "SSSE3" );
+    PRINT_CAPABILITY( CPU_CAPABILITY_SSE4_1, "SSE4.1" );
+    PRINT_CAPABILITY( CPU_CAPABILITY_SSE4_2, "SSE4.2" );
+    PRINT_CAPABILITY( CPU_CAPABILITY_SSE4A,  "SSE4A" );
 
 #elif defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc64__ )
     if( !config_GetInt( p_libvlc, "altivec" ) )
@@ -783,7 +779,12 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
 
 #endif
 
-    PRINT_CAPABILITY( CPU_CAPABILITY_FPU, "FPU" );
+#if HAVE_FPU
+    strncat( p_capabilities, "FPU ",
+             sizeof(p_capabilities) - strlen( p_capabilities) );
+    p_capabilities[sizeof(p_capabilities) - 1] = '\0';
+#endif
+
     msg_Dbg( p_libvlc, "CPU has capabilities %s", p_capabilities );
 
     /*
@@ -923,21 +924,12 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
              && config_GetInt( p_libvlc, "started-from-file" ) ) )
         intf_Create( p_libvlc, "dbus,none" );
 
+# if !defined (HAVE_MAEMO)
     /* Prevents the power management daemon from suspending the system
      * when VLC is active */
     if( config_GetInt( p_libvlc, "inhibit" ) > 0 )
         intf_Create( p_libvlc, "inhibit,none" );
-#endif
-
-    /*
-     * If needed, load the Xscreensaver interface
-     * Currently, only for X
-     */
-#ifdef HAVE_X11_XLIB_H
-    if( config_GetInt( p_libvlc, "disable-screensaver" ) )
-    {
-        intf_Create( p_libvlc, "screensaver,none" );
-    }
+# endif
 #endif
 
     if( (config_GetInt( p_libvlc, "file-logging" ) > 0) &&
@@ -1416,17 +1408,16 @@ static void print_help_section( module_config_t *p_item, bool b_color, bool b_de
     if( !p_item ) return;
     if( b_color )
     {
-        utf8_fprintf( stdout, RED"   %s:\n"GRAY,
-                      p_item->psz_text );
+        utf8_fprintf( stdout, RED"   %s:\n"GRAY, _( p_item->psz_text ) );
         if( b_description && p_item->psz_longtext )
             utf8_fprintf( stdout, MAGENTA"   %s\n"GRAY,
-                          p_item->psz_longtext );
+                          _( p_item->psz_longtext ) );
     }
     else
     {
-        utf8_fprintf( stdout, "   %s:\n", p_item->psz_text );
+        utf8_fprintf( stdout, "   %s:\n", _( p_item->psz_text ) );
         if( b_description && p_item->psz_longtext )
-            utf8_fprintf( stdout, "   %s\n", p_item->psz_longtext );
+            utf8_fprintf( stdout, "   %s\n", _( p_item->psz_longtext ) );
     }
 }
 
@@ -1566,17 +1557,18 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
         {
             if( b_color )
                 utf8_fprintf( stdout, "\n " GREEN "%s" GRAY " (%s)\n",
-                              p_parser->psz_longname,
-                               p_parser->psz_object_name );
+                              _( p_parser->psz_longname ),
+                              p_parser->psz_object_name );
             else
-                utf8_fprintf( stdout, "\n %s\n", p_parser->psz_longname );
+                utf8_fprintf( stdout, "\n %s\n", _( p_parser->psz_longname ) );
         }
         if( p_parser->psz_help )
         {
             if( b_color )
-                utf8_fprintf( stdout, CYAN" %s\n"GRAY, p_parser->psz_help );
+                utf8_fprintf( stdout, CYAN" %s\n"GRAY,
+                              _( p_parser->psz_help ) );
             else
-                utf8_fprintf( stdout, " %s\n", p_parser->psz_help );
+                utf8_fprintf( stdout, " %s\n",  _( p_parser->psz_help ) );
         }
 
         /* Print module options */
@@ -1610,17 +1602,19 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
                 {
                     if( b_color )
                         utf8_fprintf( stdout, GREEN "\n %s\n" GRAY,
-                                      p_item->psz_text );
+                                      _( p_item->psz_text ) );
                     else
-                        utf8_fprintf( stdout, "\n %s\n", p_item->psz_text );
+                        utf8_fprintf( stdout, "\n %s\n",
+                                      _( p_item->psz_text ) );
                 }
                 if( b_description && p_item->psz_longtext )
                 {
                     if( b_color )
                         utf8_fprintf( stdout, CYAN " %s\n" GRAY,
-                                      p_item->psz_longtext );
+                                      _( p_item->psz_longtext ) );
                     else
-                        utf8_fprintf( stdout, " %s\n", p_item->psz_longtext );
+                        utf8_fprintf( stdout, " %s\n",
+                                      _( p_item->psz_longtext ) );
                 }
                 break;
 
@@ -1684,7 +1678,7 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
                         if( i ) strcat( psz_buffer, ", " );
                         sprintf( psz_buffer + strlen(psz_buffer), "%i (%s)",
                                  p_item->pi_list[i],
-                                 p_item->ppsz_list_text[i] );
+                                 _( p_item->ppsz_list_text[i] ) );
                     }
                     psz_ket = "}";
                 }
@@ -1764,7 +1758,8 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
             psz_spaces[i] = ' ';
 
             /* We wrap the rest of the output */
-            sprintf( psz_buffer, "%s%s", p_item->psz_text, psz_suf );
+            sprintf( psz_buffer, "%s%s", _( p_item->psz_text ),
+                     psz_suf );
             b_description_hack = b_description;
 
  description:
@@ -1856,7 +1851,8 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
 
             if( b_description_hack && p_item->psz_longtext )
             {
-                sprintf( psz_buffer, "%s%s", p_item->psz_longtext, psz_suf );
+                sprintf( psz_buffer, "%s%s", _( p_item->psz_longtext ),
+                         psz_suf );
                 b_description_hack = false;
                 psz_spaces = psz_spaces_longtext;
                 utf8_fprintf( stdout, "%s", psz_spaces );
@@ -1913,12 +1909,9 @@ static void Usage( libvlc_int_t *p_this, char const *psz_search )
 static void ListModules( libvlc_int_t *p_this, bool b_verbose )
 {
     module_t *p_parser;
-    char psz_spaces[22];
 
     bool b_color = config_GetInt( p_this, "color" ) > 0;
 
-    memset( psz_spaces, ' ', 22 );
-
 #ifdef WIN32
     ShowConsole( true );
 #endif
@@ -1929,23 +1922,14 @@ static void ListModules( libvlc_int_t *p_this, bool b_verbose )
     /* Enumerate each module */
     for (size_t j = 0; (p_parser = list[j]) != NULL; j++)
     {
-        int i;
-
-        /* Nasty hack, but right now I'm too tired to think about a nice
-         * solution */
-        i = 22 - strlen( p_parser->psz_object_name ) - 1;
-        if( i < 0 ) i = 0;
-        psz_spaces[i] = 0;
-
         if( b_color )
-            utf8_fprintf( stdout, GREEN"  %s%s "WHITE"%s\n"GRAY,
+            utf8_fprintf( stdout, GREEN"  %-22s "WHITE"%s\n"GRAY,
                           p_parser->psz_object_name,
-                          psz_spaces,
-                          p_parser->psz_longname );
+                          _( p_parser->psz_longname ) );
         else
-            utf8_fprintf( stdout, "  %s%s %s\n",
+            utf8_fprintf( stdout, "  %-22s %s\n",
                           p_parser->psz_object_name,
-                          psz_spaces, p_parser->psz_longname );
+                          _( p_parser->psz_longname ) );
 
         if( b_verbose )
         {
@@ -1975,8 +1959,6 @@ static void ListModules( libvlc_int_t *p_this, bool b_verbose )
                                   p_parser->i_score );
             }
         }
-
-        psz_spaces[i] = ' ';
     }
     module_list_free (list);
 
@@ -2092,73 +2074,6 @@ static int ConsoleWidth( void )
     return i_width;
 }
 
-/*****************************************************************************
- * InitDeviceValues: initialize device values
- *****************************************************************************
- * This function inits the dvd, vcd and cd-audio values
- *****************************************************************************/
-static void InitDeviceValues( libvlc_int_t *p_vlc )
-{
-#ifdef HAVE_HAL
-    LibHalContext * ctx = NULL;
-    int i, i_devices;
-    char **devices = NULL;
-    char *block_dev = NULL;
-    dbus_bool_t b_dvd;
-
-    DBusConnection *p_connection = NULL;
-    DBusError       error;
-
-    ctx = libhal_ctx_new();
-    if( !ctx ) return;
-    dbus_error_init( &error );
-    p_connection = dbus_bus_get ( DBUS_BUS_SYSTEM, &error );
-    if( dbus_error_is_set( &error ) || !p_connection )
-    {
-        libhal_ctx_free( ctx );
-        dbus_error_free( &error );
-        return;
-    }
-    libhal_ctx_set_dbus_connection( ctx, p_connection );
-    if( libhal_ctx_init( ctx, &error ) )
-    {
-        if( ( devices = libhal_get_all_devices( ctx, &i_devices, NULL ) ) )
-        {
-            for( i = 0; i < i_devices; i++ )
-            {
-                if( !libhal_device_property_exists( ctx, devices[i],
-                                                "storage.cdrom.dvd", NULL ) )
-                {
-                    continue;
-                }
-                b_dvd = libhal_device_get_property_bool( ctx, devices[ i ],
-                                                 "storage.cdrom.dvd", NULL  );
-                block_dev = libhal_device_get_property_string( ctx,
-                                devices[ i ], "block.device" , NULL );
-                if( b_dvd )
-                {
-                    config_PutPsz( p_vlc, "dvd", block_dev );
-                }
-
-                config_PutPsz( p_vlc, "vcd", block_dev );
-                config_PutPsz( p_vlc, "cd-audio", block_dev );
-                libhal_free_string( block_dev );
-            }
-            libhal_free_string_array( devices );
-        }
-        libhal_ctx_shutdown( ctx, NULL );
-        dbus_connection_unref( p_connection );
-        libhal_ctx_free( ctx );
-    }
-    else
-    {
-        msg_Warn( p_vlc, "Unable to get HAL device properties" );
-    }
-#else
-    (void)p_vlc;
-#endif /* HAVE_HAL */
-}
-
 #include <vlc_avcodec.h>
 
 void vlc_avcodec_mutex (bool acquire)