Draft: feat: Add multiple audio tracks playback support
-
Review changes -
-
Download -
Patches
-
Plain diff
Add multiple audio tracks playback support
Google Summer of Code 2023
Mentee: Ayush Dey
Mentor: Thomas Guillem
Description
Add support for playing multiple audio tracks simultaneously from a media on systems using PulseAudio as the sound server.
gsoc-audio-test-2
Work breakdown
- Modify the audio output (aout) module API to support multiple streams by splitting device and stream handling.
- Implement the aout API within the PulseAudio module.
- Adapt the core to conditionally handle device and stream splitting (i.e., stream handling for adapted aout modules and device handling for legacy aout modules).
- Enhance the Player API to provide users with greater control over multiple audio streams.
- Incorporate these modifications into the Qt/VLC-ports to create an optimal GUI for controlling multiple streams.
Current features
- Multiple audio track selection is disabled by default but can be enabled from the GUI, similar to subtitles.
- An infinite number of audio streams can be initiated from a single aout object.
- A single Play/Pause/Mute/Volume button controls all the tracks playing in parallel.
- The core will generate multiple streams from a single aout object for adapted modules and multiple aout objects for legacy modules.
Future work
- Adaptation of the remaining common aout modules (Wasapi, Auhal, AAudio, Pipewire, etc.).
- Individual Play/Pause/Mute/Volume buttons for each track.
Acknowledgement
I would like to thank the team at VideoLAN for their support and especially my mentor Thomas Guillem, who has guided me actively throughout the development of this feature.
Edited by Ayush Dey
Merge request reports
Compare and
- version 2694fc0052
- version 25469b6b35
- version 246d58c817
- version 236d58c817
- version 22cc795c48
- version 2145aee8e8
- version 202485b50b
- version 19f9996390
- version 18d48c008f
- version 17bf7bb7dc
- version 160c9a2f49
- version 15f6e26e3d
- version 149f57953e
- version 13e91a3a4e
- version 1215159fe0
- version 119ad31e0e
- version 106ea690e4
- version 939cf063a
- version 8198d04ff
- version 7877c1970
- version 6a0fa5222
- version 59ad245e8
- version 44eae0528
- version 34eae0528
- version 2cb1a97ad
- version 14d65d38c
- master (base)
- latest version7c96706c8 commits,
- version 2694fc00527 commits,
- version 25469b6b357 commits,
- version 246d58c8177 commits,
- version 236d58c8177 commits,
- version 22cc795c4811 commits,
- version 2145aee8e811 commits,
- version 202485b50b10 commits,
- version 19f999639010 commits,
- version 18d48c008f8 commits,
- version 17bf7bb7dc8 commits,
- version 160c9a2f4911 commits,
- version 15f6e26e3d11 commits,
- version 149f57953e10 commits,
- version 13e91a3a4e9 commits,
- version 1215159fe08 commits,
- version 119ad31e0e7 commits,
- version 106ea690e46 commits,
- version 939cf063a3 commits,
- version 8198d04ff2 commits,
- version 7877c19703 commits,
- version 6a0fa52222 commits,
- version 59ad245e83 commits,
- version 44eae052838 commits,
- version 34eae052842 commits,
- version 2cb1a97ad41 commits,
- version 14d65d38c5 commits,
Compare changes
- Side-by-side
- Inline
Files
12Loading