Commit 50b65815 authored by yoann's avatar yoann

Support for multiple OSD channels :

* added i_channel and i_content properties to subpicture_t
* p_last_osd_message is no more used

An OSD channel can contain simultaneously an OSD text and an OSD widget.
parent 9b7132be
...@@ -53,16 +53,16 @@ struct text_style_t ...@@ -53,16 +53,16 @@ struct text_style_t
}; };
static const text_style_t default_text_style = { 22, 0xffffff, VLC_FALSE, VLC_FALSE, VLC_FALSE }; static const text_style_t default_text_style = { 22, 0xffffff, VLC_FALSE, VLC_FALSE, VLC_FALSE };
VLC_EXPORT( subpicture_t *, vout_ShowTextRelative, ( vout_thread_t *, char *, text_style_t *, int, int, int, mtime_t ) ); VLC_EXPORT( subpicture_t *, vout_ShowTextRelative, ( vout_thread_t *, int, char *, text_style_t *, int, int, int, mtime_t ) );
VLC_EXPORT( int, vout_ShowTextAbsolute, ( vout_thread_t *, char *, text_style_t *, int, int, int, mtime_t, mtime_t ) ); VLC_EXPORT( int, vout_ShowTextAbsolute, ( vout_thread_t *, int, char *, text_style_t *, int, int, int, mtime_t, mtime_t ) );
VLC_EXPORT( void, __vout_OSDMessage, ( vlc_object_t *, char *, ... ) ); VLC_EXPORT( void, __vout_OSDMessage, ( vlc_object_t *, int, char *, ... ) );
/** /**
* Same as __vlc_OSDMessage() but with automatic casting * Same as __vlc_OSDMessage() but with automatic casting
*/ */
#if defined(HAVE_VARIADIC_MACROS) #if defined(HAVE_VARIADIC_MACROS)
# define vout_OSDMessage( obj, fmt, args...) __vout_OSDMessage( VLC_OBJECT(obj), fmt, ## args ) # define vout_OSDMessage( obj, chan, fmt, args...) __vout_OSDMessage( VLC_OBJECT(obj), chan, fmt, ## args )
#else #else
# define vout_OSDMessage __vout_OSDMessage # define vout_OSDMessage __vout_OSDMessage
#endif #endif
VLC_EXPORT( void, vout_OSDSlider, ( vlc_object_t *, int , short ) ); VLC_EXPORT( void, vout_OSDSlider, ( vlc_object_t *, int, int , short ) );
VLC_EXPORT( void, vout_OSDIcon, ( vlc_object_t *, short ) ); VLC_EXPORT( void, vout_OSDIcon, ( vlc_object_t *, short ) );
...@@ -126,8 +126,6 @@ struct vout_thread_t ...@@ -126,8 +126,6 @@ struct vout_thread_t
picture_t p_picture[2*VOUT_MAX_PICTURES]; /**< pictures */ picture_t p_picture[2*VOUT_MAX_PICTURES]; /**< pictures */
subpicture_t p_subpicture[VOUT_MAX_PICTURES]; /**< subpictures */ subpicture_t p_subpicture[VOUT_MAX_PICTURES]; /**< subpictures */
subpicture_t * p_last_osd_message;
/* Statistics */ /* Statistics */
count_t c_loops; count_t c_loops;
count_t c_pictures, c_late_pictures; count_t c_pictures, c_late_pictures;
...@@ -147,8 +145,9 @@ struct vout_thread_t ...@@ -147,8 +145,9 @@ struct vout_thread_t
the text renderer */ the text renderer */
module_t * p_text_renderer_module; /**< text renderer module */ module_t * p_text_renderer_module; /**< text renderer module */
/** callback used when a new string needs to be shown on the vout */ /** callback used when a new string needs to be shown on the vout */
subpicture_t * ( *pf_add_string ) ( vout_thread_t *, char *, text_style_t *, int, subpicture_t * ( *pf_add_string ) ( vout_thread_t *, int, char *,
int, int, mtime_t, mtime_t ); text_style_t *, int, int, int, mtime_t,
mtime_t );
}; };
#define I_OUTPUTPICTURES p_vout->output.i_pictures #define I_OUTPUTPICTURES p_vout->output.i_pictures
...@@ -257,7 +256,7 @@ enum output_query_e ...@@ -257,7 +256,7 @@ enum output_query_e
* \addtogroup subpicture * \addtogroup subpicture
* @{ * @{
*/ */
VLC_EXPORT( subpicture_t *, vout_CreateSubPicture, ( vout_thread_t *, int ) ); VLC_EXPORT( subpicture_t *, vout_CreateSubPicture, ( vout_thread_t *, int, int, int ) );
VLC_EXPORT( void, vout_DestroySubPicture, ( vout_thread_t *, subpicture_t * ) ); VLC_EXPORT( void, vout_DestroySubPicture, ( vout_thread_t *, subpicture_t * ) );
VLC_EXPORT( void, vout_DisplaySubPicture, ( vout_thread_t *, subpicture_t * ) ); VLC_EXPORT( void, vout_DisplaySubPicture, ( vout_thread_t *, subpicture_t * ) );
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* includes all common video types and constants. * includes all common video types and constants.
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: vlc_video.h,v 1.9 2004/01/25 18:17:08 zorglub Exp $ * $Id$
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* *
...@@ -193,6 +193,12 @@ struct picture_heap_t ...@@ -193,6 +193,12 @@ struct picture_heap_t
*/ */
struct subpicture_t struct subpicture_t
{ {
/** \name Channel and content type */
/**@{*/
int i_channel; /**< subpicture channel */
int i_content; /**< content type */
/**@}*/
/** \name Type and flags /** \name Type and flags
Should NOT be modified except by the vout thread */ Should NOT be modified except by the vout thread */
/**@{*/ /**@{*/
...@@ -240,6 +246,19 @@ struct subpicture_t ...@@ -240,6 +246,19 @@ struct subpicture_t
#define RESERVED_SUBPICTURE 1 /* allocated and reserved */ #define RESERVED_SUBPICTURE 1 /* allocated and reserved */
#define READY_SUBPICTURE 2 /* ready for display */ #define READY_SUBPICTURE 2 /* ready for display */
/* Subpicture channel */
#define SUBT1_CHAN 1
#define SUBT2_CHAN 2
#define BEGIN_EXCLUSIVE_CHAN 3 /* exclusive subpic-channels list */
#define POSITION_CHAN 3
#define VOLUME_CHAN 4
#define SOLO_CHAN 5
#define END_EXCLUSIVE_CHAN 5 /*end of list */
/* Subpicture content type */
#define TEXT_CONTENT 0
#define GRAPH_CONTENT 1 /* used for OSD icon, slider... */
/***************************************************************************** /*****************************************************************************
* Prototypes * Prototypes
*****************************************************************************/ *****************************************************************************/
......
...@@ -843,8 +843,8 @@ static int DisplayAnchor( intf_thread_t *p_intf, ...@@ -843,8 +843,8 @@ static int DisplayAnchor( intf_thread_t *p_intf,
/* TODO: p_subpicture doesn't have the proper i_x and i_y /* TODO: p_subpicture doesn't have the proper i_x and i_y
* coordinates. Need to look at the subpicture display system to * coordinates. Need to look at the subpicture display system to
* work out why. */ * work out why. */
if ( vout_ShowTextAbsolute( p_vout, if ( vout_ShowTextAbsolute( p_vout, SOLO_CHAN,
psz_anchor_description, p_style, OSD_ALIGN_BOTTOM, psz_anchor_description, p_style, OSD_ALIGN_BOTTOM,
i_margin_h, i_margin_v, i_now, 0 ) == VLC_SUCCESS ) i_margin_h, i_margin_v, i_now, 0 ) == VLC_SUCCESS )
{ {
/* Displayed successfully */ /* Displayed successfully */
......
...@@ -1258,7 +1258,8 @@ static void render( dvbsub_all_t *dvbsub, vout_thread_t *p_vout ) ...@@ -1258,7 +1258,8 @@ static void render( dvbsub_all_t *dvbsub, vout_thread_t *p_vout )
/* Allocate the subpicture internal data. */ /* Allocate the subpicture internal data. */
dvbsub->p_spu[j] = dvbsub->p_spu[j] =
vout_CreateSubPicture( p_vout, MEMORY_SUBPICTURE ); vout_CreateSubPicture( p_vout, SUBT1_CHAN, TEXT_CONTENT,
MEMORY_SUBPICTURE );
if( dvbsub->p_spu[j] == NULL ) if( dvbsub->p_spu[j] == NULL )
{ {
msg_Err(p_vout, "Unable to allocate memory, skipping"); msg_Err(p_vout, "Unable to allocate memory, skipping");
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* parse.c: Philips OGT (SVCD subtitle) packet parser * parse.c: Philips OGT (SVCD subtitle) packet parser
***************************************************************************** *****************************************************************************
* Copyright (C) 2003, 2004 VideoLAN * Copyright (C) 2003, 2004 VideoLAN
* $Id: cvd_parse.c,v 1.14 2004/01/22 04:46:19 rocky Exp $ * $Id$
* *
* Authors: Rocky Bernstein * Authors: Rocky Bernstein
* based on code from: * based on code from:
...@@ -292,7 +292,8 @@ E_(ParsePacket)( decoder_t *p_dec) ...@@ -292,7 +292,8 @@ E_(ParsePacket)( decoder_t *p_dec)
dbg_print( (DECODE_DBG_CALL|DECODE_DBG_EXT) , ""); dbg_print( (DECODE_DBG_CALL|DECODE_DBG_EXT) , "");
/* Allocate the subpicture internal data. */ /* Allocate the subpicture internal data. */
p_spu = vout_CreateSubPicture( p_sys->p_vout, MEMORY_SUBPICTURE ); p_spu = vout_CreateSubPicture( p_sys->p_vout, SUBT1_CHAN, TEXT_CONTENT,
MEMORY_SUBPICTURE );
if( p_spu == NULL ) if( p_spu == NULL )
{ {
return; return;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Philips OGT (SVCD subtitle) packet parser * Philips OGT (SVCD subtitle) packet parser
***************************************************************************** *****************************************************************************
* Copyright (C) 2003, 2004 VideoLAN * Copyright (C) 2003, 2004 VideoLAN
* $Id: ogt_parse.c,v 1.12 2004/01/22 04:46:19 rocky Exp $ * $Id$
* *
* Author: Rocky Bernstein * Author: Rocky Bernstein
* based on code from: * based on code from:
...@@ -165,7 +165,8 @@ E_(ParsePacket)( decoder_t *p_dec) ...@@ -165,7 +165,8 @@ E_(ParsePacket)( decoder_t *p_dec)
dbg_print( (DECODE_DBG_CALL|DECODE_DBG_EXT) , ""); dbg_print( (DECODE_DBG_CALL|DECODE_DBG_EXT) , "");
/* Allocate the subpicture internal data. */ /* Allocate the subpicture internal data. */
p_spu = vout_CreateSubPicture( p_sys->p_vout, MEMORY_SUBPICTURE ); p_spu = vout_CreateSubPicture( p_sys->p_vout, SUBT1_CHAN, TEXT_CONTENT,
MEMORY_SUBPICTURE );
if( p_spu == NULL ) if( p_spu == NULL )
{ {
return; return;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* parse.c: SPU parser * parse.c: SPU parser
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2001 VideoLAN * Copyright (C) 2000-2001 VideoLAN
* $Id: parse.c,v 1.17 2004/01/27 22:51:39 hartman Exp $ * $Id$
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -72,7 +72,8 @@ void E_(ParsePacket)( decoder_t *p_dec) ...@@ -72,7 +72,8 @@ void E_(ParsePacket)( decoder_t *p_dec)
subpicture_t *p_spu; subpicture_t *p_spu;
/* Allocate the subpicture internal data. */ /* Allocate the subpicture internal data. */
p_spu = vout_CreateSubPicture( p_sys->p_vout, MEMORY_SUBPICTURE ); p_spu = vout_CreateSubPicture( p_sys->p_vout, SUBT1_CHAN, TEXT_CONTENT,
MEMORY_SUBPICTURE );
if( p_spu == NULL ) if( p_spu == NULL )
{ {
return; return;
......
...@@ -371,7 +371,7 @@ static void ParseText( decoder_t *p_dec, block_t *p_block, ...@@ -371,7 +371,7 @@ static void ParseText( decoder_t *p_dec, block_t *p_block,
} }
} }
StripTags( psz_subtitle ); StripTags( psz_subtitle );
vout_ShowTextAbsolute( p_vout, psz_subtitle, NULL, vout_ShowTextAbsolute( p_vout, SUBT1_CHAN, psz_subtitle, NULL,
OSD_ALIGN_BOTTOM | p_sys->i_align, i_align_h, OSD_ALIGN_BOTTOM | p_sys->i_align, i_align_h,
i_align_v, p_block->i_pts, i_align_v, p_block->i_pts,
p_block->i_length ? p_block->i_pts + p_block->i_length : 0 ); p_block->i_length ? p_block->i_pts + p_block->i_length : 0 );
......
...@@ -232,7 +232,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -232,7 +232,7 @@ static void Run( intf_thread_t *p_intf )
if( i_action == ACTIONID_QUIT ) if( i_action == ACTIONID_QUIT )
{ {
p_intf->p_vlc->b_die = VLC_TRUE; p_intf->p_vlc->b_die = VLC_TRUE;
vout_OSDMessage( p_intf, _( "Quit" ) ); vout_OSDMessage( p_intf, SOLO_CHAN, _( "Quit" ) );
continue; continue;
} }
else if( i_action == ACTIONID_VOL_UP ) else if( i_action == ACTIONID_VOL_UP )
...@@ -243,12 +243,12 @@ static void Run( intf_thread_t *p_intf ) ...@@ -243,12 +243,12 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), VOLUME_CHAN,
i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER ); i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, "Vol %d%%", vout_OSDMessage( p_intf, VOLUME_CHAN, "Vol %d%%",
2*i_newvol*100/AOUT_VOLUME_MAX ); 2*i_newvol*100/AOUT_VOLUME_MAX );
} }
} }
...@@ -261,12 +261,12 @@ static void Run( intf_thread_t *p_intf ) ...@@ -261,12 +261,12 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), VOLUME_CHAN,
i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER ); i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, "Vol %d%%", vout_OSDMessage( p_intf, VOLUME_CHAN, "Vol %d%%",
2*i_newvol*100/AOUT_VOLUME_MAX ); 2*i_newvol*100/AOUT_VOLUME_MAX );
} }
} }
...@@ -280,19 +280,19 @@ static void Run( intf_thread_t *p_intf ) ...@@ -280,19 +280,19 @@ static void Run( intf_thread_t *p_intf )
{ {
if( i_newvol == 0 ) if( i_newvol == 0 )
{ {
vout_OSDMessage( p_intf, _( "Mute" ) ); vout_OSDMessage( p_intf, SOLO_CHAN, _( "Mute" ) );
vout_OSDIcon( VLC_OBJECT( p_intf ), OSD_MUTE_ICON ); vout_OSDIcon( VLC_OBJECT( p_intf ), OSD_MUTE_ICON );
} }
else else
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), VOLUME_CHAN,
i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER ); i_newvol*100/AOUT_VOLUME_MAX, OSD_VERT_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, "Vol %d%%", vout_OSDMessage( p_intf, VOLUME_CHAN, "Vol %d%%",
i_newvol * 100 / AOUT_VOLUME_MAX ); i_newvol * 100 / AOUT_VOLUME_MAX );
} }
} }
...@@ -307,7 +307,8 @@ static void Run( intf_thread_t *p_intf ) ...@@ -307,7 +307,8 @@ static void Run( intf_thread_t *p_intf )
{ {
i_delay--; i_delay--;
input_Control( p_input, INPUT_SET_SUBDELAY, i_delay ); input_Control( p_input, INPUT_SET_SUBDELAY, i_delay );
vout_OSDMessage( p_intf, "Subtitle delay %i ms", i_delay*100); vout_OSDMessage( p_intf, SOLO_CHAN, "Subtitle delay %i ms",
i_delay*100);
} }
} }
else if( i_action == ACTIONID_SUBDELAY_UP ) else if( i_action == ACTIONID_SUBDELAY_UP )
...@@ -318,7 +319,8 @@ static void Run( intf_thread_t *p_intf ) ...@@ -318,7 +319,8 @@ static void Run( intf_thread_t *p_intf )
{ {
i_delay++; i_delay++;
input_Control( p_input, INPUT_SET_SUBDELAY, i_delay ); input_Control( p_input, INPUT_SET_SUBDELAY, i_delay );
vout_OSDMessage( p_intf, "Subtitle delay %i ms", i_delay*100); vout_OSDMessage( p_intf, SOLO_CHAN, "Subtitle delay %i ms",
i_delay*100);
} }
} }
else if( i_action == ACTIONID_FULLSCREEN && p_vout ) else if( i_action == ACTIONID_FULLSCREEN && p_vout )
...@@ -367,7 +369,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -367,7 +369,7 @@ static void Run( intf_thread_t *p_intf )
if( i_action == ACTIONID_PAUSE ) if( i_action == ACTIONID_PAUSE )
{ {
vout_OSDMessage( p_intf, _( "Pause" ) ); vout_OSDMessage( p_intf, SOLO_CHAN, _( "Pause" ) );
val.i_int = PAUSE_S; val.i_int = PAUSE_S;
var_Set( p_input, "state", val ); var_Set( p_input, "state", val );
} }
...@@ -377,12 +379,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -377,12 +379,13 @@ static void Run( intf_thread_t *p_intf )
var_Set( p_input, "time-offset", val ); var_Set( p_input, "time-offset", val );
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump -10 seconds" ) ); vout_OSDMessage( p_intf, SOLO_CHAN,
_( "Jump -10 seconds" ) );
} }
} }
else if( i_action == ACTIONID_JUMP_FORWARD_10SEC && b_seekable ) else if( i_action == ACTIONID_JUMP_FORWARD_10SEC && b_seekable )
...@@ -393,12 +396,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -393,12 +396,13 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump +10 seconds" ) ); vout_OSDMessage( p_intf, POSITION_CHAN,
_( "Jump +10 seconds" ) );
} }
} }
} }
...@@ -410,12 +414,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -410,12 +414,13 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump -1 minute" ) ); vout_OSDMessage( p_intf, SOLO_CHAN,
_( "Jump -1 minute" ) );
} }
} }
} }
...@@ -427,12 +432,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -427,12 +432,13 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump +1 minute" ) ); vout_OSDMessage( p_intf, SOLO_CHAN,
_( "Jump +1 minute" ) );
} }
} }
} }
...@@ -444,12 +450,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -444,12 +450,13 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump -5 minutes" ) ); vout_OSDMessage( p_intf, SOLO_CHAN,
_( "Jump -5 minutes" ) );
} }
} }
} }
...@@ -461,12 +468,13 @@ static void Run( intf_thread_t *p_intf ) ...@@ -461,12 +468,13 @@ static void Run( intf_thread_t *p_intf )
{ {
if( !p_vout->p_parent_intf || p_vout->b_fullscreen ) if( !p_vout->p_parent_intf || p_vout->b_fullscreen )
{ {
vout_OSDSlider( VLC_OBJECT( p_intf ), vout_OSDSlider( VLC_OBJECT( p_intf ), POSITION_CHAN,
GetPosition( p_intf ), OSD_HOR_SLIDER ); GetPosition( p_intf ), OSD_HOR_SLIDER );
} }
else else
{ {
vout_OSDMessage( p_intf, _( "Jump +5 minutes" ) ); vout_OSDMessage( p_intf, SOLO_CHAN,
_( "Jump +5 minutes" ) );
} }
} }
} }
...@@ -525,12 +533,12 @@ static void Run( intf_thread_t *p_intf ) ...@@ -525,12 +533,12 @@ static void Run( intf_thread_t *p_intf )
if( time.i_time > 0 ) if( time.i_time > 0 )
{ {
secstotimestr( psz_duration, time.i_time / 1000000 ); secstotimestr( psz_duration, time.i_time / 1000000 );
vout_OSDMessage( p_input, "%s / %s", vout_OSDMessage( p_input, POSITION_CHAN, "%s / %s",
psz_time, psz_duration ); psz_time, psz_duration );
} }
else if( i_seconds > 0 ) else if( i_seconds > 0 )
{ {
vout_OSDMessage( p_input, psz_time ); vout_OSDMessage( p_input, POSITION_CHAN, psz_time );
} }
} }
else if( i_action >= ACTIONID_PLAY_BOOKMARK1 && else if( i_action >= ACTIONID_PLAY_BOOKMARK1 &&
......
...@@ -189,21 +189,21 @@ static void Run( intf_thread_t *p_intf ) ...@@ -189,21 +189,21 @@ static void Run( intf_thread_t *p_intf )
if( !strcmp( c, "QUIT" ) ) if( !strcmp( c, "QUIT" ) )
{ {
p_intf->p_vlc->b_die = VLC_TRUE; p_intf->p_vlc->b_die = VLC_TRUE;
vout_OSDMessage( p_intf, _("Quit" ) ); vout_OSDMessage( p_intf, SOLO_CHAN, _("Quit" ) );
continue; continue;
} }
else if( !strcmp( c, "VOL_UP" ) ) else if( !strcmp( c, "VOL_UP" ) )
{ {
audio_volume_t i_newvol; audio_volume_t i_newvol;
aout_VolumeUp( p_intf, 1, &i_newvol ); aout_VolumeUp( p_intf, 1, &i_newvol );
vout_OSDMessage( p_intf, _("Vol %%%d"), vout_OSDMessage( p_intf, SOLO_CHAN, _("Vol %%%d"),
i_newvol * 100 / AOUT_VOLUME_MAX ); i_newvol * 100 / AOUT_VOLUME_MAX );
} }
else if( !strcmp( c, "VOL_DOWN" ) ) else if( !strcmp( c, "VOL_DOWN" ) )
{ {
audio_volume_t i_newvol; audio_volume_t i_newvol;
aout_VolumeDown( p_intf, 1, &i_newvol ); aout_VolumeDown( p_intf, 1, &i_newvol );
vout_OSDMessage( p_intf, _("Vol %%%d"), vout_OSDMessage( p_intf, SOLO_CHAN, _("Vol %%%d"),
i_newvol * 100 / AOUT_VOLUME_MAX ); i_newvol * 100 / AOUT_VOLUME_MAX );
} }
else if( !strcmp( c, "MUTE" ) ) else if( !strcmp( c, "MUTE" ) )
...@@ -212,11 +212,11 @@ static void Run( intf_thread_t *p_intf ) ...@@ -212,11 +212,11 @@ static void Run( intf_thread_t *p_intf )
aout_VolumeMute( p_intf, &i_newvol ); aout_VolumeMute( p_intf, &i_newvol );
if( i_newvol == 0 ) if( i_newvol == 0 )
{ {
vout_OSDMessage( p_intf, _( "Mute" ) ); vout_OSDMessage( p_intf, SOLO_CHAN, _( "Mute" ) );
} }
else else
{ {
vout_OSDMessage( p_intf, _("Vol %d%%"), vout_OSDMessage( p_intf, SOLO_CHAN, _("Vol %d%%"),
i_newvol * 100 / AOUT_VOLUME_MAX );