[vlc-devel] [WIP PATCH] audiotrack: improve perfs, make it asynchronous
remi at remlab.net
Fri Feb 13 18:25:45 CET 2015
Le vendredi 13 février 2015, 17:36:10 Thomas Guillem a écrit :
> Previously, the module waited for the buffer to be fully written, therefore
> p_aout->play function took too much times.
There is no such thing as play taking too much time. Decoding audio samples
before they can be queued to the underlying audio output has no advantages,
and one disadvantage: it increases the latency of audio filters.
> Now, the module send all buffers in a queue and don't wait for them.
I believe there is a bug in the ES output buffering code, where slow audio
interferes with video. That is not an issue with the Android audio output.
> AudioTrack delay is now set by JNIThread when a buffer is written.
I can play audio on PulseAudio or ALSA with 2 seconds advance with no problems
quality or stability whatsoever. This is currently the somewhat arbitrary
maximum enforced by the decoder thread, and it can easily be triggered by
increasing caching above 2000 ms.
Assuming that the audio output can do it, that is more stable and could enable
better power efficiency by increasing the audio period duration. The only issue
is the unbearable latency when live-tuning the audio filters, as mentioned
above. PulseAudio, and some but not all ALSA drivers, support this. I gather
that your target does not.
> [7a7ec2f4] core audio output: playback too late (60664): up-sampling
> [7a7ec2f4] core audio output: resampling stopped (drift: -393 us)
> [7a7ec2f4] core audio output: playback too late (63506): up-sampling
> [7a7ec2f4] core audio output: resampling stopped (drift: -12040 us)
> [7a7ec2f4] core audio output: playback too late (67178): up-sampling
> [7a7ec2f4] core audio output: resampling stopped (drift: -4072 us)
This rather looks like the audio buffer is too short rather than too long.
Or the computation in TimeGet() is off.
> I think it's caused by a too big delay.
Don´t do that then. Let play() sleep when it needs to.
More information about the vlc-devel