1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-05 05:37:37 +00:00
mpv/audio
wm4 396756e58a ao_oss: prevent hang when unpausing after device was lost
Pausing/unpausing while the audio device can't be reopened, and then
unpausing again when the device is finally reopened, can hang the
player for a while.

This happens because p->prepause_samples grows without bounds each
time the player is unpaused while the device is lost. On unpause,
ao_oss plays prepause_samples of silence to compensate for A/V timing
issues due to the partially lost buffer (we can't pause the device at
an arbitrary sample position, and the current period will be lost).
This in turn will make the player appear to be frozen if too much
audio is queued. (Normally, play() must never block, but here it
happens because more data is written than get_space() reports. A
better implementation would never let prepause_samples grow larger
than the period size.)

The unbounded growth happens because get_space() always returns that
the device can be written while the device is lost. So limit it to
200ms. (A better implementation would limit it to the period size.)

Also see #1080.
2014-09-17 00:33:40 +02:00
..
decode Move compat/ and bstr/ directory contents somewhere else 2014-08-29 12:31:52 +02:00
filter af_lavrresample: fix crash with size 0 2014-09-15 23:14:19 +02:00
out ao_oss: prevent hang when unpausing after device was lost 2014-09-17 00:33:40 +02:00
audio_buffer.c Split mpvcore/ into common/, misc/, bstr/ 2013-12-17 02:39:45 +01:00
audio_buffer.h audio: add mp_audio_buffer 2013-11-12 23:28:21 +01:00
audio.c af_fmt2bits: change to af_fmt2bps (bytes/sample) where appropriate 2014-05-28 21:38:00 +02:00
audio.h af_fmt2bits: change to af_fmt2bps (bytes/sample) where appropriate 2014-05-28 21:38:00 +02:00
chmap_sel.c Add more const 2014-06-11 00:39:14 +02:00
chmap_sel.h audio: add channel map selection function 2013-05-12 21:24:57 +02:00
chmap.c Add more const 2014-06-11 00:39:14 +02:00
chmap.h Move compat/ and bstr/ directory contents somewhere else 2014-08-29 12:31:52 +02:00
fmt-conversion.c audio: fix format ID conversion 2013-12-23 21:24:41 +01:00
fmt-conversion.h ad_lavc: use fmt-conversion to map sample formats 2013-04-13 04:21:27 +02:00
format.c af_fmt2bits: change to af_fmt2bps (bytes/sample) where appropriate 2014-05-28 21:38:00 +02:00
format.h Move compat/ and bstr/ directory contents somewhere else 2014-08-29 12:31:52 +02:00
mixer.c audio/out: remove old things 2014-09-06 02:30:57 +02:00
mixer.h player: show "neutral" position markers for OSD bars 2014-06-08 23:52:58 +02:00