#include <vlc_dialog.h>
#include <vlc_url.h>
#include <vlc_charset.h>
+#include <vlc_fs.h>
#include <vlc_strings.h>
#ifdef HAVE_SYS_STAT_H
/* Do not let a pts_delay from access/demux go beyong 60s */
#define INPUT_PTS_DELAY_MAX INT64_C(60000000)
+#undef input_Create
/**
* Create a new input_thread_t.
*
* \param p_resource an optional input ressource
* \return a pointer to the spawned input thread
*/
-
-input_thread_t *__input_Create( vlc_object_t *p_parent,
- input_item_t *p_item,
- const char *psz_log, input_resource_t *p_resource )
+input_thread_t *input_Create( vlc_object_t *p_parent,
+ input_item_t *p_item,
+ const char *psz_log, input_resource_t *p_resource )
{
-
return Create( p_parent, p_item, psz_log, false, p_resource );
}
+#undef input_CreateAndStart
/**
* Create a new input_thread_t and start it.
*
*
* \see input_Create
*/
-input_thread_t *__input_CreateAndStart( vlc_object_t *p_parent,
- input_item_t *p_item, const char *psz_log )
+input_thread_t *input_CreateAndStart( vlc_object_t *p_parent,
+ input_item_t *p_item, const char *psz_log )
{
- input_thread_t *p_input = __input_Create( p_parent, p_item, psz_log, NULL );
+ input_thread_t *p_input = input_Create( p_parent, p_item, psz_log, NULL );
if( input_Start( p_input ) )
{
return p_input;
}
+#undef input_Read
/**
* Initialize an input thread and run it until it stops by itself.
*
* \param p_item an input item
* \return an error code, VLC_SUCCESS on success
*/
-int __input_Read( vlc_object_t *p_parent, input_item_t *p_item )
+int input_Read( vlc_object_t *p_parent, input_item_t *p_item )
{
input_thread_t *p_input = Create( p_parent, p_item, NULL, false, NULL );
if( !p_input )
memset( &p_input->p->bookmark, 0, sizeof(p_input->p->bookmark) );
TAB_INIT( p_input->p->i_bookmark, p_input->p->pp_bookmark );
TAB_INIT( p_input->p->i_attachment, p_input->p->attachment );
- p_input->p->p_es_out_display = NULL;
- p_input->p->p_es_out = NULL;
p_input->p->p_sout = NULL;
p_input->p->b_out_pace_control = false;
if( p_input->b_preparsing )
p_input->i_flags |= OBJECT_FLAGS_QUIET | OBJECT_FLAGS_NOINTERACT;
+ /* Make sure the interaction option is honored */
+ if( !var_InheritBool( p_input, "interact" ) )
+ p_input->i_flags |= OBJECT_FLAGS_NOINTERACT;
+
/* */
memset( &p_input->p->counters, 0, sizeof( p_input->p->counters ) );
vlc_mutex_init( &p_input->p->counters.counters_lock );
+ p_input->p->p_es_out_display = input_EsOutNew( p_input, p_input->p->i_rate );
+ p_input->p->p_es_out = NULL;
+
/* Set the destructor when we are sure we are initialized */
vlc_object_set_destructor( p_input, (vlc_destructor_t)Destructor );
stats_TimerDump( p_input, STATS_TIMER_INPUT_LAUNCHING );
stats_TimerClean( p_input, STATS_TIMER_INPUT_LAUNCHING );
+ if( p_input->p->p_es_out_display )
+ es_out_Delete( p_input->p->p_es_out_display );
+
if( p_input->p->p_resource )
input_resource_Delete( p_input->p->p_resource );
UpdatePtsDelay( p_input );
/* Set up es_out */
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_ACTIVE, true );
i_es_out_mode = ES_OUT_MODE_AUTO;
if( p_input->p->p_sout )
{
}
}
}
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_MODE, i_es_out_mode );
+ es_out_SetMode( p_input->p->p_es_out, i_es_out_mode );
/* Inform the demuxer about waited group (needed only for DVB) */
if( i_es_out_mode == ES_OUT_MODE_ALL )
static int Init( input_thread_t * p_input )
{
vlc_meta_t *p_meta;
- int i, ret;
+ int i;
for( i = 0; i < p_input->p->p_item->i_options; i++ )
{
InitStatistics( p_input );
#ifdef ENABLE_SOUT
- ret = InitSout( p_input );
- if( ret != VLC_SUCCESS )
- goto error_stats;
+ if( InitSout( p_input ) )
+ goto error;
#endif
/* Create es out */
- p_input->p->p_es_out_display = input_EsOutNew( p_input, p_input->p->i_rate );
- p_input->p->p_es_out = input_EsOutTimeshiftNew( p_input, p_input->p->p_es_out_display, p_input->p->i_rate );
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_ACTIVE, false );
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_MODE, ES_OUT_MODE_NONE );
+ p_input->p->p_es_out = input_EsOutTimeshiftNew( p_input, p_input->p->p_es_out_display, p_input->p->i_rate );
/* */
input_ChangeState( p_input, OPENING_S );
if( p_input->p->p_es_out )
es_out_Delete( p_input->p->p_es_out );
- if( p_input->p->p_es_out_display )
- es_out_Delete( p_input->p->p_es_out_display );
+ es_out_SetMode( p_input->p->p_es_out_display, ES_OUT_MODE_END );
if( p_input->p->p_resource )
{
if( p_input->p->p_sout )
input_resource_SetInput( p_input->p->p_resource, NULL );
}
-#ifdef ENABLE_SOUT
-error_stats:
-#endif
if( !p_input->b_preparsing && libvlc_stats( p_input ) )
{
#define EXIT_COUNTER( c ) do { if( p_input->p->counters.p_##c ) \
p_input->p->input.p_stream = NULL;
p_input->p->input.p_access = NULL;
p_input->p->p_es_out = NULL;
- p_input->p->p_es_out_display = NULL;
p_input->p->p_sout = NULL;
return VLC_EGENERIC;
input_ControlVarStop( p_input );
/* Stop es out activity */
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_ACTIVE, false );
- es_out_Control( p_input->p->p_es_out, ES_OUT_SET_MODE, ES_OUT_MODE_NONE );
+ es_out_SetMode( p_input->p->p_es_out, ES_OUT_MODE_NONE );
/* Clean up master */
InputSourceClean( &p_input->p->input );
/* Unload all modules */
if( p_input->p->p_es_out )
es_out_Delete( p_input->p->p_es_out );
- if( p_input->p->p_es_out_display )
- es_out_Delete( p_input->p->p_es_out_display );
+ es_out_SetMode( p_input->p->p_es_out_display, ES_OUT_MODE_END );
if( !p_input->b_preparsing )
{
VLC_OBJECT_GENERIC, "demux meta" );
if( !p_demux_meta )
return;
+ vlc_object_attach( p_demux_meta, p_demux );
p_demux_meta->p_demux = p_demux;
p_demux_meta->p_item = p_input->p->p_item;
if( asprintf( &psz_file, psz_format, psz_base, i ) < 0 )
break;
- if( utf8_stat( psz_file, &st ) || !S_ISREG( st.st_mode ) || !st.st_size )
+ if( vlc_stat( psz_file, &st ) || !S_ISREG( st.st_mode ) || !st.st_size )
{
free( psz_file );
break;
strcpy( psz_extension, ".idx" );
- if( !utf8_stat( psz_path, &st ) && S_ISREG( st.st_mode ) )
+ if( !vlc_stat( psz_path, &st ) && S_ISREG( st.st_mode ) )
{
msg_Dbg( p_input, "using %s subtitles file instead of %s",
psz_path, psz_subtitle );
char *psz_file;
DIR *path;
- path = utf8_opendir( psz_path );
+ path = vlc_opendir( psz_path );
if( path )
{
closedir( path );