mirror of https://github.com/mpv-player/mpv
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
|
#if HAVE_ENCODING
|
||||||
encode_lavc_set_audio_pts(mpctx->encode_lavc_ctx, mpctx->ao_pts);
|
encode_lavc_set_audio_pts(mpctx->encode_lavc_ctx, mpctx->ao_pts);
|
||||||
#endif
|
#endif
|
||||||
|
if (data->samples == 0)
|
||||||
|
return 0;
|
||||||
double real_samplerate = out_format.rate / mpctx->opts->playback_speed;
|
double real_samplerate = out_format.rate / mpctx->opts->playback_speed;
|
||||||
int played = ao_play(mpctx->ao, data->planes, data->samples, flags);
|
int played = ao_play(mpctx->ao, data->planes, data->samples, flags);
|
||||||
assert(played <= data->samples);
|
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;
|
struct mp_audio data;
|
||||||
mp_audio_buffer_peek(mpctx->ao_buffer, &data);
|
mp_audio_buffer_peek(mpctx->ao_buffer, &data);
|
||||||
data.samples = MPMIN(data.samples, playsize);
|
data.samples = MPMIN(data.samples, playsize);
|
||||||
|
|
Loading…
Reference in New Issue