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.
Files changed (310) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/node/lib/DataConsumer.js +1 -1
  3. package/node/lib/Router.js +1 -1
  4. package/node/lib/Transport.js +15 -15
  5. package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts +2 -6
  6. package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts.map +1 -1
  7. package/node/lib/fbs/rtp-parameters/encoding-mapping.js +7 -19
  8. package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.d.ts +4 -4
  9. package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +2 -2
  10. package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts +5 -5
  11. package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts.map +1 -1
  12. package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +3 -3
  13. package/node/lib/fbs/rtp-stream/recv-stats.d.ts +5 -5
  14. package/node/lib/fbs/rtp-stream/recv-stats.d.ts.map +1 -1
  15. package/node/lib/fbs/rtp-stream/recv-stats.js +3 -3
  16. package/node/lib/fbs/rtp-stream/send-stats.d.ts +5 -5
  17. package/node/lib/fbs/rtp-stream/send-stats.d.ts.map +1 -1
  18. package/node/lib/fbs/rtp-stream/send-stats.js +3 -3
  19. package/node/lib/fbs/transport/bwe-trace-info.d.ts +23 -23
  20. package/node/lib/fbs/transport/bwe-trace-info.d.ts.map +1 -1
  21. package/node/lib/fbs/transport/bwe-trace-info.js +15 -15
  22. package/node/lib/fbs/transport/options.d.ts +5 -5
  23. package/node/lib/fbs/transport/options.js +2 -2
  24. package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts +5 -5
  25. package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts.map +1 -1
  26. package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +3 -3
  27. package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts +5 -5
  28. package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts.map +1 -1
  29. package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +3 -3
  30. package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts +5 -5
  31. package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts.map +1 -1
  32. package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +3 -3
  33. package/node/lib/fbs/transport/stats.d.ts +38 -38
  34. package/node/lib/fbs/transport/stats.d.ts.map +1 -1
  35. package/node/lib/fbs/transport/stats.js +25 -25
  36. package/node/lib/ortc.d.ts +0 -1
  37. package/node/lib/ortc.d.ts.map +1 -1
  38. package/node/lib/ortc.js +1 -2
  39. package/node/lib/rtpParametersFbsUtils.d.ts.map +1 -1
  40. package/node/lib/rtpParametersFbsUtils.js +2 -2
  41. package/package.json +9 -9
  42. package/worker/deps/libwebrtc/libwebrtc/call/rtp_transport_controller_send.cc +10 -10
  43. package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +6 -6
  44. package/worker/deps/libwebrtc/libwebrtc/modules/congestion_controller/goog_cc/alr_detector.cc +1 -1
  45. package/worker/deps/libwebrtc/libwebrtc/modules/pacing/paced_sender.cc +7 -7
  46. package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h +1 -1
  47. package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc +1 -1
  48. package/worker/fbs/rtpParameters.fbs +1 -2
  49. package/worker/fbs/rtpStream.fbs +3 -3
  50. package/worker/fbs/transport.fbs +23 -23
  51. package/worker/fuzzer/include/RTC/FuzzerDtlsTransport.hpp +4 -1
  52. package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
  53. package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +8 -5
  54. package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +3 -3
  55. package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +6 -6
  56. package/worker/fuzzer/src/RTC/RTCP/FuzzerFeedbackRtpTransport.cpp +3 -3
  57. package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +2 -2
  58. package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +5 -5
  59. package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +3 -3
  60. package/worker/fuzzer/src/fuzzer.cpp +4 -0
  61. package/worker/include/Channel/ChannelNotification.hpp +3 -3
  62. package/worker/include/Channel/ChannelRequest.hpp +1 -1
  63. package/worker/include/Channel/ChannelSocket.hpp +11 -0
  64. package/worker/include/DepLibUV.hpp +16 -33
  65. package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -11
  66. package/worker/include/RTC/AudioLevelObserver.hpp +4 -4
  67. package/worker/include/RTC/BWE/AcknowledgedBitrateEstimatorInterface.hpp +55 -0
  68. package/worker/include/RTC/BWE/AimdRateControl.hpp +190 -0
  69. package/worker/include/RTC/BWE/BweTypes.hpp +211 -0
  70. package/worker/include/RTC/BWE/DelayBasedBwe.hpp +173 -0
  71. package/worker/include/RTC/BWE/FeedbackAdapter.hpp +72 -0
  72. package/worker/include/RTC/BWE/InterArrivalDelta.hpp +106 -0
  73. package/worker/include/RTC/BWE/LinkCapacityEstimator.hpp +84 -0
  74. package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +94 -0
  75. package/worker/include/RTC/BWE/SendPacketHistory.hpp +137 -0
  76. package/worker/include/RTC/BWE/TrendlineEstimator.hpp +101 -0
  77. package/worker/include/RTC/Consts.hpp +6 -6
  78. package/worker/include/RTC/Consumer.hpp +14 -12
  79. package/worker/include/RTC/DataConsumer.hpp +3 -3
  80. package/worker/include/RTC/DataProducer.hpp +3 -3
  81. package/worker/include/RTC/DtlsTransport.hpp +5 -2
  82. package/worker/include/RTC/ICE/IceCandidate.hpp +2 -2
  83. package/worker/include/RTC/ICE/IceServer.hpp +3 -3
  84. package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
  85. package/worker/include/RTC/NEW_RTCP/packet/Packet.hpp +1 -1
  86. package/worker/include/RTC/NackGenerator.hpp +12 -12
  87. package/worker/include/RTC/PipeProducerStreamManager.hpp +3 -4
  88. package/worker/include/RTC/PipeTransport.hpp +18 -5
  89. package/worker/include/RTC/PlainTransport.hpp +18 -5
  90. package/worker/include/RTC/PortManager.hpp +4 -4
  91. package/worker/include/RTC/Producer.hpp +21 -12
  92. package/worker/include/RTC/ProducerStreamManager.hpp +12 -6
  93. package/worker/include/RTC/RTCP/Bye.hpp +2 -2
  94. package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +4 -4
  95. package/worker/include/RTC/RTCP/FeedbackRtpTmmb.hpp +3 -3
  96. package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +54 -39
  97. package/worker/include/RTC/RTCP/Packet.hpp +3 -3
  98. package/worker/include/RTC/RTCP/ReceiverReport.hpp +3 -3
  99. package/worker/include/RTC/RTCP/Sdes.hpp +2 -2
  100. package/worker/include/RTC/RTCP/XR.hpp +2 -2
  101. package/worker/include/RTC/RTCP/XrDelaySinceLastRr.hpp +1 -1
  102. package/worker/include/RTC/RTP/Codecs/H264.hpp +1 -1
  103. package/worker/include/RTC/RTP/Codecs/Opus.hpp +2 -2
  104. package/worker/include/RTC/RTP/Codecs/PayloadDescriptorHandler.hpp +3 -3
  105. package/worker/include/RTC/RTP/Codecs/VP8.hpp +2 -2
  106. package/worker/include/RTC/RTP/Codecs/VP9.hpp +2 -2
  107. package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +12 -12
  108. package/worker/include/RTC/RTP/Packet.hpp +13 -13
  109. package/worker/include/RTC/RTP/ProbationGenerator.hpp +1 -1
  110. package/worker/include/RTC/RTP/RetransmissionBuffer.hpp +7 -7
  111. package/worker/include/RTC/RTP/RtpStream.hpp +37 -51
  112. package/worker/include/RTC/RTP/RtpStreamRecv.hpp +59 -41
  113. package/worker/include/RTC/RTP/RtpStreamSend.hpp +20 -14
  114. package/worker/include/RTC/RTP/RtxStream.hpp +12 -13
  115. package/worker/include/RTC/RateCalculator.hpp +50 -44
  116. package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +5 -4
  117. package/worker/include/RTC/RemoteClockOffsetEstimator.hpp +11 -11
  118. package/worker/include/RTC/Router.hpp +6 -0
  119. package/worker/include/RTC/RtcLogger.hpp +1 -1
  120. package/worker/include/RTC/RtpDictionaries.hpp +10 -10
  121. package/worker/include/RTC/SCTP/association/Association.hpp +56 -28
  122. package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +4 -4
  123. package/worker/include/RTC/SCTP/association/StateCookie.hpp +14 -14
  124. package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +2 -2
  125. package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +12 -12
  126. package/worker/include/RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp +4 -4
  127. package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
  128. package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +3 -3
  129. package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +4 -1
  130. package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +1 -1
  131. package/worker/include/RTC/SCTP/public/SctpOptions.hpp +12 -12
  132. package/worker/include/RTC/SCTP/public/SctpTypes.hpp +1 -1
  133. package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +15 -16
  134. package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +7 -8
  135. package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +20 -16
  136. package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +5 -6
  137. package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +2 -2
  138. package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +5 -5
  139. package/worker/include/RTC/SctpDictionaries.hpp +3 -3
  140. package/worker/include/RTC/Serializable.hpp +1 -1
  141. package/worker/include/RTC/SimpleProducerStreamManager.hpp +3 -4
  142. package/worker/include/RTC/SimulcastProducerStreamManager.hpp +6 -7
  143. package/worker/include/RTC/SvcProducerStreamManager.hpp +6 -5
  144. package/worker/include/RTC/TcpConnection.hpp +9 -3
  145. package/worker/include/RTC/TcpServer.hpp +3 -0
  146. package/worker/include/RTC/Transport.hpp +52 -45
  147. package/worker/include/RTC/TransportCongestionControlClient.hpp +30 -25
  148. package/worker/include/RTC/TransportCongestionControlServer.hpp +17 -17
  149. package/worker/include/RTC/TrendCalculator.hpp +5 -5
  150. package/worker/include/RTC/UdpSocket.hpp +11 -2
  151. package/worker/include/RTC/WebRtcServer.hpp +20 -5
  152. package/worker/include/RTC/WebRtcTransport.hpp +35 -10
  153. package/worker/include/Settings.hpp +4 -2
  154. package/worker/include/Shared.hpp +5 -20
  155. package/worker/include/SharedInterface.hpp +6 -28
  156. package/worker/include/Utils.hpp +40 -21
  157. package/worker/include/common.hpp +4 -0
  158. package/worker/include/handles/BackoffTimerHandle.hpp +4 -4
  159. package/worker/include/handles/BackoffTimerHandleInterface.hpp +5 -5
  160. package/worker/include/handles/TcpConnectionHandle.hpp +6 -6
  161. package/worker/include/handles/TcpServerHandle.hpp +1 -1
  162. package/worker/include/handles/TimerHandle.hpp +15 -9
  163. package/worker/include/handles/TimerHandleInterface.hpp +10 -4
  164. package/worker/include/handles/UdpSocketHandle.hpp +3 -3
  165. package/worker/include/handles/UnixStreamSocketHandle.hpp +2 -2
  166. package/worker/meson.build +81 -36
  167. package/worker/meson_options.txt +1 -0
  168. package/worker/mocks/include/MockShared.hpp +24 -23
  169. package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +51 -27
  170. package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +11 -11
  171. package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +10 -10
  172. package/worker/mocks/include/handles/MockTimerHandle.hpp +60 -22
  173. package/worker/mocks/src/MockShared.cpp +51 -5
  174. package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +29 -15
  175. package/worker/mocks/src/handles/MockTimerHandle.cpp +117 -0
  176. package/worker/scripts/clang-scripts.mjs +2 -2
  177. package/worker/src/Channel/ChannelNotification.cpp +5 -6
  178. package/worker/src/Channel/ChannelSocket.cpp +20 -2
  179. package/worker/src/DepLibUV.cpp +4 -5
  180. package/worker/src/RTC/ActiveSpeakerObserver.cpp +59 -47
  181. package/worker/src/RTC/AudioLevelObserver.cpp +7 -7
  182. package/worker/src/RTC/BWE/AimdRateControl.cpp +468 -0
  183. package/worker/src/RTC/BWE/BweTypes.cpp +61 -0
  184. package/worker/src/RTC/BWE/DelayBasedBwe.cpp +275 -0
  185. package/worker/src/RTC/BWE/FeedbackAdapter.cpp +148 -0
  186. package/worker/src/RTC/BWE/InterArrivalDelta.cpp +181 -0
  187. package/worker/src/RTC/BWE/LinkCapacityEstimator.cpp +133 -0
  188. package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +245 -0
  189. package/worker/src/RTC/BWE/SendPacketHistory.cpp +184 -0
  190. package/worker/src/RTC/BWE/TrendlineEstimator.cpp +233 -0
  191. package/worker/src/RTC/Consumer.cpp +48 -35
  192. package/worker/src/RTC/DataConsumer.cpp +4 -4
  193. package/worker/src/RTC/DataProducer.cpp +3 -3
  194. package/worker/src/RTC/DirectTransport.cpp +2 -2
  195. package/worker/src/RTC/DtlsTransport.cpp +14 -11
  196. package/worker/src/RTC/ICE/IceServer.cpp +2 -2
  197. package/worker/src/RTC/KeyFrameRequestManager.cpp +16 -12
  198. package/worker/src/RTC/NackGenerator.cpp +12 -12
  199. package/worker/src/RTC/PipeProducerStreamManager.cpp +6 -6
  200. package/worker/src/RTC/PipeTransport.cpp +16 -13
  201. package/worker/src/RTC/PlainTransport.cpp +25 -16
  202. package/worker/src/RTC/Producer.cpp +50 -36
  203. package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +13 -6
  204. package/worker/src/RTC/RTCP/FeedbackRtpTmmb.cpp +14 -5
  205. package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +76 -50
  206. package/worker/src/RTC/RTP/Codecs/VP8.cpp +1 -1
  207. package/worker/src/RTC/RTP/Codecs/VP9.cpp +4 -4
  208. package/worker/src/RTC/RTP/Packet.cpp +9 -10
  209. package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +6 -6
  210. package/worker/src/RTC/RTP/RtpStream.cpp +19 -19
  211. package/worker/src/RTC/RTP/RtpStreamRecv.cpp +146 -81
  212. package/worker/src/RTC/RTP/RtpStreamSend.cpp +49 -44
  213. package/worker/src/RTC/RTP/RtxStream.cpp +7 -10
  214. package/worker/src/RTC/RateCalculator.cpp +99 -136
  215. package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +13 -13
  216. package/worker/src/RTC/RemoteClockOffsetEstimator.cpp +18 -17
  217. package/worker/src/RTC/Router.cpp +18 -1
  218. package/worker/src/RTC/RtpDictionaries/RtpEncodingParameters.cpp +5 -2
  219. package/worker/src/RTC/SCTP/association/Association.cpp +131 -102
  220. package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +4 -4
  221. package/worker/src/RTC/SCTP/association/Capabilities.cpp +1 -1
  222. package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +25 -18
  223. package/worker/src/RTC/SCTP/association/StateCookie.cpp +7 -6
  224. package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +16 -13
  225. package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +28 -26
  226. package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +0 -1
  227. package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
  228. package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +1 -1
  229. package/worker/src/RTC/SCTP/public/SctpOptions.cpp +13 -13
  230. package/worker/src/RTC/SCTP/rx/DataTracker.cpp +1 -1
  231. package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +5 -5
  232. package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +15 -15
  233. package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +15 -15
  234. package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +29 -26
  235. package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +12 -11
  236. package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +4 -4
  237. package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +2 -2
  238. package/worker/src/RTC/SimpleProducerStreamManager.cpp +10 -10
  239. package/worker/src/RTC/SimulcastProducerStreamManager.cpp +39 -37
  240. package/worker/src/RTC/SvcProducerStreamManager.cpp +39 -25
  241. package/worker/src/RTC/TcpConnection.cpp +9 -3
  242. package/worker/src/RTC/TcpServer.cpp +7 -2
  243. package/worker/src/RTC/Transport.cpp +242 -302
  244. package/worker/src/RTC/TransportCongestionControlClient.cpp +78 -71
  245. package/worker/src/RTC/TransportCongestionControlServer.cpp +38 -40
  246. package/worker/src/RTC/TrendCalculator.cpp +3 -3
  247. package/worker/src/RTC/UdpSocket.cpp +14 -3
  248. package/worker/src/RTC/WebRtcServer.cpp +20 -14
  249. package/worker/src/RTC/WebRtcTransport.cpp +35 -30
  250. package/worker/src/Settings.cpp +10 -0
  251. package/worker/src/Shared.cpp +2 -2
  252. package/worker/src/Utils/Crypto.cpp +2 -2
  253. package/worker/src/Worker.cpp +5 -1
  254. package/worker/src/handles/BackoffTimerHandle.cpp +24 -11
  255. package/worker/src/handles/TimerHandle.cpp +74 -25
  256. package/worker/src/lib.cpp +6 -0
  257. package/worker/tasks.py +171 -44
  258. package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +117 -0
  259. package/worker/test/src/RTC/BWE/TestAimdRateControl.cpp +400 -0
  260. package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +568 -0
  261. package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +546 -0
  262. package/worker/test/src/RTC/BWE/TestInterArrivalDelta.cpp +301 -0
  263. package/worker/test/src/RTC/BWE/TestLinkCapacityEstimator.cpp +115 -0
  264. package/worker/test/src/RTC/BWE/TestRobustThroughputEstimator.cpp +433 -0
  265. package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +259 -0
  266. package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +137 -0
  267. package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +171 -0
  268. package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +1 -1
  269. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +1 -1
  270. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTransport.cpp +246 -208
  271. package/worker/test/src/RTC/RTP/TestPacket.cpp +11 -11
  272. package/worker/test/src/RTC/RTP/TestRetransmissionBuffer.cpp +12 -12
  273. package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +23 -16
  274. package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +13 -13
  275. package/worker/test/src/RTC/SCTP/association/TestAssociation.cpp +27 -22
  276. package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +21 -15
  277. package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +6 -6
  278. package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +17 -13
  279. package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +3 -3
  280. package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +2 -2
  281. package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +23 -23
  282. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
  283. package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +1 -1
  284. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
  285. package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +37 -37
  286. package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +10 -10
  287. package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +1 -1
  288. package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +93 -93
  289. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +247 -247
  290. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +100 -80
  291. package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +163 -163
  292. package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +76 -77
  293. package/worker/test/src/RTC/TestConsumer.cpp +8 -3
  294. package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +3 -3
  295. package/worker/test/src/RTC/TestNackGenerator.cpp +3 -3
  296. package/worker/test/src/RTC/TestPipeProducerStreamManager.cpp +5 -5
  297. package/worker/test/src/RTC/TestRateCalculator.cpp +110 -14
  298. package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +22 -17
  299. package/worker/test/src/RTC/TestRemoteClockOffsetEstimator.cpp +87 -85
  300. package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +54 -47
  301. package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +83 -69
  302. package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +76 -65
  303. package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +72 -66
  304. package/worker/test/src/RTC/TestTransportTuple.cpp +19 -4
  305. package/worker/test/src/TestDepLibUV.cpp +19 -0
  306. package/worker/test/src/Utils/TestTime.cpp +57 -26
  307. package/worker/test/src/testHelpers.cpp +1 -1
  308. package/worker/test/src/tests.cpp +6 -0
  309. package/worker/include/RTC/SenderBandwidthEstimator.hpp +0 -118
  310. package/worker/src/RTC/SenderBandwidthEstimator.cpp +0 -269
@@ -74,6 +74,11 @@ namespace
74
74
  {
75
75
  return 0;
76
76
  }
77
+
78
+ void OnRtpStreamSpatialLayerActivityChanged(
79
+ RTC::RTP::RtpStreamRecv* /*rtpStream*/, uint8_t /*spatialLayer*/, bool /*isActive*/) override
80
+ {
81
+ }
77
82
  };
78
83
 
79
84
  class MockEncodingContext : public RTC::RTP::Codecs::EncodingContext
@@ -144,10 +149,10 @@ namespace
144
149
  RtpStreamRecvListener streamRecvListener; // NOLINT(readability-identifier-naming)
145
150
 
146
151
  // NOLINTNEXTLINE(readability-identifier-naming)
147
- mocks::MockShared shared(/*getTimeMs*/
148
- []()
152
+ mocks::MockShared shared(/*getTimeUs*/
153
+ []() -> int64_t
149
154
  {
150
- return DepLibUV::GetTimeMs();
155
+ return DepLibUV::GetTimeUs();
151
156
  }); // NOLINT(readability-identifier-naming)
152
157
 
153
158
  std::unique_ptr<RTC::SimulcastProducerStreamManager> createManager(
@@ -179,7 +184,7 @@ namespace
179
184
  kind,
180
185
  keyFrameSupported,
181
186
  listener,
182
- &shared);
187
+ std::addressof(shared));
183
188
  }
184
189
 
185
190
  std::unique_ptr<RTC::RTP::RtpStreamRecv> createRtpStreamRecv(uint32_t ssrc)
@@ -189,7 +194,8 @@ namespace
189
194
  params.ssrc = ssrc;
190
195
  params.clockRate = 90000;
191
196
 
192
- return std::make_unique<RTC::RTP::RtpStreamRecv>(&streamRecvListener, &shared, params, 0u, false);
197
+ return std::make_unique<RTC::RTP::RtpStreamRecv>(
198
+ std::addressof(streamRecvListener), std::addressof(shared), params, 0u, false);
193
199
  }
194
200
 
195
201
  // Feed packets into the RtpStreamRecv so GetBitrate() returns non-zero.
@@ -201,15 +207,15 @@ namespace
201
207
  for (uint16_t seq = firstSeq; Utils::Number::IsLowerThan<uint16_t>(seq, lastSeq); ++seq)
202
208
  {
203
209
  packet->SetSequenceNumber(seq);
204
- rtpStream->ReceivePacket(packet);
210
+ rtpStream->ReceivePacket(packet, shared.GetTimeUs());
205
211
  }
206
212
 
207
- auto nowMs = DepLibUV::GetTimeMs();
213
+ const int64_t nowMs = DepLibUV::GetTimeMs();
208
214
 
209
215
  // bitrate (bps) = totalBytes * 8000 / windowSizeMs.
210
216
  // windowSizeMs for RtpStreamRecv is 2500.
211
- auto expectedBitrate =
212
- static_cast<uint32_t>(std::trunc((count * packet->GetLength() * 8000.0f / 2500) + 0.5f));
217
+ const auto expectedBitrate =
218
+ static_cast<int64_t>(std::trunc((count * packet->GetLength() * 8000.0f / 2500) + 0.5f));
213
219
 
214
220
  REQUIRE(rtpStream->GetBitrate(nowMs) == expectedBitrate);
215
221
  }
@@ -228,7 +234,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
228
234
  SECTION("ProcessRtpPacket() returns DROP when target temporal layer is -1")
229
235
  {
230
236
  MockListener listener;
231
- auto manager = createManager(&listener);
237
+ auto manager = createManager(std::addressof(listener));
232
238
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
233
239
 
234
240
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -261,7 +267,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
261
267
  "ProcessRtpPacket() returns BUFFER when sync required and packet is from target spatial layer but not keyframe")
262
268
  {
263
269
  MockListener listener;
264
- auto manager = createManager(&listener);
270
+ auto manager = createManager(std::addressof(listener));
265
271
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
266
272
 
267
273
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -281,7 +287,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
281
287
  SECTION("ProcessRtpPacket() requires keyframe for spatial layer switch")
282
288
  {
283
289
  MockListener listener;
284
- auto manager = createManager(&listener);
290
+ auto manager = createManager(std::addressof(listener));
285
291
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
286
292
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
287
293
 
@@ -338,7 +344,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
338
344
  SECTION("ProcessRtpPacket() returns SILENT_DROP for non-target and non-current spatial layer packet")
339
345
  {
340
346
  MockListener listener;
341
- auto manager = createManager(&listener);
347
+ auto manager = createManager(std::addressof(listener));
342
348
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
343
349
 
344
350
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -373,7 +379,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
373
379
  "ProcessRtpPacket() returns SILENT_DROP when sync required and packet is from non-target spatial layer")
374
380
  {
375
381
  MockListener listener;
376
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs);
382
+ auto manager = createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs);
377
383
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
378
384
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
379
385
 
@@ -396,7 +402,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
396
402
  SECTION("ProcessRtpPacket() returns FORWARD with sendBufferedPackets when syncing with a keyframe")
397
403
  {
398
404
  MockListener listener;
399
- auto manager = createManager(&listener);
405
+ auto manager = createManager(std::addressof(listener));
400
406
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
401
407
 
402
408
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -423,7 +429,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
423
429
  {
424
430
  MockListener listener;
425
431
  auto manager = createManager(
426
- &listener,
432
+ std::addressof(listener),
427
433
  /*ssrcs*/ ThreeSsrcs,
428
434
  /*preferredLayers*/ { 2, 2 },
429
435
  /*keyFrameSupported*/ false);
@@ -449,7 +455,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
449
455
  {
450
456
  MockListener listener;
451
457
  auto manager = createManager(
452
- &listener,
458
+ std::addressof(listener),
453
459
  /*ssrcs*/ ThreeSsrcs,
454
460
  /*preferredLayers*/ { 2, 2 },
455
461
  /*keyFrameSupported*/ false);
@@ -478,7 +484,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
478
484
  {
479
485
  MockListener listener;
480
486
  auto manager = createManager(
481
- &listener,
487
+ std::addressof(listener),
482
488
  /*ssrcs*/ ThreeSsrcs,
483
489
  /*preferredLayers*/ { 2, 2 },
484
490
  /*keyFrameSupported*/ false);
@@ -507,7 +513,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
507
513
  {
508
514
  MockListener listener;
509
515
  auto manager = createManager(
510
- &listener,
516
+ std::addressof(listener),
511
517
  /*ssrcs*/ ThreeSsrcs,
512
518
  /*preferredLayers*/ { 2, 2 },
513
519
  /*keyFrameSupported*/ false);
@@ -537,7 +543,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
537
543
  {
538
544
  MockListener listener;
539
545
  auto manager = createManager(
540
- &listener,
546
+ std::addressof(listener),
541
547
  /*ssrcs*/ TwoSsrcs,
542
548
  /*preferredLayers*/ { 1, 0 },
543
549
  /*keyFrameSupported*/ false);
@@ -590,7 +596,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
590
596
  {
591
597
  MockListener listener;
592
598
  auto manager = createManager(
593
- &listener,
599
+ std::addressof(listener),
594
600
  /*ssrcs*/ OneSsrc,
595
601
  /*preferredLayers*/ { 0, 0 },
596
602
  /*keyFrameSupported*/ false);
@@ -632,7 +638,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
632
638
  SECTION("OnTransportConnected() requests keyframe when active and target changes")
633
639
  {
634
640
  MockListener listener;
635
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
641
+ auto manager =
642
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
636
643
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
637
644
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
638
645
 
@@ -673,7 +680,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
673
680
  MockListener listener;
674
681
  listener.isActive = false;
675
682
 
676
- auto manager = createManager(&listener);
683
+ auto manager = createManager(std::addressof(listener));
677
684
 
678
685
  // Don't wire producerRtpStream — manager is not active.
679
686
  manager->OnTransportConnected();
@@ -684,7 +691,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
684
691
  SECTION("RecalculateTargetLayers() skips spatial layer without capture instant")
685
692
  {
686
693
  MockListener listener;
687
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
694
+ auto manager =
695
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
688
696
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
689
697
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
690
698
 
@@ -736,7 +744,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
736
744
  SECTION("RecalculateTargetLayers() switches to preferred layer once its capture instant is known")
737
745
  {
738
746
  MockListener listener;
739
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
747
+ auto manager =
748
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
740
749
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
741
750
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
742
751
 
@@ -762,8 +771,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
762
771
 
763
772
  // Both layers hold RTP timestamp 1000 and both were captured at the same instant,
764
773
  // which is what makes them alignable to each other.
765
- rtpStream0->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
766
- rtpStream1->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
774
+ rtpStream0->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
775
+ rtpStream1->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
767
776
 
768
777
  // Feed packets to both streams so ReceiveRtcpSenderReport's UpdateScore
769
778
  // doesn't drop the score to 0.
@@ -779,14 +788,14 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
779
788
  sr0.SetNtpSec(1000);
780
789
  sr0.SetNtpFrac(0);
781
790
  sr0.SetRtpTs(90000);
782
- rtpStream0->ReceiveRtcpSenderReport(&sr0);
791
+ rtpStream0->ReceiveRtcpSenderReport(std::addressof(sr0), shared.GetTimeUs());
783
792
 
784
793
  RTC::RTCP::SenderReport sr1;
785
794
  sr1.SetSsrc(MappedSsrc1);
786
795
  sr1.SetNtpSec(1000);
787
796
  sr1.SetNtpFrac(0);
788
797
  sr1.SetRtpTs(90000);
789
- rtpStream1->ReceiveRtcpSenderReport(&sr1);
798
+ rtpStream1->ReceiveRtcpSenderReport(std::addressof(sr1), shared.GetTimeUs());
790
799
 
791
800
  // Notify the manager about the first Sender Report for layer 1.
792
801
  // This triggers MayChangeLayers() -> RecalculateTargetLayers().
@@ -817,7 +826,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
817
826
  SECTION("ProcessRtpPacket() calculates tsOffset from the capture instant of both layers")
818
827
  {
819
828
  MockListener listener;
820
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
829
+ auto manager =
830
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
821
831
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
822
832
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
823
833
 
@@ -840,8 +850,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
840
850
 
841
851
  // Both layers hold RTP timestamp 1000, but the one of layer 1 was captured 500 ms
842
852
  // before the one of layer 0, so its RTP timeline runs 45000 ticks ahead.
843
- rtpStream0->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
844
- rtpStream1->SetCaptureMapping(/*captureMs*/ 500, /*ts*/ 1000);
853
+ rtpStream0->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
854
+ rtpStream1->SetCaptureMapping(/*captureAtUs*/ 500 * 1000, /*ts*/ 1000);
845
855
 
846
856
  packet->SetSsrc(MappedSsrc0);
847
857
  feedRtpStreamRecv(rtpStream0.get(), packet.get(), 10);
@@ -855,14 +865,14 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
855
865
  sr0.SetNtpSec(1000);
856
866
  sr0.SetNtpFrac(0);
857
867
  sr0.SetRtpTs(90000);
858
- rtpStream0->ReceiveRtcpSenderReport(&sr0);
868
+ rtpStream0->ReceiveRtcpSenderReport(std::addressof(sr0), shared.GetTimeUs());
859
869
 
860
870
  RTC::RTCP::SenderReport sr1;
861
871
  sr1.SetSsrc(MappedSsrc1);
862
872
  sr1.SetNtpSec(1000);
863
873
  sr1.SetNtpFrac(0);
864
874
  sr1.SetRtpTs(90000);
865
- rtpStream1->ReceiveRtcpSenderReport(&sr1);
875
+ rtpStream1->ReceiveRtcpSenderReport(std::addressof(sr1), shared.GetTimeUs());
866
876
 
867
877
  manager->ProducerRtcpSenderReport(rtpStream1.get(), /*first*/ true);
868
878
 
@@ -891,7 +901,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
891
901
  {
892
902
  MockListener listener;
893
903
  auto manager = createManager(
894
- &listener,
904
+ std::addressof(listener),
895
905
  /*ssrcs*/ TwoSsrcs,
896
906
  /*preferredLayers*/ { 1, 0 },
897
907
  /*keyFrameSupported*/ false);
@@ -903,7 +913,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
903
913
 
904
914
  // Only layer 0 can tell its capture instant, so it remains the TS reference one and
905
915
  // layer 1 cannot be aligned to it yet.
906
- rtpStream0->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
916
+ rtpStream0->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
907
917
 
908
918
  // Set target layer to 0 and sync. This sets tsReferenceSpatialLayer = 0.
909
919
  manager->UpdateTargetLayers(0, 0);
@@ -933,7 +943,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
933
943
 
934
944
  // Once layer 1 can tell its capture instant the switch completes with the proper
935
945
  // offset.
936
- rtpStream1->SetCaptureMapping(/*captureMs*/ 500, /*ts*/ 1000);
946
+ rtpStream1->SetCaptureMapping(/*captureAtUs*/ 500 * 1000, /*ts*/ 1000);
937
947
 
938
948
  packet->SetSequenceNumber(2);
939
949
 
@@ -952,7 +962,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
952
962
  {
953
963
  MockListener listener;
954
964
  auto manager = createManager(
955
- &listener,
965
+ std::addressof(listener),
956
966
  /*ssrcs*/ TwoSsrcs,
957
967
  /*preferredLayers*/ { 1, 0 },
958
968
  /*keyFrameSupported*/ false);
@@ -976,7 +986,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
976
986
  sr.SetNtpSec(1000);
977
987
  sr.SetNtpFrac(0);
978
988
  sr.SetRtpTs(90000);
979
- rtpStream->ReceiveRtcpSenderReport(&sr);
989
+ rtpStream->ReceiveRtcpSenderReport(std::addressof(sr), shared.GetTimeUs());
980
990
  }
981
991
 
982
992
  // Set target layer to 0 and sync. This sets tsReferenceSpatialLayer = 0.
@@ -1016,15 +1026,16 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1016
1026
  "one of its stream")
1017
1027
  {
1018
1028
  MockListener listener;
1019
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1029
+ auto manager =
1030
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1020
1031
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1021
1032
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
1022
1033
 
1023
1034
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
1024
1035
  manager->ProducerRtpStream(rtpStream1.get(), MappedSsrc1);
1025
1036
 
1026
- rtpStream0->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
1027
- rtpStream1->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
1037
+ rtpStream0->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
1038
+ rtpStream1->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
1028
1039
 
1029
1040
  // Feed packets and a Sender Report to both streams so that they get a score and
1030
1041
  // RecalculateTargetLayers() takes them into account.
@@ -1038,7 +1049,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1038
1049
  sr.SetNtpSec(1000);
1039
1050
  sr.SetNtpFrac(0);
1040
1051
  sr.SetRtpTs(90000);
1041
- rtpStream->ReceiveRtcpSenderReport(&sr);
1052
+ rtpStream->ReceiveRtcpSenderReport(std::addressof(sr), shared.GetTimeUs());
1042
1053
  }
1043
1054
 
1044
1055
  // Set target layer to 0. This sets tsReferenceSpatialLayer = 0.
@@ -1058,7 +1069,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1058
1069
  {
1059
1070
  MockListener listener;
1060
1071
  auto manager = createManager(
1061
- &listener,
1072
+ std::addressof(listener),
1062
1073
  /*ssrcs*/ ThreeSsrcs,
1063
1074
  /*preferredLayers*/ { 2, 0 },
1064
1075
  /*keyFrameSupported*/ false);
@@ -1072,9 +1083,9 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1072
1083
 
1073
1084
  // All layers hold RTP timestamp 1000. Layer 1 was captured 500 ms before layer 0
1074
1085
  // and layer 2 a whole second before it, so their offsets differ.
1075
- rtpStream0->SetCaptureMapping(/*captureMs*/ 1000, /*ts*/ 1000);
1076
- rtpStream1->SetCaptureMapping(/*captureMs*/ 500, /*ts*/ 1000);
1077
- rtpStream2->SetCaptureMapping(/*captureMs*/ 0, /*ts*/ 1000);
1086
+ rtpStream0->SetCaptureMapping(/*captureAtUs*/ 1000 * 1000, /*ts*/ 1000);
1087
+ rtpStream1->SetCaptureMapping(/*captureAtUs*/ 500 * 1000, /*ts*/ 1000);
1088
+ rtpStream2->SetCaptureMapping(/*captureAtUs*/ 0, /*ts*/ 1000);
1078
1089
 
1079
1090
  // Feed packets and a Sender Report to every stream so that they all get a score
1080
1091
  // and RecalculateTargetLayers() takes them into account.
@@ -1088,7 +1099,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1088
1099
  sr.SetNtpSec(1000);
1089
1100
  sr.SetNtpFrac(0);
1090
1101
  sr.SetRtpTs(90000);
1091
- rtpStream->ReceiveRtcpSenderReport(&sr);
1102
+ rtpStream->ReceiveRtcpSenderReport(std::addressof(sr), shared.GetTimeUs());
1092
1103
  }
1093
1104
 
1094
1105
  // Set target layer to 0 and sync. This sets tsReferenceSpatialLayer = 0, which
@@ -1138,7 +1149,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1138
1149
  {
1139
1150
  MockListener listener;
1140
1151
  auto manager = createManager(
1141
- &listener,
1152
+ std::addressof(listener),
1142
1153
  /*ssrcs*/ ThreeSsrcs,
1143
1154
  /*preferredLayers*/ { 2, 2 },
1144
1155
  /*keyFrameSupported*/ false);
@@ -1180,7 +1191,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1180
1191
  SECTION("OnTransportDisconnected() resets target layers")
1181
1192
  {
1182
1193
  MockListener listener;
1183
- auto manager = createManager(&listener);
1194
+ auto manager = createManager(std::addressof(listener));
1184
1195
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1185
1196
 
1186
1197
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -1197,7 +1208,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1197
1208
  SECTION("OnPaused() resets target layers")
1198
1209
  {
1199
1210
  MockListener listener;
1200
- auto manager = createManager(&listener);
1211
+ auto manager = createManager(std::addressof(listener));
1201
1212
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1202
1213
 
1203
1214
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -1214,7 +1225,8 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1214
1225
  SECTION("IncreaseLayer() returns 0 on second call in same iteration")
1215
1226
  {
1216
1227
  MockListener listener;
1217
- auto manager = createManager(&listener, /*ssrcs*/ OneSsrc, /*preferredLayers*/ { 0, 0 });
1228
+ auto manager =
1229
+ createManager(std::addressof(listener), /*ssrcs*/ OneSsrc, /*preferredLayers*/ { 0, 0 });
1218
1230
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1219
1231
 
1220
1232
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -1224,25 +1236,26 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1224
1236
  packet->SetSsrc(MappedSsrc0);
1225
1237
  feedRtpStreamRecv(rtpStream0.get(), packet.get(), 100);
1226
1238
 
1227
- auto nowMs = DepLibUV::GetTimeMs();
1239
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1228
1240
 
1229
1241
  // First call claims bitrate.
1230
1242
  auto usedBitrate = manager->IncreaseLayer(
1231
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1243
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1232
1244
 
1233
- REQUIRE(usedBitrate > 0u);
1245
+ REQUIRE(usedBitrate > 0);
1234
1246
 
1235
1247
  // Second call in same iteration should return 0 (already at preferred layers).
1236
1248
  auto usedBitrate2 = manager->IncreaseLayer(
1237
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1249
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1238
1250
 
1239
- REQUIRE(usedBitrate2 == 0u);
1251
+ REQUIRE(usedBitrate2 == 0);
1240
1252
  }
1241
1253
 
1242
1254
  SECTION("IncreaseLayer() works again after ApplyLayers()")
1243
1255
  {
1244
1256
  MockListener listener;
1245
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1257
+ auto manager =
1258
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1246
1259
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1247
1260
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
1248
1261
 
@@ -1254,11 +1267,11 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1254
1267
  packet->SetSsrc(MappedSsrc0);
1255
1268
  feedRtpStreamRecv(rtpStream0.get(), packet.get(), 100);
1256
1269
 
1257
- auto nowMs = DepLibUV::GetTimeMs();
1270
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1258
1271
 
1259
1272
  // First iteration: claim layer 0.
1260
1273
  manager->IncreaseLayer(
1261
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1274
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1262
1275
  manager->ApplyLayers(/*rtpStreamActiveMs*/ 0u);
1263
1276
 
1264
1277
  // Feed packets to layer 1.
@@ -1267,15 +1280,16 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1267
1280
 
1268
1281
  // After ApplyLayers, IncreaseLayer should work again for layer 1.
1269
1282
  auto usedBitrate = manager->IncreaseLayer(
1270
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1283
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1271
1284
 
1272
- REQUIRE(usedBitrate > 0u);
1285
+ REQUIRE(usedBitrate > 0);
1273
1286
  }
1274
1287
 
1275
1288
  SECTION("GetDesiredBitrate() returns max bitrate across all producer streams")
1276
1289
  {
1277
1290
  MockListener listener;
1278
- auto manager = createManager(&listener, /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1291
+ auto manager =
1292
+ createManager(std::addressof(listener), /*ssrcs*/ TwoSsrcs, /*preferredLayers*/ { 1, 0 });
1279
1293
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1280
1294
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
1281
1295
 
@@ -1290,9 +1304,9 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1290
1304
  packet->SetSsrc(MappedSsrc1);
1291
1305
  feedRtpStreamRecv(rtpStream1.get(), packet.get(), 100);
1292
1306
 
1293
- auto nowMs = DepLibUV::GetTimeMs();
1294
- auto bitrate0 = rtpStream0->GetBitrate(nowMs);
1295
- auto bitrate1 = rtpStream1->GetBitrate(nowMs);
1307
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1308
+ auto bitrate0 = rtpStream0->GetBitrate(nowMs);
1309
+ auto bitrate1 = rtpStream1->GetBitrate(nowMs);
1296
1310
 
1297
1311
  REQUIRE(bitrate1 > bitrate0);
1298
1312
 
@@ -1304,7 +1318,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1304
1318
  SECTION("GetProducerCurrentRtpStream() returns nullptr before sync")
1305
1319
  {
1306
1320
  MockListener listener;
1307
- auto manager = createManager(&listener);
1321
+ auto manager = createManager(std::addressof(listener));
1308
1322
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1309
1323
 
1310
1324
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc0);
@@ -1316,7 +1330,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1316
1330
  SECTION("GetProducerTargetRtpStream() returns correct stream after UpdateTargetLayers()")
1317
1331
  {
1318
1332
  MockListener listener;
1319
- auto manager = createManager(&listener);
1333
+ auto manager = createManager(std::addressof(listener));
1320
1334
  auto rtpStream0 = createRtpStreamRecv(MappedSsrc0);
1321
1335
  auto rtpStream1 = createRtpStreamRecv(MappedSsrc1);
1322
1336
 
@@ -1334,7 +1348,7 @@ SCENARIO("SimulcastProducerStreamManager", "[rtp][producerstreammanager][simulca
1334
1348
  {
1335
1349
  MockListener listener;
1336
1350
  auto manager = createManager(
1337
- &listener,
1351
+ std::addressof(listener),
1338
1352
  /*ssrcs*/ TwoSsrcs,
1339
1353
  /*preferredLayers*/ { 1, 0 },
1340
1354
  /*keyFrameSupported*/ false);