[vlc-devel] [PATCH 0/8] asynchronous aout stream
Thomas Guillem
thomas at gllm.fr
Fri Mar 8 17:24:38 CET 2019
Hello,
This patch set should be applied on top of my clock branch:
https://code.videolan.org/jbk/vlc/commits/clock-core/32
All aout stream commands are now asynchronous.
>From an aout module point view, this mean that play/drain/flush/start/stop are
always executed from the same thread. This was 99.99% the case before this
patch set since we don't have many asynchronous audio decoder (only Android
MediaCodec, that is disabled). Therefore, asynchronous audio decoders can now be
implemented without any races (not sure if many).
This is the first step for gapless playback since the aout can now be
controlled without blocking.
Indeed, my idea for a (very simple) gapless is the following:
- The player can't prevent the aout module to stop or drain if there is next
media to play
- In that case, aout_Drain() will put a timer corresponding to a little less
than the aout module delay
- If no aout_Start() is called before the timer is fired, the aout will drain
and stop.
- If a new aout_Start() is called before the timer is fired, it will cancel the
timer, compare the audio_format with the previous one and skip the
drain/stop/start if it is the same.
This new Aout Async API make the previous much easier.
Indeed, this will work only if the aout delay is bigger than the input
buffering of the next input, but this is a good first step.
Regards,
Thomas Guillem (8):
aout: always flush from aout_DecDelete
aout: add Async API
decoder: use new aout async API
aout: move dec.c to stream.c
aout: rename aout_DecGetResetStats to aout_GetResetStats
aout: rename aout_Dec* to aout_Stream*
aout: stream: remove atomic
aout: pass viewpoint via Async API
src/Makefile.am | 3 +-
src/audio_output/aout_internal.h | 65 ++++--
src/audio_output/async.c | 315 +++++++++++++++++++++++++++
src/audio_output/output.c | 27 +--
src/audio_output/{dec.c => stream.c} | 70 +++---
src/input/decoder.c | 27 ++-
6 files changed, 425 insertions(+), 82 deletions(-)
create mode 100644 src/audio_output/async.c
rename src/audio_output/{dec.c => stream.c} (90%)
--
2.20.1
More information about the vlc-devel
mailing list