src/input/input.c:

 * fill in the duration field of the playlist item when starting playback of
   a file, if the demuxer supports it.
parent ddc23167
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* decoders. * decoders.
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2002 VideoLAN * Copyright (C) 1998-2002 VideoLAN
* $Id: input.c,v 1.270 2003/12/02 12:57:35 gbazin Exp $ * $Id: input.c,v 1.271 2003/12/03 22:14:38 sigmunau Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -529,6 +529,9 @@ static int RunThread( input_thread_t *p_input ) ...@@ -529,6 +529,9 @@ static int RunThread( input_thread_t *p_input )
static int InitThread( input_thread_t * p_input ) static int InitThread( input_thread_t * p_input )
{ {
float f_fps; float f_fps;
playlist_t *p_playlist;
mtime_t i_length;
/* Parse source string. Syntax : [[<access>][/<demux>]:][<source>] */ /* Parse source string. Syntax : [[<access>][/<demux>]:][<source>] */
char * psz_parser = p_input->psz_dupsource = strdup(p_input->psz_source); char * psz_parser = p_input->psz_dupsource = strdup(p_input->psz_source);
vlc_value_t val; vlc_value_t val;
...@@ -778,6 +781,24 @@ static int InitThread( input_thread_t * p_input ) ...@@ -778,6 +781,24 @@ static int InitThread( input_thread_t * p_input )
p_input->p_sys->i_sub = 0; p_input->p_sys->i_sub = 0;
p_input->p_sys->sub = NULL; p_input->p_sys->sub = NULL;
/* get length */
if( !demux_Control( p_input, DEMUX_GET_LENGTH, &i_length ) && i_length > 0 )
{
p_playlist = (playlist_t*)vlc_object_find( p_input,
VLC_OBJECT_PLAYLIST,
FIND_PARENT );
if( p_playlist )
{
vlc_mutex_lock( &p_playlist->object_lock );
p_playlist->pp_items[ p_playlist->i_index ]->i_duration = i_length;
val.b_bool = VLC_TRUE;
vlc_mutex_unlock( &p_playlist->object_lock );
var_Set( p_playlist, "intf-change", val );
vlc_object_release( p_playlist );
}
}
/* get fps */ /* get fps */
if( demux_Control( p_input, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 ) if( demux_Control( p_input, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 )
{ {
......
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