Skip to content

Add support for Content Steering and Variable Substitution #5074

Description

@robwalch

Not a Contribution

Is your feature request related to a problem? Please describe.

Content Steering is defined in https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-12#section-7

The main functions of Content Steering are to:

  1. Group redundant Variant Streams into "Pathways"
  2. Dynamically prioritize access to different Pathways

Describe the solution you'd like

Sub Tasks

  • Load Steering Manifest if present (Parse #EXT-X-CONTENT-STEERING:SERVER-URI…)
    • Must support versions 1 (refuse other versions)
    • Include Steering Query Params (_HLS_pathway="”, _HLS_throughput=)
  • Reload Steering Manifest (Manifest: TTL (seconds), RELOAD-URI)
    • Do not reload if HTTP status 410 Gone is received
    • Wait for “Retry-After” header time if HTTP 429 Too Many Requests is received
    • For other loading or parsing error, wait TTL or 300 seconds before attempting to reload again
  • Define logical Pathways
    • Match Pathway IDs in PATHWAY-PRIORITY array to STREAM-INFs w/ PATHWAY-ID
    • Default Pathway ID (for variants without PATHWAY-ID) is “.”
  • (optional) Support Pathway Cloning (Define logical Pathways pt.II)
    • BASE-ID > ID, URI-REPLACEMENT > HOST, PARAMS, PER-VARIANT-URIS (> STABLE-VARIANT-ID), PER-RENDITION-URIS (> STABLE-RENDITION-ID)
    • Clone Rendition Groups (PATHWAY-ID + GROUP-ID)
  • Steering Client Responsibilities
    • Start playback using EXT-X-CONTENT-STEERING PATHWAY-ID Pathway when present, otherwise pick “first” level according to player config and current selection logic
      • preferred Pathway should “agree” with MVP (warn otherwise and/or delay playback by redirecting)
    • Content Steering evaluation
      • Apply Pathway when: none is applied, applied is not first in the list (accounting for removed pathways, and penalized pathways). Remain on current Pathway when no alternative is available.
    • Penalize Pathway when all variant streams in a Pathway fail (Look at player penalty box timeout, but consider re-evaluating after Content Steering Manifest refresh)
  • (optional) Implement variable substitution
    • EXT-X-DEFINE
      • NAME, VALUE
      • IMPORT attribute from MVP to media playlist
    • Replace Variable References with defined values
      • a Variable Reference whose Variable Name has NOT been provided MUST trigger a parsing error

Activity

  1. added
    Needs TriageIf there is a suspected stream issue, apply this label to triage if it is something we should fix.
    on Dec 1, 2022
  2. added this to the 1.4.0 milestone on Dec 1, 2022
  3. changed the title [-]Add support for Content Steering[/-] [+]Add support for Content Steering and Variable Substitution[/+] on Dec 1, 2022
  4. removed
    Needs TriageIf there is a suspected stream issue, apply this label to triage if it is something we should fix.
    on Dec 1, 2022
  5. linked a pull request that will close this issueContent Steering #5191on Feb 15, 2023
  6. added a commit that references this issue on Feb 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions