[jitsi-dev] [jitsi/jitsi-videobridge] ref(adaptivity): Adaptivity re-design. (#360)


#1

This PR implements a major redesign of the adaptivity features of the bridge. This depends on https://github.com/jitsi/jicoco/pull/23 and https://github.com/jitsi/libjitsi/pull/210.

It adds temporal/spatial scalability, plays nicely with LastN and re-implements adaptive LastN based on the new design. The new design is geared towards performance as it reduces the thread count (proportionally to the number of participants on the bridge) and it avoids decrypting/copying RTP packets that are not going to be forwarded to an endpoint.

There are a number of must have things that remain to be done before the adaptivity work is considered complete. 1) Probe for available bandwidth 2) review the RTCP termination so that we’re able to account for sender losses in the receiver loss reports 3) making sure RTX doesn't break jitsi-meet.
You can view, comment on, or merge this pull request online at:

  https://github.com/jitsi/jitsi-videobridge/pull/360

-- Commit Summary --

  * ref(adaptivity): Adaptivity re-design.

-- File Changes --

    D doc/influxdb.md (22)
    D doc/newrelic.md (34)
    M src/main/java/org/jitsi/videobridge/AudioChannel.java (2)
    M src/main/java/org/jitsi/videobridge/Content.java (30)
    M src/main/java/org/jitsi/videobridge/Endpoint.java (168)
    M src/main/java/org/jitsi/videobridge/EventFactory.java (1)
    M src/main/java/org/jitsi/videobridge/LipSyncHack.java (101)
    M src/main/java/org/jitsi/videobridge/RtpChannel.java (336)
    M src/main/java/org/jitsi/videobridge/VideoChannel.java (483)
    M src/main/java/org/jitsi/videobridge/Videobridge.java (22)
    D src/main/java/org/jitsi/videobridge/eventadmin/influxdb/Activator.java (38)
    D src/main/java/org/jitsi/videobridge/eventadmin/influxdb/LoggingHandler.java (807)
    D src/main/java/org/jitsi/videobridge/eventadmin/metrics/MetricLoggingActivator.java (62)
    D src/main/java/org/jitsi/videobridge/eventadmin/metrics/MetricLoggingHandler.java (533)
    D src/main/java/org/jitsi/videobridge/eventadmin/metrics/MetricServicePublisher.java (87)
    D src/main/java/org/jitsi/videobridge/eventadmin/metrics/NewRelicMetricPublisher.java (180)
    M src/main/java/org/jitsi/videobridge/osgi/JvbBundleConfig.java (4)
    A src/main/java/org/jitsi/videobridge/ratecontrol/AdaptiveBitrateController.java (583)
    D src/main/java/org/jitsi/videobridge/ratecontrol/AdaptiveSimulcastBitrateController.java (531)
    D src/main/java/org/jitsi/videobridge/ratecontrol/BitrateAdaptor.java (28)
    M src/main/java/org/jitsi/videobridge/ratecontrol/BitrateController.java (93)
    A src/main/java/org/jitsi/videobridge/ratecontrol/ConferenceAllocation.java (556)
    D src/main/java/org/jitsi/videobridge/ratecontrol/LastNBitrateController.java (624)
    R src/main/java/org/jitsi/videobridge/ratecontrol/LastNController.java (265)
    A src/main/java/org/jitsi/videobridge/ratecontrol/LastNTransformEngine.java (169)
    A src/main/java/org/jitsi/videobridge/ratecontrol/MediaStreamTrackFactory.java (183)
    A src/main/java/org/jitsi/videobridge/ratecontrol/MediaStreamTrackImpl.java (174)
    A src/main/java/org/jitsi/videobridge/ratecontrol/MediaStreamTrackReceiver.java (349)
    A src/main/java/org/jitsi/videobridge/ratecontrol/RTPEncodingImpl.java (463)
    D src/main/java/org/jitsi/videobridge/ratecontrol/SimulcastAdaptor.java (112)
    D src/main/java/org/jitsi/videobridge/ratecontrol/VideoChannelLastNAdaptor.java (315)
    D src/main/java/org/jitsi/videobridge/simulcast/SimulcastEngine.java (343)
    D src/main/java/org/jitsi/videobridge/simulcast/SimulcastReceiver.java (851)
    D src/main/java/org/jitsi/videobridge/simulcast/SimulcastSender.java (586)
    D src/main/java/org/jitsi/videobridge/simulcast/SimulcastSenderManager.java (244)
    D src/main/java/org/jitsi/videobridge/simulcast/SimulcastStream.java (268)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/EndpointSimulcastStream.java (34)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/NextSimulcastStreamStoppedEvent.java (25)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/SimulcastMessagesMapper.java (193)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/SimulcastStreamsChangedEvent.java (27)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/SimulcastStreamsChangingEvent.java (27)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/StartSimulcastStreamCommand.java (33)
    D src/main/java/org/jitsi/videobridge/simulcast/messages/StopSimulcastStreamCommand.java (33)
    D src/main/java/org/jitsi/videobridge/simulcast/sendmodes/RewritingSendMode.java (331)
    D src/main/java/org/jitsi/videobridge/simulcast/sendmodes/SendMode.java (81)
    D src/main/java/org/jitsi/videobridge/simulcast/sendmodes/SwitchingSendMode.java (847)
    M src/main/java/org/jitsi/videobridge/transform/RtpChannelTransformEngine.java (51)
    D src/main/java/org/jitsi/videobridge/transform/RtxTransformer.java (348)
    D src/test/java/org/jitsi/videobridge/simulcast/SimulcastReceiverTest.java (171)
    D src/test/java/org/jitsi/videobridge/simulcast/SimulcastTest.java (257)

-- Patch Links --

https://github.com/jitsi/jitsi-videobridge/pull/360.patch
https://github.com/jitsi/jitsi-videobridge/pull/360.diff

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/pull/360


#2

Closed #360.

···

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jitsi/jitsi-videobridge/pull/360#event-873886776