[vlc-commits] vout: inherit variables from configuration (fixes #7378)

Rémi Denis-Courmont git at videolan.org
Wed Aug 22 21:24:07 CEST 2012


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Aug 22 22:18:51 2012 +0300| [001e307c5b4ff24828b9413a7fa6f978f0b017fb] | committer: Rémi Denis-Courmont

vout: inherit variables from configuration (fixes #7378)

The VLC UIs use the VLC configuration instead of variables. That way,
updated values are propagated immediately, rather than when a video
output is created.

Since the snapshot-related variables have no callbacks, they only need
to be created if and when they are overriden/set. This only occurs with
the LibVLC media player snapshot function (which remains quite broken).

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=001e307c5b4ff24828b9413a7fa6f978f0b017fb
---

 lib/video.c                     |   10 ++++++++--
 src/video_output/video_output.c |    4 ++--
 src/video_output/vout_intf.c    |   18 +++++-------------
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/lib/video.c b/lib/video.c
index 0c7bb2d..75a5553 100644
--- a/lib/video.c
+++ b/lib/video.c
@@ -147,11 +147,17 @@ libvlc_video_take_snapshot( libvlc_media_player_t *p_mi, unsigned num,
     if (p_vout == NULL)
         return -1;
 
-    /* FIXME: This is not atomic. Someone else could change the values,
-     * at least in theory. */
+    /* FIXME: This is not atomic. All parameters should be passed at once
+     * (obviously _not_ with var_*()). Also, the libvlc object should not be
+     * used for the callbacks: that breaks badly if there are concurrent
+     * media players in the instance. */
+    var_Create( p_vout, "snapshot-width", VLC_VAR_INTEGER );
     var_SetInteger( p_vout, "snapshot-width", i_width);
+    var_Create( p_vout, "snapshot-height", VLC_VAR_INTEGER );
     var_SetInteger( p_vout, "snapshot-height", i_height );
+    var_Create( p_vout, "snapshot-path", VLC_VAR_STRING );
     var_SetString( p_vout, "snapshot-path", psz_filepath );
+    var_Create( p_vout, "snapshot-format", VLC_VAR_STRING );
     var_SetString( p_vout, "snapshot-format", "png" );
     var_TriggerCallback( p_vout, "video-snapshot" );
     vlc_object_release( p_vout );
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index a8e4e24..0a68cc8 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -470,8 +470,8 @@ int vout_GetSnapshot(vout_thread_t *vout,
         if (type && image_Type2Fourcc(type))
             codec = image_Type2Fourcc(type);
 
-        const int override_width  = var_GetInteger(vout, "snapshot-width");
-        const int override_height = var_GetInteger(vout, "snapshot-height");
+        const int override_width  = var_InheritInteger(vout, "snapshot-width");
+        const int override_height = var_InheritInteger(vout, "snapshot-height");
 
         if (picture_Export(VLC_OBJECT(vout), image_dst, fmt,
                            picture, codec, override_width, override_height)) {
diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c
index 00f0ee0..9193487 100644
--- a/src/video_output/vout_intf.c
+++ b/src/video_output/vout_intf.c
@@ -149,16 +149,8 @@ void vout_IntfInit( vout_thread_t *p_vout )
     char *psz_buf;
 
     /* Create a few object variables we'll need later on */
-    var_Create( p_vout, "snapshot-path", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
-    var_Create( p_vout, "snapshot-prefix", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
-    var_Create( p_vout, "snapshot-format", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
-    var_Create( p_vout, "snapshot-preview", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
-    var_Create( p_vout, "snapshot-sequential",
-                VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
     var_Create( p_vout, "snapshot-num", VLC_VAR_INTEGER );
     var_SetInteger( p_vout, "snapshot-num", 1 );
-    var_Create( p_vout, "snapshot-width", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
-    var_Create( p_vout, "snapshot-height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
 
     var_Create( p_vout, "width", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
     var_Create( p_vout, "height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
@@ -378,7 +370,7 @@ static void VoutOsdSnapshot( vout_thread_t *p_vout, picture_t *p_pic, const char
     msg_Dbg( p_vout, "snapshot taken (%s)", psz_filename );
     vout_OSDMessage( p_vout, SPU_DEFAULT_CHANNEL, "%s", psz_filename );
 
-    if( var_GetBool( p_vout, "snapshot-preview" ) )
+    if( var_InheritBool( p_vout, "snapshot-preview" ) )
     {
         if( VoutSnapshotPip( p_vout, p_pic ) )
             msg_Warn( p_vout, "Failed to display snapshot" );
@@ -390,9 +382,9 @@ static void VoutOsdSnapshot( vout_thread_t *p_vout, picture_t *p_pic, const char
  */
 static void VoutSaveSnapshot( vout_thread_t *p_vout )
 {
-    char *psz_path = var_GetNonEmptyString( p_vout, "snapshot-path" );
-    char *psz_format = var_GetNonEmptyString( p_vout, "snapshot-format" );
-    char *psz_prefix = var_GetNonEmptyString( p_vout, "snapshot-prefix" );
+    char *psz_path = var_InheritString( p_vout, "snapshot-path" );
+    char *psz_format = var_InheritString( p_vout, "snapshot-format" );
+    char *psz_prefix = var_InheritString( p_vout, "snapshot-prefix" );
 
     /* */
     picture_t *p_picture;
@@ -420,7 +412,7 @@ static void VoutSaveSnapshot( vout_thread_t *p_vout )
 
     vout_snapshot_save_cfg_t cfg;
     memset( &cfg, 0, sizeof(cfg) );
-    cfg.is_sequential = var_GetBool( p_vout, "snapshot-sequential" );
+    cfg.is_sequential = var_InheritBool( p_vout, "snapshot-sequential" );
     cfg.sequence = var_GetInteger( p_vout, "snapshot-num" );
     cfg.path = psz_path;
     cfg.format = psz_format;



More information about the vlc-commits mailing list