From fca16a15712b789179dfc2131506fa4762795775 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 13 Oct 2012 21:33:32 +0200 Subject: [PATCH] ffplay: add get_master_sync_type function The real av_sync_type may be different to VideoState->av_sync_type, because the required audio or video stream for audio or video clock may not be available. We will use a function to query the real av_sync_type which is used for determining the master clock. Signed-off-by: Marton Balint --- ffplay.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/ffplay.c b/ffplay.c index c65c33aa71..717051ed36 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1066,23 +1066,37 @@ static double get_external_clock(VideoState *is) } } +static int get_master_sync_type(VideoState *is) { + if (is->av_sync_type == AV_SYNC_VIDEO_MASTER) { + if (is->video_st) + return AV_SYNC_VIDEO_MASTER; + else + return AV_SYNC_AUDIO_MASTER; + } else if (is->av_sync_type == AV_SYNC_AUDIO_MASTER) { + if (is->audio_st) + return AV_SYNC_AUDIO_MASTER; + else + return AV_SYNC_VIDEO_MASTER; + } else { + return AV_SYNC_EXTERNAL_CLOCK; + } +} + /* get the current master clock value */ static double get_master_clock(VideoState *is) { double val; - if (is->av_sync_type == AV_SYNC_VIDEO_MASTER) { - if (is->video_st) + switch (get_master_sync_type(is)) { + case AV_SYNC_VIDEO_MASTER: val = get_video_clock(is); - else + break; + case AV_SYNC_AUDIO_MASTER: val = get_audio_clock(is); - } else if (is->av_sync_type == AV_SYNC_AUDIO_MASTER) { - if (is->audio_st) - val = get_audio_clock(is); - else - val = get_video_clock(is); - } else { - val = get_external_clock(is); + break; + default: + val = get_external_clock(is); + break; } return val; }