Commit fca16a15 authored by Marton Balint's avatar Marton Balint

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: 's avatarMarton Balint <cus@passwd.hu>
parent b2a88509
......@@ -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 {
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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment