Implement EXT-X-DEFINE Variable Substitution #5161
Merged
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.
This PR will...
ErrorDetails.MANIFEST_PARSING_ERROR
event for duplicate variable definitions in Multi-Variant PlaylistsErrorDetails.LEVEL_PARSING_ERROR
events for duplicate variable definitions and invalid variable imports in Media PlaylistsWhy is this Pull Request needed?
Variable Substitution is commonly paired with Content-Steering. So having full support for EXT-X-DEFINE is a prerequisite.
I noticed the player was missing support for EXT-X-START time offset in Multi-Variant Playlists so included that.
Are there any points in the code the reviewer needs to double check?
If you are using these features in other players please try them in HLS.js.
The playlist parser traditionally only errored when missing variants or missing segments. The parser continues to parse after encountering these errors so that the complete parsed results are returned regardless. This is also done to avoid any de-optimizations in wrapping parsing in try-catch block(s).
Multivariable Playlist parsing errors are always fatal, ending the loading session. Media Playlist errors are non-fatal when another variant can be selected; the player will attempt to switch levels (same behavior as
FRAG_PARSING_ERROR
).Checklist