Allow using the config chain syntax for vout filters and vouts.
authorAntoine Cellerier <dionoea@videolan.org>
Sun, 25 Mar 2007 14:48:09 +0000 (14:48 +0000)
committerAntoine Cellerier <dionoea@videolan.org>
Sun, 25 Mar 2007 14:48:09 +0000 (14:48 +0000)
include/vlc_vout.h
src/video_output/video_output.c

index 8c5f5aa..848a90b 100644 (file)
@@ -493,6 +493,9 @@ struct vout_thread_t
 
     /* Misc */
     vlc_bool_t       b_snapshot;     /**< take one snapshot on the next loop */
+
+    /* Video output configuration */
+    config_chain_t *p_cfg;
 };
 
 #define I_OUTPUTPICTURES p_vout->output.i_pictures
index 38ab821..7b763f1 100644 (file)
@@ -228,7 +228,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
     vout_thread_t  * p_vout;                            /* thread descriptor */
     input_thread_t * p_input_thread;
     int              i_index;                               /* loop variable */
-    char           * psz_plugin;
+    char           * psz_plugin = NULL;
     vlc_value_t      val, text;
 
     unsigned int i_width = p_fmt->i_width;
@@ -236,6 +236,10 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
     vlc_fourcc_t i_chroma = p_fmt->i_chroma;
     unsigned int i_aspect = p_fmt->i_aspect;
 
+    config_chain_t *p_cfg;
+    char *psz_parser;
+    char *psz_name;
+
     /* Allocate descriptor */
     p_vout = vlc_object_create( p_parent, VLC_OBJECT_VOUT );
     if( p_vout == NULL )
@@ -371,6 +375,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
         var_Get( p_vout, "vout", &val );
         psz_plugin = val.psz_string;
     }
+#if 0
     else
     {
         /* the filter chain is a string list of filters separated by double
@@ -383,11 +388,17 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
                                   psz_end - p_vout->psz_filter_chain );
         else psz_plugin = strdup( p_vout->psz_filter_chain );
     }
+#endif
 
     /* Create the vout thread */
+    psz_parser = p_vout->psz_filter_chain;
+    printf("psz_parser: %s\n", psz_parser );
+    psz_parser = config_ChainCreate( &psz_name, &p_cfg, psz_parser );
+    printf("psz_parser: %s\n", psz_parser );
+    p_vout->p_cfg = p_cfg;
     p_vout->p_module = module_Need( p_vout,
         ( p_vout->psz_filter_chain && *p_vout->psz_filter_chain ) ?
-        "video filter" : "video output", psz_plugin, 0 );
+        "video filter" : "video output", psz_name, 0 );
 
     if( psz_plugin ) free( psz_plugin );
     if( p_vout->p_module == NULL )
@@ -491,6 +502,8 @@ void vout_Destroy( vout_thread_t *p_vout )
 
     if( p_vout->psz_filter_chain ) free( p_vout->psz_filter_chain );
 
+    config_ChainDestroy( p_vout->p_cfg );
+
     /* Free structure */
     vlc_object_destroy( p_vout );
 #ifndef __APPLE__