-
Notifications
You must be signed in to change notification settings - Fork 41
Description
To date, numerous discussions have been held to understand and devise meaningful solutions for track switching in MOQT. The following is the list of open issues tagged with the ABR label.
-
Sender-side ABR #259
The challenge involves a publisher providing multiple quality versions of the same content (e.g., 360p and 720p video), where the subscriber needs to receive only the best quality version they can handle. The argument is that the publisher knows what it can send and should decide what to send. -
Is there a way for client to ask relay to probe for bandwidth #370
Previously, we implemented this through a probing track and whenever the subscriber needed a probing test, it would subscribe to this track. -
Should any priority values indicate "Less than best effort"? / How do you upswitch without causing user harm? #471
In client-side ABR streaming, the decision to switch to a higher quality stream can lead to excessive bandwidth usage, potentially causing network congestion and degrading the overall user experience. To address this, the proposed solution introduces a "Less than Best Effort" (LBE) mechanism. With LBE, higher-quality (but lower-priority) content is transmitted only if the congestion window (CWND) remains below a specified threshold, such as 1.5 times the Bandwidth-Delay Product (BDP). This approach ensures that LBE data does not compete with or crowd out higher-priority traffic, thereby maintaining network stability and prioritizing essential data delivery. -
Add a timestamp extension #475
There's no effective way to keep two subscriptions with identical priority in sync, which becomes problematic when one subscription experiences delays (such as during transcoding), potentially causing them to drift out of sync and impact the quality of experience, especially for low-latency use cases. -
Allow padding streams #534
The author proposes allowing for at least padding unidirectional streams, which can then be used for probing. -
Track switching at the live edge using MOQT's current messages? #1101
The issue raises concerns about how to achieve a smooth, gapless switch between two synchronized media tracks in MOQT, such as switching video quality (ABR) or audio languages, using the existing SUBSCRIBE and SUBSCRIBE_UPDATE methods, possibly with track priorities. The goal is to avoid both interruptions and duplicate delivery of the same content during the switch, particularly for live streaming. Previous attempts to address this issue with track priorities have led to conflicting approaches, highlighting ambiguities and limitations in the current protocol. The discussion aims to identify and address these shortcomings and initiate work on protocol improvements to enable reliable and seamless track switching.
What we have now:
As advocates of client-side ABR and server-assisted ABR techniques, we implemented the following:
- The first ABR demo that used client-side information, such as client bandwidth measured on the client side and some congestion signals, such as late-arriving MOQ groups.
- Bandwidth probing from the relay to assist the client in doing ABR.
We also proposed a solution to merge subscribe and unsubscribe operations and do an atomic track switch on the relay and published our results here (Stockholm interim slides). Our results showed advantages of letting the (edge) relay control the switching process.
We believe that a SWITCH message in MOQT is necessary to address the track switching problem properly and pave the way for developing robust ABR implementations.
This message ensures smooth transitions between alternative tracks, eliminating any gaps or overlaps in content download and transmission during the switch. It also handles cases where the groups/objects are not necessarily arriving at the relay at the same time.
A demo showing ABR with the current messages and parameters is available here. The same demo, featuring a SWITCH message, will be available soon.