summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-01-05 15:24:38 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-01-05 15:24:38 +0000
commit9e1add871ebacc3844c70fec93c086c141b51794 (patch)
treee15d827a16c52709542425f7e304d32f84df1121 /libmpdemux
parente5e820981f0103abc37cfca4a1b704ffaac48f69 (diff)
downloadmpv-9e1add871ebacc3844c70fec93c086c141b51794.tar.bz2
mpv-9e1add871ebacc3844c70fec93c086c141b51794.tar.xz
Make ds_get_next_pts return MP_NOPTS_VALUE instead of -1 on error,
-1 could be a perfectly valid pts. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21827 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demuxer.c6
-rw-r--r--libmpdemux/video.c10
2 files changed, 8 insertions, 8 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index b640594aa2..746452f5b2 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -567,15 +567,15 @@ double ds_get_next_pts(demux_stream_t *ds)
if(demux->audio->packs>=MAX_PACKS || demux->audio->bytes>=MAX_PACK_BYTES){
mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes);
mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
- return -1;
+ return MP_NOPTS_VALUE;
}
if(demux->video->packs>=MAX_PACKS || demux->video->bytes>=MAX_PACK_BYTES){
mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes);
mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
- return -1;
+ return MP_NOPTS_VALUE;
}
if(!demux_fill_buffer(demux,ds))
- return -1;
+ return MP_NOPTS_VALUE;
}
return ds->first->pts;
}
diff --git a/libmpdemux/video.c b/libmpdemux/video.c
index e1a7ae3fba..045db4fb6c 100644
--- a/libmpdemux/video.c
+++ b/libmpdemux/video.c
@@ -581,8 +581,8 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
case DEMUXER_TYPE_VIVO:
case DEMUXER_TYPE_OGG:
case DEMUXER_TYPE_ASF: {
- float next_pts = ds_get_next_pts(d_video);
- float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;
+ double next_pts = ds_get_next_pts(d_video);
+ double d= (next_pts != MP_NOPTS_VALUE) ? next_pts - d_video->pts : d_video->pts-pts1;
if(d>=0){
if(d>0){
if((int)sh_video->fps==1000)
@@ -599,8 +599,8 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
break;
case DEMUXER_TYPE_LAVF:
if((int)sh_video->fps==1000 || (int)sh_video->fps<=1){
- float next_pts = ds_get_next_pts(d_video);
- float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;
+ double next_pts = ds_get_next_pts(d_video);
+ double d= (next_pts != MP_NOPTS_VALUE) ? next_pts - d_video->pts : d_video->pts-pts1;
if(d>=0){
frame_time = d;
}
@@ -609,7 +609,7 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
case DEMUXER_TYPE_REAL:
{
double next_pts = ds_get_next_pts(d_video);
- float d = next_pts > 0 ? next_pts - d_video->pts : d_video->pts - pts1;
+ double d = (next_pts != MP_NOPTS_VALUE) ? next_pts - d_video->pts : d_video->pts - pts1;
frame_time = (d >= 0 && pts1 > 0) ? d : 0.001;
}