Mercurial > mplayer.hg
comparison libmpdemux/demux_mpg.c @ 17699:b742a2c71c25
try to get duration from the stream layer, if an implementation of STREAM_CTRL_GET_TIME_LENGTH is available
author | nicodvb |
---|---|
date | Mon, 27 Feb 2006 21:13:17 +0000 |
parents | b849a99cdc3c |
children | 031185213fa9 |
comparison
equal
deleted
inserted
replaced
17698:14830cce6098 | 17699:b742a2c71c25 |
---|---|
785 | 785 |
786 int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ | 786 int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ |
787 demux_stream_t *d_video=demuxer->video; | 787 demux_stream_t *d_video=demuxer->video; |
788 sh_video_t *sh_video=d_video->sh; | 788 sh_video_t *sh_video=d_video->sh; |
789 mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; | 789 mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; |
790 int msec = 0; | |
790 | 791 |
791 switch(cmd) { | 792 switch(cmd) { |
792 case DEMUXER_CTRL_GET_TIME_LENGTH: | 793 case DEMUXER_CTRL_GET_TIME_LENGTH: |
794 msec = stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, arg); | |
795 if(msec != STREAM_UNSUPORTED) { | |
796 msec = *((unsigned int*)arg); | |
797 *((double *)arg)=(double)msec/1000.0f; | |
798 mp_msg(MSGT_DEMUXER,MSGL_DBG2,"\r\nDEMUX_MPG_CTRL, stream len: %d (%.3lf)\r\n", msec, *((double*)arg)); | |
799 return DEMUXER_CTRL_GUESS; | |
800 } | |
793 if (mpg_d && mpg_d->has_valid_timestamps) { | 801 if (mpg_d && mpg_d->has_valid_timestamps) { |
794 *((double *)arg)=(double)mpg_d->final_pts; | 802 *((double *)arg)=(double)mpg_d->final_pts; |
795 return DEMUXER_CTRL_GUESS; | 803 return DEMUXER_CTRL_GUESS; |
796 } | 804 } |
797 return DEMUXER_CTRL_DONTKNOW; | 805 return DEMUXER_CTRL_DONTKNOW; |