diff options
author | Martin Herkt <lachs0r@srsfckn.biz> | 2014-01-06 18:39:49 +0100 |
---|---|---|
committer | Martin Herkt <lachs0r@srsfckn.biz> | 2014-01-06 18:40:31 +0100 |
commit | cd53de958da9708530b8bac3711a4c5d418fe95f (patch) | |
tree | 26abc3bd2338ed9d7d7446898eec513ad9ad94ad | |
parent | 936a204e27e6aad4a7689c2543bcbd24a5fc958c (diff) | |
download | mpv-cd53de958da9708530b8bac3711a4c5d418fe95f.tar.bz2 mpv-cd53de958da9708530b8bac3711a4c5d418fe95f.tar.xz |
Fix audio delay inversion
-rw-r--r-- | DOCS/man/en/options.rst | 4 | ||||
-rw-r--r-- | player/audio.c | 4 | ||||
-rw-r--r-- | player/playloop.c | 4 |
3 files changed, 6 insertions, 6 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst index d582c5c55c..cdf63e97ce 100644 --- a/DOCS/man/en/options.rst +++ b/DOCS/man/en/options.rst @@ -591,8 +591,8 @@ OPTIONS ``--cursor-autohide``. ``--audio-delay=<sec>`` - Audio delay in seconds (positive or negative float value). Negative values - delay the audio, and positive values delay the video. + Audio delay in seconds (positive or negative float value). Positive values + delay the audio, and negative values delay the video. ``--deinterlace=<yes|no|auto>`` Enable or disable interlacing (default: auto, which usually means no). 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 ? |