summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorMartin Herkt <lachs0r@srsfckn.biz>2014-01-06 18:39:49 +0100
committerMartin Herkt <lachs0r@srsfckn.biz>2014-01-06 18:40:31 +0100
commitcd53de958da9708530b8bac3711a4c5d418fe95f (patch)
tree26abc3bd2338ed9d7d7446898eec513ad9ad94ad /player
parent936a204e27e6aad4a7689c2543bcbd24a5fc958c (diff)
downloadmpv-cd53de958da9708530b8bac3711a4c5d418fe95f.tar.bz2
mpv-cd53de958da9708530b8bac3711a4c5d418fe95f.tar.xz
Fix audio delay inversion
Diffstat (limited to 'player')
-rw-r--r--player/audio.c4
-rw-r--r--player/playloop.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/player/audio.c b/player/audio.c
index 79d064940b..de08f6fce3 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -306,7 +306,7 @@ static int audio_start_sync(struct MPContext *mpctx, int playsize)
ptsdiff = written_pts - mpctx->hrseek_pts;
else
ptsdiff = written_pts - mpctx->video_next_pts - mpctx->delay
- - mpctx->audio_delay;
+ + mpctx->audio_delay;
samples = ptsdiff * real_samplerate;
// ogg demuxers give packets without timing
@@ -410,7 +410,7 @@ int fill_audio_out_buffers(struct MPContext *mpctx, double endpts)
}
if (endpts != MP_NOPTS_VALUE) {
- double samples = (endpts - written_audio_pts(mpctx) + mpctx->audio_delay)
+ double samples = (endpts - written_audio_pts(mpctx) - mpctx->audio_delay)
* ao->samplerate / opts->playback_speed;
if (playsize > samples) {
playsize = MPMAX(samples, 0);
diff --git a/player/playloop.c b/player/playloop.c
index 6359803fcf..32984fb570 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -595,7 +595,7 @@ static void update_avsync(struct MPContext *mpctx)
double a_pos = playing_audio_pts(mpctx);
- mpctx->last_av_difference = a_pos - mpctx->video_pts - mpctx->audio_delay;
+ mpctx->last_av_difference = a_pos - mpctx->video_pts + mpctx->audio_delay;
if (mpctx->time_frame > 0)
mpctx->last_av_difference +=
mpctx->time_frame * mpctx->opts->playback_speed;
@@ -629,7 +629,7 @@ static void adjust_sync(struct MPContext *mpctx, double frame_time)
double av_delay = a_pts - v_pts;
// Try to sync vo_flip() so it will *finish* at given time
av_delay += mpctx->last_vo_flip_duration;
- av_delay -= mpctx->audio_delay; // This much pts difference is desired
+ av_delay += mpctx->audio_delay; // This much pts difference is desired
double change = av_delay * 0.1;
double max_change = opts->default_max_pts_correction >= 0 ?