* decoders.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
+ * $Id: input.c,v 1.59 2000/12/19 19:08:51 massiot Exp $
*
* Authors:
*
#include <string.h>
#include <errno.h>
+#ifdef STATS
+# include <sys/times.h>
+#endif
+
#include "config.h"
#include "common.h"
#include "threads.h"
pi_status = p_input->pi_status;
*pi_status = THREAD_END;
+#ifdef STATS
+ {
+ struct tms cpu_usage;
+ times( &cpu_usage );
+
+ intf_Msg("input stats: cpu usage (user: %d, system: %d)\n",
+ cpu_usage.tms_utime, cpu_usage.tms_stime);
+ }
+#endif
+
/* Destroy all decoder threads */
for( i_es_loop = 0;
(i_es_loop < INPUT_MAX_ES)
#define p_config p_input->p_config
- if( stat( p_config->p_source, &stat_info ) == (-1) )
- {
- intf_ErrMsg("Cannot stat() file %s (%s)", p_config->p_source,
- strerror(errno));
- p_input->b_error = 1;
- return;
- }
-
- vlc_mutex_lock( &p_input->stream.stream_lock );
-
- /* If we are here we can control the pace... */
- p_input->stream.b_pace_control = 1;
-
- if( S_ISREG(stat_info.st_mode) || S_ISCHR(stat_info.st_mode)
- || S_ISBLK(stat_info.st_mode) )
- {
- p_input->stream.b_seekable = 1;
- p_input->stream.i_size = stat_info.st_size;
- }
- else if( S_ISFIFO(stat_info.st_mode) || S_ISSOCK(stat_info.st_mode) )
+ if( !strncmp( p_config->p_source, "-", 1 ) )
{
+ /* stdin */
+ p_input->i_handle = 0;
+
+ vlc_mutex_lock( &p_input->stream.stream_lock );
+ p_input->stream.b_pace_control = 1;
p_input->stream.b_seekable = 0;
p_input->stream.i_size = 0;
+ p_input->stream.i_tell = 0;
+ vlc_mutex_unlock( &p_input->stream.stream_lock );
}
else
{
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- intf_ErrMsg("Unknown file type");
- p_input->b_error = 1;
- return;
- }
+ if( stat( p_config->p_source, &stat_info ) == (-1) )
+ {
+ intf_ErrMsg("Cannot stat() file %s (%s)", p_config->p_source,
+ strerror(errno));
+ p_input->b_error = 1;
+ return;
+ }
- p_input->stream.i_tell = 0;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
+ vlc_mutex_lock( &p_input->stream.stream_lock );
- intf_Msg( "Opening file %s", p_config->p_source );
- if( (p_input->i_handle = open( p_config->p_source,
- /*O_NONBLOCK | O_LARGEFILE*/0 )) == (-1) )
- {
- intf_ErrMsg("Cannot open file (%s)", strerror(errno));
- p_input->b_error = 1;
- return;
+ /* If we are here we can control the pace... */
+ p_input->stream.b_pace_control = 1;
+
+ if( S_ISREG(stat_info.st_mode) || S_ISCHR(stat_info.st_mode)
+ || S_ISBLK(stat_info.st_mode) )
+ {
+ p_input->stream.b_seekable = 1;
+ p_input->stream.i_size = stat_info.st_size;
+ }
+ else if( S_ISFIFO(stat_info.st_mode) || S_ISSOCK(stat_info.st_mode) )
+ {
+ p_input->stream.b_seekable = 0;
+ p_input->stream.i_size = 0;
+ }
+ else
+ {
+ vlc_mutex_unlock( &p_input->stream.stream_lock );
+ intf_ErrMsg("Unknown file type");
+ p_input->b_error = 1;
+ return;
+ }
+
+ p_input->stream.i_tell = 0;
+ vlc_mutex_unlock( &p_input->stream.stream_lock );
+
+ intf_Msg( "Opening file %s", p_config->p_source );
+ if( (p_input->i_handle = open( p_config->p_source,
+ /*O_NONBLOCK | O_LARGEFILE*/0 )) == (-1) )
+ {
+ intf_ErrMsg("Cannot open file (%s)", strerror(errno));
+ p_input->b_error = 1;
+ return;
+ }
}
#undef p_config