diff options
author | wm4 <wm4@nowhere> | 2014-03-09 01:26:24 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-03-09 01:27:42 +0100 |
commit | 3da0a3ccc368ef0a2582daccb4a8082aa84cb269 (patch) | |
tree | a8a9f0b6e265a6a2f0559eb5c4ab16282c8c0cc4 /player | |
parent | 7b6e211e63e3cc3e53cc58360b9067f98489d892 (diff) | |
download | mpv-3da0a3ccc368ef0a2582daccb4a8082aa84cb269.tar.bz2 mpv-3da0a3ccc368ef0a2582daccb4a8082aa84cb269.tar.xz |
audio: don't write audio when paused
This is probably "safer". Without it, we will play 1 sample, because the
logic was written in a way to decode 1 sample if audio is paused. 1
sample usually will initialize the audio PTS, but not play any real
audio. Also see previous commit.
In ancient times, this actually used 1 byte (instead of 1 sample), so
clearly no sample was written, unless the audio was 8-bit mono.
Diffstat (limited to 'player')
-rw-r--r-- | player/audio.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/player/audio.c b/player/audio.c index c5c3e1e9d7..5d8d60ccd1 100644 --- a/player/audio.c +++ b/player/audio.c @@ -264,6 +264,8 @@ static int write_to_ao(struct MPContext *mpctx, struct mp_audio *data, int flags #if HAVE_ENCODING encode_lavc_set_audio_pts(mpctx->encode_lavc_ctx, mpctx->ao_pts); #endif + if (data->samples == 0) + return 0; double real_samplerate = out_format.rate / mpctx->opts->playback_speed; int played = ao_play(mpctx->ao, data->planes, data->samples, flags); assert(played <= data->samples); @@ -456,6 +458,9 @@ int fill_audio_out_buffers(struct MPContext *mpctx, double endpts) } } + if (mpctx->paused) + playsize = 0; + struct mp_audio data; mp_audio_buffer_peek(mpctx->ao_buffer, &data); data.samples = MPMIN(data.samples, playsize); |