mirror of
https://github.com/mpv-player/mpv
synced 2025-01-18 13:14:36 +00:00
a477481aab
This has 2 goals: - Ensure that AOs have always enough data, even if the device buffers are very small. - Reduce complexity in some AOs, which do their own buffering. One disadvantage is that performance is slightly reduced due to more copying. Implementation-wise, we don't change ao.c much, and instead "redirect" the driver's callback to an API wrapper in push.c. Additionally, we add code for dealing with AOs that have a pull API. These AOs usually do their own buffering (jack, coreaudio, portaudio), and adding a thread is basically a waste. The code in pull.c manages a ringbuffer, and allows callback-based AOs to read data directly. |
||
---|---|---|
.. | ||
decode | ||
filter | ||
out | ||
audio_buffer.c | ||
audio_buffer.h | ||
audio.c | ||
audio.h | ||
chmap_sel.c | ||
chmap_sel.h | ||
chmap.c | ||
chmap.h | ||
fmt-conversion.c | ||
fmt-conversion.h | ||
format.c | ||
format.h | ||
mixer.c | ||
mixer.h | ||
reorder_ch.c | ||
reorder_ch.h |