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 ||