mirror of
https://github.com/mpv-player/mpv.git
synced 2024-09-20 12:02:23 +02:00
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.
This commit is contained in:
parent
7b6e211e63
commit
3da0a3ccc3
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user