aout: apple: add avsamplebuffer module
This module enables SpatialAudio when playing multi channels content.
This module has finer A/V sync delay:
- 15-40ms on speaker/HDMI
- -80ms with AirPlay
- 80ms with bluetooth devices (was 250ms before).
Airplay playback is now more stable, the VLC delay (via aout_TimingReport) is less than 100ms, so audio and video will play almost instantaneously.
With audiounit_ios, the delay was 2 seconds making it harder to sync audio and video (since input tracks had to be delayed too).
Note that even if the audio seems to be playing from the VLC side, the airplay will be silent for the first 2seconds. This can be improved by increasing the pts-delay (file-caching): 7seconds of pts-delay remove this latency (from 2secs to 100ms), but this is not something that could be enabled by default.
One other improvement is that the airplay device will stop immediately when pausing/stopping/seeking.
This module has a priority of 100, less than auhal, that can handle passthrough, but more than audiunit_ios. Therefore, this module will be the default one on iOS/tvOS, but can be selected by the user on macOS (or deselected on iOS/tvOS). This is temporary as it might be interesting for macOS users to use this aout as it can handle Spatial Audio.