Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement UrlQueryInfo and ExtUrlQueryInfo #23

Open
wants to merge 10 commits into
base: development
Choose a base branch
from

Conversation

sebastianpiq
Copy link

@sebastianpiq sebastianpiq commented Sep 4, 2024

This PR implements UrlQueryInfo and ExtUrlQueryInfo

Summary

  • Implement includeInRequests and sameOriginOnly for ExtUrlQueryInfo
  • Implement useMPDUrlQuery and queryString for UrlQueryInfo and ExtUrlQueryInfo
  • Add support for urn:mpeg:dash:urlparam:2014 scheme in the manifest
  • Generate finalQueryStrings when a manifest update is triggered
  • Append finalQueryString to the request url in HTTPLoader
  • Create unit tests to validate useMPDUrlQuery, queryString, includeInRequests and sameOriginOnly

Assumptions

  • The initialQueryString is used to build the list of parameters added to the request, not the finalQueryString. The queryTemplate is not used for the initialQueryString, so it is not considered.
  • For mpd and mpdpatch requests, we return the query string from the properties configured at the manifest level. Properties configured at the Period, AdaptationSet, or Representation levels are not considered.
  • There is no distinction between mpd and mpdpatch when deciding whether to return a query string or not; both types of requests are treated the same.
  • For Media Segments or Initialization Segment requests, all properties configured up to the specific Representation level (manifest, period, adaptation set, and representation) are considered. Properties configured in periods or adaptation sets not related to the representation being requested are not considered.

Testing

Manifests with different UrlQuery configurations for testing:

  • UseMPDUrlQuery
    • The property is added in the video AdaptationSet, and the query parameters present in the manifest request are replicated because useMPDUrlQuery="true".
  • QueryString
    • A query string is added for the video AdaptationSet and in the 1080p Representation.
  • UseMPDUrlQuery and QueryString
    • UseMPDUrlQuery is set to true in the AdaptationSet, and a query string is configured for the video. Therefore, the query parameters from the AdaptationSet are replicated, and those defined in the query string are added.
  • IncludeInRequests segment
    • useMPDUrlQuery="true" in the video AdaptationSet, and includeInRequests is set to segment. The requests sent in the manifest are only added to segment requests.
  • IncludeInRequests mpd mpdpatch
    • useMPDUrlQuery="true" in the video AdaptationSet, and includeInRequests is set to mpd and mpdpatch. The requests sent in the manifest are only added to mpd or mpdpatch requests.
  • SameOriginOnly different origin
    • useMPDUrlQuery="true" and sameOriginOnly="true" in the video AdaptationSet. The origins of the subsequent requests are different from the manifest request, so the query parameters should not be added.
  • SameOriginOnly same origin
    • useMPDUrlQuery="true" and sameOriginOnly="true" in the video AdaptationSet. The origins of the subsequent requests are the same as the manifest request, so the query parameters should be added.
  • AdaptationSet and Repressentation
    • AdaptationSet and Representation with different queryStrings for the same query parameter. Duplicate query parameters are not added; instead, the query parameters from the Representation are used where they are configured.

src/streaming/controllers/UrlQueryInfoController.js Outdated Show resolved Hide resolved
src/streaming/controllers/UrlQueryInfoController.js Outdated Show resolved Hide resolved
src/streaming/controllers/UrlQueryInfoController.js Outdated Show resolved Hide resolved
src/streaming/controllers/UrlQueryInfoController.js Outdated Show resolved Hide resolved
JoaquinBCh and others added 2 commits September 13, 2024 14:56
feature: urlQueryString first version returning initialQueryString params
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants