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 <cus@passwd.hu>
This commit is contained in:
parent
fca16a1571
commit
d30c69251f
11
ffplay.c
11
ffplay.c
@ -1146,8 +1146,7 @@ static double compute_target_delay(double delay, VideoState *is)
|
|||||||
double sync_threshold, diff;
|
double sync_threshold, diff;
|
||||||
|
|
||||||
/* update delay to follow master synchronisation source */
|
/* update delay to follow master synchronisation source */
|
||||||
if (((is->av_sync_type == AV_SYNC_AUDIO_MASTER && is->audio_st) ||
|
if (get_master_sync_type(is) != AV_SYNC_VIDEO_MASTER) {
|
||||||
is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK)) {
|
|
||||||
/* if video is slave, we try to correct big delays by
|
/* if video is slave, we try to correct big delays by
|
||||||
duplicating or deleting a frame */
|
duplicating or deleting a frame */
|
||||||
diff = get_video_clock(is) - get_master_clock(is);
|
diff = get_video_clock(is) - get_master_clock(is);
|
||||||
@ -1264,7 +1263,7 @@ retry:
|
|||||||
if (is->pictq_size > 1) {
|
if (is->pictq_size > 1) {
|
||||||
VideoPicture *nextvp = &is->pictq[(is->pictq_rindex + 1) % VIDEO_PICTURE_QUEUE_SIZE];
|
VideoPicture *nextvp = &is->pictq[(is->pictq_rindex + 1) % VIDEO_PICTURE_QUEUE_SIZE];
|
||||||
duration = nextvp->pts - vp->pts;
|
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++;
|
is->frame_drops_late++;
|
||||||
pictq_next_picture(is);
|
pictq_next_picture(is);
|
||||||
goto retry;
|
goto retry;
|
||||||
@ -1582,8 +1581,7 @@ static int get_video_frame(VideoState *is, AVFrame *frame, int64_t *pts, AVPacke
|
|||||||
*pts = 0;
|
*pts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((is->av_sync_type == AV_SYNC_AUDIO_MASTER && is->audio_st) || is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK) &&
|
if (framedrop>0 || (framedrop && get_master_sync_type(is) != AV_SYNC_VIDEO_MASTER)) {
|
||||||
(framedrop>0 || (framedrop && is->av_sync_type != AV_SYNC_VIDEO_MASTER))) {
|
|
||||||
SDL_LockMutex(is->pictq_mutex);
|
SDL_LockMutex(is->pictq_mutex);
|
||||||
if (is->frame_last_pts != AV_NOPTS_VALUE && *pts) {
|
if (is->frame_last_pts != AV_NOPTS_VALUE && *pts) {
|
||||||
double clockdiff = get_video_clock(is) - get_master_clock(is);
|
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;
|
int wanted_nb_samples = nb_samples;
|
||||||
|
|
||||||
/* if not master, then we try to remove or add samples to correct the clock */
|
/* 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) ||
|
if (get_master_sync_type(is) != AV_SYNC_AUDIO_MASTER) {
|
||||||
is->av_sync_type == AV_SYNC_EXTERNAL_CLOCK)) {
|
|
||||||
double diff, avg_diff;
|
double diff, avg_diff;
|
||||||
int min_nb_samples, max_nb_samples;
|
int min_nb_samples, max_nb_samples;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user