summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-30 23:49:30 +0100
committerwm4 <wm4@nowhere>2015-01-30 23:49:30 +0100
commit48f96f43ec1cf4f91619540a154b51afb83def41 (patch)
treeac00425d88f8cd9b4da6f6b7b742e7c7435bf79a
parent3813c3804f817d09d6df38363736b3b756901790 (diff)
downloadmpv-48f96f43ec1cf4f91619540a154b51afb83def41.tar.bz2
mpv-48f96f43ec1cf4f91619540a154b51afb83def41.tar.xz
player: minor simplification in A/V-sync related code
Just minor things.
-rw-r--r--player/audio.c11
-rw-r--r--player/video.c5
2 files changed, 6 insertions, 10 deletions
diff --git a/player/audio.c b/player/audio.c
index 9193d9d6f2..d7da26d573 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -146,6 +146,7 @@ void reset_audio_state(struct MPContext *mpctx)
if (mpctx->ao_buffer)
mp_audio_buffer_clear(mpctx->ao_buffer);
mpctx->audio_status = mpctx->d_audio ? STATUS_SYNCING : STATUS_EOF;
+ mpctx->delay = 0;
}
void uninit_audio_out(struct MPContext *mpctx)
@@ -406,11 +407,10 @@ static bool get_sync_samples(struct MPContext *mpctx, int *skip)
double sync_pts = MP_NOPTS_VALUE;
if (sync_to_video) {
- if (mpctx->video_next_pts != MP_NOPTS_VALUE) {
- sync_pts = mpctx->video_next_pts;
- } else if (mpctx->video_status < STATUS_READY) {
+ if (mpctx->video_status < STATUS_READY)
return false; // wait until we know a video PTS
- }
+ if (mpctx->video_next_pts != MP_NOPTS_VALUE)
+ sync_pts = mpctx->video_next_pts - (opts->audio_delay - mpctx->delay);
} else if (mpctx->hrseek_active) {
sync_pts = mpctx->hrseek_pts;
}
@@ -419,9 +419,6 @@ static bool get_sync_samples(struct MPContext *mpctx, int *skip)
return true; // syncing disabled
}
- if (sync_to_video)
- sync_pts -= opts->audio_delay - mpctx->delay;
-
double ptsdiff = written_pts - sync_pts;
// Missing timestamp, or PTS reset, or just broken.
if (written_pts == MP_NOPTS_VALUE || fabs(ptsdiff) > 300) {
diff --git a/player/video.c b/player/video.c
index 0795b66cbd..0485ba70ec 100644
--- a/player/video.c
+++ b/player/video.c
@@ -588,9 +588,8 @@ static int video_output_image(struct MPContext *mpctx, double endpts)
frame_time = 0;
}
mpctx->video_next_pts = pts;
- if (mpctx->d_audio)
- mpctx->delay -= frame_time;
- if (mpctx->video_status >= STATUS_READY) {
+ mpctx->delay -= frame_time;
+ if (mpctx->video_status >= STATUS_PLAYING) {
mpctx->time_frame += frame_time / mpctx->opts->playback_speed;
adjust_sync(mpctx, pts, frame_time);
}