diff options
-rw-r--r-- | ffplay.c | 34 |
1 files changed, 24 insertions, 10 deletions
@@ -1066,23 +1066,37 @@ static double get_external_clock(VideoState *is) } } -/* get the current master clock value */ -static double get_master_clock(VideoState *is) -{ - double val; - +static int get_master_sync_type(VideoState *is) { if (is->av_sync_type == AV_SYNC_VIDEO_MASTER) { if (is->video_st) - val = get_video_clock(is); + return AV_SYNC_VIDEO_MASTER; else - val = get_audio_clock(is); + return AV_SYNC_AUDIO_MASTER; } else if (is->av_sync_type == AV_SYNC_AUDIO_MASTER) { if (is->audio_st) - val = get_audio_clock(is); + return AV_SYNC_AUDIO_MASTER; else - val = get_video_clock(is); + return AV_SYNC_VIDEO_MASTER; } else { - val = get_external_clock(is); + return AV_SYNC_EXTERNAL_CLOCK; + } +} + +/* get the current master clock value */ +static double get_master_clock(VideoState *is) +{ + double val; + + switch (get_master_sync_type(is)) { + case AV_SYNC_VIDEO_MASTER: + val = get_video_clock(is); + break; + case AV_SYNC_AUDIO_MASTER: + val = get_audio_clock(is); + break; + default: + val = get_external_clock(is); + break; } return val; } |