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
|
@@ -59,10 +59,22 @@ namespace RTC
|
|
|
59
59
|
bool SendData(const uint8_t* data, size_t len) override;
|
|
60
60
|
void RecvStreamClosed(uint32_t ssrc) override;
|
|
61
61
|
void SendStreamClosed(uint32_t ssrc) override;
|
|
62
|
-
void OnPacketReceived(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
void OnPacketReceived(
|
|
63
|
+
RTC::TransportTuple* tuple,
|
|
64
|
+
const uint8_t* data,
|
|
65
|
+
size_t len,
|
|
66
|
+
size_t bufferLen,
|
|
67
|
+
int64_t receivedAtUs);
|
|
68
|
+
void OnRtpDataReceived(
|
|
69
|
+
RTC::TransportTuple* tuple,
|
|
70
|
+
const uint8_t* data,
|
|
71
|
+
size_t len,
|
|
72
|
+
size_t bufferLen,
|
|
73
|
+
int64_t receivedAtUs);
|
|
74
|
+
void OnRtcpDataReceived(
|
|
75
|
+
RTC::TransportTuple* tuple, const uint8_t* data, size_t len, int64_t receivedAtUs);
|
|
76
|
+
void OnSctpDataReceived(
|
|
77
|
+
RTC::TransportTuple* tuple, const uint8_t* data, size_t len, int64_t receivedAtUs);
|
|
66
78
|
|
|
67
79
|
/* Pure virtual methods inherited from RTC::UdpSocket::Listener. */
|
|
68
80
|
public:
|
|
@@ -71,7 +83,8 @@ namespace RTC
|
|
|
71
83
|
const uint8_t* data,
|
|
72
84
|
size_t len,
|
|
73
85
|
size_t bufferLen,
|
|
74
|
-
const struct sockaddr* remoteAddr
|
|
86
|
+
const struct sockaddr* remoteAddr,
|
|
87
|
+
int64_t receivedAtUs) override;
|
|
75
88
|
|
|
76
89
|
private:
|
|
77
90
|
// Allocated by this.
|
|
@@ -48,10 +48,22 @@ namespace RTC
|
|
|
48
48
|
bool SendData(const uint8_t* data, size_t len) override;
|
|
49
49
|
void RecvStreamClosed(uint32_t ssrc) override;
|
|
50
50
|
void SendStreamClosed(uint32_t ssrc) override;
|
|
51
|
-
void OnPacketReceived(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
void OnPacketReceived(
|
|
52
|
+
RTC::TransportTuple* tuple,
|
|
53
|
+
const uint8_t* data,
|
|
54
|
+
size_t len,
|
|
55
|
+
size_t bufferLen,
|
|
56
|
+
int64_t receivedAtUs);
|
|
57
|
+
void OnRtpDataReceived(
|
|
58
|
+
RTC::TransportTuple* tuple,
|
|
59
|
+
const uint8_t* data,
|
|
60
|
+
size_t len,
|
|
61
|
+
size_t bufferLen,
|
|
62
|
+
int64_t receivedAtUs);
|
|
63
|
+
void OnRtcpDataReceived(
|
|
64
|
+
RTC::TransportTuple* tuple, const uint8_t* data, size_t len, int64_t receivedAtUs);
|
|
65
|
+
void OnSctpDataReceived(
|
|
66
|
+
RTC::TransportTuple* tuple, const uint8_t* data, size_t len, int64_t receivedAtUs);
|
|
55
67
|
void EmitTuple() const;
|
|
56
68
|
void EmitRtcpTuple() const;
|
|
57
69
|
|
|
@@ -62,7 +74,8 @@ namespace RTC
|
|
|
62
74
|
const uint8_t* data,
|
|
63
75
|
size_t len,
|
|
64
76
|
size_t bufferLen,
|
|
65
|
-
const struct sockaddr* remoteAddr
|
|
77
|
+
const struct sockaddr* remoteAddr,
|
|
78
|
+
int64_t receivedAtUs) override;
|
|
66
79
|
|
|
67
80
|
private:
|
|
68
81
|
// Allocated by this.
|
|
@@ -66,8 +66,8 @@ namespace RTC
|
|
|
66
66
|
private:
|
|
67
67
|
Protocol protocol{ Protocol::UDP };
|
|
68
68
|
sockaddr_storage bindAddr{};
|
|
69
|
-
uint16_t minPort{
|
|
70
|
-
uint16_t maxPort{
|
|
69
|
+
uint16_t minPort{ 0 };
|
|
70
|
+
uint16_t maxPort{ 0 };
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
struct PortRangeKeyHash
|
|
@@ -92,8 +92,8 @@ namespace RTC
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
std::vector<bool> ports;
|
|
95
|
-
uint16_t minPort{
|
|
96
|
-
uint16_t numUsedPorts{
|
|
95
|
+
uint16_t minPort{ 0 };
|
|
96
|
+
uint16_t numUsedPorts{ 0 };
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
public:
|
|
@@ -33,9 +33,10 @@ namespace RTC
|
|
|
33
33
|
|
|
34
34
|
public:
|
|
35
35
|
virtual void OnProducerReceiveData(RTC::Producer* producer, size_t len) = 0;
|
|
36
|
-
virtual void OnProducerReceiveRtpPacket(
|
|
37
|
-
|
|
38
|
-
virtual void
|
|
36
|
+
virtual void OnProducerReceiveRtpPacket(
|
|
37
|
+
RTC::Producer* producer, RTC::RTP::Packet* packet, int64_t receivedAtUs) = 0;
|
|
38
|
+
virtual void OnProducerPaused(RTC::Producer* producer) = 0;
|
|
39
|
+
virtual void OnProducerResumed(RTC::Producer* producer) = 0;
|
|
39
40
|
virtual void OnProducerNewRtpStream(
|
|
40
41
|
RTC::Producer* producer, RTC::RTP::RtpStreamRecv* rtpStream, uint32_t mappedSsrc) = 0;
|
|
41
42
|
virtual void OnProducerRtpStreamScore(
|
|
@@ -45,6 +46,11 @@ namespace RTC
|
|
|
45
46
|
uint8_t previousScore) = 0;
|
|
46
47
|
virtual void OnProducerRtcpSenderReport(
|
|
47
48
|
RTC::Producer* producer, RTC::RTP::RtpStreamRecv* rtpStream, bool first) = 0;
|
|
49
|
+
virtual void OnProducerSpatialLayerActivityChanged(
|
|
50
|
+
RTC::Producer* producer,
|
|
51
|
+
RTC::RTP::RtpStreamRecv* rtpStream,
|
|
52
|
+
uint8_t spatialLayer,
|
|
53
|
+
bool isActive) = 0;
|
|
48
54
|
virtual void OnProducerRtpPacketReceived(RTC::Producer* producer, RTC::RTP::Packet* packet) = 0;
|
|
49
55
|
virtual void OnProducerSendRtcpPacket(RTC::Producer* producer, RTC::RTCP::Packet* packet) = 0;
|
|
50
56
|
/**
|
|
@@ -59,15 +65,15 @@ namespace RTC
|
|
|
59
65
|
*
|
|
60
66
|
* @returns No value while the capture instant cannot be told yet.
|
|
61
67
|
*/
|
|
62
|
-
virtual std::optional<
|
|
68
|
+
virtual std::optional<int64_t> OnProducerNeedLocalCaptureAtUs(
|
|
63
69
|
RTC::Producer* producer, const RTC::RTP::RtpStreamRecv* rtpStream, uint32_t ts) = 0;
|
|
64
70
|
/**
|
|
65
71
|
* Offset between the wall clock of the sender of this Producer and our own
|
|
66
|
-
* monotonic one (
|
|
72
|
+
* monotonic one (us).
|
|
67
73
|
*
|
|
68
74
|
* @returns No value while the offset cannot be told yet.
|
|
69
75
|
*/
|
|
70
|
-
virtual std::optional<int64_t>
|
|
76
|
+
virtual std::optional<int64_t> OnProducerNeedRemoteClockOffsetUs(const RTC::Producer* producer) = 0;
|
|
71
77
|
};
|
|
72
78
|
|
|
73
79
|
private:
|
|
@@ -153,10 +159,11 @@ namespace RTC
|
|
|
153
159
|
{
|
|
154
160
|
return std::addressof(this->rtpStreamScores);
|
|
155
161
|
}
|
|
156
|
-
ReceiveRtpPacketResult ReceiveRtpPacket(RTC::RTP::Packet* packet);
|
|
157
|
-
void ReceiveRtcpSenderReport(RTC::RTCP::SenderReport* report);
|
|
158
|
-
void ReceiveRtcpXrDelaySinceLastRr(
|
|
159
|
-
|
|
162
|
+
ReceiveRtpPacketResult ReceiveRtpPacket(RTC::RTP::Packet* packet, int64_t receivedAtUs);
|
|
163
|
+
void ReceiveRtcpSenderReport(RTC::RTCP::SenderReport* report, int64_t receivedAtUs);
|
|
164
|
+
void ReceiveRtcpXrDelaySinceLastRr(
|
|
165
|
+
RTC::RTCP::DelaySinceLastRr::SsrcInfo* ssrcInfo, int64_t receivedAtUs);
|
|
166
|
+
bool GetRtcp(RTC::RTCP::CompoundPacket* packet, int64_t nowUs);
|
|
160
167
|
void RequestKeyFrame(uint32_t mappedSsrc);
|
|
161
168
|
|
|
162
169
|
/* Methods inherited from Channel::ChannelSocket::RequestHandler. */
|
|
@@ -198,6 +205,8 @@ namespace RTC
|
|
|
198
205
|
void OnRtpStreamScore(RTC::RTP::RtpStream* rtpStream, uint8_t score, uint8_t previousScore) override;
|
|
199
206
|
void OnRtpStreamSendRtcpPacket(RTC::RTP::RtpStreamRecv* rtpStream, RTC::RTCP::Packet* packet) override;
|
|
200
207
|
uint8_t OnRtpStreamNeedWorstRemoteFractionLost(RTC::RTP::RtpStreamRecv* rtpStream) override;
|
|
208
|
+
void OnRtpStreamSpatialLayerActivityChanged(
|
|
209
|
+
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t spatialLayer, bool isActive) override;
|
|
201
210
|
|
|
202
211
|
/* Pure virtual methods inherited from RTC::KeyFrameRequestManager::Listener. */
|
|
203
212
|
public:
|
|
@@ -229,8 +238,8 @@ namespace RTC
|
|
|
229
238
|
bool enableMediasoupPacketIdHeaderExtension{ false };
|
|
230
239
|
RTC::RTP::Packet* currentRtpPacket{ nullptr };
|
|
231
240
|
// Timestamp when last RTCP was sent.
|
|
232
|
-
|
|
233
|
-
|
|
241
|
+
int64_t lastRtcpSentAtUs{ 0 };
|
|
242
|
+
int64_t maxRtcpIntervalMs{ 0 };
|
|
234
243
|
// Video orientation.
|
|
235
244
|
bool videoOrientationDetected{ false };
|
|
236
245
|
struct VideoOrientation videoOrientation;
|
|
@@ -42,9 +42,9 @@ namespace RTC
|
|
|
42
42
|
Type type{ Type::FORWARD };
|
|
43
43
|
|
|
44
44
|
// Valid when type == FORWARD:
|
|
45
|
-
uint32_t tsOffset{
|
|
45
|
+
uint32_t tsOffset{ 0 };
|
|
46
46
|
bool isSyncPacket{ false };
|
|
47
|
-
uint16_t syncSeqValue{
|
|
47
|
+
uint16_t syncSeqValue{ 0 };
|
|
48
48
|
bool shouldSyncEncodingContext{ false };
|
|
49
49
|
bool spatialLayerSwitched{ false };
|
|
50
50
|
bool temporalLayerChanged{ false };
|
|
@@ -100,16 +100,22 @@ namespace RTC
|
|
|
100
100
|
virtual void ProducerRtpStreamScore(
|
|
101
101
|
RTC::RTP::RtpStreamRecv* rtpStream, uint8_t score, uint8_t previousScore) = 0;
|
|
102
102
|
virtual void ProducerRtcpSenderReport(RTC::RTP::RtpStreamRecv* rtpStream, bool first) = 0;
|
|
103
|
+
// Only spatial layers within a same RTP stream can start or stop separately,
|
|
104
|
+
// so just SVC cares about this.
|
|
105
|
+
virtual void ProducerSpatialLayerActivityChanged(
|
|
106
|
+
RTC::RTP::RtpStreamRecv* /*rtpStream*/, uint8_t /*spatialLayer*/, bool /*isActive*/)
|
|
107
|
+
{
|
|
108
|
+
}
|
|
103
109
|
|
|
104
110
|
void SetExternallyManagedBitrate()
|
|
105
111
|
{
|
|
106
112
|
this->externallyManagedBitrate = true;
|
|
107
113
|
}
|
|
108
114
|
|
|
109
|
-
virtual
|
|
110
|
-
|
|
111
|
-
virtual void ApplyLayers(
|
|
112
|
-
virtual
|
|
115
|
+
virtual int64_t IncreaseLayer(
|
|
116
|
+
int64_t bitrate, bool considerLoss, float lossPercentage, int64_t nowMs) = 0;
|
|
117
|
+
virtual void ApplyLayers(int64_t rtpStreamActiveMs) = 0;
|
|
118
|
+
virtual int64_t GetDesiredBitrate(int64_t nowMs) const = 0;
|
|
113
119
|
|
|
114
120
|
virtual RtpPacketProcessResult ProcessRtpPacket(
|
|
115
121
|
RTC::RTP::Packet* packet,
|
|
@@ -60,11 +60,11 @@ namespace RTC
|
|
|
60
60
|
{
|
|
61
61
|
size_t size = Packet::CommonHeaderSize;
|
|
62
62
|
|
|
63
|
-
size += ssrcs.size() *
|
|
63
|
+
size += ssrcs.size() * 4;
|
|
64
64
|
|
|
65
65
|
if (!this->reason.empty())
|
|
66
66
|
{
|
|
67
|
-
size +=
|
|
67
|
+
size += 1; // Length field.
|
|
68
68
|
size += this->reason.length();
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -52,7 +52,7 @@ namespace RTC
|
|
|
52
52
|
{
|
|
53
53
|
return this->isCorrect;
|
|
54
54
|
}
|
|
55
|
-
void SetBitrate(
|
|
55
|
+
void SetBitrate(int64_t bitrate)
|
|
56
56
|
{
|
|
57
57
|
this->bitrate = bitrate;
|
|
58
58
|
}
|
|
@@ -60,7 +60,7 @@ namespace RTC
|
|
|
60
60
|
{
|
|
61
61
|
this->ssrcs = ssrcs;
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
int64_t GetBitrate() const
|
|
64
64
|
{
|
|
65
65
|
return this->bitrate;
|
|
66
66
|
}
|
|
@@ -76,13 +76,13 @@ namespace RTC
|
|
|
76
76
|
size_t GetSize() const override
|
|
77
77
|
{
|
|
78
78
|
// NOLINTNEXTLINE(bugprone-parent-virtual-call)
|
|
79
|
-
return FeedbackPsPacket::GetSize() + 8 + (
|
|
79
|
+
return FeedbackPsPacket::GetSize() + 8 + (4 * this->ssrcs.size());
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
private:
|
|
83
83
|
std::vector<uint32_t> ssrcs;
|
|
84
84
|
// Bitrate represented in bps.
|
|
85
|
-
|
|
85
|
+
int64_t bitrate{ 0 };
|
|
86
86
|
bool isCorrect{ true };
|
|
87
87
|
};
|
|
88
88
|
} // namespace RTCP
|
|
@@ -52,11 +52,11 @@ namespace RTC
|
|
|
52
52
|
{
|
|
53
53
|
this->ssrc = ssrc;
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
int64_t GetBitrate() const
|
|
56
56
|
{
|
|
57
57
|
return this->bitrate;
|
|
58
58
|
}
|
|
59
|
-
void SetBitrate(
|
|
59
|
+
void SetBitrate(int64_t bitrate)
|
|
60
60
|
{
|
|
61
61
|
this->bitrate = bitrate;
|
|
62
62
|
}
|
|
@@ -80,7 +80,7 @@ namespace RTC
|
|
|
80
80
|
|
|
81
81
|
private:
|
|
82
82
|
uint32_t ssrc{ 0 };
|
|
83
|
-
|
|
83
|
+
int64_t bitrate{ 0 };
|
|
84
84
|
uint16_t overhead{ 0 };
|
|
85
85
|
};
|
|
86
86
|
|
|
@@ -42,21 +42,25 @@ namespace RTC
|
|
|
42
42
|
class FeedbackRtpTransportPacket : public FeedbackRtpPacket
|
|
43
43
|
{
|
|
44
44
|
public:
|
|
45
|
-
|
|
46
|
-
static constexpr int64_t
|
|
45
|
+
// Receive deltas are expressed in multiples of this.
|
|
46
|
+
static constexpr int64_t DeltaTickUs = 250;
|
|
47
|
+
// The reference time is expressed in multiples of this.
|
|
48
|
+
static constexpr int64_t BaseTimeTickUs = DeltaTickUs * (1 << 8);
|
|
49
|
+
// Period after which the reference time wraps around.
|
|
50
|
+
static constexpr int64_t TimeWrapPeriodUs = BaseTimeTickUs * (1ll << 24);
|
|
47
51
|
|
|
48
52
|
public:
|
|
49
|
-
struct
|
|
53
|
+
struct PacketStatus
|
|
50
54
|
{
|
|
51
|
-
|
|
55
|
+
PacketStatus(uint16_t sequenceNumber, bool received)
|
|
52
56
|
: sequenceNumber(sequenceNumber), received(received)
|
|
53
57
|
{
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
uint16_t sequenceNumber; // Wide sequence number.
|
|
57
|
-
int16_t delta{ 0 }; // Delta.
|
|
61
|
+
int16_t delta{ 0 }; // Delta in DeltaTickUs units.
|
|
58
62
|
bool received{ false }; // Packet received or not.
|
|
59
|
-
int64_t
|
|
63
|
+
int64_t receivedAtUs{ 0 }; // Received time (us) in remote timestamp reference.
|
|
60
64
|
};
|
|
61
65
|
|
|
62
66
|
public:
|
|
@@ -100,8 +104,8 @@ namespace RTC
|
|
|
100
104
|
virtual void Dump(int indentation = 0) const = 0;
|
|
101
105
|
virtual uint16_t GetCount() const = 0;
|
|
102
106
|
virtual uint16_t GetReceivedStatusCount() const = 0;
|
|
103
|
-
virtual void
|
|
104
|
-
std::vector<struct
|
|
107
|
+
virtual void FillStatuses(
|
|
108
|
+
std::vector<struct PacketStatus>& packetStatuses, uint16_t& currentSequenceNumber) const = 0;
|
|
105
109
|
virtual size_t Serialize(uint8_t* buffer) = 0;
|
|
106
110
|
};
|
|
107
111
|
|
|
@@ -127,14 +131,14 @@ namespace RTC
|
|
|
127
131
|
return this->count;
|
|
128
132
|
}
|
|
129
133
|
uint16_t GetReceivedStatusCount() const override;
|
|
130
|
-
void
|
|
131
|
-
std::vector<struct
|
|
134
|
+
void FillStatuses(
|
|
135
|
+
std::vector<struct PacketStatus>& packetStatuses,
|
|
132
136
|
uint16_t& currentSequenceNumber) const override;
|
|
133
137
|
size_t Serialize(uint8_t* buffer) override;
|
|
134
138
|
|
|
135
139
|
private:
|
|
136
140
|
Status status{ Status::None };
|
|
137
|
-
uint16_t count{
|
|
141
|
+
uint16_t count{ 0 };
|
|
138
142
|
};
|
|
139
143
|
|
|
140
144
|
private:
|
|
@@ -155,8 +159,8 @@ namespace RTC
|
|
|
155
159
|
return this->statuses.size();
|
|
156
160
|
}
|
|
157
161
|
uint16_t GetReceivedStatusCount() const override;
|
|
158
|
-
void
|
|
159
|
-
std::vector<struct
|
|
162
|
+
void FillStatuses(
|
|
163
|
+
std::vector<struct PacketStatus>& packetStatuses,
|
|
160
164
|
uint16_t& currentSequenceNumber) const override;
|
|
161
165
|
size_t Serialize(uint8_t* buffer) override;
|
|
162
166
|
|
|
@@ -182,8 +186,8 @@ namespace RTC
|
|
|
182
186
|
return this->statuses.size();
|
|
183
187
|
}
|
|
184
188
|
uint16_t GetReceivedStatusCount() const override;
|
|
185
|
-
void
|
|
186
|
-
std::vector<struct
|
|
189
|
+
void FillStatuses(
|
|
190
|
+
std::vector<struct PacketStatus>& packetStatuses,
|
|
187
191
|
uint16_t& currentSequenceNumber) const override;
|
|
188
192
|
size_t Serialize(uint8_t* buffer) override;
|
|
189
193
|
|
|
@@ -200,6 +204,17 @@ namespace RTC
|
|
|
200
204
|
public:
|
|
201
205
|
static FeedbackRtpTransportPacket* Parse(const uint8_t* data, size_t len);
|
|
202
206
|
|
|
207
|
+
private:
|
|
208
|
+
/**
|
|
209
|
+
* Turn a number of whole base time ticks elapsed into the reference time
|
|
210
|
+
* that stands for it.
|
|
211
|
+
*
|
|
212
|
+
* @remarks
|
|
213
|
+
* - The reference time is a 24 bits signed integer, so it's kept sign
|
|
214
|
+
* extended, which is how parsing it back gives it.
|
|
215
|
+
*/
|
|
216
|
+
static int32_t TicksToReferenceTime(int64_t baseTimeTicks);
|
|
217
|
+
|
|
203
218
|
private:
|
|
204
219
|
static const ankerl::unordered_dense::map<Status, std::string> Status2String;
|
|
205
220
|
|
|
@@ -216,8 +231,8 @@ namespace RTC
|
|
|
216
231
|
{
|
|
217
232
|
return this->baseSet;
|
|
218
233
|
}
|
|
219
|
-
void SetBase(uint16_t sequenceNumber,
|
|
220
|
-
AddPacketResult AddPacket(uint16_t sequenceNumber,
|
|
234
|
+
void SetBase(uint16_t sequenceNumber, int64_t timestampUs);
|
|
235
|
+
AddPacketResult AddPacket(uint16_t sequenceNumber, int64_t timestampUs, size_t maxRtcpPacketLen);
|
|
221
236
|
// Just for locally generated packets.
|
|
222
237
|
void Finish();
|
|
223
238
|
bool IsFull() const
|
|
@@ -247,27 +262,27 @@ namespace RTC
|
|
|
247
262
|
{
|
|
248
263
|
return this->referenceTime;
|
|
249
264
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
int64_t
|
|
265
|
+
/**
|
|
266
|
+
* @remarks
|
|
267
|
+
* - Only used for testing purposes.
|
|
268
|
+
*/
|
|
269
|
+
void SetReferenceTimeUs(int64_t referenceTimeUs);
|
|
270
|
+
int64_t GetReferenceTimestampUs() const // Reference time in us.
|
|
256
271
|
{
|
|
257
|
-
return
|
|
272
|
+
return TimeWrapPeriodUs + (static_cast<int64_t>(this->referenceTime) * BaseTimeTickUs);
|
|
258
273
|
}
|
|
259
|
-
int64_t
|
|
274
|
+
int64_t GetBaseDeltaUs(const int64_t previousTimestampUs) const
|
|
260
275
|
{
|
|
261
|
-
int64_t delta =
|
|
276
|
+
int64_t delta = GetReferenceTimestampUs() - previousTimestampUs;
|
|
262
277
|
|
|
263
278
|
// Compensate for wrap around.
|
|
264
|
-
if (std::abs(delta -
|
|
279
|
+
if (std::abs(delta - TimeWrapPeriodUs) < std::abs(delta))
|
|
265
280
|
{
|
|
266
|
-
delta -=
|
|
281
|
+
delta -= TimeWrapPeriodUs;
|
|
267
282
|
}
|
|
268
|
-
else if (std::abs(delta +
|
|
283
|
+
else if (std::abs(delta + TimeWrapPeriodUs) < std::abs(delta))
|
|
269
284
|
{
|
|
270
|
-
delta +=
|
|
285
|
+
delta += TimeWrapPeriodUs;
|
|
271
286
|
}
|
|
272
287
|
|
|
273
288
|
return delta;
|
|
@@ -284,11 +299,11 @@ namespace RTC
|
|
|
284
299
|
{
|
|
285
300
|
return this->latestSequenceNumber;
|
|
286
301
|
}
|
|
287
|
-
|
|
302
|
+
int64_t GetLatestTimestampUs() const // Just for locally generated packets.
|
|
288
303
|
{
|
|
289
|
-
return this->
|
|
304
|
+
return this->latestTimestampUs;
|
|
290
305
|
}
|
|
291
|
-
std::vector<struct
|
|
306
|
+
std::vector<struct PacketStatus> GetPacketStatuses() const;
|
|
292
307
|
uint8_t GetPacketFractionLost() const;
|
|
293
308
|
|
|
294
309
|
/* Pure virtual methods inherited from Packet. */
|
|
@@ -324,20 +339,20 @@ namespace RTC
|
|
|
324
339
|
private:
|
|
325
340
|
// Whether baseSequenceNumber has been set.
|
|
326
341
|
bool baseSet{ false };
|
|
327
|
-
uint16_t baseSequenceNumber{
|
|
342
|
+
uint16_t baseSequenceNumber{ 0 };
|
|
328
343
|
// 24 bits signed integer.
|
|
329
344
|
int32_t referenceTime{ 0 };
|
|
330
345
|
// Just for locally generated packets.
|
|
331
|
-
uint16_t latestSequenceNumber{
|
|
346
|
+
uint16_t latestSequenceNumber{ 0 };
|
|
332
347
|
// Just for locally generated packets.
|
|
333
|
-
|
|
334
|
-
uint16_t packetStatusCount{
|
|
335
|
-
uint8_t feedbackPacketCount{
|
|
348
|
+
int64_t latestTimestampUs{ 0 };
|
|
349
|
+
uint16_t packetStatusCount{ 0 };
|
|
350
|
+
uint8_t feedbackPacketCount{ 0 };
|
|
336
351
|
std::vector<Chunk*> chunks;
|
|
337
352
|
std::vector<int16_t> deltas;
|
|
338
353
|
// Just for locally generated packets.
|
|
339
354
|
Context context;
|
|
340
|
-
size_t deltasAndChunksSize{
|
|
355
|
+
size_t deltasAndChunksSize{ 0 };
|
|
341
356
|
size_t size{ 0 };
|
|
342
357
|
bool isCorrect{ true };
|
|
343
358
|
};
|
|
@@ -20,8 +20,8 @@ namespace RTC
|
|
|
20
20
|
// capture system but an estimation that moves. Refreshing it for audio less often
|
|
21
21
|
// than for video would make receivers combine measurements taken at different
|
|
22
22
|
// instants, and that difference is lip sync error.
|
|
23
|
-
constexpr
|
|
24
|
-
constexpr
|
|
23
|
+
constexpr int64_t MaxAudioIntervalMs{ 1000 };
|
|
24
|
+
constexpr int64_t MaxVideoIntervalMs{ 1000 };
|
|
25
25
|
|
|
26
26
|
enum class Type : uint8_t
|
|
27
27
|
{
|
|
@@ -118,7 +118,7 @@ namespace RTC
|
|
|
118
118
|
}
|
|
119
119
|
virtual size_t GetCount() const
|
|
120
120
|
{
|
|
121
|
-
return
|
|
121
|
+
return 0;
|
|
122
122
|
}
|
|
123
123
|
virtual size_t GetSize() const = 0;
|
|
124
124
|
|
|
@@ -113,7 +113,7 @@ namespace RTC
|
|
|
113
113
|
|
|
114
114
|
private:
|
|
115
115
|
Header* header{ nullptr };
|
|
116
|
-
uint8_t raw[HeaderSize]{
|
|
116
|
+
uint8_t raw[HeaderSize]{ 0 };
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
class ReceiverReportPacket : public Packet
|
|
@@ -193,7 +193,7 @@ namespace RTC
|
|
|
193
193
|
// A serialized packet can contain a maximum of 31 reports.
|
|
194
194
|
// If number of reports exceeds 31 then the required number of packets
|
|
195
195
|
// will be serialized which will take the size calculated below.
|
|
196
|
-
size_t size = (Packet::CommonHeaderSize +
|
|
196
|
+
size_t size = (Packet::CommonHeaderSize + 4 /* this->ssrc */) *
|
|
197
197
|
((this->GetCount() / maxReportsPerPacket) + 1);
|
|
198
198
|
size += ReceiverReport::HeaderSize * this->GetCount();
|
|
199
199
|
|
|
@@ -202,7 +202,7 @@ namespace RTC
|
|
|
202
202
|
|
|
203
203
|
private:
|
|
204
204
|
// SSRC of packet sender.
|
|
205
|
-
uint32_t ssrc{
|
|
205
|
+
uint32_t ssrc{ 0 };
|
|
206
206
|
std::vector<ReceiverReport*> reports;
|
|
207
207
|
};
|
|
208
208
|
} // namespace RTCP
|
|
@@ -122,7 +122,7 @@ namespace RTC
|
|
|
122
122
|
size_t Serialize(uint8_t* buffer);
|
|
123
123
|
size_t GetSize() const
|
|
124
124
|
{
|
|
125
|
-
size_t size =
|
|
125
|
+
size_t size = 4 /*ssrc*/;
|
|
126
126
|
|
|
127
127
|
for (auto* item : this->items)
|
|
128
128
|
{
|
|
@@ -158,7 +158,7 @@ namespace RTC
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
private:
|
|
161
|
-
uint32_t ssrc{
|
|
161
|
+
uint32_t ssrc{ 0 };
|
|
162
162
|
std::vector<SdesItem*> items;
|
|
163
163
|
};
|
|
164
164
|
|
|
@@ -143,7 +143,7 @@ namespace RTC
|
|
|
143
143
|
}
|
|
144
144
|
size_t GetSize() const override
|
|
145
145
|
{
|
|
146
|
-
size_t size = Packet::CommonHeaderSize +
|
|
146
|
+
size_t size = Packet::CommonHeaderSize + 4 /*ssrc*/;
|
|
147
147
|
|
|
148
148
|
for (auto* report : this->reports)
|
|
149
149
|
{
|
|
@@ -154,7 +154,7 @@ namespace RTC
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
private:
|
|
157
|
-
uint32_t ssrc{
|
|
157
|
+
uint32_t ssrc{ 0 };
|
|
158
158
|
std::vector<ExtendedReportBlock*> reports;
|
|
159
159
|
};
|
|
160
160
|
} // namespace RTCP
|
|
@@ -29,7 +29,7 @@ namespace RTC
|
|
|
29
29
|
|
|
30
30
|
class PictureIdList
|
|
31
31
|
{
|
|
32
|
-
static constexpr uint16_t MaxCurrentLayerPictureIdNum{
|
|
32
|
+
static constexpr uint16_t MaxCurrentLayerPictureIdNum{ 1000 };
|
|
33
33
|
|
|
34
34
|
public:
|
|
35
35
|
explicit PictureIdList() = default;
|
|
@@ -93,8 +93,8 @@ namespace RTC
|
|
|
93
93
|
public:
|
|
94
94
|
struct Params
|
|
95
95
|
{
|
|
96
|
-
uint8_t spatialLayers{
|
|
97
|
-
uint8_t temporalLayers{
|
|
96
|
+
uint8_t spatialLayers{ 1 };
|
|
97
|
+
uint8_t temporalLayers{ 1 };
|
|
98
98
|
bool ksvc{ false };
|
|
99
99
|
};
|
|
100
100
|
|
|
@@ -158,11 +158,11 @@ namespace RTC
|
|
|
158
158
|
void Restore(RTP::Packet* packet) override;
|
|
159
159
|
uint8_t GetSpatialLayer() const override
|
|
160
160
|
{
|
|
161
|
-
return
|
|
161
|
+
return 0;
|
|
162
162
|
}
|
|
163
163
|
uint8_t GetTemporalLayer() const override
|
|
164
164
|
{
|
|
165
|
-
return this->payloadDescriptor->hasTlIndex ? this->payloadDescriptor->tlIndex :
|
|
165
|
+
return this->payloadDescriptor->hasTlIndex ? this->payloadDescriptor->tlIndex : 0;
|
|
166
166
|
}
|
|
167
167
|
bool IsKeyFrame() const override
|
|
168
168
|
{
|
|
@@ -141,11 +141,11 @@ namespace RTC
|
|
|
141
141
|
}
|
|
142
142
|
uint8_t GetSpatialLayer() const override
|
|
143
143
|
{
|
|
144
|
-
return this->payloadDescriptor->hasSlIndex ? this->payloadDescriptor->slIndex :
|
|
144
|
+
return this->payloadDescriptor->hasSlIndex ? this->payloadDescriptor->slIndex : 0;
|
|
145
145
|
}
|
|
146
146
|
uint8_t GetTemporalLayer() const override
|
|
147
147
|
{
|
|
148
|
-
return this->payloadDescriptor->hasTlIndex ? this->payloadDescriptor->tlIndex :
|
|
148
|
+
return this->payloadDescriptor->hasTlIndex ? this->payloadDescriptor->tlIndex : 0;
|
|
149
149
|
}
|
|
150
150
|
bool IsKeyFrame() const override
|
|
151
151
|
{
|