Mercurial > mplayer.hg
comparison libmpdemux/video.c @ 5930:68cac7ecaf05
Fix frame_time for variable fps movies as it was the last frame duration.
author | albeu |
---|---|
date | Thu, 02 May 2002 10:25:48 +0000 |
parents | 31202ff6fb3d |
children | 622d57683187 |
comparison
equal
deleted
inserted
replaced
5929:9e7d54e7be58 | 5930:68cac7ecaf05 |
---|---|
289 #endif | 289 #endif |
290 case DEMUXER_TYPE_MOV: | 290 case DEMUXER_TYPE_MOV: |
291 case DEMUXER_TYPE_FILM: | 291 case DEMUXER_TYPE_FILM: |
292 case DEMUXER_TYPE_VIVO: | 292 case DEMUXER_TYPE_VIVO: |
293 case DEMUXER_TYPE_ASF: { | 293 case DEMUXER_TYPE_ASF: { |
294 float d=d_video->pts-pts1; | 294 float next_pts = ds_get_next_pts(d_video); |
295 if(d>0 && d<5) frame_time=d; | 295 float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1; |
296 if(d>0){ | 296 if(d>0){ |
297 if(verbose) | 297 if(verbose) |
298 if((int)sh_video->fps==1000) | 298 if((int)sh_video->fps==1000) |
299 mp_msg(MSGT_CPLAYER,MSGL_STATUS,"\navg. framerate: %d fps \n",(int)(1.0f/d)); | 299 mp_msg(MSGT_CPLAYER,MSGL_STATUS,"\navg. framerate: %d fps \n",(int)(1.0f/d)); |
300 sh_video->frametime=d; // 1ms | 300 sh_video->frametime=d; // 1ms |
301 sh_video->fps=1.0f/d; | 301 sh_video->fps=1.0f/d; |
302 frame_time = d; | |
303 } else { | |
304 mp_msg(MSGT_CPLAYER,MSGL_WARN,"\nInvalid frame duration value. Defaulting to 1/25 sec.\n"); | |
305 frame_time = 1/25.0; | |
302 } | 306 } |
303 } | 307 } |
304 } | 308 } |
305 | 309 |
306 if(demuxer->file_format==DEMUXER_TYPE_MPEG_PS || | 310 if(demuxer->file_format==DEMUXER_TYPE_MPEG_PS || |