[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