summaryrefslogtreecommitdiff
path: root/ffplay.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-02-01 11:30:31 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-02-01 11:30:31 +0000
commitb8bb398a40b1636de7a70131a45ddbc2944a242f (patch)
treee62f04d61a112cd58ec17bc8adf64eb34ccd713c /ffplay.c
parent68aefbe81cb3b9dd002108782bb8d798e1c12806 (diff)
Schedule refreshes from a thread that actually knows the PTS.
Fixes wernfried_1.avi Originally committed as revision 21586 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffplay.c')
-rw-r--r--ffplay.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/ffplay.c b/ffplay.c
index 496e7a4bf9..739653d719 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1061,8 +1061,7 @@ static void video_refresh_timer(void *opaque)
if (is->video_st) {
if (is->pictq_size == 0) {
- /* if no picture, need to wait */
- schedule_refresh(is, 1);
+// fprintf(stderr, "Internal error detected in the SDL timer\n");
} else {
/* dequeue the picture */
vp = &is->pictq[is->pictq_rindex];
@@ -1071,9 +1070,6 @@ static void video_refresh_timer(void *opaque)
is->video_current_pts = vp->pts;
is->video_current_pts_drift = is->video_current_pts - av_gettime() / 1000000.0;
- /* launch timer for next picture */
- schedule_refresh(is, (int)(compute_frame_delay(vp->pts, is) * 1000 + 0.5));
-
if(is->subtitle_st) {
if (is->subtitle_stream_changed) {
SDL_LockMutex(is->subpq_mutex);
@@ -1282,6 +1278,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts)
SDL_LockMutex(is->pictq_mutex);
is->pictq_size++;
SDL_UnlockMutex(is->pictq_mutex);
+ schedule_refresh(is, (int)(compute_frame_delay(vp->pts, is) * 1000 + 0.5));
}
return 0;
}