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;