diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-02-03 12:14:29 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-02-03 12:14:29 +0000 |
commit | 40dca58f37bab581ad156f03545efc4428a34cb3 (patch) | |
tree | 3e326d33050bc77e35c8f5d16c595a583299c231 /libmpdemux/demuxer.c | |
parent | 8b068da7ad4cac7ebdb39bf645a53c44f2cf88b8 (diff) | |
download | mpv-40dca58f37bab581ad156f03545efc4428a34cb3.tar.bz2 mpv-40dca58f37bab581ad156f03545efc4428a34cb3.tar.xz |
Allow demuxers to choose a default value for correct_pts
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25951 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r-- | libmpdemux/demuxer.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index b8e96ecdb0..8b6873602a 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -684,6 +684,7 @@ int get_demuxer_type_from_name(char *demuxer_name, int *force) int extension_parsing=1; // 0=off 1=mixed (used only for unstable formats) int correct_pts=0; +int user_correct_pts=-1; /* NOTE : Several demuxers may be opened at the same time so @@ -869,6 +870,7 @@ extern float stream_cache_seek_min_percent; demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int dvdsub_id,char* filename){ stream_t *as = NULL,*ss = NULL; demuxer_t *vd,*ad = NULL,*sd = NULL; + demuxer_t *res; int afmt =DEMUXER_TYPE_UNKNOWN,sfmt = DEMUXER_TYPE_UNKNOWN ; int audio_demuxer_type = 0, sub_demuxer_type = 0; int demuxer_force = 0, audio_demuxer_force = 0, @@ -935,13 +937,18 @@ demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int } if(ad && sd) - return new_demuxers_demuxer(vd,ad,sd); + res = new_demuxers_demuxer(vd,ad,sd); else if(ad) - return new_demuxers_demuxer(vd,ad,vd); + res = new_demuxers_demuxer(vd,ad,vd); else if(sd) - return new_demuxers_demuxer(vd,vd,sd); + res = new_demuxers_demuxer(vd,vd,sd); else - return vd; + res = vd; + + correct_pts = user_correct_pts; + if (correct_pts < 0) + correct_pts = demux_control(res, DEMUXER_CTRL_CORRECT_PTS, NULL) == DEMUXER_CTRL_OK; + return res; } |