From d30c69251f04bf56d2a6f0d3dabd5ea1561dc3f7 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 13 Oct 2012 22:31:17 +0200 Subject: [PATCH] ffplay: use get_master_sync_type where necessary We should make decisions based on the real sync type. This also simplifies the code. Signed-off-by: Marton Balint --- ffplay.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/ffplay.c b/ffplay.c index 717051ed36..95a6ac4635 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1146,8 +1146,7 @@ static double compute_target_delay(double delay, VideoState *is) double sync_threshold, diff; /* update delay to follow master synchronisation source */ - if (((is->av_sync_type == AV_SYNC_AUDIO_MASTER && is->audio_st) || - is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK)) { + if (get_master_sync_type(is) != AV_SYNC_VIDEO_MASTER) { /* if video is slave, we try to correct big delays by duplicating or deleting a frame */ diff = get_video_clock(is) - get_master_clock(is); @@ -1264,7 +1263,7 @@ retry: if (is->pictq_size > 1) { VideoPicture *nextvp = &is->pictq[(is->pictq_rindex + 1) % VIDEO_PICTURE_QUEUE_SIZE]; duration = nextvp->pts - vp->pts; - if((framedrop>0 || (framedrop && is->av_sync_type != AV_SYNC_VIDEO_MASTER)) && time > is->frame_timer + duration){ + if((framedrop>0 || (framedrop && get_master_sync_type(is) != AV_SYNC_VIDEO_MASTER)) && time > is->frame_timer + duration){ is->frame_drops_late++; pictq_next_picture(is); goto retry; @@ -1582,8 +1581,7 @@ static int get_video_frame(VideoState *is, AVFrame *frame, int64_t *pts, AVPacke *pts = 0; } - if (((is->av_sync_type == AV_SYNC_AUDIO_MASTER && is->audio_st) || is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK) && - (framedrop>0 || (framedrop && is->av_sync_type != AV_SYNC_VIDEO_MASTER))) { + if (framedrop>0 || (framedrop && get_master_sync_type(is) != AV_SYNC_VIDEO_MASTER)) { SDL_LockMutex(is->pictq_mutex); if (is->frame_last_pts != AV_NOPTS_VALUE && *pts) { double clockdiff = get_video_clock(is) - get_master_clock(is); @@ -1941,8 +1939,7 @@ static int synchronize_audio(VideoState *is, int nb_samples) int wanted_nb_samples = nb_samples; /* if not master, then we try to remove or add samples to correct the clock */ - if (((is->av_sync_type == AV_SYNC_VIDEO_MASTER && is->video_st) || - is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK)) { + if (get_master_sync_type(is) != AV_SYNC_AUDIO_MASTER) { double diff, avg_diff; int min_nb_samples, max_nb_samples; -- 2.11.0