summaryrefslogtreecommitdiff
path: root/ffplay.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2012-10-14 18:21:40 +0200
committerMarton Balint <cus@passwd.hu>2012-10-21 17:18:12 +0200
commitb2a8850969b89151677253be4d99e0ba29212749 (patch)
tree851aed95484418d26c410d8726a106e2e089dc6a /ffplay.c
parent2a4c7e6540c4549d6a47cd7cb288d4d910a99736 (diff)
ffplay: only check external clock if current frame serial matches the displayed frame serial
This way we avoid updating the external clocks with timestamps beloging to frames before seek. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'ffplay.c')
-rw-r--r--ffplay.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ffplay.c b/ffplay.c
index ca4f3c2c93..c65c33aa71 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1190,7 +1190,8 @@ static void update_video_pts(VideoState *is, double pts, int64_t pos, int serial
is->video_current_pts_drift = is->video_current_pts - time;
is->video_current_pos = pos;
is->frame_last_pts = pts;
- check_external_clock_sync(is, is->video_current_pts);
+ if (is->videoq.serial == serial)
+ check_external_clock_sync(is, is->video_current_pts);
}
/* called to display each frame */
@@ -2150,7 +2151,8 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
/* Let's assume the audio driver that is used by SDL has two periods. */
is->audio_current_pts = is->audio_clock - (double)(2 * is->audio_hw_buf_size + is->audio_write_buf_size) / bytes_per_sec;
is->audio_current_pts_drift = is->audio_current_pts - audio_callback_time / 1000000.0;
- check_external_clock_sync(is, is->audio_current_pts);
+ if (is->audioq.serial == is->audio_pkt_temp_serial)
+ check_external_clock_sync(is, is->audio_current_pts);
}
static int audio_open(void *opaque, int64_t wanted_channel_layout, int wanted_nb_channels, int wanted_sample_rate, struct AudioParams *audio_hw_params)