sout: hls: implement segmented subtitles
Context
The segmented webVTT support is introduced to the HLS module for subtitle support in the upcoming Chromecast module rework. For a more detailed context about HLS and Chromecast, please refer to #27391.
MR content
WebVTT and plain subtitle tracks can now be exposed in HLS. An extra media rendition is created for each subtitle ES and the HLS server creates max-sized vtt segments following the pace of the other ES.
The VTT segments are created via a meta-muxer, the hls_sub_segmenter
. It handles subtitle frames splitting, re-creation of the
subtitles muxer and empty segments creation when no data is available.
Some rework needed to be done first, especially the segmentation that was
previously done in SetPCR
. It was moved to the access output, see the related
commit for explanations.
What's next ?
- Best effort algorithm to always start segments with a key-frame
- Fragmented MP4 support (Necessary for Chromecast HEVC support...)
- Expand codec support (HEVC,VP9/8)