-
Notifications
You must be signed in to change notification settings - Fork 20
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
Hints & sendOrder how can they work together #326
Comments
Absolutely.
But when "subscribed" to old content like VOD, you actually want head-of-line blocking. The player can build up a massive buffer so there's no need to panic; reliable delivery is just fine. In fact when a viewer seeks back to the 12:34 mark of the VOD, they want 12:34 to be the first frame rendered, so that needs to be the first frame delivered. That's not possible with First off, doing an unbounded SUBSCRIBE for VOD is always a mistake. If you want to watch content starting at 12:34, then At a minimum each SUBSCRIBE needs to be scoped. ex. One option is to SUBSCRIBE on a per-group basis. ex. Another option to add a command to However it's not clear what a relay is supposed to do when there's simultaneous SUBSCRIBEs and GETs active, since prioritization is performed at a session/connection level. Sometimes you want I do think a way of reliably fetching media is necessary, so I would be inclined to add something like |
@wilaw you probably have some opinions here. |
I was thinking of it working much like you propose above - the player making a series of bounded requests, so that it can control its forward buffer growth. As the user plays forward, it could just update that subscribe (I think we just approved that control message yesterday) to push out the end range until it reaches EOF. SUBSCRIBE start=0:0 end=20:0 I wouldn't subscribe on a group-by-group basis (even though it would work), as that is just mirroring the unnecessarily verbose HLS behavior. We can take advantage of the sequential delivery that subscription affords to minimize the amount of control requests that must cross the wire and that the relay must process. As for GET, that is very interesting. We do need a mode where a client can reliably request a range of content and have the relay ignore any priority instructions in the header and also fill in any gaps . I think this should be a new hint on the SUBSCRIBE request rather than a new request .
This would instruct the relay to do two things:
|
Individual Comment:
I think something like a subscribe hint regarding delay vs. drop is useful.
It makes me cringe slightly that we built this beautiful pub/sub and we would not take full advantage of it.
I wonder if another way to spell this is with object flow control (expressed in bytes, object count or both). You could then issue one subscribe for everything you want and then strategically grant more flow control credits to control the receive rate. Maybe there's a way to cleverly use QUIC's flow control instead of a moq one, but we'd need to think through that carefully. |
This is starting to sound very complicated for relays . What is it that the relay does differently for reliable=true vs false? |
Takes an opinionated approach to adding 'Fetch' style functionality within the existing mechanisms. Can be improved once various TTL/etc PRs land. For example, we can add a 3rd mode where In Order is preferred within a client specified Delivery Timeout. (#449). Pulls in concepts from #428 Fixes #269 Fixes #326 Fixes #350 Closes #421
…ority (#470) Adds a SUBSCRIBER_PRIORITY param that can be specified in SUBSCRIBE or SUBSCRIBE_UPDATE to indicate subscriber priority. Adds Group Order to SUBSCRIBE to allow indicating Ascending or Descending. Cleans up the existing priorities section and how Original Subscriber driven priorities are used. Fixes #326 Fixes #396 Fixes #403 Fixes #419 Closes #445
If we use hints on SUBSCRIBE (StartGroup, StartObject) I assume is to request objects from the past. Thinking about the live rewind or VOD (archived after live):
It seems for VOD-like use cases we need a different type of delivery than live edge. Perhaps we should do sliding window and/or sendOrder updates?
Finals questions:
The text was updated successfully, but these errors were encountered: