/* Video output configuration */
config_chain_t *p_cfg;
+
+ /* Show media title on videoutput */
+ vlc_bool_t b_title_show;
+ mtime_t i_title_timeout;
+ int i_title_position;
};
#define I_OUTPUTPICTURES p_vout->output.i_pictures
#define VIDEO_ON_TOP_LONGTEXT N_( \
"Always place the video window on top of other windows." )
+#define VIDEO_TITLE_SHOW_TEXT N_("Show media title on video.")
+#define VIDEO_TITLE_SHOW_LONGTEXT N_( \
+ "Display the title of the video on top of the movie.")
+
+#define VIDEO_TITLE_TIMEOUT_TEXT N_("Show video title for x miliseconds.")
+#define VIDEO_TITLE_TIMEOUT_LONGTEXT N_( \
+ "Show the video title for n miliseconds, default is 5000 ms (5 sec.)")
+
+#define VIDEO_TITLE_POSITION_TEXT N_("Position of video title.")
+#define VIDEO_TITLE_POSITION_LONGTEXT N_( \
+ "Place on video where to display the title (default bottom center).")
+
+static int pi_pos_values[] = { 0, 1, 2, 4, 8, 5, 6, 9, 10 };
+static const char *ppsz_pos_descriptions[] =
+{ N_("Center"), N_("Left"), N_("Right"), N_("Top"), N_("Bottom"),
+ N_("Top-Left"), N_("Top-Right"), N_("Bottom-Left"), N_("Bottom-Right") };
+
#define SS_TEXT N_("Disable screensaver")
#define SS_LONGTEXT N_("Disable the screensaver during video playback." )
add_bool( "disable-screensaver", VLC_TRUE, NULL, SS_TEXT, SS_LONGTEXT,
VLC_TRUE );
+ add_bool( "video-title-show", 1, NULL, VIDEO_TITLE_SHOW_TEXT,
+ VIDEO_TITLE_SHOW_LONGTEXT, VLC_FALSE );
+ add_integer( "video-title-timeout", 5000, NULL, VIDEO_TITLE_TIMEOUT_TEXT,
+ VIDEO_TITLE_TIMEOUT_LONGTEXT, VLC_FALSE );
+ add_integer( "video-title-position", 8, NULL, VIDEO_TITLE_POSITION_TEXT,
+ VIDEO_TITLE_POSITION_LONGTEXT, VLC_FALSE );
+ change_integer_list( pi_pos_values, ppsz_pos_descriptions, 0 );
+
set_section( N_("Snapshot") , NULL );
add_directory( "snapshot-path", NULL, NULL, SNAP_PATH_TEXT,
SNAP_PATH_LONGTEXT, VLC_FALSE );
return;
}
- DisplayTitleOnOSD( p_vout );
+ if( p_vout->b_title_show )
+ DisplayTitleOnOSD( p_vout );
/*
* Main loop - it is not executed if an error occurred during
if( p_input )
{
i_now = mdate();
- i_stop = i_now + (mtime_t)(15000000);
+ i_stop = i_now + (mtime_t)(p_vout->i_title_timeout * 1000);
if( input_GetItem(p_input)->p_meta &&
input_GetItem(p_input)->p_meta->psz_nowplaying &&
*input_GetItem(p_input)->p_meta->psz_nowplaying )
{
vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN,
input_GetItem(p_input)->p_meta->psz_nowplaying, NULL,
- OSD_ALIGN_BOTTOM,
+ p_vout->i_title_position,
30 + p_vout->fmt_in.i_width
- p_vout->fmt_in.i_visible_width
- p_vout->fmt_in.i_x_offset,
vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN,
psz_string, NULL,
- OSD_ALIGN_BOTTOM,
+ p_vout->i_title_position,
30 + p_vout->fmt_in.i_width
- p_vout->fmt_in.i_visible_width
- p_vout->fmt_in.i_x_offset,
{
vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN,
input_GetItem(p_input)->psz_name, NULL,
- OSD_ALIGN_BOTTOM,
+ p_vout->i_title_position,
30 + p_vout->fmt_in.i_width
- p_vout->fmt_in.i_visible_width
- p_vout->fmt_in.i_x_offset,
vlc_value_t, vlc_value_t, void * );
static int SnapshotCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
+static int TitleCallback( vlc_object_t *, char const *,
+ vlc_value_t, vlc_value_t, void * );
/*****************************************************************************
* vout_RequestWindow: Create/Get a video window if possible.
var_Create( p_vout, "video-x", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_vout, "video-y", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+ var_Create( p_vout, "video-title-show", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+ var_Create( p_vout, "video-title-timeout", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+ var_Create( p_vout, "video-title-position", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+
+ p_vout->b_title_show = var_GetBool( p_vout, "video-title-show" );
+ p_vout->i_title_timeout = (mtime_t) var_GetInteger( p_vout, "video-title-timeout" );
+ p_vout->i_title_position = var_GetInteger( p_vout, "video-title-position" );
+
+ var_AddCallback( p_vout, "video-title-show", TitleCallback, NULL );
+ var_AddCallback( p_vout, "video-title-timeout", TitleCallback, NULL );
+ var_AddCallback( p_vout, "video-title-position", TitleCallback, NULL );
+
/* Zoom object var */
var_Create( p_vout, "zoom", VLC_VAR_FLOAT | VLC_VAR_ISCOMMAND |
VLC_VAR_HASCHOICE | VLC_VAR_DOINHERIT );
(void)psz_cmd; (void)oldval; (void)newval; (void)p_data;
return VLC_SUCCESS;
}
+
+static int TitleCallback( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
+{
+ vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
+ if( !strncmp( psz_cmd, "video-title-show", 16 ) )
+ p_vout->b_title_show = newval.b_bool;
+ else if( !strncmp( psz_cmd, "video-title-timeout", 19 ) )
+ p_vout->i_title_timeout = (mtime_t) newval.i_int;
+ else if( !strncmp( psz_cmd, "video-title-position", 20 ) )
+ p_vout->i_title_position = newval.i_int;
+}