mpv/audio/out
wm4 39f515cb6a audio/out: prevent underruns with spdif under certain conditions
The player tries to avoid splitting frames with spdif (sample alignment
stuff). This can in certain corner cases with certain drivers lead to
the situation that ao_get_space() returns a number higher than 0 and
lower than the audio frame size. The playloop will round this down to 0
bytes and do nothing, leading to a missed wakeup. This can lead to
underruns or playback completely getting stuck.

It can be reproduced by playing AC3 passthrough with no video and:

    --ao=null --ao-null-buffer=0.256 --ao-null-outburst=6100

This commit attempts to fix it by allowing the playloop to write some
additional data (to get a complete frame), that will be buffered within
the AO ringbuffer even if the audio device doesn't want it.
2016-10-04 19:31:17 +02:00
..
ao.c player, ao, vo: don't call mp_input_wakeup() directly 2016-09-16 14:37:48 +02:00
ao.h player, ao, vo: don't call mp_input_wakeup() directly 2016-09-16 14:37:48 +02:00
ao_alsa.c audio/out: deprecate device sub-options 2016-09-05 21:26:39 +02:00
ao_coreaudio.c audio/out: deprecate "exclusive" sub-options 2016-09-05 21:26:39 +02:00
ao_coreaudio_chmap.c
ao_coreaudio_chmap.h
ao_coreaudio_exclusive.c osdep: rename atomics.h to atomic.h 2016-09-07 11:26:25 +02:00
ao_coreaudio_properties.c
ao_coreaudio_properties.h
ao_coreaudio_utils.c
ao_coreaudio_utils.h
ao_jack.c ao_jack: move to global options 2016-09-05 21:04:41 +02:00
ao_lavc.c audio: use --audio-channels=auto behavior, except on ALSA 2016-08-04 20:49:20 +02:00
ao_null.c options: deprecate suboptions for the remaining AO/VOs 2016-09-05 21:26:39 +02:00
ao_openal.c ao_openal: enable building on OSX 2016-09-21 12:43:14 +02:00
ao_opensles.c options: deprecate suboptions for the remaining AO/VOs 2016-09-05 21:26:39 +02:00
ao_oss.c audio/out: deprecate device sub-options 2016-09-05 21:26:39 +02:00
ao_pcm.c ao_pcm: remove some useless messages 2016-09-07 12:54:33 +02:00
ao_pulse.c audio/out: deprecate device sub-options 2016-09-05 21:26:39 +02:00
ao_rsound.c ao_rsound: fix compilation 2016-09-07 18:10:12 +02:00
ao_sdl.c options: deprecate suboptions for the remaining AO/VOs 2016-09-05 21:26:39 +02:00
ao_sndio.c audio/out: deprecate device sub-options 2016-09-05 21:26:39 +02:00
ao_wasapi.c audio/out: deprecate "exclusive" sub-options 2016-09-05 21:26:39 +02:00
ao_wasapi.h osdep: rename atomics.h to atomic.h 2016-09-07 11:26:25 +02:00
ao_wasapi_changenotify.c win32: build with -DINITGUID 2016-09-28 21:38:52 +10:00
ao_wasapi_utils.c win32: build with -DINITGUID 2016-09-28 21:38:52 +10:00
internal.h player, ao, vo: don't call mp_input_wakeup() directly 2016-09-16 14:37:48 +02:00
pull.c player, ao, vo: don't call mp_input_wakeup() directly 2016-09-16 14:37:48 +02:00
push.c audio/out: prevent underruns with spdif under certain conditions 2016-10-04 19:31:17 +02:00