mediasoup 3.26.0 → 3.27.1

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 (322) hide show
  1. package/CHANGELOG.md +16 -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/FBS/meson.build +25 -0
  49. package/worker/fbs/meson.build +15 -18
  50. package/worker/fbs/rtpParameters.fbs +1 -2
  51. package/worker/fbs/rtpStream.fbs +3 -3
  52. package/worker/fbs/transport.fbs +23 -23
  53. package/worker/fuzzer/include/RTC/FuzzerDtlsTransport.hpp +4 -1
  54. package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
  55. package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +8 -5
  56. package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +3 -3
  57. package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +6 -6
  58. package/worker/fuzzer/src/RTC/RTCP/FuzzerFeedbackRtpTransport.cpp +3 -3
  59. package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +2 -2
  60. package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +5 -5
  61. package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +3 -3
  62. package/worker/fuzzer/src/fuzzer.cpp +4 -0
  63. package/worker/include/Channel/ChannelNotification.hpp +3 -3
  64. package/worker/include/Channel/ChannelRequest.hpp +1 -1
  65. package/worker/include/Channel/ChannelSocket.hpp +11 -0
  66. package/worker/include/DepLibUV.hpp +16 -33
  67. package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -11
  68. package/worker/include/RTC/AudioLevelObserver.hpp +4 -4
  69. package/worker/include/RTC/BWE/AcknowledgedBitrateEstimatorInterface.hpp +55 -0
  70. package/worker/include/RTC/BWE/AimdRateControl.hpp +190 -0
  71. package/worker/include/RTC/BWE/BweTypes.hpp +211 -0
  72. package/worker/include/RTC/BWE/DelayBasedBwe.hpp +173 -0
  73. package/worker/include/RTC/BWE/FeedbackAdapter.hpp +72 -0
  74. package/worker/include/RTC/BWE/InterArrivalDelta.hpp +106 -0
  75. package/worker/include/RTC/BWE/LinkCapacityEstimator.hpp +84 -0
  76. package/worker/include/RTC/BWE/LossBasedController.hpp +520 -0
  77. package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +94 -0
  78. package/worker/include/RTC/BWE/SendPacketHistory.hpp +137 -0
  79. package/worker/include/RTC/BWE/TargetRateController.hpp +306 -0
  80. package/worker/include/RTC/BWE/TrendlineEstimator.hpp +143 -0
  81. package/worker/include/RTC/BWE/Utils.hpp +39 -0
  82. package/worker/include/RTC/Consts.hpp +6 -6
  83. package/worker/include/RTC/Consumer.hpp +14 -12
  84. package/worker/include/RTC/DataConsumer.hpp +3 -3
  85. package/worker/include/RTC/DataProducer.hpp +3 -3
  86. package/worker/include/RTC/DtlsTransport.hpp +5 -2
  87. package/worker/include/RTC/ICE/IceCandidate.hpp +2 -2
  88. package/worker/include/RTC/ICE/IceServer.hpp +3 -3
  89. package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
  90. package/worker/include/RTC/NEW_RTCP/packet/Packet.hpp +1 -1
  91. package/worker/include/RTC/NackGenerator.hpp +12 -12
  92. package/worker/include/RTC/PipeProducerStreamManager.hpp +3 -4
  93. package/worker/include/RTC/PipeTransport.hpp +18 -5
  94. package/worker/include/RTC/PlainTransport.hpp +18 -5
  95. package/worker/include/RTC/PortManager.hpp +4 -4
  96. package/worker/include/RTC/Producer.hpp +21 -12
  97. package/worker/include/RTC/ProducerStreamManager.hpp +12 -6
  98. package/worker/include/RTC/RTCP/Bye.hpp +2 -2
  99. package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +4 -4
  100. package/worker/include/RTC/RTCP/FeedbackRtpTmmb.hpp +3 -3
  101. package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +54 -39
  102. package/worker/include/RTC/RTCP/Packet.hpp +3 -3
  103. package/worker/include/RTC/RTCP/ReceiverReport.hpp +3 -3
  104. package/worker/include/RTC/RTCP/Sdes.hpp +2 -2
  105. package/worker/include/RTC/RTCP/XR.hpp +2 -2
  106. package/worker/include/RTC/RTCP/XrDelaySinceLastRr.hpp +1 -1
  107. package/worker/include/RTC/RTP/Codecs/H264.hpp +1 -1
  108. package/worker/include/RTC/RTP/Codecs/Opus.hpp +2 -2
  109. package/worker/include/RTC/RTP/Codecs/PayloadDescriptorHandler.hpp +3 -3
  110. package/worker/include/RTC/RTP/Codecs/VP8.hpp +2 -2
  111. package/worker/include/RTC/RTP/Codecs/VP9.hpp +2 -2
  112. package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +12 -12
  113. package/worker/include/RTC/RTP/Packet.hpp +13 -13
  114. package/worker/include/RTC/RTP/ProbationGenerator.hpp +1 -1
  115. package/worker/include/RTC/RTP/RetransmissionBuffer.hpp +7 -7
  116. package/worker/include/RTC/RTP/RtpStream.hpp +37 -51
  117. package/worker/include/RTC/RTP/RtpStreamRecv.hpp +59 -41
  118. package/worker/include/RTC/RTP/RtpStreamSend.hpp +20 -14
  119. package/worker/include/RTC/RTP/RtxStream.hpp +12 -13
  120. package/worker/include/RTC/RateCalculator.hpp +50 -44
  121. package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +5 -4
  122. package/worker/include/RTC/RemoteClockOffsetEstimator.hpp +11 -11
  123. package/worker/include/RTC/Router.hpp +6 -0
  124. package/worker/include/RTC/RtcLogger.hpp +1 -1
  125. package/worker/include/RTC/RtpDictionaries.hpp +10 -10
  126. package/worker/include/RTC/SCTP/association/Association.hpp +56 -28
  127. package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +4 -4
  128. package/worker/include/RTC/SCTP/association/StateCookie.hpp +14 -14
  129. package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +38 -2
  130. package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +12 -12
  131. package/worker/include/RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp +4 -4
  132. package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
  133. package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +3 -3
  134. package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +4 -1
  135. package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +1 -1
  136. package/worker/include/RTC/SCTP/public/SctpOptions.hpp +12 -12
  137. package/worker/include/RTC/SCTP/public/SctpTypes.hpp +6 -6
  138. package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +10 -0
  139. package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +15 -16
  140. package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +7 -8
  141. package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +20 -16
  142. package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +5 -6
  143. package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +2 -2
  144. package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +5 -5
  145. package/worker/include/RTC/SctpDictionaries.hpp +3 -3
  146. package/worker/include/RTC/Serializable.hpp +1 -1
  147. package/worker/include/RTC/SimpleProducerStreamManager.hpp +3 -4
  148. package/worker/include/RTC/SimulcastProducerStreamManager.hpp +6 -7
  149. package/worker/include/RTC/SvcProducerStreamManager.hpp +6 -5
  150. package/worker/include/RTC/TcpConnection.hpp +9 -3
  151. package/worker/include/RTC/TcpServer.hpp +3 -0
  152. package/worker/include/RTC/Transport.hpp +52 -45
  153. package/worker/include/RTC/TransportCongestionControlClient.hpp +30 -25
  154. package/worker/include/RTC/TransportCongestionControlServer.hpp +17 -17
  155. package/worker/include/RTC/TrendCalculator.hpp +5 -5
  156. package/worker/include/RTC/UdpSocket.hpp +11 -2
  157. package/worker/include/RTC/WebRtcServer.hpp +20 -5
  158. package/worker/include/RTC/WebRtcTransport.hpp +35 -10
  159. package/worker/include/Settings.hpp +4 -2
  160. package/worker/include/Shared.hpp +5 -20
  161. package/worker/include/SharedInterface.hpp +6 -28
  162. package/worker/include/Utils.hpp +40 -21
  163. package/worker/include/common.hpp +4 -0
  164. package/worker/include/handles/BackoffTimerHandle.hpp +4 -4
  165. package/worker/include/handles/BackoffTimerHandleInterface.hpp +5 -5
  166. package/worker/include/handles/TcpConnectionHandle.hpp +6 -6
  167. package/worker/include/handles/TcpServerHandle.hpp +1 -1
  168. package/worker/include/handles/TimerHandle.hpp +15 -9
  169. package/worker/include/handles/TimerHandleInterface.hpp +10 -4
  170. package/worker/include/handles/UdpSocketHandle.hpp +3 -3
  171. package/worker/include/handles/UnixStreamSocketHandle.hpp +2 -2
  172. package/worker/meson.build +87 -36
  173. package/worker/meson_options.txt +1 -0
  174. package/worker/mocks/include/MockShared.hpp +24 -23
  175. package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +51 -27
  176. package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +11 -11
  177. package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +10 -10
  178. package/worker/mocks/include/handles/MockTimerHandle.hpp +60 -22
  179. package/worker/mocks/src/MockShared.cpp +51 -5
  180. package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +29 -15
  181. package/worker/mocks/src/handles/MockTimerHandle.cpp +117 -0
  182. package/worker/scripts/clang-scripts.mjs +2 -2
  183. package/worker/src/Channel/ChannelNotification.cpp +5 -6
  184. package/worker/src/Channel/ChannelSocket.cpp +20 -2
  185. package/worker/src/DepLibUV.cpp +4 -5
  186. package/worker/src/RTC/ActiveSpeakerObserver.cpp +59 -47
  187. package/worker/src/RTC/AudioLevelObserver.cpp +7 -7
  188. package/worker/src/RTC/BWE/AimdRateControl.cpp +468 -0
  189. package/worker/src/RTC/BWE/BweTypes.cpp +61 -0
  190. package/worker/src/RTC/BWE/DelayBasedBwe.cpp +275 -0
  191. package/worker/src/RTC/BWE/FeedbackAdapter.cpp +148 -0
  192. package/worker/src/RTC/BWE/InterArrivalDelta.cpp +181 -0
  193. package/worker/src/RTC/BWE/LinkCapacityEstimator.cpp +133 -0
  194. package/worker/src/RTC/BWE/LossBasedController.cpp +1046 -0
  195. package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +245 -0
  196. package/worker/src/RTC/BWE/SendPacketHistory.cpp +184 -0
  197. package/worker/src/RTC/BWE/TargetRateController.cpp +435 -0
  198. package/worker/src/RTC/BWE/TrendlineEstimator.cpp +311 -0
  199. package/worker/src/RTC/BWE/Utils.cpp +54 -0
  200. package/worker/src/RTC/Consumer.cpp +48 -35
  201. package/worker/src/RTC/DataConsumer.cpp +4 -4
  202. package/worker/src/RTC/DataProducer.cpp +3 -3
  203. package/worker/src/RTC/DirectTransport.cpp +2 -2
  204. package/worker/src/RTC/DtlsTransport.cpp +14 -11
  205. package/worker/src/RTC/ICE/IceServer.cpp +2 -2
  206. package/worker/src/RTC/KeyFrameRequestManager.cpp +16 -12
  207. package/worker/src/RTC/NackGenerator.cpp +12 -12
  208. package/worker/src/RTC/PipeProducerStreamManager.cpp +6 -6
  209. package/worker/src/RTC/PipeTransport.cpp +16 -13
  210. package/worker/src/RTC/PlainTransport.cpp +25 -16
  211. package/worker/src/RTC/Producer.cpp +50 -36
  212. package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +13 -6
  213. package/worker/src/RTC/RTCP/FeedbackRtpTmmb.cpp +14 -5
  214. package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +76 -50
  215. package/worker/src/RTC/RTP/Codecs/VP8.cpp +1 -1
  216. package/worker/src/RTC/RTP/Codecs/VP9.cpp +4 -4
  217. package/worker/src/RTC/RTP/Packet.cpp +9 -10
  218. package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +6 -6
  219. package/worker/src/RTC/RTP/RtpStream.cpp +19 -19
  220. package/worker/src/RTC/RTP/RtpStreamRecv.cpp +146 -81
  221. package/worker/src/RTC/RTP/RtpStreamSend.cpp +49 -44
  222. package/worker/src/RTC/RTP/RtxStream.cpp +7 -10
  223. package/worker/src/RTC/RateCalculator.cpp +99 -136
  224. package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +13 -13
  225. package/worker/src/RTC/RemoteClockOffsetEstimator.cpp +18 -17
  226. package/worker/src/RTC/Router.cpp +18 -1
  227. package/worker/src/RTC/RtpDictionaries/RtpEncodingParameters.cpp +5 -2
  228. package/worker/src/RTC/SCTP/association/Association.cpp +146 -103
  229. package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +4 -4
  230. package/worker/src/RTC/SCTP/association/Capabilities.cpp +1 -1
  231. package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +25 -18
  232. package/worker/src/RTC/SCTP/association/StateCookie.cpp +7 -6
  233. package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +122 -14
  234. package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +28 -26
  235. package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +0 -1
  236. package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
  237. package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +2 -2
  238. package/worker/src/RTC/SCTP/public/SctpOptions.cpp +13 -13
  239. package/worker/src/RTC/SCTP/rx/DataTracker.cpp +1 -1
  240. package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +5 -5
  241. package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +15 -15
  242. package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +15 -15
  243. package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +29 -26
  244. package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +12 -11
  245. package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +4 -4
  246. package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +2 -2
  247. package/worker/src/RTC/SimpleProducerStreamManager.cpp +10 -10
  248. package/worker/src/RTC/SimulcastProducerStreamManager.cpp +39 -37
  249. package/worker/src/RTC/SvcProducerStreamManager.cpp +39 -25
  250. package/worker/src/RTC/TcpConnection.cpp +9 -3
  251. package/worker/src/RTC/TcpServer.cpp +7 -2
  252. package/worker/src/RTC/Transport.cpp +266 -307
  253. package/worker/src/RTC/TransportCongestionControlClient.cpp +78 -71
  254. package/worker/src/RTC/TransportCongestionControlServer.cpp +38 -40
  255. package/worker/src/RTC/TrendCalculator.cpp +3 -3
  256. package/worker/src/RTC/UdpSocket.cpp +14 -3
  257. package/worker/src/RTC/WebRtcServer.cpp +20 -14
  258. package/worker/src/RTC/WebRtcTransport.cpp +35 -30
  259. package/worker/src/Settings.cpp +10 -0
  260. package/worker/src/Shared.cpp +2 -2
  261. package/worker/src/Utils/Crypto.cpp +2 -2
  262. package/worker/src/Worker.cpp +5 -1
  263. package/worker/src/handles/BackoffTimerHandle.cpp +24 -11
  264. package/worker/src/handles/TimerHandle.cpp +74 -25
  265. package/worker/src/lib.cpp +6 -0
  266. package/worker/tasks.py +197 -45
  267. package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +117 -0
  268. package/worker/test/src/RTC/BWE/TestAimdRateControl.cpp +400 -0
  269. package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +568 -0
  270. package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +546 -0
  271. package/worker/test/src/RTC/BWE/TestInterArrivalDelta.cpp +301 -0
  272. package/worker/test/src/RTC/BWE/TestLinkCapacityEstimator.cpp +115 -0
  273. package/worker/test/src/RTC/BWE/TestLossBasedController.cpp +1199 -0
  274. package/worker/test/src/RTC/BWE/TestRobustThroughputEstimator.cpp +433 -0
  275. package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +259 -0
  276. package/worker/test/src/RTC/BWE/TestTargetRateController.cpp +337 -0
  277. package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +182 -0
  278. package/worker/test/src/RTC/BWE/TestUtils.cpp +61 -0
  279. package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +171 -0
  280. package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +1 -1
  281. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +1 -1
  282. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTransport.cpp +246 -208
  283. package/worker/test/src/RTC/RTP/TestPacket.cpp +11 -11
  284. package/worker/test/src/RTC/RTP/TestRetransmissionBuffer.cpp +12 -12
  285. package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +23 -16
  286. package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +13 -13
  287. package/worker/test/src/RTC/SCTP/association/TestAssociation.cpp +27 -22
  288. package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +21 -15
  289. package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +6 -6
  290. package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +128 -13
  291. package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +3 -3
  292. package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +2 -2
  293. package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +23 -23
  294. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
  295. package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +1 -1
  296. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
  297. package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +37 -37
  298. package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +10 -10
  299. package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +1 -1
  300. package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +93 -93
  301. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +247 -247
  302. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +100 -80
  303. package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +163 -163
  304. package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +76 -77
  305. package/worker/test/src/RTC/TestConsumer.cpp +8 -3
  306. package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +3 -3
  307. package/worker/test/src/RTC/TestNackGenerator.cpp +3 -3
  308. package/worker/test/src/RTC/TestPipeProducerStreamManager.cpp +5 -5
  309. package/worker/test/src/RTC/TestRateCalculator.cpp +110 -14
  310. package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +22 -17
  311. package/worker/test/src/RTC/TestRemoteClockOffsetEstimator.cpp +87 -85
  312. package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +54 -47
  313. package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +83 -69
  314. package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +76 -65
  315. package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +72 -66
  316. package/worker/test/src/RTC/TestTransportTuple.cpp +19 -4
  317. package/worker/test/src/TestDepLibUV.cpp +19 -0
  318. package/worker/test/src/Utils/TestTime.cpp +57 -26
  319. package/worker/test/src/testHelpers.cpp +1 -1
  320. package/worker/test/src/tests.cpp +6 -0
  321. package/worker/include/RTC/SenderBandwidthEstimator.hpp +0 -118
  322. package/worker/src/RTC/SenderBandwidthEstimator.cpp +0 -269
@@ -70,6 +70,11 @@ namespace
70
70
  {
71
71
  return 0;
72
72
  }
73
+
74
+ void OnRtpStreamSpatialLayerActivityChanged(
75
+ RTC::RTP::RtpStreamRecv* /*rtpStream*/, uint8_t /*spatialLayer*/, bool /*isActive*/) override
76
+ {
77
+ }
73
78
  };
74
79
 
75
80
  class MockEncodingContext : public RTC::RTP::Codecs::EncodingContext
@@ -150,10 +155,10 @@ namespace
150
155
  RtpStreamRecvListener streamRecvListener; // NOLINT(readability-identifier-naming)
151
156
 
152
157
  // NOLINTNEXTLINE(readability-identifier-naming)
153
- mocks::MockShared shared(/*getTimeMs*/
154
- []()
158
+ mocks::MockShared shared(/*getTimeUs*/
159
+ []() -> int64_t
155
160
  {
156
- return DepLibUV::GetTimeMs();
161
+ return DepLibUV::GetTimeUs();
157
162
  }); // NOLINT(readability-identifier-naming)
158
163
 
159
164
  std::unique_ptr<RTC::SvcProducerStreamManager> 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(
@@ -192,7 +197,8 @@ namespace
192
197
  params.spatialLayers = spatialLayers;
193
198
  params.temporalLayers = temporalLayers;
194
199
 
195
- return std::make_unique<RTC::RTP::RtpStreamRecv>(&streamRecvListener, &shared, params, 0u, false);
200
+ return std::make_unique<RTC::RTP::RtpStreamRecv>(
201
+ std::addressof(streamRecvListener), std::addressof(shared), params, 0u, false);
196
202
  }
197
203
 
198
204
  // Feed packets into the RtpStreamRecv so GetBitrate() returns non-zero.
@@ -204,15 +210,15 @@ namespace
204
210
  for (uint16_t seq = firstSeq; Utils::Number::IsLowerThan<uint16_t>(seq, lastSeq); ++seq)
205
211
  {
206
212
  packet->SetSequenceNumber(seq);
207
- rtpStream->ReceivePacket(packet);
213
+ rtpStream->ReceivePacket(packet, shared.GetTimeUs());
208
214
  }
209
215
 
210
- auto nowMs = DepLibUV::GetTimeMs();
216
+ const int64_t nowMs = DepLibUV::GetTimeMs();
211
217
 
212
218
  // bitrate (bps) = totalBytes * 8000 / windowSizeMs.
213
219
  // windowSizeMs for RtpStreamRecv is 2500.
214
- auto expectedBitrate =
215
- static_cast<uint32_t>(std::trunc((count * packet->GetLength() * 8000.0f / 2500) + 0.5f));
220
+ const auto expectedBitrate =
221
+ static_cast<int64_t>(std::trunc((count * packet->GetLength() * 8000.0f / 2500) + 0.5f));
216
222
 
217
223
  REQUIRE(rtpStream->GetBitrate(nowMs) == expectedBitrate);
218
224
  }
@@ -231,7 +237,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
231
237
  SECTION("ProcessRtpPacket() returns DROP when target spatial layer is -1")
232
238
  {
233
239
  MockListener listener;
234
- auto manager = createManager(&listener);
240
+ auto manager = createManager(std::addressof(listener));
235
241
  auto rtpStream = createRtpStreamRecv();
236
242
 
237
243
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -247,7 +253,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
247
253
  SECTION("ProcessRtpPacket() returns DROP when target temporal layer is -1")
248
254
  {
249
255
  MockListener listener;
250
- auto manager = createManager(&listener);
256
+ auto manager = createManager(std::addressof(listener));
251
257
  auto rtpStream = createRtpStreamRecv();
252
258
 
253
259
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -265,7 +271,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
265
271
  SECTION("ProcessRtpPacket() returns BUFFER when sync required and packet is not a keyframe")
266
272
  {
267
273
  MockListener listener;
268
- auto manager = createManager(&listener);
274
+ auto manager = createManager(std::addressof(listener));
269
275
  auto rtpStream = createRtpStreamRecv();
270
276
 
271
277
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -289,7 +295,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
289
295
  "ProcessRtpPacket() returns FORWARD with isSyncPacket and sendBufferedPackets on keyframe sync")
290
296
  {
291
297
  MockListener listener;
292
- auto manager = createManager(&listener);
298
+ auto manager = createManager(std::addressof(listener));
293
299
  auto rtpStream = createRtpStreamRecv();
294
300
 
295
301
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -510,7 +516,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
510
516
  SECTION("UpdateTargetLayers() to -1 resets current and target layers")
511
517
  {
512
518
  MockListener listener;
513
- auto manager = createManager(&listener);
519
+ auto manager = createManager(std::addressof(listener));
514
520
  auto rtpStream = createRtpStreamRecv();
515
521
 
516
522
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -529,7 +535,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
529
535
  SECTION("UpdateTargetLayers() fires OnProducerStreamManagerLayersChanged() when setting -1")
530
536
  {
531
537
  MockListener listener;
532
- auto manager = createManager(&listener);
538
+ auto manager = createManager(std::addressof(listener));
533
539
  auto rtpStream = createRtpStreamRecv();
534
540
 
535
541
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -544,7 +550,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
544
550
  SECTION("UpdateTargetLayers() requests keyframe for full-SVC spatial upgrade")
545
551
  {
546
552
  MockListener listener;
547
- auto manager = createManager(&listener);
553
+ auto manager = createManager(std::addressof(listener));
548
554
  auto rtpStream = createRtpStreamRecv();
549
555
 
550
556
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -564,7 +570,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
564
570
  SECTION("GetProducerCurrentRtpStream() returns nullptr when current spatial layer is -1")
565
571
  {
566
572
  MockListener listener;
567
- auto manager = createManager(&listener);
573
+ auto manager = createManager(std::addressof(listener));
568
574
  auto rtpStream = createRtpStreamRecv();
569
575
 
570
576
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -577,7 +583,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
577
583
  SECTION("GetProducerTargetRtpStream() returns nullptr when target spatial layer is -1")
578
584
  {
579
585
  MockListener listener;
580
- auto manager = createManager(&listener);
586
+ auto manager = createManager(std::addressof(listener));
581
587
  auto rtpStream = createRtpStreamRecv();
582
588
 
583
589
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -588,7 +594,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
588
594
  SECTION("GetProducerTargetRtpStream() returns the producer stream after UpdateTargetLayers()")
589
595
  {
590
596
  MockListener listener;
591
- auto manager = createManager(&listener);
597
+ auto manager = createManager(std::addressof(listener));
592
598
  auto rtpStream = createRtpStreamRecv();
593
599
 
594
600
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -604,7 +610,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
604
610
  MockListener listener;
605
611
  listener.isActive = false;
606
612
 
607
- auto manager = createManager(&listener);
613
+ auto manager = createManager(std::addressof(listener));
608
614
  auto rtpStream = createRtpStreamRecv();
609
615
 
610
616
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -615,7 +621,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
615
621
  SECTION("IsActive() returns false when no producer stream is set")
616
622
  {
617
623
  MockListener listener;
618
- auto manager = createManager(&listener);
624
+ auto manager = createManager(std::addressof(listener));
619
625
 
620
626
  // No ProducerRtpStream call.
621
627
  REQUIRE(manager->IsActive() == false);
@@ -624,7 +630,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
624
630
  SECTION("RequestKeyFrame() always uses the single SVC mapped SSRC")
625
631
  {
626
632
  MockListener listener;
627
- auto manager = createManager(&listener);
633
+ auto manager = createManager(std::addressof(listener));
628
634
  auto rtpStream = createRtpStreamRecv();
629
635
 
630
636
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -640,7 +646,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
640
646
  SECTION("RequestKeyFrameForTargetSpatialLayer() delegates to single-SSRC RequestKeyFrame()")
641
647
  {
642
648
  MockListener listener;
643
- auto manager = createManager(&listener);
649
+ auto manager = createManager(std::addressof(listener));
644
650
  auto rtpStream = createRtpStreamRecv();
645
651
 
646
652
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -725,7 +731,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
725
731
  {
726
732
  MockListener listener;
727
733
  // Use preferred layer 0 so RecalculateTargetLayers can find it with spatial-layer-0 bitrate.
728
- auto manager = createManager(&listener, /*preferredLayers*/ { 0, 0 });
734
+ auto manager = createManager(std::addressof(listener), /*preferredLayers*/ { 0, 0 });
729
735
  auto rtpStream = createRtpStreamRecv(MappedSsrc, /*spatialLayers*/ 1u, /*temporalLayers*/ 1u);
730
736
 
731
737
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -750,7 +756,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
750
756
  MockListener listener;
751
757
  listener.isActive = false;
752
758
 
753
- auto manager = createManager(&listener);
759
+ auto manager = createManager(std::addressof(listener));
754
760
 
755
761
  // Don't wire producerRtpStream — manager is not active.
756
762
  manager->OnTransportConnected();
@@ -761,7 +767,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
761
767
  SECTION("OnTransportDisconnected() resets target and current layers to -1")
762
768
  {
763
769
  MockListener listener;
764
- auto manager = createManager(&listener);
770
+ auto manager = createManager(std::addressof(listener));
765
771
  auto rtpStream = createRtpStreamRecv();
766
772
 
767
773
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -779,7 +785,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
779
785
  SECTION("OnPaused() resets target and current layers to -1")
780
786
  {
781
787
  MockListener listener;
782
- auto manager = createManager(&listener);
788
+ auto manager = createManager(std::addressof(listener));
783
789
  auto rtpStream = createRtpStreamRecv();
784
790
 
785
791
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -798,7 +804,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
798
804
  {
799
805
  MockListener listener;
800
806
  // Use preferred layer 0 so RecalculateTargetLayers can find it with spatial-layer-0 bitrate.
801
- auto manager = createManager(&listener, /*preferredLayers*/ { 0, 0 });
807
+ auto manager = createManager(std::addressof(listener), /*preferredLayers*/ { 0, 0 });
802
808
  auto rtpStream = createRtpStreamRecv(MappedSsrc, /*spatialLayers*/ 1u, /*temporalLayers*/ 1u);
803
809
 
804
810
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -873,12 +879,17 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
873
879
  SECTION("ProducerNewRtpStream() updates the producer stream and fires score event")
874
880
  {
875
881
  MockListener listener;
876
- auto manager = createManager(&listener);
882
+ auto manager = createManager(std::addressof(listener));
877
883
  auto rtpStream0 = createRtpStreamRecv();
878
- auto rtpStream1 = createRtpStreamRecv();
879
884
 
880
885
  manager->ProducerRtpStream(rtpStream0.get(), MappedSsrc);
881
886
 
887
+ // MockShared indexes timers by label, so the stream being replaced must be
888
+ // gone before creating the one replacing it.
889
+ rtpStream0.reset();
890
+
891
+ auto rtpStream1 = createRtpStreamRecv();
892
+
882
893
  // Replace with a new stream.
883
894
  manager->ProducerNewRtpStream(rtpStream1.get(), MappedSsrc);
884
895
 
@@ -891,7 +902,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
891
902
  SECTION("ProducerRtpStreamScore() triggers MayChangeLayers() when stream dies (score==0)")
892
903
  {
893
904
  MockListener listener;
894
- auto manager = createManager(&listener);
905
+ auto manager = createManager(std::addressof(listener));
895
906
  auto rtpStream = createRtpStreamRecv();
896
907
 
897
908
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -910,7 +921,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
910
921
  SECTION("ProducerRtpStreamScore() triggers MayChangeLayers() when stream revives (previousScore==0)")
911
922
  {
912
923
  MockListener listener;
913
- auto manager = createManager(&listener);
924
+ auto manager = createManager(std::addressof(listener));
914
925
  auto rtpStream = createRtpStreamRecv();
915
926
 
916
927
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -928,32 +939,32 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
928
939
  SECTION("IncreaseLayer() returns 0 when no producer stream is set")
929
940
  {
930
941
  MockListener listener;
931
- auto manager = createManager(&listener);
942
+ auto manager = createManager(std::addressof(listener));
932
943
 
933
944
  manager->SetExternallyManagedBitrate();
934
945
 
935
- auto nowMs = DepLibUV::GetTimeMs();
936
- auto usedBitrate = manager->IncreaseLayer(
937
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
946
+ const int64_t nowMs = DepLibUV::GetTimeMs();
947
+ auto usedBitrate = manager->IncreaseLayer(
948
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
938
949
 
939
- REQUIRE(usedBitrate == 0u);
950
+ REQUIRE(usedBitrate == 0);
940
951
  }
941
952
 
942
953
  SECTION("IncreaseLayer() returns 0 when producer stream has score 0")
943
954
  {
944
955
  MockListener listener;
945
- auto manager = createManager(&listener);
956
+ auto manager = createManager(std::addressof(listener));
946
957
  auto rtpStream = createRtpStreamRecv();
947
958
 
948
959
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
949
960
  manager->SetExternallyManagedBitrate();
950
961
 
951
962
  // Score is 0 by default (no RTP received + inactivity check disabled).
952
- auto nowMs = DepLibUV::GetTimeMs();
953
- auto usedBitrate = manager->IncreaseLayer(
954
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
963
+ const int64_t nowMs = DepLibUV::GetTimeMs();
964
+ auto usedBitrate = manager->IncreaseLayer(
965
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
955
966
 
956
- REQUIRE(usedBitrate == 0u);
967
+ REQUIRE(usedBitrate == 0);
957
968
  }
958
969
 
959
970
  SECTION("IncreaseLayer() returns 0 on second call in same iteration (already at preferred layers)")
@@ -976,19 +987,19 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
976
987
  // Feed packets so the stream has non-zero bitrate.
977
988
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
978
989
 
979
- auto nowMs = DepLibUV::GetTimeMs();
990
+ const int64_t nowMs = DepLibUV::GetTimeMs();
980
991
 
981
992
  // First call claims bitrate.
982
993
  auto usedBitrate = manager->IncreaseLayer(
983
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
994
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
984
995
 
985
- REQUIRE(usedBitrate > 0u);
996
+ REQUIRE(usedBitrate > 0);
986
997
 
987
998
  // Second call in same iteration should return 0 (already at preferred layers).
988
999
  auto usedBitrate2 = manager->IncreaseLayer(
989
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1000
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
990
1001
 
991
- REQUIRE(usedBitrate2 == 0u);
1002
+ REQUIRE(usedBitrate2 == 0);
992
1003
  }
993
1004
 
994
1005
  SECTION("IncreaseLayer() works again after ApplyLayers()")
@@ -1010,18 +1021,18 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1010
1021
  // Feed packets so the stream has non-zero bitrate.
1011
1022
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
1012
1023
 
1013
- auto nowMs = DepLibUV::GetTimeMs();
1024
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1014
1025
 
1015
1026
  // First iteration.
1016
1027
  manager->IncreaseLayer(
1017
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1028
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1018
1029
  manager->ApplyLayers(/*rtpStreamActiveMs*/ 0u);
1019
1030
 
1020
1031
  // After ApplyLayers, IncreaseLayer should work again.
1021
1032
  auto usedBitrate = manager->IncreaseLayer(
1022
- /*bitrate*/ 1000000u, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1033
+ /*bitrate*/ 1000000, /*considerLoss*/ false, /*lossPercentage*/ 0.0f, nowMs);
1023
1034
 
1024
- REQUIRE(usedBitrate > 0u);
1035
+ REQUIRE(usedBitrate > 0);
1025
1036
  }
1026
1037
 
1027
1038
  SECTION("ApplyLayers() records BWE downgrade when spatial layer drops below current")
@@ -1069,12 +1080,12 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1069
1080
  SECTION("GetDesiredBitrate() returns 0 when no producer stream is set")
1070
1081
  {
1071
1082
  MockListener listener;
1072
- auto manager = createManager(&listener);
1083
+ auto manager = createManager(std::addressof(listener));
1073
1084
 
1074
- auto nowMs = DepLibUV::GetTimeMs();
1085
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1075
1086
  auto desiredBitrate = manager->GetDesiredBitrate(nowMs);
1076
1087
 
1077
- REQUIRE(desiredBitrate == 0u);
1088
+ REQUIRE(desiredBitrate == 0);
1078
1089
  }
1079
1090
 
1080
1091
  SECTION("GetDesiredBitrate() (full SVC) returns total stream bitrate")
@@ -1095,7 +1106,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1095
1106
 
1096
1107
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
1097
1108
 
1098
- auto nowMs = DepLibUV::GetTimeMs();
1109
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1099
1110
  auto streamBitrate = rtpStream->GetBitrate(nowMs);
1100
1111
  auto desiredBitrate = manager->GetDesiredBitrate(nowMs);
1101
1112
 
@@ -1121,19 +1132,19 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1121
1132
  // Feed packets so total stream bitrate > 0.
1122
1133
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
1123
1134
 
1124
- auto nowMs = DepLibUV::GetTimeMs();
1135
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1125
1136
  auto desiredBitrate = manager->GetDesiredBitrate(nowMs);
1126
1137
 
1127
1138
  // K-SVC returns the max per-spatial-layer bitrate. With a plain RtpStreamRecv
1128
1139
  // and no per-layer packet tagging the returned value may be 0 or > 0.
1129
1140
  // The contract is just: no crash and type is uint32_t.
1130
- REQUIRE(desiredBitrate >= 0u);
1141
+ REQUIRE(desiredBitrate >= 0);
1131
1142
  }
1132
1143
 
1133
1144
  SECTION("RecalculateTargetLayers() returns false when no producer stream is set")
1134
1145
  {
1135
1146
  MockListener listener;
1136
- auto manager = createManager(&listener);
1147
+ auto manager = createManager(std::addressof(listener));
1137
1148
 
1138
1149
  RTC::ConsumerTypes::VideoLayers newTargetLayers;
1139
1150
  const bool changed = manager->RecalculateTargetLayers(newTargetLayers);
@@ -1146,7 +1157,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1146
1157
  SECTION("RecalculateTargetLayers() resets layers when stream score is 0")
1147
1158
  {
1148
1159
  MockListener listener;
1149
- auto manager = createManager(&listener);
1160
+ auto manager = createManager(std::addressof(listener));
1150
1161
  auto rtpStream = createRtpStreamRecv();
1151
1162
 
1152
1163
  manager->ProducerRtpStream(rtpStream.get(), MappedSsrc);
@@ -1232,8 +1243,8 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1232
1243
 
1233
1244
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
1234
1245
 
1235
- auto nowMs = DepLibUV::GetTimeMs();
1236
- auto streamBitrate = rtpStream->GetBitrate(nowMs);
1246
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1247
+ auto streamBitrate = rtpStream->GetBitrate(nowMs);
1237
1248
 
1238
1249
  // With 1% loss virtualBitrate = 1.08 * bitrate, so we can afford the stream
1239
1250
  // even with slightly less physical bitrate available.
@@ -1243,7 +1254,7 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1243
1254
  availableBitrate, /*considerLoss*/ true, /*lossPercentage*/ 1.0f, nowMs);
1244
1255
 
1245
1256
  // virtualBitrate = 1.08 * availableBitrate >= streamBitrate, so the layer is taken.
1246
- REQUIRE(usedBitrate > 0u);
1257
+ REQUIRE(usedBitrate > 0);
1247
1258
  }
1248
1259
 
1249
1260
  SECTION("IncreaseLayer() uses reduced virtual bitrate when considerLoss is true and loss > 10%")
@@ -1263,8 +1274,8 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1263
1274
 
1264
1275
  feedRtpStreamRecv(rtpStream.get(), packet.get(), 100);
1265
1276
 
1266
- auto nowMs = DepLibUV::GetTimeMs();
1267
- auto streamBitrate = rtpStream->GetBitrate(nowMs);
1277
+ const int64_t nowMs = DepLibUV::GetTimeMs();
1278
+ auto streamBitrate = rtpStream->GetBitrate(nowMs);
1268
1279
 
1269
1280
  // With 50% loss virtualBitrate = (1 - 0.5*0.5) * bitrate = 0.75 * bitrate.
1270
1281
  // Pass available = streamBitrate but virtual will be reduced below required.
@@ -1273,6 +1284,6 @@ SCENARIO("SvcProducerStreamManager", "[rtp][producerstreammanager][svc]")
1273
1284
 
1274
1285
  // virtualBitrate = 0.75 * streamBitrate < streamBitrate (requiredBitrate),
1275
1286
  // so the layer cannot be taken → 0.
1276
- REQUIRE(usedBitrate == 0u);
1287
+ REQUIRE(usedBitrate == 0);
1277
1288
  }
1278
1289
  }