[HLSTree] Reworked EXT-X-STREAM-INF parsing #1342
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
While testing i found over time old HLS parsing problems not solved yet:
Related to this will be fixed #1259 since now EXT-X-STREAM-INF variants with only audio are now correctly handled
Has been full removed the
ExtGroup
struct because media groups are now parsed when required by variants itselfSince merge adaptation sets with a separate method should not needed anymore, has been removed in full the merging code onAdaptiveTree::SortTree
This also revert/remove the code to
urn:mpeg:dash:adaptation-set-switching:2016
introduced by PR #694EDIT: After some more investigations i choosed to reintroduce "adaptation sets merging" method but for dash only, the reason behind is due to amazon manifests that appears to have uncommon adaptation sets with same data, for this reason i have add a new test case
AdaptionSetMerge
so to not forgot in future this peculiarity.AdaptiveTree::SortTree
method now does exactly what it describes and does not merge adpsets,the adaptation set merging code that include also
urn:mpeg:dash:adaptation-set-switching:2016
introduced by PR #694 has been moved to a separate method in dash parser, but i am somewhat puzzled as to how it was implemented because:Moving this code i have also limited the merging code to adaptation sets with same codec, currently mixing more codecs to the same adaptation set can cause broken playback, because we have no way to determine supported codecs in advance and also currently there is no way to fallback if playback dont works with a specific codec
How has this been tested?
https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel-hoh-subs.ism/.m3u8
and HLS audio stream from
https://stream.rtl.lu/live/hls/radio/rtllx
Screenshots (if appropriate):
Types of change
Checklist: