Commit 2f30d77a authored by Vincent Seguin's avatar Vincent Seguin

Changement de cha�ne configurable depuis un fichier texte.

Quelques corrections esthetiques dans vout.
parent c80107b2
...@@ -39,11 +39,13 @@ struct intf_thread_s; ...@@ -39,11 +39,13 @@ struct intf_thread_s;
struct intf_sys_s; struct intf_sys_s;
struct intf_console_s; struct intf_console_s;
struct intf_msg_s; struct intf_msg_s;
struct intf_channel_s;
typedef struct intf_thread_s * p_intf_thread_t; typedef struct intf_thread_s * p_intf_thread_t;
typedef struct intf_sys_s * p_intf_sys_t; typedef struct intf_sys_s * p_intf_sys_t;
typedef struct intf_console_s * p_intf_console_t; typedef struct intf_console_s * p_intf_console_t;
typedef struct intf_msg_s * p_intf_msg_t; typedef struct intf_msg_s * p_intf_msg_t;
typedef struct intf_channel_s * p_intf_channel_t;
/* Input */ /* Input */
struct input_thread_s; struct input_thread_s;
......
...@@ -100,6 +100,10 @@ ...@@ -100,6 +100,10 @@
#define INTF_INIT_SCRIPT_VAR "vlc_init" #define INTF_INIT_SCRIPT_VAR "vlc_init"
#define INTF_INIT_SCRIPT_DEFAULT "vlc.init" #define INTF_INIT_SCRIPT_DEFAULT "vlc.init"
/* Environment variable used to store channels file and default value */
#define INTF_CHANNELS_VAR "vlc_channels"
#define INTF_CHANNELS_DEFAULT "vlc.channels"
/* Base delay in micro second for interface sleeps */ /* Base delay in micro second for interface sleeps */
#define INTF_IDLE_SLEEP 100000 #define INTF_IDLE_SLEEP 100000
......
...@@ -34,6 +34,9 @@ typedef struct intf_thread_s ...@@ -34,6 +34,9 @@ typedef struct intf_thread_s
p_intf_console_t p_console; /* console */ p_intf_console_t p_console; /* console */
p_intf_sys_t p_sys; /* system interface */ p_intf_sys_t p_sys; /* system interface */
/* Channels array - NULL if not used */
p_intf_channel_t p_channel; /* description of channels */
/* Main threads - NULL if not active */ /* Main threads - NULL if not active */
p_vout_thread_t p_vout; p_vout_thread_t p_vout;
p_input_thread_t p_input; p_input_thread_t p_input;
...@@ -46,6 +49,6 @@ intf_thread_t * intf_Create ( void ); ...@@ -46,6 +49,6 @@ intf_thread_t * intf_Create ( void );
void intf_Run ( intf_thread_t * p_intf ); void intf_Run ( intf_thread_t * p_intf );
void intf_Destroy ( intf_thread_t * p_intf ); void intf_Destroy ( intf_thread_t * p_intf );
int intf_SelectInput ( intf_thread_t * p_intf, int i_index ); int intf_SelectChannel ( intf_thread_t * p_intf, int i_channel );
int intf_ProcessKey ( intf_thread_t * p_intf, int i_key ); int intf_ProcessKey ( intf_thread_t * p_intf, int i_key );
This diff is collapsed.
...@@ -69,7 +69,7 @@ int intf_ExecCommand( char *psz_cmd ) ...@@ -69,7 +69,7 @@ int intf_ExecCommand( char *psz_cmd )
int i_index; /* multi-purposes index */ int i_index; /* multi-purposes index */
int i_return; /* command return value */ int i_return; /* command return value */
intf_DbgMsg("intf debug: command `%s'\n", psz_cmd); intf_DbgMsg("command `%s'\n", psz_cmd);
/* Parse command line (separate arguments). If nothing has been found, /* Parse command line (separate arguments). If nothing has been found,
* the function returns without error */ * the function returns without error */
...@@ -110,7 +110,7 @@ int intf_ExecCommand( char *psz_cmd ) ...@@ -110,7 +110,7 @@ int intf_ExecCommand( char *psz_cmd )
{ {
case INTF_FATAL_ERROR: /* fatal error */ case INTF_FATAL_ERROR: /* fatal error */
/* Print message and terminates the interface thread */ /* Print message and terminates the interface thread */
intf_ErrMsg( "intf fatal: in command `%s'\n", psz_argv[0] ); intf_ErrMsg( "fatal error in command `%s'\n", psz_argv[0] );
p_main->p_intf->b_die = 1; p_main->p_intf->b_die = 1;
break; break;
...@@ -118,7 +118,7 @@ int intf_ExecCommand( char *psz_cmd ) ...@@ -118,7 +118,7 @@ int intf_ExecCommand( char *psz_cmd )
/* Print message, flush messages queue and exit. Note that this /* Print message, flush messages queue and exit. Note that this
* error should be very rare since it does not even try to cancel other * error should be very rare since it does not even try to cancel other
* threads... */ * threads... */
intf_ErrMsg("intf critical: in command `%s'. Please report this error !\n", psz_argv[0] ); intf_ErrMsg("critical error in command `%s'. Please report this error !\n", psz_argv[0] );
intf_FlushMsg(); intf_FlushMsg();
exit( INTF_CRITICAL_ERROR ); exit( INTF_CRITICAL_ERROR );
break; break;
...@@ -153,7 +153,7 @@ int intf_ExecScript( char *psz_filename ) ...@@ -153,7 +153,7 @@ int intf_ExecScript( char *psz_filename )
p_file = fopen( psz_filename, "r" ); p_file = fopen( psz_filename, "r" );
if( p_file == NULL ) if( p_file == NULL )
{ {
intf_ErrMsg("intf error: %s: %s\n", psz_filename, strerror(errno)); intf_ErrMsg("warning: %s: %s\n", psz_filename, strerror(errno));
return( -1 ); return( -1 );
} }
...@@ -180,7 +180,7 @@ int intf_ExecScript( char *psz_filename ) ...@@ -180,7 +180,7 @@ int intf_ExecScript( char *psz_filename )
} }
if( !feof( p_file ) ) if( !feof( p_file ) )
{ {
intf_ErrMsg("intf error: %s: %s\n", psz_filename, strerror(errno)); intf_ErrMsg("error: %s: %s\n", psz_filename, strerror(errno));
return( -1 ); return( -1 );
} }
...@@ -393,7 +393,7 @@ static int CheckCommandArguments( intf_arg_t argv[INTF_MAX_ARGS], int i_argc, ...@@ -393,7 +393,7 @@ static int CheckCommandArguments( intf_arg_t argv[INTF_MAX_ARGS], int i_argc,
return( 1 ); return( 1 );
} }
intf_DbgMsg("intf debug: argument flags=0x%x (index=%d) name=%s str=%s int=%d float=%f\n", intf_DbgMsg("argument flags=0x%x (index=%d) name=%s str=%s int=%d float=%f\n",
argv[i_arg].i_flags, argv[i_arg].i_flags,
argv[i_arg].i_index, argv[i_arg].i_index,
(argv[i_arg].i_flags & INTF_NAMED_ARG) ? argv[i_arg].ps_name : "NA", (argv[i_arg].i_flags & INTF_NAMED_ARG) ? argv[i_arg].ps_name : "NA",
...@@ -462,7 +462,7 @@ static int ConvertArgument( intf_arg_t *p_arg, int i_flags, char *psz_str ) ...@@ -462,7 +462,7 @@ static int ConvertArgument( intf_arg_t *p_arg, int i_flags, char *psz_str )
#ifdef DEBUG #ifdef DEBUG
else /* error: missing type specifier */ else /* error: missing type specifier */
{ {
intf_ErrMsg("intf error: missing type specifier for `%s' (0x%x)\n", psz_str, i_flags); intf_ErrMsg("error: missing type specifier for `%s' (0x%x)\n", psz_str, i_flags);
return( 1 ); return( 1 );
} }
#endif #endif
...@@ -531,7 +531,7 @@ static void ParseFormatString( intf_arg_t format[INTF_MAX_ARGS], char *psz_forma ...@@ -531,7 +531,7 @@ static void ParseFormatString( intf_arg_t format[INTF_MAX_ARGS], char *psz_forma
break; break;
#ifdef DEBUG #ifdef DEBUG
default: /* error which should never happen: incorrect format */ default: /* error which should never happen: incorrect format */
intf_DbgMsg("intf error: incorrect format string `%s'\n", psz_format); intf_DbgMsg("error: incorrect format string `%s'\n", psz_format);
break; break;
#endif #endif
} }
......
...@@ -399,11 +399,9 @@ static void Usage( void ) ...@@ -399,11 +399,9 @@ static void Usage( void )
/* Options */ /* Options */
intf_Msg("Options:\n" \ intf_Msg("Options:\n" \
" -h, --help \tprint usage\n" \ " -h, --help, -v, --version \tprint usage or version\n" \
" -v, --version \tprint program version\n" \ " --noaudio, --novideo \tdisable audio/video\n" \
" --noaudio \tdisable audio\n" \
" --stereo, --mono \tstereo/mono audio\n" \ " --stereo, --mono \tstereo/mono audio\n" \
" --novideo \tdisable video\n" \
" --display <display> \tdisplay string\n" \ " --display <display> \tdisplay string\n" \
" --width <w>, --height <h> \tdisplay dimensions\n" \ " --width <w>, --height <h> \tdisplay dimensions\n" \
" -g, --grayscale, --color \tgrayscale/color video\n" \ " -g, --grayscale, --color \tgrayscale/color video\n" \
...@@ -414,6 +412,7 @@ static void Usage( void ) ...@@ -414,6 +412,7 @@ static void Usage( void )
/* Interface parameters */ /* Interface parameters */
intf_Msg("Interface parameters:\n" \ intf_Msg("Interface parameters:\n" \
" " INTF_INIT_SCRIPT_VAR "=<filename> \tinitialization script\n" \ " " INTF_INIT_SCRIPT_VAR "=<filename> \tinitialization script\n" \
" " INTF_CHANNELS_VAR "=<filename> \tchannels list\n" \
); );
/* Audio parameters */ /* Audio parameters */
...@@ -440,17 +439,6 @@ static void Usage( void ) ...@@ -440,17 +439,6 @@ static void Usage( void )
" " INPUT_VLAN_SERVER_VAR "=<hostname> \tvlan server\n" \ " " INPUT_VLAN_SERVER_VAR "=<hostname> \tvlan server\n" \
" " INPUT_VLAN_PORT_VAR "=<port> \tvlan server port\n" \ " " INPUT_VLAN_PORT_VAR "=<port> \tvlan server port\n" \
); );
/* Interfaces keys */
intf_Msg("Interface keys: most interfaces accept the following commands:\n" \
" [space] \ttoggle interface\n"
" [esc], q \tquit\n" \
" 0 - 9 \tselect channel\n" \
" +, -, m \tchange volume, mute\n" \
" g, G, c \tchange gamma, toggle grayscale\n" \
" i \ttoggle info printing\n" \
" s \ttoggle picture scaling\n" \
);
} }
/******************************************************************************* /*******************************************************************************
......
...@@ -808,7 +808,6 @@ static void RunThread( vout_thread_t *p_vout) ...@@ -808,7 +808,6 @@ static void RunThread( vout_thread_t *p_vout)
} }
else if( p_vout->b_active ) /* idle or interface screen alone */ else if( p_vout->b_active ) /* idle or interface screen alone */
{ {
//?? clear: SetBufferPicture( p_vout, NULL );
if( p_vout->b_interface && 0 /* && ?? intf_change */ ) if( p_vout->b_interface && 0 /* && ?? intf_change */ )
{ {
/* Interface has changed, so a new rendering is required - force /* Interface has changed, so a new rendering is required - force
...@@ -1403,6 +1402,8 @@ static void RenderPictureInfo( vout_thread_t *p_vout, picture_t *p_pic ) ...@@ -1403,6 +1402,8 @@ static void RenderPictureInfo( vout_thread_t *p_vout, picture_t *p_pic )
* nothing has been rendered, or 1 if something has been changed on the screen. * nothing has been rendered, or 1 if something has been changed on the screen.
* Note that if you absolutely want something to be printed, you will have * Note that if you absolutely want something to be printed, you will have
* to force it by setting the last idle date to 0. * to force it by setting the last idle date to 0.
* Unlike other rendering functions, this one calls the SetBufferPicture
* function when needed.
******************************************************************************/ ******************************************************************************/
static int RenderIdle( vout_thread_t *p_vout ) static int RenderIdle( vout_thread_t *p_vout )
{ {
...@@ -1416,10 +1417,11 @@ static int RenderIdle( vout_thread_t *p_vout ) ...@@ -1416,10 +1417,11 @@ static int RenderIdle( vout_thread_t *p_vout )
if( (current_date - p_vout->last_display_date) > VOUT_IDLE_DELAY && if( (current_date - p_vout->last_display_date) > VOUT_IDLE_DELAY &&
(current_date - p_vout->last_idle_date) > VOUT_IDLE_DELAY ) (current_date - p_vout->last_idle_date) > VOUT_IDLE_DELAY )
{ {
SetBufferPicture( p_vout, NULL );
vout_TextSize( p_vout->p_large_font, WIDE_TEXT | OUTLINED_TEXT, psz_text, vout_TextSize( p_vout->p_large_font, WIDE_TEXT | OUTLINED_TEXT, psz_text,
&i_width, &i_height ); &i_width, &i_height );
if( !Align( p_vout, &i_x, &i_y, i_width, i_height, CENTER_RALIGN, CENTER_RALIGN ) ) if( !Align( p_vout, &i_x, &i_y, i_width, i_height, CENTER_RALIGN, CENTER_RALIGN ) )
{ {
vout_Print( p_vout->p_large_font, vout_Print( p_vout->p_large_font,
p_vout->p_buffer[ p_vout->i_buffer_index ].p_data + p_vout->p_buffer[ p_vout->i_buffer_index ].p_data +
i_x * p_vout->i_bytes_per_pixel + i_y * p_vout->i_bytes_per_line, i_x * p_vout->i_bytes_per_pixel + i_y * p_vout->i_bytes_per_line,
......
0;Ptyx (caribou);20;caribou.via.ecp.fr;
1;Sam (bofh);20;bofh.via.ecp.fr;
2;Polux (dressler);20;dressler.via.ecp.fr;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment