diff options
author | Marton Balint <cus@passwd.hu> | 2011-08-04 00:59:45 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-08-09 21:53:15 +0200 |
commit | c369ddb720bfb7b8f1780b875067b900285ebfc2 (patch) | |
tree | 288910b4cadd78665d26d2b439323933983b1bf3 /ffplay.c | |
parent | 3a1df52e3ce70f41c4f8b9900be2c2907b7e21ef (diff) | |
download | ffmpeg-c369ddb720bfb7b8f1780b875067b900285ebfc2.tar.gz |
ffplay: pass frame durations clearly to video video_refresh
Previously the target clock of the next frame was calculated by using video_clock
which is modified from another thread...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffplay.c')
-rw-r--r-- | ffplay.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -98,6 +98,7 @@ typedef struct PacketQueue { typedef struct VideoPicture { double pts; ///<presentation time stamp for this picture double target_clock; ///<av_gettime() time at which this should be displayed ideally + double duration; ///<expected duration of the frame int64_t pos; ///<byte position in file SDL_Overlay *bmp; int width, height; /* source height & width */ @@ -1136,7 +1137,7 @@ retry: assert(nextvp->target_clock >= vp->target_clock); next_target= nextvp->target_clock; }else{ - next_target= vp->target_clock + is->video_clock - vp->pts; //FIXME pass durations cleanly + next_target= vp->target_clock + vp->duration; } if((framedrop>0 || (framedrop && is->audio_st)) && time > next_target){ is->skip_frames *= 1.0 + FRAME_SKIP_FACTOR; @@ -1341,6 +1342,8 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_ vp = &is->pictq[is->pictq_windex]; + vp->duration = frame_delay; + /* alloc or resize hardware picture buffer */ if (!vp->bmp || #if CONFIG_AVFILTER |