mediasoup 3.26.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/node/lib/DataConsumer.js +1 -1
- package/node/lib/Router.js +1 -1
- package/node/lib/Transport.js +15 -15
- package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts +2 -6
- package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts.map +1 -1
- package/node/lib/fbs/rtp-parameters/encoding-mapping.js +7 -19
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.d.ts +4 -4
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +2 -2
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +3 -3
- package/node/lib/fbs/rtp-stream/recv-stats.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/recv-stats.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/recv-stats.js +3 -3
- package/node/lib/fbs/rtp-stream/send-stats.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/send-stats.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/send-stats.js +3 -3
- package/node/lib/fbs/transport/bwe-trace-info.d.ts +23 -23
- package/node/lib/fbs/transport/bwe-trace-info.d.ts.map +1 -1
- package/node/lib/fbs/transport/bwe-trace-info.js +15 -15
- package/node/lib/fbs/transport/options.d.ts +5 -5
- package/node/lib/fbs/transport/options.js +2 -2
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/stats.d.ts +38 -38
- package/node/lib/fbs/transport/stats.d.ts.map +1 -1
- package/node/lib/fbs/transport/stats.js +25 -25
- package/node/lib/ortc.d.ts +0 -1
- package/node/lib/ortc.d.ts.map +1 -1
- package/node/lib/ortc.js +1 -2
- package/node/lib/rtpParametersFbsUtils.d.ts.map +1 -1
- package/node/lib/rtpParametersFbsUtils.js +2 -2
- package/package.json +9 -9
- package/worker/deps/libwebrtc/libwebrtc/call/rtp_transport_controller_send.cc +10 -10
- package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +6 -6
- package/worker/deps/libwebrtc/libwebrtc/modules/congestion_controller/goog_cc/alr_detector.cc +1 -1
- package/worker/deps/libwebrtc/libwebrtc/modules/pacing/paced_sender.cc +7 -7
- package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h +1 -1
- package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc +1 -1
- package/worker/fbs/rtpParameters.fbs +1 -2
- package/worker/fbs/rtpStream.fbs +3 -3
- package/worker/fbs/transport.fbs +23 -23
- package/worker/fuzzer/include/RTC/FuzzerDtlsTransport.hpp +4 -1
- package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
- package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +8 -5
- package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +3 -3
- package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +6 -6
- package/worker/fuzzer/src/RTC/RTCP/FuzzerFeedbackRtpTransport.cpp +3 -3
- package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +2 -2
- package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +5 -5
- package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +3 -3
- package/worker/fuzzer/src/fuzzer.cpp +4 -0
- package/worker/include/Channel/ChannelNotification.hpp +3 -3
- package/worker/include/Channel/ChannelRequest.hpp +1 -1
- package/worker/include/Channel/ChannelSocket.hpp +11 -0
- package/worker/include/DepLibUV.hpp +16 -33
- package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -11
- package/worker/include/RTC/AudioLevelObserver.hpp +4 -4
- package/worker/include/RTC/BWE/AcknowledgedBitrateEstimatorInterface.hpp +55 -0
- package/worker/include/RTC/BWE/AimdRateControl.hpp +190 -0
- package/worker/include/RTC/BWE/BweTypes.hpp +211 -0
- package/worker/include/RTC/BWE/DelayBasedBwe.hpp +173 -0
- package/worker/include/RTC/BWE/FeedbackAdapter.hpp +72 -0
- package/worker/include/RTC/BWE/InterArrivalDelta.hpp +106 -0
- package/worker/include/RTC/BWE/LinkCapacityEstimator.hpp +84 -0
- package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +94 -0
- package/worker/include/RTC/BWE/SendPacketHistory.hpp +137 -0
- package/worker/include/RTC/BWE/TrendlineEstimator.hpp +101 -0
- package/worker/include/RTC/Consts.hpp +6 -6
- package/worker/include/RTC/Consumer.hpp +14 -12
- package/worker/include/RTC/DataConsumer.hpp +3 -3
- package/worker/include/RTC/DataProducer.hpp +3 -3
- package/worker/include/RTC/DtlsTransport.hpp +5 -2
- package/worker/include/RTC/ICE/IceCandidate.hpp +2 -2
- package/worker/include/RTC/ICE/IceServer.hpp +3 -3
- package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
- package/worker/include/RTC/NEW_RTCP/packet/Packet.hpp +1 -1
- package/worker/include/RTC/NackGenerator.hpp +12 -12
- package/worker/include/RTC/PipeProducerStreamManager.hpp +3 -4
- package/worker/include/RTC/PipeTransport.hpp +18 -5
- package/worker/include/RTC/PlainTransport.hpp +18 -5
- package/worker/include/RTC/PortManager.hpp +4 -4
- package/worker/include/RTC/Producer.hpp +21 -12
- package/worker/include/RTC/ProducerStreamManager.hpp +12 -6
- package/worker/include/RTC/RTCP/Bye.hpp +2 -2
- package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +4 -4
- package/worker/include/RTC/RTCP/FeedbackRtpTmmb.hpp +3 -3
- package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +54 -39
- package/worker/include/RTC/RTCP/Packet.hpp +3 -3
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +3 -3
- package/worker/include/RTC/RTCP/Sdes.hpp +2 -2
- package/worker/include/RTC/RTCP/XR.hpp +2 -2
- package/worker/include/RTC/RTCP/XrDelaySinceLastRr.hpp +1 -1
- package/worker/include/RTC/RTP/Codecs/H264.hpp +1 -1
- package/worker/include/RTC/RTP/Codecs/Opus.hpp +2 -2
- package/worker/include/RTC/RTP/Codecs/PayloadDescriptorHandler.hpp +3 -3
- package/worker/include/RTC/RTP/Codecs/VP8.hpp +2 -2
- package/worker/include/RTC/RTP/Codecs/VP9.hpp +2 -2
- package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +12 -12
- package/worker/include/RTC/RTP/Packet.hpp +13 -13
- package/worker/include/RTC/RTP/ProbationGenerator.hpp +1 -1
- package/worker/include/RTC/RTP/RetransmissionBuffer.hpp +7 -7
- package/worker/include/RTC/RTP/RtpStream.hpp +37 -51
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +59 -41
- package/worker/include/RTC/RTP/RtpStreamSend.hpp +20 -14
- package/worker/include/RTC/RTP/RtxStream.hpp +12 -13
- package/worker/include/RTC/RateCalculator.hpp +50 -44
- package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +5 -4
- package/worker/include/RTC/RemoteClockOffsetEstimator.hpp +11 -11
- package/worker/include/RTC/Router.hpp +6 -0
- package/worker/include/RTC/RtcLogger.hpp +1 -1
- package/worker/include/RTC/RtpDictionaries.hpp +10 -10
- package/worker/include/RTC/SCTP/association/Association.hpp +56 -28
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +4 -4
- package/worker/include/RTC/SCTP/association/StateCookie.hpp +14 -14
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +2 -2
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +12 -12
- package/worker/include/RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp +4 -4
- package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +3 -3
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +4 -1
- package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +1 -1
- package/worker/include/RTC/SCTP/public/SctpOptions.hpp +12 -12
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +1 -1
- package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +15 -16
- package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +7 -8
- package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +20 -16
- package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +5 -6
- package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +2 -2
- package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +5 -5
- package/worker/include/RTC/SctpDictionaries.hpp +3 -3
- package/worker/include/RTC/Serializable.hpp +1 -1
- package/worker/include/RTC/SimpleProducerStreamManager.hpp +3 -4
- package/worker/include/RTC/SimulcastProducerStreamManager.hpp +6 -7
- package/worker/include/RTC/SvcProducerStreamManager.hpp +6 -5
- package/worker/include/RTC/TcpConnection.hpp +9 -3
- package/worker/include/RTC/TcpServer.hpp +3 -0
- package/worker/include/RTC/Transport.hpp +52 -45
- package/worker/include/RTC/TransportCongestionControlClient.hpp +30 -25
- package/worker/include/RTC/TransportCongestionControlServer.hpp +17 -17
- package/worker/include/RTC/TrendCalculator.hpp +5 -5
- package/worker/include/RTC/UdpSocket.hpp +11 -2
- package/worker/include/RTC/WebRtcServer.hpp +20 -5
- package/worker/include/RTC/WebRtcTransport.hpp +35 -10
- package/worker/include/Settings.hpp +4 -2
- package/worker/include/Shared.hpp +5 -20
- package/worker/include/SharedInterface.hpp +6 -28
- package/worker/include/Utils.hpp +40 -21
- package/worker/include/common.hpp +4 -0
- package/worker/include/handles/BackoffTimerHandle.hpp +4 -4
- package/worker/include/handles/BackoffTimerHandleInterface.hpp +5 -5
- package/worker/include/handles/TcpConnectionHandle.hpp +6 -6
- package/worker/include/handles/TcpServerHandle.hpp +1 -1
- package/worker/include/handles/TimerHandle.hpp +15 -9
- package/worker/include/handles/TimerHandleInterface.hpp +10 -4
- package/worker/include/handles/UdpSocketHandle.hpp +3 -3
- package/worker/include/handles/UnixStreamSocketHandle.hpp +2 -2
- package/worker/meson.build +81 -36
- package/worker/meson_options.txt +1 -0
- package/worker/mocks/include/MockShared.hpp +24 -23
- package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +51 -27
- package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +11 -11
- package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +10 -10
- package/worker/mocks/include/handles/MockTimerHandle.hpp +60 -22
- package/worker/mocks/src/MockShared.cpp +51 -5
- package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +29 -15
- package/worker/mocks/src/handles/MockTimerHandle.cpp +117 -0
- package/worker/scripts/clang-scripts.mjs +2 -2
- package/worker/src/Channel/ChannelNotification.cpp +5 -6
- package/worker/src/Channel/ChannelSocket.cpp +20 -2
- package/worker/src/DepLibUV.cpp +4 -5
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +59 -47
- package/worker/src/RTC/AudioLevelObserver.cpp +7 -7
- package/worker/src/RTC/BWE/AimdRateControl.cpp +468 -0
- package/worker/src/RTC/BWE/BweTypes.cpp +61 -0
- package/worker/src/RTC/BWE/DelayBasedBwe.cpp +275 -0
- package/worker/src/RTC/BWE/FeedbackAdapter.cpp +148 -0
- package/worker/src/RTC/BWE/InterArrivalDelta.cpp +181 -0
- package/worker/src/RTC/BWE/LinkCapacityEstimator.cpp +133 -0
- package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +245 -0
- package/worker/src/RTC/BWE/SendPacketHistory.cpp +184 -0
- package/worker/src/RTC/BWE/TrendlineEstimator.cpp +233 -0
- package/worker/src/RTC/Consumer.cpp +48 -35
- package/worker/src/RTC/DataConsumer.cpp +4 -4
- package/worker/src/RTC/DataProducer.cpp +3 -3
- package/worker/src/RTC/DirectTransport.cpp +2 -2
- package/worker/src/RTC/DtlsTransport.cpp +14 -11
- package/worker/src/RTC/ICE/IceServer.cpp +2 -2
- package/worker/src/RTC/KeyFrameRequestManager.cpp +16 -12
- package/worker/src/RTC/NackGenerator.cpp +12 -12
- package/worker/src/RTC/PipeProducerStreamManager.cpp +6 -6
- package/worker/src/RTC/PipeTransport.cpp +16 -13
- package/worker/src/RTC/PlainTransport.cpp +25 -16
- package/worker/src/RTC/Producer.cpp +50 -36
- package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +13 -6
- package/worker/src/RTC/RTCP/FeedbackRtpTmmb.cpp +14 -5
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +76 -50
- package/worker/src/RTC/RTP/Codecs/VP8.cpp +1 -1
- package/worker/src/RTC/RTP/Codecs/VP9.cpp +4 -4
- package/worker/src/RTC/RTP/Packet.cpp +9 -10
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +6 -6
- package/worker/src/RTC/RTP/RtpStream.cpp +19 -19
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +146 -81
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +49 -44
- package/worker/src/RTC/RTP/RtxStream.cpp +7 -10
- package/worker/src/RTC/RateCalculator.cpp +99 -136
- package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +13 -13
- package/worker/src/RTC/RemoteClockOffsetEstimator.cpp +18 -17
- package/worker/src/RTC/Router.cpp +18 -1
- package/worker/src/RTC/RtpDictionaries/RtpEncodingParameters.cpp +5 -2
- package/worker/src/RTC/SCTP/association/Association.cpp +131 -102
- package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +4 -4
- package/worker/src/RTC/SCTP/association/Capabilities.cpp +1 -1
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +25 -18
- package/worker/src/RTC/SCTP/association/StateCookie.cpp +7 -6
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +16 -13
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +28 -26
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +0 -1
- package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
- package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +1 -1
- package/worker/src/RTC/SCTP/public/SctpOptions.cpp +13 -13
- package/worker/src/RTC/SCTP/rx/DataTracker.cpp +1 -1
- package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +5 -5
- package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +15 -15
- package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +15 -15
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +29 -26
- package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +12 -11
- package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +4 -4
- package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +2 -2
- package/worker/src/RTC/SimpleProducerStreamManager.cpp +10 -10
- package/worker/src/RTC/SimulcastProducerStreamManager.cpp +39 -37
- package/worker/src/RTC/SvcProducerStreamManager.cpp +39 -25
- package/worker/src/RTC/TcpConnection.cpp +9 -3
- package/worker/src/RTC/TcpServer.cpp +7 -2
- package/worker/src/RTC/Transport.cpp +242 -302
- package/worker/src/RTC/TransportCongestionControlClient.cpp +78 -71
- package/worker/src/RTC/TransportCongestionControlServer.cpp +38 -40
- package/worker/src/RTC/TrendCalculator.cpp +3 -3
- package/worker/src/RTC/UdpSocket.cpp +14 -3
- package/worker/src/RTC/WebRtcServer.cpp +20 -14
- package/worker/src/RTC/WebRtcTransport.cpp +35 -30
- package/worker/src/Settings.cpp +10 -0
- package/worker/src/Shared.cpp +2 -2
- package/worker/src/Utils/Crypto.cpp +2 -2
- package/worker/src/Worker.cpp +5 -1
- package/worker/src/handles/BackoffTimerHandle.cpp +24 -11
- package/worker/src/handles/TimerHandle.cpp +74 -25
- package/worker/src/lib.cpp +6 -0
- package/worker/tasks.py +171 -44
- package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +117 -0
- package/worker/test/src/RTC/BWE/TestAimdRateControl.cpp +400 -0
- package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +568 -0
- package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +546 -0
- package/worker/test/src/RTC/BWE/TestInterArrivalDelta.cpp +301 -0
- package/worker/test/src/RTC/BWE/TestLinkCapacityEstimator.cpp +115 -0
- package/worker/test/src/RTC/BWE/TestRobustThroughputEstimator.cpp +433 -0
- package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +259 -0
- package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +137 -0
- package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +171 -0
- package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +1 -1
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +1 -1
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTransport.cpp +246 -208
- package/worker/test/src/RTC/RTP/TestPacket.cpp +11 -11
- package/worker/test/src/RTC/RTP/TestRetransmissionBuffer.cpp +12 -12
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +23 -16
- package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +13 -13
- package/worker/test/src/RTC/SCTP/association/TestAssociation.cpp +27 -22
- package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +21 -15
- package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +6 -6
- package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +17 -13
- package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +2 -2
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +23 -23
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +37 -37
- package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +10 -10
- package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +1 -1
- package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +93 -93
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +247 -247
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +100 -80
- package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +163 -163
- package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +76 -77
- package/worker/test/src/RTC/TestConsumer.cpp +8 -3
- package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +3 -3
- package/worker/test/src/RTC/TestNackGenerator.cpp +3 -3
- package/worker/test/src/RTC/TestPipeProducerStreamManager.cpp +5 -5
- package/worker/test/src/RTC/TestRateCalculator.cpp +110 -14
- package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +22 -17
- package/worker/test/src/RTC/TestRemoteClockOffsetEstimator.cpp +87 -85
- package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +54 -47
- package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +83 -69
- package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +76 -65
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +72 -66
- package/worker/test/src/RTC/TestTransportTuple.cpp +19 -4
- package/worker/test/src/TestDepLibUV.cpp +19 -0
- package/worker/test/src/Utils/TestTime.cpp +57 -26
- package/worker/test/src/testHelpers.cpp +1 -1
- package/worker/test/src/tests.cpp +6 -0
- package/worker/include/RTC/SenderBandwidthEstimator.hpp +0 -118
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +0 -269
|
@@ -218,7 +218,7 @@ namespace RTC
|
|
|
218
218
|
// take.
|
|
219
219
|
size_t bufferLength;
|
|
220
220
|
// Serializable current exact length (includes padding bytes).
|
|
221
|
-
size_t length{
|
|
221
|
+
size_t length{ 0 };
|
|
222
222
|
// Event listener invoked when the current buffer is released (no longer
|
|
223
223
|
// used by this Serializable)-
|
|
224
224
|
BufferReleasedListener* bufferReleasedListener{ nullptr };
|
|
@@ -42,10 +42,9 @@ namespace RTC
|
|
|
42
42
|
void ProducerRtpStreamScore(
|
|
43
43
|
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t score, uint8_t previousScore) override;
|
|
44
44
|
void ProducerRtcpSenderReport(RTC::RTP::RtpStreamRecv* rtpStream, bool first) override;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
uint32_t GetDesiredBitrate(uint64_t nowMs) const override;
|
|
45
|
+
int64_t IncreaseLayer(int64_t bitrate, bool considerLoss, float lossPercentage, int64_t nowMs) override;
|
|
46
|
+
void ApplyLayers(int64_t rtpStreamActiveMs) override;
|
|
47
|
+
int64_t GetDesiredBitrate(int64_t nowMs) const override;
|
|
49
48
|
RtpPacketProcessResult ProcessRtpPacket(
|
|
50
49
|
RTC::RTP::Packet* packet,
|
|
51
50
|
bool lastSentPacketHasMarker,
|
|
@@ -48,10 +48,9 @@ namespace RTC
|
|
|
48
48
|
void ProducerRtpStreamScore(
|
|
49
49
|
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t score, uint8_t previousScore) override;
|
|
50
50
|
void ProducerRtcpSenderReport(RTC::RTP::RtpStreamRecv* rtpStream, bool first) override;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
uint32_t GetDesiredBitrate(uint64_t nowMs) const override;
|
|
51
|
+
int64_t IncreaseLayer(int64_t bitrate, bool considerLoss, float lossPercentage, int64_t nowMs) override;
|
|
52
|
+
void ApplyLayers(int64_t rtpStreamActiveMs) override;
|
|
53
|
+
int64_t GetDesiredBitrate(int64_t nowMs) const override;
|
|
55
54
|
RtpPacketProcessResult ProcessRtpPacket(
|
|
56
55
|
RTC::RTP::Packet* packet,
|
|
57
56
|
bool lastSentPacketHasMarker,
|
|
@@ -83,13 +82,13 @@ namespace RTC
|
|
|
83
82
|
// Spatial layer that was the RTP timestamp reference the last time its capture
|
|
84
83
|
// instant was known upon a received Sender Report.
|
|
85
84
|
int16_t tsReferenceSpatialLayerWithCaptureMapping{ -1 };
|
|
86
|
-
uint32_t tsOffset{
|
|
85
|
+
uint32_t tsOffset{ 0 };
|
|
87
86
|
bool keyFrameForTsOffsetRequested{ false };
|
|
88
87
|
// Old-packet filtering after spatial switch.
|
|
89
|
-
uint16_t snReferenceSpatialLayer{
|
|
88
|
+
uint16_t snReferenceSpatialLayer{ 0 };
|
|
90
89
|
bool checkingForOldPacketsInSpatialLayer{ false };
|
|
91
90
|
// BWE downgrade tracking.
|
|
92
|
-
|
|
91
|
+
int64_t lastBweDowngradeAtMs{ 0 };
|
|
93
92
|
};
|
|
94
93
|
} // namespace RTC
|
|
95
94
|
|
|
@@ -42,10 +42,11 @@ namespace RTC
|
|
|
42
42
|
void ProducerRtpStreamScore(
|
|
43
43
|
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t score, uint8_t previousScore) override;
|
|
44
44
|
void ProducerRtcpSenderReport(RTC::RTP::RtpStreamRecv* rtpStream, bool first) override;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
void ProducerSpatialLayerActivityChanged(
|
|
46
|
+
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t spatialLayer, bool isActive) override;
|
|
47
|
+
int64_t IncreaseLayer(int64_t bitrate, bool considerLoss, float lossPercentage, int64_t nowMs) override;
|
|
48
|
+
void ApplyLayers(int64_t rtpStreamActiveMs) override;
|
|
49
|
+
int64_t GetDesiredBitrate(int64_t nowMs) const override;
|
|
49
50
|
RtpPacketProcessResult ProcessRtpPacket(
|
|
50
51
|
RTC::RTP::Packet* packet,
|
|
51
52
|
bool lastSentPacketHasMarker,
|
|
@@ -65,7 +66,7 @@ namespace RTC
|
|
|
65
66
|
// Producer RTP stream (single stream for SVC).
|
|
66
67
|
RTC::RTP::RtpStreamRecv* producerRtpStream{ nullptr };
|
|
67
68
|
// BWE downgrade tracking.
|
|
68
|
-
|
|
69
|
+
int64_t lastBweDowngradeAtMs{ 0 };
|
|
69
70
|
};
|
|
70
71
|
} // namespace RTC
|
|
71
72
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
5
|
#include "handles/TcpConnectionHandle.hpp"
|
|
6
|
+
#include "SharedInterface.hpp"
|
|
6
7
|
|
|
7
8
|
namespace RTC
|
|
8
9
|
{
|
|
@@ -16,11 +17,15 @@ namespace RTC
|
|
|
16
17
|
|
|
17
18
|
public:
|
|
18
19
|
virtual void OnTcpConnectionPacketReceived(
|
|
19
|
-
RTC::TcpConnection* connection,
|
|
20
|
+
RTC::TcpConnection* connection,
|
|
21
|
+
const uint8_t* data,
|
|
22
|
+
size_t len,
|
|
23
|
+
size_t bufferLen,
|
|
24
|
+
int64_t receivedAtUs) = 0;
|
|
20
25
|
};
|
|
21
26
|
|
|
22
27
|
public:
|
|
23
|
-
TcpConnection(Listener* listener, size_t bufferSize);
|
|
28
|
+
TcpConnection(Listener* listener, SharedInterface* shared, size_t bufferSize);
|
|
24
29
|
~TcpConnection() override;
|
|
25
30
|
|
|
26
31
|
public:
|
|
@@ -33,8 +38,9 @@ namespace RTC
|
|
|
33
38
|
private:
|
|
34
39
|
// Passed by argument.
|
|
35
40
|
Listener* listener{ nullptr };
|
|
41
|
+
SharedInterface* shared{ nullptr };
|
|
36
42
|
// Others.
|
|
37
|
-
size_t frameStart{
|
|
43
|
+
size_t frameStart{ 0 }; // Where the latest frame starts.
|
|
38
44
|
};
|
|
39
45
|
} // namespace RTC
|
|
40
46
|
|
|
@@ -28,12 +28,14 @@ namespace RTC
|
|
|
28
28
|
TcpServer(
|
|
29
29
|
Listener* listener,
|
|
30
30
|
RTC::TcpConnection::Listener* connListener,
|
|
31
|
+
SharedInterface* shared,
|
|
31
32
|
std::string& ip,
|
|
32
33
|
uint16_t port,
|
|
33
34
|
RTC::Transport::SocketFlags& flags);
|
|
34
35
|
TcpServer(
|
|
35
36
|
Listener* listener,
|
|
36
37
|
RTC::TcpConnection::Listener* connListener,
|
|
38
|
+
SharedInterface* shared,
|
|
37
39
|
std::string& ip,
|
|
38
40
|
uint16_t minPort,
|
|
39
41
|
uint16_t maxPort,
|
|
@@ -50,6 +52,7 @@ namespace RTC
|
|
|
50
52
|
// Passed by argument.
|
|
51
53
|
Listener* listener{ nullptr };
|
|
52
54
|
RTC::TcpConnection::Listener* connListener{ nullptr };
|
|
55
|
+
SharedInterface* shared{ nullptr };
|
|
53
56
|
bool fixedPort{ false };
|
|
54
57
|
RTC::PortManager::PortRangeKey portRangeKey{};
|
|
55
58
|
};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
#ifndef MS_RTC_TRANSPORT_HPP
|
|
2
2
|
#define MS_RTC_TRANSPORT_HPP
|
|
3
3
|
|
|
4
|
-
// #define ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
5
|
-
|
|
6
4
|
#include "common.hpp"
|
|
7
5
|
#include "Channel/ChannelNotification.hpp"
|
|
8
6
|
#include "Channel/ChannelRequest.hpp"
|
|
9
7
|
#include "Channel/ChannelSocket.hpp"
|
|
10
8
|
#include "FBS/transport.h"
|
|
9
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
11
10
|
#include "RTC/Consumer.hpp"
|
|
12
11
|
#include "RTC/DataConsumer.hpp"
|
|
13
12
|
#include "RTC/DataProducer.hpp"
|
|
@@ -24,13 +23,11 @@
|
|
|
24
23
|
#include "RTC/SCTP/public/Message.hpp"
|
|
25
24
|
#include "RTC/SCTP/public/SctpTypes.hpp"
|
|
26
25
|
#include "RTC/SctpListener.hpp"
|
|
27
|
-
#
|
|
28
|
-
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
29
|
-
#include "RTC/SenderBandwidthEstimator.hpp"
|
|
30
|
-
#endif
|
|
31
|
-
#include "handles/TimerHandleInterface.hpp"
|
|
26
|
+
#ifndef MS_USE_BUILTIN_BWE
|
|
32
27
|
#include "RTC/TransportCongestionControlClient.hpp"
|
|
33
28
|
#include "RTC/TransportCongestionControlServer.hpp"
|
|
29
|
+
#endif
|
|
30
|
+
#include "SharedInterface.hpp"
|
|
34
31
|
#include <ankerl/unordered_dense.h>
|
|
35
32
|
#include <string>
|
|
36
33
|
#include <vector>
|
|
@@ -42,13 +39,12 @@ namespace RTC
|
|
|
42
39
|
public RTC::DataProducer::Listener,
|
|
43
40
|
public RTC::DataConsumer::Listener,
|
|
44
41
|
public RTC::SCTP::AssociationListenerInterface,
|
|
42
|
+
#ifndef MS_USE_BUILTIN_BWE
|
|
45
43
|
public RTC::TransportCongestionControlClient::Listener,
|
|
46
44
|
public RTC::TransportCongestionControlServer::Listener,
|
|
45
|
+
#endif
|
|
47
46
|
public Channel::ChannelSocket::RequestHandler,
|
|
48
47
|
public Channel::ChannelSocket::NotificationHandler,
|
|
49
|
-
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
50
|
-
public RTC::SenderBandwidthEstimator::Listener,
|
|
51
|
-
#endif
|
|
52
48
|
public TimerHandleInterface::Listener
|
|
53
49
|
{
|
|
54
50
|
protected:
|
|
@@ -82,6 +78,12 @@ namespace RTC
|
|
|
82
78
|
RTC::Producer* producer,
|
|
83
79
|
RTC::RTP::RtpStreamRecv* rtpStream,
|
|
84
80
|
bool first) = 0;
|
|
81
|
+
virtual void OnTransportProducerSpatialLayerActivityChanged(
|
|
82
|
+
RTC::Transport* transport,
|
|
83
|
+
RTC::Producer* producer,
|
|
84
|
+
RTC::RTP::RtpStreamRecv* rtpStream,
|
|
85
|
+
uint8_t spatialLayer,
|
|
86
|
+
bool isActive) = 0;
|
|
85
87
|
virtual void OnTransportProducerRtpPacketReceived(
|
|
86
88
|
RTC::Transport* transport, RTC::Producer* producer, RTC::RTP::Packet* packet) = 0;
|
|
87
89
|
/**
|
|
@@ -132,19 +134,19 @@ namespace RTC
|
|
|
132
134
|
|
|
133
135
|
struct PortRange
|
|
134
136
|
{
|
|
135
|
-
uint16_t min{
|
|
136
|
-
uint16_t max{
|
|
137
|
+
uint16_t min{ 0 };
|
|
138
|
+
uint16_t max{ 0 };
|
|
137
139
|
};
|
|
138
140
|
|
|
139
141
|
struct ListenInfo
|
|
140
142
|
{
|
|
141
143
|
std::string ip;
|
|
142
144
|
std::string announcedAddress;
|
|
143
|
-
uint16_t port{
|
|
145
|
+
uint16_t port{ 0 };
|
|
144
146
|
PortRange portRange;
|
|
145
147
|
SocketFlags flags;
|
|
146
|
-
uint32_t sendBufferSize{
|
|
147
|
-
uint32_t recvBufferSize{
|
|
148
|
+
uint32_t sendBufferSize{ 0 };
|
|
149
|
+
uint32_t recvBufferSize{ 0 };
|
|
148
150
|
};
|
|
149
151
|
|
|
150
152
|
private:
|
|
@@ -161,10 +163,10 @@ namespace RTC
|
|
|
161
163
|
RTC::Transport::Listener* listener,
|
|
162
164
|
const FBS::Transport::Options* options,
|
|
163
165
|
/**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
* Whether the SCTP association (if enabled) must authenticate received
|
|
167
|
+
* State Cookies. This must be `true` for transports whose SCTP traffic
|
|
168
|
+
* is not protected by DTLS (PlainTransport and PipeTransport).
|
|
169
|
+
*/
|
|
168
170
|
bool requireSctpStateCookieAuthentication);
|
|
169
171
|
~Transport() override;
|
|
170
172
|
|
|
@@ -196,9 +198,9 @@ namespace RTC
|
|
|
196
198
|
{
|
|
197
199
|
this->sendTransmission.Update(len, this->shared->GetTimeMs());
|
|
198
200
|
}
|
|
199
|
-
virtual void ReceiveRtpPacket(RTC::RTP::Packet* packet) final;
|
|
200
|
-
virtual void ReceiveRtcpPacket(RTC::RTCP::Packet* packet) final;
|
|
201
|
-
virtual void ReceiveSctpData(const uint8_t* data, size_t len) final;
|
|
201
|
+
virtual void ReceiveRtpPacket(RTC::RTP::Packet* packet, int64_t receivedAtUs) final;
|
|
202
|
+
virtual void ReceiveRtcpPacket(RTC::RTCP::Packet* packet, int64_t receivedAtUs) final;
|
|
203
|
+
virtual void ReceiveSctpData(const uint8_t* data, size_t len, int64_t receivedAtUs) final;
|
|
202
204
|
virtual void SendSctpMessage(
|
|
203
205
|
RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb = nullptr) final;
|
|
204
206
|
|
|
@@ -228,8 +230,8 @@ namespace RTC
|
|
|
228
230
|
}
|
|
229
231
|
virtual void SendRtpPacket(
|
|
230
232
|
RTC::Consumer* consumer, RTC::RTP::Packet* packet, const onSendCallback* cb = nullptr) = 0;
|
|
231
|
-
virtual void HandleRtcpPacket(RTC::RTCP::Packet* packet) final;
|
|
232
|
-
virtual void SendRtcp(
|
|
233
|
+
virtual void HandleRtcpPacket(RTC::RTCP::Packet* packet, int64_t receivedAtUs) final;
|
|
234
|
+
virtual void SendRtcp(int64_t nowUs) final;
|
|
233
235
|
virtual void SendRtcpPacket(RTC::RTCP::Packet* packet) = 0;
|
|
234
236
|
virtual void SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet) = 0;
|
|
235
237
|
virtual void SendMessage(
|
|
@@ -240,8 +242,10 @@ namespace RTC
|
|
|
240
242
|
virtual void DistributeAvailableOutgoingBitrate() final;
|
|
241
243
|
virtual void ComputeOutgoingDesiredBitrate(bool forceBitrate = false) final;
|
|
242
244
|
virtual void EmitTraceEventProbationType(RTC::RTP::Packet* packet) const final;
|
|
245
|
+
#ifndef MS_USE_BUILTIN_BWE
|
|
243
246
|
virtual void EmitTraceEventBweType(
|
|
244
247
|
RTC::TransportCongestionControlClient::Bitrates& bitrates) const final;
|
|
248
|
+
#endif
|
|
245
249
|
|
|
246
250
|
/* Pure virtual methods inherited from RTC::Producer::Listener. */
|
|
247
251
|
public:
|
|
@@ -249,9 +253,10 @@ namespace RTC
|
|
|
249
253
|
{
|
|
250
254
|
this->DataReceived(len);
|
|
251
255
|
}
|
|
252
|
-
void OnProducerReceiveRtpPacket(
|
|
256
|
+
void OnProducerReceiveRtpPacket(
|
|
257
|
+
RTC::Producer* /*producer*/, RTC::RTP::Packet* packet, int64_t receivedAtUs) override
|
|
253
258
|
{
|
|
254
|
-
this->ReceiveRtpPacket(packet);
|
|
259
|
+
this->ReceiveRtpPacket(packet, receivedAtUs);
|
|
255
260
|
}
|
|
256
261
|
void OnProducerPaused(RTC::Producer* producer) override;
|
|
257
262
|
void OnProducerResumed(RTC::Producer* producer) override;
|
|
@@ -264,12 +269,17 @@ namespace RTC
|
|
|
264
269
|
uint8_t previousScore) override;
|
|
265
270
|
void OnProducerRtcpSenderReport(
|
|
266
271
|
RTC::Producer* producer, RTC::RTP::RtpStreamRecv* rtpStream, bool first) override;
|
|
272
|
+
void OnProducerSpatialLayerActivityChanged(
|
|
273
|
+
RTC::Producer* producer,
|
|
274
|
+
RTC::RTP::RtpStreamRecv* rtpStream,
|
|
275
|
+
uint8_t spatialLayer,
|
|
276
|
+
bool isActive) override;
|
|
267
277
|
void OnProducerRtpPacketReceived(RTC::Producer* producer, RTC::RTP::Packet* packet) override;
|
|
268
278
|
void OnProducerSendRtcpPacket(RTC::Producer* producer, RTC::RTCP::Packet* packet) override;
|
|
269
279
|
uint8_t OnProducerNeedWorstRemoteFractionLost(RTC::Producer* producer, uint32_t mappedSsrc) override;
|
|
270
|
-
std::optional<
|
|
280
|
+
std::optional<int64_t> OnProducerNeedLocalCaptureAtUs(
|
|
271
281
|
RTC::Producer* producer, const RTC::RTP::RtpStreamRecv* rtpStream, uint32_t ts) override;
|
|
272
|
-
std::optional<int64_t>
|
|
282
|
+
std::optional<int64_t> OnProducerNeedRemoteClockOffsetUs(const RTC::Producer* producer) override;
|
|
273
283
|
|
|
274
284
|
/* Pure virtual methods inherited from RTC::Consumer::Listener. */
|
|
275
285
|
public:
|
|
@@ -325,6 +335,7 @@ namespace RTC
|
|
|
325
335
|
void OnAssociationTotalBufferedAmountLow() override;
|
|
326
336
|
bool OnAssociationIsTransportReadyForSctp() override;
|
|
327
337
|
|
|
338
|
+
#ifndef MS_USE_BUILTIN_BWE
|
|
328
339
|
/* Pure virtual methods inherited from RTC::TransportCongestionControlClient::Listener. */
|
|
329
340
|
public:
|
|
330
341
|
void OnTransportCongestionControlClientBitrates(
|
|
@@ -339,14 +350,6 @@ namespace RTC
|
|
|
339
350
|
public:
|
|
340
351
|
void OnTransportCongestionControlServerSendRtcpPacket(
|
|
341
352
|
RTC::TransportCongestionControlServer* tccServer, RTC::RTCP::Packet* packet) override;
|
|
342
|
-
|
|
343
|
-
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
344
|
-
/* Pure virtual methods inherited from RTC::SenderBandwidthEstimator::Listener. */
|
|
345
|
-
public:
|
|
346
|
-
void OnSenderBandwidthEstimatorAvailableBitrate(
|
|
347
|
-
RTC::SenderBandwidthEstimator* senderBwe,
|
|
348
|
-
uint32_t availableBitrate,
|
|
349
|
-
uint32_t previousAvailableBitrate) override;
|
|
350
353
|
#endif
|
|
351
354
|
|
|
352
355
|
/* Pure virtual methods inherited from TimerHandleInterface::Listener. */
|
|
@@ -378,10 +381,9 @@ namespace RTC
|
|
|
378
381
|
TimerHandleInterface* rtcpTimer{ nullptr };
|
|
379
382
|
// Allocated by this.
|
|
380
383
|
std::unique_ptr<RTC::SCTP::AssociationInterface> sctpAssociation{ nullptr };
|
|
384
|
+
#ifndef MS_USE_BUILTIN_BWE
|
|
381
385
|
std::shared_ptr<RTC::TransportCongestionControlClient> tccClient{ nullptr };
|
|
382
386
|
std::shared_ptr<RTC::TransportCongestionControlServer> tccServer{ nullptr };
|
|
383
|
-
#ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
|
|
384
|
-
std::shared_ptr<RTC::SenderBandwidthEstimator> senderBwe{ nullptr };
|
|
385
387
|
#endif
|
|
386
388
|
// Others.
|
|
387
389
|
bool direct{ false }; // Whether this Transport allows direct communication.
|
|
@@ -396,14 +398,19 @@ namespace RTC
|
|
|
396
398
|
RTC::RtpDataCounter recvRtxTransmission;
|
|
397
399
|
RTC::RtpDataCounter sendRtxTransmission;
|
|
398
400
|
RTC::RtpDataCounter sendProbationTransmission;
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
401
|
+
#ifdef MS_USE_BUILTIN_BWE
|
|
402
|
+
// TODO: The built-in downlink BWE hands the sequence number out, so this
|
|
403
|
+
// counter goes away.
|
|
404
|
+
#else
|
|
405
|
+
uint16_t transportWideCcSeq{ 0 };
|
|
406
|
+
#endif
|
|
407
|
+
int64_t initialAvailableOutgoingBitrate{ 600000 };
|
|
408
|
+
int64_t maxIncomingBitrate{ 0 };
|
|
409
|
+
int64_t maxOutgoingBitrate{ 0 };
|
|
410
|
+
int64_t minOutgoingBitrate{ 0 };
|
|
404
411
|
// For SCTP capable transports and for direct transport.
|
|
405
|
-
size_t maxSendMessageSize{
|
|
406
|
-
size_t maxReceiveMessageSize{
|
|
412
|
+
size_t maxSendMessageSize{ 0 };
|
|
413
|
+
size_t maxReceiveMessageSize{ 0 };
|
|
407
414
|
struct TraceEventTypes traceEventTypes;
|
|
408
415
|
};
|
|
409
416
|
} // namespace RTC
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
|
|
19
19
|
namespace RTC
|
|
20
20
|
{
|
|
21
|
-
constexpr uint32_t TransportCongestionControlMinOutgoingBitrate{ 30000u };
|
|
22
|
-
|
|
23
21
|
class TransportCongestionControlClient : public webrtc::PacketRouter,
|
|
24
22
|
public webrtc::TargetTransferRateObserver,
|
|
25
23
|
public TimerHandleInterface::Listener
|
|
@@ -27,13 +25,13 @@ namespace RTC
|
|
|
27
25
|
public:
|
|
28
26
|
struct Bitrates
|
|
29
27
|
{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
int64_t desiredBitrate{ 0 };
|
|
29
|
+
int64_t effectiveDesiredBitrate{ 0 };
|
|
30
|
+
int64_t minBitrate{ 0 };
|
|
31
|
+
int64_t maxBitrate{ 0 };
|
|
32
|
+
int64_t startBitrate{ 0 };
|
|
33
|
+
int64_t maxPaddingBitrate{ 0 };
|
|
34
|
+
int64_t availableBitrate{ 0 };
|
|
37
35
|
};
|
|
38
36
|
|
|
39
37
|
public:
|
|
@@ -53,13 +51,18 @@ namespace RTC
|
|
|
53
51
|
};
|
|
54
52
|
|
|
55
53
|
public:
|
|
54
|
+
/**
|
|
55
|
+
* @param absoluteMinOutgoingBitrate - Bitrate the target is never taken
|
|
56
|
+
* below (bps), whatever the API asks for.
|
|
57
|
+
*/
|
|
56
58
|
TransportCongestionControlClient(
|
|
57
59
|
RTC::TransportCongestionControlClient::Listener* listener,
|
|
58
60
|
SharedInterface* shared,
|
|
59
61
|
RTC::BweType bweType,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
int64_t absoluteMinOutgoingBitrate,
|
|
63
|
+
int64_t initialAvailableBitrate,
|
|
64
|
+
int64_t maxOutgoingBitrate,
|
|
65
|
+
int64_t minOutgoingBitrate);
|
|
63
66
|
~TransportCongestionControlClient() override;
|
|
64
67
|
|
|
65
68
|
public:
|
|
@@ -71,23 +74,24 @@ namespace RTC
|
|
|
71
74
|
void TransportDisconnected();
|
|
72
75
|
void InsertPacket(webrtc::RtpPacketSendInfo& packetInfo);
|
|
73
76
|
webrtc::PacedPacketInfo GetPacingInfo();
|
|
74
|
-
void PacketSent(const webrtc::RtpPacketSendInfo& packetInfo, int64_t
|
|
75
|
-
void ReceiveEstimatedBitrate(
|
|
76
|
-
void ReceiveRtcpReceiverReport(
|
|
77
|
+
void PacketSent(const webrtc::RtpPacketSendInfo& packetInfo, int64_t nowUs);
|
|
78
|
+
void ReceiveEstimatedBitrate(int64_t bitrate);
|
|
79
|
+
void ReceiveRtcpReceiverReport(
|
|
80
|
+
RTC::RTCP::ReceiverReportPacket* packet, float rttMs, int64_t receivedAtUs);
|
|
77
81
|
void ReceiveRtcpTransportFeedback(const RTC::RTCP::FeedbackRtpTransportPacket* feedback);
|
|
78
|
-
void SetDesiredBitrate(
|
|
79
|
-
void SetMaxOutgoingBitrate(
|
|
80
|
-
void SetMinOutgoingBitrate(
|
|
82
|
+
void SetDesiredBitrate(int64_t desiredBitrate, bool force);
|
|
83
|
+
void SetMaxOutgoingBitrate(int64_t maxBitrate);
|
|
84
|
+
void SetMinOutgoingBitrate(int64_t minBitrate);
|
|
81
85
|
const Bitrates& GetBitrates() const
|
|
82
86
|
{
|
|
83
87
|
return this->bitrates;
|
|
84
88
|
}
|
|
85
|
-
|
|
89
|
+
int64_t GetAvailableBitrate() const;
|
|
86
90
|
double GetPacketLoss() const;
|
|
87
91
|
void RescheduleNextAvailableBitrateEvent();
|
|
88
92
|
|
|
89
93
|
private:
|
|
90
|
-
void MayEmitAvailableBitrateEvent(
|
|
94
|
+
void MayEmitAvailableBitrateEvent(int64_t previousAvailableBitrate);
|
|
91
95
|
void UpdatePacketLoss(double packetLoss);
|
|
92
96
|
void ApplyBitrateUpdates();
|
|
93
97
|
|
|
@@ -120,13 +124,14 @@ namespace RTC
|
|
|
120
124
|
RTC::RTP::ProbationGenerator* probationGenerator{ nullptr };
|
|
121
125
|
TimerHandleInterface* processTimer{ nullptr };
|
|
122
126
|
// Others.
|
|
123
|
-
RTC::BweType bweType;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
const RTC::BweType bweType;
|
|
128
|
+
const int64_t absoluteMinOutgoingBitrate;
|
|
129
|
+
const int64_t initialAvailableBitrate;
|
|
130
|
+
int64_t maxOutgoingBitrate{ 0 };
|
|
131
|
+
int64_t minOutgoingBitrate{ 0 };
|
|
127
132
|
Bitrates bitrates;
|
|
128
133
|
bool availableBitrateEventCalled{ false };
|
|
129
|
-
|
|
134
|
+
int64_t lastAvailableBitrateEventAtMs{ 0 };
|
|
130
135
|
RTC::TrendCalculator desiredBitrateTrend;
|
|
131
136
|
std::deque<double> packetLossHistory;
|
|
132
137
|
double packetLoss{ 0 };
|
|
@@ -43,7 +43,7 @@ namespace RTC
|
|
|
43
43
|
}
|
|
44
44
|
void TransportConnected();
|
|
45
45
|
void TransportDisconnected();
|
|
46
|
-
|
|
46
|
+
int64_t GetAvailableBitrate() const
|
|
47
47
|
{
|
|
48
48
|
switch (this->bweType)
|
|
49
49
|
{
|
|
@@ -51,19 +51,19 @@ namespace RTC
|
|
|
51
51
|
return this->rembServer->GetAvailableBitrate();
|
|
52
52
|
|
|
53
53
|
default:
|
|
54
|
-
return
|
|
54
|
+
return 0;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
double GetPacketLoss() const;
|
|
58
|
-
void IncomingPacket(
|
|
59
|
-
void SetMaxIncomingBitrate(
|
|
58
|
+
void IncomingPacket(int64_t nowUs, const RTC::RTP::Packet* packet);
|
|
59
|
+
void SetMaxIncomingBitrate(int64_t bitrate);
|
|
60
60
|
void FillAndSendTransportCcFeedback();
|
|
61
61
|
|
|
62
62
|
private:
|
|
63
63
|
// Returns true if a feedback packet was sent.
|
|
64
64
|
bool SendTransportCcFeedback();
|
|
65
|
-
void MayDropOldPacketArrivalTimes(uint16_t seqNum,
|
|
66
|
-
void MaySendLimitationRembFeedback(
|
|
65
|
+
void MayDropOldPacketArrivalTimes(uint16_t seqNum, int64_t nowUs);
|
|
66
|
+
void MaySendLimitationRembFeedback(int64_t nowMs);
|
|
67
67
|
void UpdatePacketLoss(double packetLoss);
|
|
68
68
|
void ResetTransportCcFeedback(uint8_t feedbackPacketCount);
|
|
69
69
|
|
|
@@ -72,7 +72,7 @@ namespace RTC
|
|
|
72
72
|
void OnRembServerAvailableBitrate(
|
|
73
73
|
const webrtc::RemoteBitrateEstimator* remoteBitrateEstimator,
|
|
74
74
|
const std::vector<uint32_t>& ssrcs,
|
|
75
|
-
|
|
75
|
+
int64_t availableBitrate) override;
|
|
76
76
|
|
|
77
77
|
/* Pure virtual methods inherited from TimerHandleInterface::Listener. */
|
|
78
78
|
public:
|
|
@@ -88,20 +88,20 @@ namespace RTC
|
|
|
88
88
|
webrtc::RemoteBitrateEstimatorAbsSendTime* rembServer{ nullptr };
|
|
89
89
|
// Others.
|
|
90
90
|
RTC::BweType bweType;
|
|
91
|
-
size_t maxRtcpPacketLen{
|
|
92
|
-
uint8_t transportCcFeedbackPacketCount{
|
|
93
|
-
uint32_t transportCcFeedbackSenderSsrc{
|
|
94
|
-
uint32_t transportCcFeedbackMediaSsrc{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
uint8_t unlimitedRembCounter{
|
|
91
|
+
size_t maxRtcpPacketLen{ 0 };
|
|
92
|
+
uint8_t transportCcFeedbackPacketCount{ 0 };
|
|
93
|
+
uint32_t transportCcFeedbackSenderSsrc{ 0 };
|
|
94
|
+
uint32_t transportCcFeedbackMediaSsrc{ 0 };
|
|
95
|
+
int64_t maxIncomingBitrate{ 0 };
|
|
96
|
+
int64_t limitationRembSentAtMs{ 0 };
|
|
97
|
+
uint8_t unlimitedRembCounter{ 0 };
|
|
98
98
|
std::deque<double> packetLossHistory;
|
|
99
99
|
double packetLoss{ 0 };
|
|
100
100
|
// Whether any packet with transport wide sequence number was received.
|
|
101
101
|
bool transportWideSeqNumberReceived{ false };
|
|
102
|
-
uint16_t transportCcFeedbackWideSeqNumStart{
|
|
103
|
-
// Map of arrival timestamp (
|
|
104
|
-
std::map<uint16_t,
|
|
102
|
+
uint16_t transportCcFeedbackWideSeqNumStart{ 0 };
|
|
103
|
+
// Map of arrival timestamp (us) indexed by wide seq number.
|
|
104
|
+
std::map<uint16_t, int64_t, RTC::SeqManager<uint16_t>::SeqLowerThan> mapPacketArrivalTimes;
|
|
105
105
|
};
|
|
106
106
|
} // namespace RTC
|
|
107
107
|
|
|
@@ -18,14 +18,14 @@ namespace RTC
|
|
|
18
18
|
{
|
|
19
19
|
return this->value;
|
|
20
20
|
}
|
|
21
|
-
void Update(uint32_t value,
|
|
22
|
-
void ForceUpdate(uint32_t value,
|
|
21
|
+
void Update(uint32_t value, int64_t nowMs);
|
|
22
|
+
void ForceUpdate(uint32_t value, int64_t nowMs);
|
|
23
23
|
|
|
24
24
|
private:
|
|
25
25
|
float decreaseFactor{ DecreaseFactor };
|
|
26
|
-
uint32_t value{
|
|
27
|
-
uint32_t highestValue{
|
|
28
|
-
|
|
26
|
+
uint32_t value{ 0 };
|
|
27
|
+
uint32_t highestValue{ 0 };
|
|
28
|
+
int64_t highestValueUpdatedAtMs{ 0 };
|
|
29
29
|
};
|
|
30
30
|
} // namespace RTC
|
|
31
31
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include "handles/UdpSocketHandle.hpp"
|
|
6
6
|
#include "RTC/PortManager.hpp"
|
|
7
7
|
#include "RTC/Transport.hpp"
|
|
8
|
+
#include "SharedInterface.hpp"
|
|
8
9
|
#include <string>
|
|
9
10
|
|
|
10
11
|
namespace RTC
|
|
@@ -23,13 +24,20 @@ namespace RTC
|
|
|
23
24
|
const uint8_t* data,
|
|
24
25
|
size_t len,
|
|
25
26
|
size_t bufferLen,
|
|
26
|
-
const struct sockaddr* remoteAddr
|
|
27
|
+
const struct sockaddr* remoteAddr,
|
|
28
|
+
int64_t receivedAtUs) = 0;
|
|
27
29
|
};
|
|
28
30
|
|
|
29
31
|
public:
|
|
30
|
-
UdpSocket(Listener* listener, std::string& ip, uint16_t port, RTC::Transport::SocketFlags& flags);
|
|
31
32
|
UdpSocket(
|
|
32
33
|
Listener* listener,
|
|
34
|
+
SharedInterface* shared,
|
|
35
|
+
std::string& ip,
|
|
36
|
+
uint16_t port,
|
|
37
|
+
RTC::Transport::SocketFlags& flags);
|
|
38
|
+
UdpSocket(
|
|
39
|
+
Listener* listener,
|
|
40
|
+
SharedInterface* shared,
|
|
33
41
|
std::string& ip,
|
|
34
42
|
uint16_t minPort,
|
|
35
43
|
uint16_t maxPort,
|
|
@@ -45,6 +53,7 @@ namespace RTC
|
|
|
45
53
|
private:
|
|
46
54
|
// Passed by argument.
|
|
47
55
|
Listener* listener{ nullptr };
|
|
56
|
+
SharedInterface* shared{ nullptr };
|
|
48
57
|
bool fixedPort{ false };
|
|
49
58
|
RTC::PortManager::PortRangeKey portRangeKey{};
|
|
50
59
|
};
|
|
@@ -68,10 +68,20 @@ namespace RTC
|
|
|
68
68
|
void HandleRequest(Channel::ChannelRequest* request) override;
|
|
69
69
|
|
|
70
70
|
private:
|
|
71
|
-
void OnPacketReceived(
|
|
72
|
-
|
|
71
|
+
void OnPacketReceived(
|
|
72
|
+
RTC::TransportTuple* tuple,
|
|
73
|
+
const uint8_t* data,
|
|
74
|
+
size_t len,
|
|
75
|
+
size_t bufferLen,
|
|
76
|
+
int64_t receivedAtUs);
|
|
77
|
+
void OnStunDataReceived(
|
|
78
|
+
RTC::TransportTuple* tuple, const uint8_t* data, size_t len, int64_t receivedAtUs);
|
|
73
79
|
void OnNonStunDataReceived(
|
|
74
|
-
RTC::TransportTuple* tuple,
|
|
80
|
+
RTC::TransportTuple* tuple,
|
|
81
|
+
const uint8_t* data,
|
|
82
|
+
size_t len,
|
|
83
|
+
size_t bufferLen,
|
|
84
|
+
int64_t receivedAtUs);
|
|
75
85
|
|
|
76
86
|
/* Pure virtual methods inherited from RTC::WebRtcTransport::WebRtcTransportListener. */
|
|
77
87
|
public:
|
|
@@ -93,7 +103,8 @@ namespace RTC
|
|
|
93
103
|
const uint8_t* data,
|
|
94
104
|
size_t len,
|
|
95
105
|
size_t bufferLen,
|
|
96
|
-
const struct sockaddr* remoteAddr
|
|
106
|
+
const struct sockaddr* remoteAddr,
|
|
107
|
+
int64_t receivedAtUs) override;
|
|
97
108
|
|
|
98
109
|
/* Pure virtual methods inherited from RTC::TcpServer::Listener. */
|
|
99
110
|
public:
|
|
@@ -102,7 +113,11 @@ namespace RTC
|
|
|
102
113
|
/* Pure virtual methods inherited from RTC::TcpConnection::Listener. */
|
|
103
114
|
public:
|
|
104
115
|
void OnTcpConnectionPacketReceived(
|
|
105
|
-
RTC::TcpConnection* connection,
|
|
116
|
+
RTC::TcpConnection* connection,
|
|
117
|
+
const uint8_t* data,
|
|
118
|
+
size_t len,
|
|
119
|
+
size_t bufferLen,
|
|
120
|
+
int64_t receivedAtUs) override;
|
|
106
121
|
const std::string& GetId() const
|
|
107
122
|
{
|
|
108
123
|
return this->id;
|