New HLS, DASH and MSS adaptive demuxer elements
authorEdward Hervey <edward@centricular.com>
Fri, 11 Mar 2022 16:11:50 +0000 (17:11 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 18 Apr 2022 14:11:23 +0000 (14:11 +0000)
commitaf78c16dd5c64d331bbd3e032b4411e9ca0986dd
tree726f8a8853970a9a627631532bc3c45b59690d3f
parent8dcb8a28af8aff2308504d54ab9a715ad4f85289
New HLS, DASH and MSS adaptive demuxer elements

This provides new HLS, DASH and MSS adaptive demuxer elements as a single plugin.

These elements offer many improvements over the legacy elements. They will only
work within a streams-aware context (`urisourcebin`, `uridecodebin3`,
`decodebin3`, `playbin3`, ...).

Stream selection and buffering is handled internally, this allows them to
directly manage the elementary streams and stream selection.

Authors:
* Edward Hervey <edward@centricular.com>
* Jan Schmidt <jan@centricular.com>
* Piotrek Brzeziński <piotr@centricular.com>
* Tim-Philipp Müller <tim@centricular.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2117>
101 files changed:
subprojects/gst-docs/markdown/additional/design/adaptive-demuxer.md [new file with mode: 0644]
subprojects/gst-plugins-good/docs/gst_plugins_cache.json
subprojects/gst-plugins-good/docs/meson.build
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstdash_debug.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstdashdemux.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstdashdemux.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdadaptationsetnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdbaseurlnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdbaseurlnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdclient.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdclient.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpddescriptortypenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpddescriptortypenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdhelper.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdhelper.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdlocationnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdlocationnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmetricsnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmetricsnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmetricsrangenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmetricsrangenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdparser.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdparser.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdperiodnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdperiodnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdprograminformationnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdprograminformationnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdreportingnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdreportingnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrepresentationnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrepresentationnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrootnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdrootnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmentbasenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmentlistnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmentlistnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsegmenturlnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsubsetnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdsubsetnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdurltypenode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdurltypenode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdutctimingnode.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstmpdutctimingnode.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstxmlhelper.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/dash/gstxmlhelper.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/downloadhelper.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/downloadhelper.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/downloadrequest.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/downloadrequest.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux-period.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux-private.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux-stream.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux-track.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemux.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemuxutils.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstadaptivedemuxutils.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstisoff.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/gstisoff.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux-util.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlselement.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlselements.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/hls/meson.build [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/meson.build [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssdemux.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssdemux.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssfragmentparser.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssfragmentparser.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssmanifest.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/mss/gstmssmanifest.h [new file with mode: 0644]
subprojects/gst-plugins-good/ext/adaptivedemux2/plugin.c [new file with mode: 0644]
subprojects/gst-plugins-good/ext/meson.build
subprojects/gst-plugins-good/ext/soup/gstsouploader.c
subprojects/gst-plugins-good/ext/soup/gstsouploader.h
subprojects/gst-plugins-good/meson_options.txt
subprojects/gst-plugins-good/tests/check/elements/dash_mpd.c [new file with mode: 0644]
subprojects/gst-plugins-good/tests/check/elements/hlsdemux_m3u8.c [new file with mode: 0644]
subprojects/gst-plugins-good/tests/check/meson.build