mirror of
https://github.com/livekit/livekit.git
synced 2026-03-31 15:25:40 +00:00
* Remove VP9 from media engine set up. * Remove vp9 from config sample * Supervisor beginnings Eventual goal is to have a reconciler which moves state from actual -> desired. First step along the way is to observe/monitor. The first step even in that is an initial implementation to get feedback on the direction. This PR is a start in that direction - Concept of a supervisor at local participant level - This supervisor will be responsible for periodically monitor actual vs desired (this is the one which will eventually trigger other things to reconcile, but for now it just logs on error) - A new interface `OperationMonitor` which requires two methods o Check() returns an error based on actual vs desired state. o IsIdle() returns bool. Returns true if the monitor is idle. - The supervisor maintains a list of monitors and does periodic check. In the above framework, starting with list of subscriptions/unsubscriptions. There is a new module `SubscriptionMonitor` which checks subscription transitions. A subscription transition is queued on subscribe/unsubscribe. The transition can be satisfied when a subscribedTrack is added OR removed. Error condition is when a transition is not satisfied for 10 seconds. Idle is when the transition queue is empty and subscribedTrack is nil, i. e. the last transition would have been unsubscribe and subscribed track removed (unsubscribe satisfied). The idea is individual monitors can check on different things. Some more things that I am thinking about are - PublishedTrackMonitor - started when an add track happens, satisfied when OnTrack happens, error if `OnTrack` does not fire for a while and track is not muted, idle when there is nothing pending. - PublishedTrackStreamingMonitor - to ensure that a published track is receiving media at the server (accounting for dynacast, mute, etc) - SubscribedTrackStreamingMonitor - to ensure down track is sending data unless muted. * Remove debug * Protect against early casting errors * Adding PublicationMonitor