mirror of https://github.com/mpv-player/mpv
audio: fix initial sync with huge AO buffer
With e.g --start=-3 --audio-buffer=10 the decoder entered EOF state before the initial sync was finished, entered STATUS_EOF, and just started playing audio from a random position. This doesn't handle seeking outside of the file, which is a different case. E.g. --start=30:00 with audio and video enabled in a file shorter than 30:00 will play a random last part of audio. This could perhaps be fixed by using the hr-seek target for cutting audio, instead of the video PTS, but that would be kind of intrusive, so don't do it for now. The simpler solution, assuming audio EOF on video EOF, wouldn't work, because we allow audio to start before video, or to last after video.
This commit is contained in:
parent
39609fc19a
commit
7791e25fa0
|
@ -466,7 +466,7 @@ void fill_audio_out_buffers(struct MPContext *mpctx, double endpts)
|
|||
if (mpctx->audio_status == STATUS_SYNCING) {
|
||||
if (end_sync)
|
||||
mpctx->audio_status = STATUS_FILLING;
|
||||
if (status != AD_OK)
|
||||
if (status != AD_OK && !mp_audio_buffer_samples(mpctx->ao_buffer))
|
||||
mpctx->audio_status = STATUS_EOF;
|
||||
mpctx->sleeptime = 0;
|
||||
return; // continue on next iteration
|
||||
|
|
Loading…
Reference in New Issue