-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Implement clean switching between tracks in the same render group like video or audio tracks.
Use Absolute Joining Fetch (code 0x03) as part of the following scheme recommended by Gwendal Simon and Will Law:
- Client is playing Group N of track A and wishes to switch to track B
- SUBSCRIBE B (low-priority)
- ABSOLUTE_JOINING_FETCH B with Joining_start = X (high priority)
- SUBSCRIBE_UPDATE A end=X
- Wait for the FETCH to conclude (or get close to conclude)
- SUBSCRIBE_UPDATE B (high priority)
The client is the one who decides the target value X for switching. X should be greater than N and depends on
-
the urgency to switch
- for example if congested, the client can set X = N+1 to make it asap, or even X=N for an emergence switch down
- for example if clients plays an object close to the end of the group N it may choose X=N+2 instead of N+1
- for example if it is an up-switch, it may not matter to force a switch too early in the future at the risk of getting redundant A and B objects
-
the knowledge about the future group ID and the timing
- for example, if groups are very short or very long RTT client-server, the client can target the group that
corresponds to the time it takes to get the first FETCH object - for example, if gaps in the group ID, the client get the info of the next group/timing by another mean (timeline track?)
- for example if it switches because it knows that, starting at group X, the content will be differen
- for example, if groups are very short or very long RTT client-server, the client can target the group that
-
the current live object of track B, which is obtained by the SUBSCRIBE_OK after step 2
- for example the ABSOLUTE_JOINING FETCH can be omitted if the current live group of B is N+1.
Slides describing describing this and other alternatives are available
here.
Metadata
Metadata
Assignees
Labels
No labels