-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Many important use cases can benefit from the ability to filter or select objects across multiple tracks in a namespace. A few examples below.
-
Meetings
100 person meeting, but subscribers only want to see and hear the last 4 active speakers (voice activity computed by each publisher). -
Security Cameras
100 live cameras, but a human viewer can only monitor the top 4 most suspicious activity scores (computed by each camera). -
Viral Videos
100 live video feeds, but subscribers only want to see the top 4 most popular (upvotes sent to each publisher). -
Sensors (or other non-media cases)
100 temperature sensors, but staff can only monitor the top 4 hottest (computed by each sensor). -
Feedback Tracks (media or non-media)
100 subscribers send feedback tracks to a publisher, but the publisher only wants one feedback signal or a count of subscribers. -
ABR Videos (a different animal which may not be tamed the same way)
10 resolutions, but the subscriber only wants the one with highest quality within current bandwidth limits.
Today, these require a central server/cloud to receive all tracks from all publishers, filter them, then republish the selected tracks to all subscribers. This floods the ingest relay network and central server with excessive traffic that will be discarded. Traffic not discarded is centrally bottlenecked or hairpinned and incurs higher latency compared to direct relay network routing.
Alternatively, publishers can only publish their computed selection scores as metadata tracks to the central server which then republishes the selected metadata tracks to all subscribers who must rapidly un/subscribe to the real media tracks indicated in the selected metadata tracks. This metadata can still be excessive (consider 100k not 100 pubs), cause a sustained storm of control messages and relay state churn, and add even higher latency to selections.
To address these use cases efficiently and scalably, the relay network can filter or select objects across multiple tracks in a namespace. This can guarantee pruned paths that never exceed the final selected small number of tracks regardless of how many publishers are sending.
Design options for how to achieve this will be presented in the Toronto interim.