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

Support Annex I: Flexible Insertion of URL Parameters #4440

Open
wilaw opened this issue Mar 26, 2024 · 4 comments
Open

Support Annex I: Flexible Insertion of URL Parameters #4440

wilaw opened this issue Mar 26, 2024 · 4 comments

Comments

@wilaw
Copy link
Member

wilaw commented Mar 26, 2024

MPEG DASH spec Annex I details support for the flexible Insertion of URL Parameters. Basically, query args can be passed to a manifest and they can be inherited for a selectable set of sub-requests for audio, video, caption and init segments.

Use-case: support for Common Access Token (CAT). A CAT access token can be attached to a manifest URL as a query arg. Via the essential properties, the player can be instructed to add this token to all media object requests. This avoids having to dynamically manipulate every manifest during delivery in order to add the token to each segment template.

Another big use-case would be - SGAI with Alternative MPD Event, to pass through the sessionID. Note that this requires the more flexible ExtUrlQueryInfo support.

Example: manifest URL https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_queryargs2.mpd?a=1&b=2

    <EssentialProperty schemeIdUri="urn:mpeg:dash:urlparam:2014" xmlns:up="urn:mpeg:dash:schema:urlparam:2014"> 
        <up:UrlQueryInfo queryTemplate="$querypart$" useMPDUrlQuery="true"/> 
    </EssentialProperty> 

The player should make audio and video segment requests similar to

https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_480x270_600k/bbb_30fps_480x270_600k_0.m4v?a=1&b=2
https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_1280x720_4000k/bbb_30fps_1280x720_4000k_1.m4v?a=1&b=2
https://dash.akamaized.net/akamai/bbb_30fps/bbb_a64k/bbb_a64k_2.m4a?a=1&b=2

Note that Annex I is quite a complex set of features, with the ability for the essential property to specify template-based query arg creation, as well as filtering of which requests should include the URL parameters. For simplicity, it might be acceptable to initially only support the following UrlQueryinfo element:

<up:UrlQueryInfo queryTemplate="$querypart$" useMPDUrlQuery="true"/>

This defaults to adding all query args on the manifest to all subrequests, which is a generally use form which would allow CAT use cases to be demonstrated. Then in a subsequent release, support for ExtUrlQueryInfo could be added to enable the SGAI use-case. We should debate this with the Ad insertion TF at DASH IF as they may insist on support of the full Annex from the beginning.

@wilaw wilaw changed the title Suppoort Annex I: Flexible Insertion of URL Parameters Support Annex I: Flexible Insertion of URL Parameters Mar 26, 2024
@tobbee
Copy link
Contributor

tobbee commented Apr 19, 2024

I made a corresponding ticket for livesim2 that could be done in parallel: Dash-Industry-Forum/livesim2#176

@nicolaslevy
Copy link

We have a internal PR in our fork, we need to validate it and do the PR to this repo. @dsilhavy check: qualabs#23

@nicolaslevy
Copy link

Update: PR in dash.js -> #4578

@dsilhavy
Copy link
Collaborator

The related PRs #4578 and #4609 have been merged. They enable basic Annex I support, details can be found in the descriptions of the pull requests. I will keep this issue open as we only support a subset of Annex I so far. However, I will move it to done in the v5.0.0 project board as we have implemented what was in scope for the next release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

4 participants