]> git.sesse.net Git - vlc/blobdiff - src/misc/plugins.c
Added : alsa support
[vlc] / src / misc / plugins.c
index cf8c4de790f0e58f429622c2365c5452ac20da2a..ccb34a6a7535a98feeb7e902fa269660e70b82b3 100644 (file)
@@ -86,14 +86,30 @@ void bank_Init( plugin_bank_t * p_bank )
     psz_filename = TestPlugin( &tmp, name ); \
     if( psz_filename ) AllocatePlugin( tmp, p_bank, psz_filename );
 
+    /* Arch plugins */
     SEEK_PLUGIN( "beos" );
+
+    /* Low level Video */
     SEEK_PLUGIN( "x11" );
-    SEEK_PLUGIN( "dsp" );
+    SEEK_PLUGIN( "fb" );
+    SEEK_PLUGIN( "glide" );
+    SEEK_PLUGIN( "mga" );
+     
+    /* High level Video */
     SEEK_PLUGIN( "gnome" );
     SEEK_PLUGIN( "ggi" );
-    SEEK_PLUGIN( "fb" );
+    SEEK_PLUGIN( "sdl" );
+   
+    /* Video calculus */
     SEEK_PLUGIN( "yuvmmx" );
     SEEK_PLUGIN( "yuv" );
+
+    /* Audio pluins */
+    SEEK_PLUGIN( "dsp" );
+    SEEK_PLUGIN( "esd" );
+    SEEK_PLUGIN( "alsa" );
+    
+    /* Dummy plugin */
     SEEK_PLUGIN( "dummy" );
 
 #undef SEEK_PLUGIN
@@ -101,57 +117,21 @@ void bank_Init( plugin_bank_t * p_bank )
 
 void bank_Destroy( plugin_bank_t * p_bank )
 {
-    free( p_bank );
-}
-
-/*
- * Following functions are local
- */
-
-int AllocatePlugin( plugin_id_t plugin_id, plugin_bank_t * p_bank,
-                    char * psz_filename )
-{
-    typedef plugin_info_t * ( get_config_t ) ( void );
-    get_config_t * p_func;   
     int i;
-
     for( i = 0 ; i < p_bank->i_plugin_count ; i++ )
     {
-        if( p_bank->p_info[ i ] == NULL )
+        if( p_bank->p_info[ i ] != NULL )
         {
-            break;
+            free( p_bank->p_info[ i ]-> psz_filename );
         }
     }
 
-    /* no room to store that plugin, quit */
-    if( i == p_bank->i_plugin_count )
-    {
-        intf_ErrMsg( "plugin bank error: reached max plugin count (%i), "
-                     "increase MAX_PLUGIN_COUNT\n", p_bank->i_plugin_count );
-        return( -1 );
-    }
-
-    /* system-specific dynamic symbol loading */
-    GET_PLUGIN( p_func, plugin_id, "GetConfig" );
-
-    /* if it failed, just quit */
-    if( !p_func )
-    {
-        return( -1 );
-    }
-
-    /* run the plugin function to initialize the structure */
-    p_bank->p_info[ i ]            = p_func( );
-    p_bank->p_info[ i ]->plugin_id = plugin_id;
-
-    /* Tell the world we found it */
-    intf_Msg( "Found plugin: %s (version %s)\n", p_bank->p_info[ i ]->psz_name,
-              p_bank->p_info[ i ]->psz_version );
-
-    /* return nicely */
-    return( 0 );
+    free( p_bank );
 }
 
+/*
+ * Following functions are local
+ */
 
 char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
 {
@@ -174,7 +154,7 @@ char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
         
         psz_program_path = beos_GetProgramPath();
         psz_plugin = malloc( strlen(psz_plugin_path[i_count]) +
-                             strlen(psz_program_path) + i_length + 5 );
+                             strlen(psz_program_path) + i_length + 6 );
         sprintf( psz_plugin, "%s/%s/%s.so", psz_program_path,
                  psz_plugin_path[i_count], psz_name );        
 
@@ -189,7 +169,7 @@ char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
 #ifdef SYS_BEOS
         if( *p_plugin_id >= 0 )
 #else
-       if( *p_plugin_id != NULL )
+        if( *p_plugin_id != NULL )
 #endif
         {
             /* plugin successfuly dlopened */
@@ -208,6 +188,55 @@ char * TestPlugin ( plugin_id_t *p_plugin_id, char * psz_name )
     return( NULL );
 }
 
+
+int AllocatePlugin( plugin_id_t plugin_id, plugin_bank_t * p_bank,
+                    char * psz_filename )
+{
+    typedef plugin_info_t * ( get_config_t ) ( void );
+    get_config_t * p_func;   
+    int i;
+
+    for( i = 0 ; i < p_bank->i_plugin_count ; i++ )
+    {
+        if( p_bank->p_info[ i ] == NULL )
+        {
+            break;
+        }
+    }
+
+    /* no room to store that plugin, quit */
+    if( i == p_bank->i_plugin_count )
+    {
+        intf_ErrMsg( "plugin bank error: reached max plugin count (%i), "
+                     "increase MAX_PLUGIN_COUNT\n", p_bank->i_plugin_count );
+        return( -1 );
+    }
+
+    /* system-specific dynamic symbol loading */
+    GET_PLUGIN( p_func, plugin_id, "GetConfig" );
+
+    /* if it failed, just quit */
+    if( !p_func )
+    {
+        return( -1 );
+    }
+
+    /* run the plugin function to initialize the structure */
+    p_bank->p_info[ i ]            = p_func( );
+    p_bank->p_info[ i ]->plugin_id = plugin_id;
+    p_bank->p_info[ i ]->psz_filename = strdup( psz_filename );
+
+
+    /* Tell the world we found it */
+    intf_Msg( "Plugin %i: %s %s [0x%x]\n", i,
+              p_bank->p_info[ i ]->psz_name,
+              p_bank->p_info[ i ]->psz_version,
+              p_bank->p_info[ i ]->i_score );
+
+    /* return nicely */
+    return( 0 );
+}
+
 #if 0
 void TrashPlugin ( plugin_id_t plugin_id )
 {