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
@@ -41,9 +41,9 @@ namespace RTC
41
41
  data.GetMessageId(),
42
42
  data.GetFragmentSequenceNumber(),
43
43
  (data.IsBeginning() && data.IsEnd() ? "complete"
44
- : data.IsBeginning() ? "first"
45
- : data.IsEnd() ? "last"
46
- : "middle"));
44
+ : data.IsBeginning() ? "first"
45
+ : data.IsEnd() ? "last"
46
+ : "middle"));
47
47
 
48
48
  const Types::UnwrappedTsn unwrappedTsn = this->tsnUnwrapper.Unwrap(tsn);
49
49
 
@@ -144,8 +144,8 @@ namespace RTC
144
144
 
145
145
  this->deferredResetStreams->deferredActions.emplace_back(
146
146
  [this,
147
- newCumulativeTsn,
148
- skippedStreams2 = std::vector<AnyForwardTsnChunk::SkippedStream>(
147
+ newCumulativeTsn,
148
+ skippedStreams2 = std::vector<AnyForwardTsnChunk::SkippedStream>(
149
149
  skippedStreams.begin(), skippedStreams.end())]
150
150
  {
151
151
  this->queuedBytes -= ForwardTsnCost(skippedStreams2.size());
@@ -24,15 +24,15 @@ namespace RTC
24
24
  OutstandingData::Item::Item(
25
25
  uint32_t outgoingMessageId,
26
26
  UserData data,
27
- uint64_t timeSentMs,
27
+ int64_t timeSentUs,
28
28
  uint16_t maxRetransmissions,
29
- uint64_t expiresAtMs,
29
+ int64_t expiresAtUs,
30
30
  std::optional<uint64_t> lifecycleId)
31
31
  : outgoingMessageId(outgoingMessageId),
32
32
  data(std::move(data)),
33
- timeSentMs(timeSentMs),
33
+ timeSentUs(timeSentUs),
34
34
  maxRetransmissions(maxRetransmissions),
35
- expiresAtMs(expiresAtMs),
35
+ expiresAtUs(expiresAtUs),
36
36
  lifecycleId(lifecycleId)
37
37
  {
38
38
  MS_TRACE();
@@ -90,7 +90,7 @@ namespace RTC
90
90
  MS_TRACE();
91
91
 
92
92
  MS_ASSERT(
93
- this->expiresAtMs != Types::ExpiresAtMsInfinite ||
93
+ this->expiresAtUs != Types::ExpiresAtUsInfinite ||
94
94
  this->maxRetransmissions != Types::MaxRetransmitsNoLimit,
95
95
  "item should not have infinite expiration time or its retransmission times shouldn't be the maximum");
96
96
 
@@ -173,7 +173,7 @@ namespace RTC
173
173
  return ExtractChunksThatCanFit(this->toBeRetransmitted, maxLength);
174
174
  }
175
175
 
176
- void OutstandingData::ExpireOutstandingChunks(uint64_t nowMs)
176
+ void OutstandingData::ExpireOutstandingChunks(int64_t nowUs)
177
177
  {
178
178
  MS_TRACE();
179
179
 
@@ -192,7 +192,7 @@ namespace RTC
192
192
  {
193
193
  // Already abandoned.
194
194
  }
195
- else if (item.IsNacked() && item.HasExpired(nowMs))
195
+ else if (item.IsNacked() && item.HasExpired(nowUs))
196
196
  {
197
197
  tsnsToExpire.push_back(tsn);
198
198
  }
@@ -232,9 +232,9 @@ namespace RTC
232
232
  std::optional<Types::UnwrappedTsn> OutstandingData::Insert(
233
233
  uint32_t outgoingMessageId,
234
234
  const UserData& data,
235
- uint64_t timeSentMs,
235
+ int64_t timeSentUs,
236
236
  uint16_t maxRetransmissions,
237
- uint64_t expiresAtMs,
237
+ int64_t expiresAtUs,
238
238
  std::optional<uint64_t> lifecycleId)
239
239
  {
240
240
  MS_TRACE();
@@ -248,9 +248,9 @@ namespace RTC
248
248
 
249
249
  const Types::UnwrappedTsn tsn = GetNextTsn();
250
250
  const Item& item = this->outstandingData.emplace_back(
251
- outgoingMessageId, data.Clone(), timeSentMs, maxRetransmissions, expiresAtMs, lifecycleId);
251
+ outgoingMessageId, data.Clone(), timeSentUs, maxRetransmissions, expiresAtUs, lifecycleId);
252
252
 
253
- if (item.HasExpired(timeSentMs))
253
+ if (item.HasExpired(timeSentUs))
254
254
  {
255
255
  // No need to send it, it was expired when it was in the send queue.
256
256
  MS_WARN_TAG(
@@ -390,7 +390,7 @@ namespace RTC
390
390
  return iForwardTsnChunk;
391
391
  }
392
392
 
393
- std::optional<uint64_t> OutstandingData::MeasureRtt(uint64_t nowMs, Types::UnwrappedTsn tsn) const
393
+ std::optional<int64_t> OutstandingData::MeasureRttUs(int64_t nowUs, Types::UnwrappedTsn tsn) const
394
394
  {
395
395
  MS_TRACE();
396
396
 
@@ -406,7 +406,7 @@ namespace RTC
406
406
  // that were retransmitted (and thus for which it is ambiguous
407
407
  // whether the reply was for the first instance of the Chunk or for a
408
408
  // later instance)"
409
- return nowMs - item.GetTimeSentMs();
409
+ return nowUs - item.GetTimeSentUs();
410
410
  }
411
411
  }
412
412
 
@@ -772,9 +772,9 @@ namespace RTC
772
772
  Item& addedItem = this->outstandingData.emplace_back(
773
773
  item.GetOutgoingMessageId(),
774
774
  std::move(messageEnd),
775
- /*timeSentMs*/ 0,
775
+ /*timeSentUs*/ 0,
776
776
  /*maxRetransmissions*/ 0,
777
- /*expiresAtMs*/ Types::ExpiresAtMsInfinite,
777
+ /*expiresAtUs*/ Types::ExpiresAtUsInfinite,
778
778
  /*lifecycleId*/ std::nullopt);
779
779
 
780
780
  // The added chunk shouldn't be included in `this->unackedPacketBytes`,
@@ -35,7 +35,7 @@ namespace RTC
35
35
  supportsPartialReliability(supportsPartialReliability),
36
36
  dataChunkHeaderLength(
37
37
  useMessageInterleaving ? IDataChunk::IDataChunkHeaderLength
38
- : DataChunk::DataChunkHeaderLength),
38
+ : DataChunk::DataChunkHeaderLength),
39
39
  t3RtxTimer(t3RtxTimer),
40
40
  cwnd(sctpOptions.initialCwndMtus * sctpOptions.mtu),
41
41
  rwnd(remoteAdvertisedReceiverWindowCredit),
@@ -62,7 +62,7 @@ namespace RTC
62
62
  MS_TRACE();
63
63
  }
64
64
 
65
- bool RetransmissionQueue::HandleReceivedSackChunk(uint64_t nowMs, const SackChunk* receivedSackChunk)
65
+ bool RetransmissionQueue::HandleReceivedSackChunk(int64_t nowUs, const SackChunk* receivedSackChunk)
66
66
  {
67
67
  MS_TRACE();
68
68
 
@@ -82,7 +82,7 @@ namespace RTC
82
82
 
83
83
  if (receivedSackChunk->GetValidatedGapAckBlocks().empty())
84
84
  {
85
- UpdateRttMs(nowMs, cumulativeTsnAck);
85
+ UpdateRttUs(nowUs, cumulativeTsnAck);
86
86
  }
87
87
 
88
88
  // Exit fast recovery before continuing processing, in case it needs to go
@@ -301,7 +301,7 @@ namespace RTC
301
301
  }
302
302
 
303
303
  std::vector<std::pair<uint32_t /*tsn*/, UserData>> RetransmissionQueue::GetChunksToSend(
304
- uint64_t nowMs, size_t maxLength)
304
+ int64_t nowUs, size_t maxLength)
305
305
  {
306
306
  MS_TRACE();
307
307
 
@@ -365,7 +365,7 @@ namespace RTC
365
365
  maxBytes);
366
366
 
367
367
  std::optional<SendQueueInterface::DataToSend> dataToSend =
368
- this->sendQueue.Produce(nowMs, maxBytes - this->dataChunkHeaderLength);
368
+ this->sendQueue.Produce(nowUs, maxBytes - this->dataChunkHeaderLength);
369
369
 
370
370
  if (!dataToSend.has_value())
371
371
  {
@@ -381,10 +381,10 @@ namespace RTC
381
381
  const std::optional<Types::UnwrappedTsn> tsn = this->outstandingData.Insert(
382
382
  dataToSend->outgoingMessageId,
383
383
  dataToSend->data,
384
- nowMs,
384
+ nowUs,
385
385
  this->supportsPartialReliability ? dataToSend->maxRetransmissions
386
- : Types::MaxRetransmitsNoLimit,
387
- this->supportsPartialReliability ? dataToSend->expiresAtMs : Types::ExpiresAtMsInfinite,
386
+ : Types::MaxRetransmitsNoLimit,
387
+ this->supportsPartialReliability ? dataToSend->expiresAtUs : Types::ExpiresAtUsInfinite,
388
388
  dataToSend->lifecycleId);
389
389
 
390
390
  if (tsn.has_value())
@@ -450,7 +450,7 @@ namespace RTC
450
450
  return toBeSent;
451
451
  }
452
452
 
453
- bool RetransmissionQueue::ShouldSendForwardTsn(uint64_t nowMs)
453
+ bool RetransmissionQueue::ShouldSendForwardTsn(int64_t nowUs)
454
454
  {
455
455
  MS_TRACE();
456
456
 
@@ -459,7 +459,7 @@ namespace RTC
459
459
  return false;
460
460
  }
461
461
 
462
- this->outstandingData.ExpireOutstandingChunks(nowMs);
462
+ this->outstandingData.ExpireOutstandingChunks(nowUs);
463
463
 
464
464
  return this->outstandingData.ShouldSendForwardTsn();
465
465
  }
@@ -552,11 +552,11 @@ namespace RTC
552
552
  [&](const auto& block)
553
553
  {
554
554
  return Types::UnwrappedTsn::AddTo(cumulativeTsnAck, block.end) <=
555
- this->outstandingData.GetHighestOutstandingTsn();
555
+ this->outstandingData.GetHighestOutstandingTsn();
556
556
  });
557
557
  }
558
558
 
559
- void RetransmissionQueue::UpdateRttMs(uint64_t nowMs, Types::UnwrappedTsn cumulativeTsnAck)
559
+ void RetransmissionQueue::UpdateRttUs(int64_t nowUs, Types::UnwrappedTsn cumulativeTsnAck)
560
560
  {
561
561
  MS_TRACE();
562
562
 
@@ -571,11 +571,11 @@ namespace RTC
571
571
  // Consider occasionally sending DATA chunks with I-bit set and use only
572
572
  // those packets for measurement.
573
573
 
574
- const auto rttMs = this->outstandingData.MeasureRtt(nowMs, cumulativeTsnAck);
574
+ const auto rttUs = this->outstandingData.MeasureRttUs(nowUs, cumulativeTsnAck);
575
575
 
576
- if (rttMs.has_value())
576
+ if (rttUs.has_value())
577
577
  {
578
- this->listener->OnRetransmissionQueueNewRttMs(rttMs.value());
578
+ this->listener->OnRetransmissionQueueNewRttUs(rttUs.value());
579
579
  }
580
580
  }
581
581
 
@@ -15,7 +15,7 @@ namespace RTC
15
15
  static constexpr double RtoAlpha{ 1.0 / 8.0 };
16
16
  static constexpr double RtoBeta{ 1.0 / 4.0 };
17
17
 
18
- // A factor that the `minRttVarianceMs` configuration option will be divided
18
+ // A factor that the `minRttVarianceUs` configuration option will be divided
19
19
  // by (before later multiplied with K, which is 4 according to RFC6298). When
20
20
  // this value was introduced, it was unintentionally divided by 8 since that
21
21
  // code worked with scaled numbers (to avoid floating point math). That
@@ -26,12 +26,15 @@ namespace RTC
26
26
  /* Instance methods. */
27
27
 
28
28
  RetransmissionTimeout::RetransmissionTimeout(const SctpOptions& sctpOptions)
29
- : minRtoMs(sctpOptions.minRtoMs),
30
- maxRtoMs(sctpOptions.maxRtoMs),
31
- maxRttMs(sctpOptions.maxRttMs),
32
- minRttVarianceMs(sctpOptions.minRttVarianceMs / HeuristicVarianceAdjustment),
33
- srttMs(sctpOptions.initialRtoMs),
34
- rtoMs(sctpOptions.initialRtoMs),
29
+ // NOTE: The options are in milliseconds, while this class works in
30
+ // microseconds so that sub-millisecond RTTs are not lost.
31
+ : minRtoUs(sctpOptions.minRtoMs * 1000),
32
+ maxRtoUs(sctpOptions.maxRtoMs * 1000),
33
+ maxRttUs(sctpOptions.maxRttMs * 1000),
34
+ minRttVarianceUs(
35
+ static_cast<int64_t>((sctpOptions.minRttVarianceMs * 1000) / HeuristicVarianceAdjustment)),
36
+ srttUs(sctpOptions.initialRtoMs * 1000),
37
+ rtoUs(sctpOptions.initialRtoMs * 1000),
35
38
  firstMeasurement(true)
36
39
  {
37
40
  MS_TRACE();
@@ -47,25 +50,25 @@ namespace RTC
47
50
  MS_TRACE();
48
51
 
49
52
  MS_DUMP_CLEAN(indentation, "<SCTP::RetransmissionTimeout>");
50
- MS_DUMP_CLEAN(indentation, " min rto (ms): %" PRIu64, this->minRtoMs);
51
- MS_DUMP_CLEAN(indentation, " max rto (ms): %" PRIu64, this->maxRtoMs);
52
- MS_DUMP_CLEAN(indentation, " max rtt (ms): %" PRIu64, this->maxRttMs);
53
- MS_DUMP_CLEAN(indentation, " min rtt variance (ms): %" PRIu64, this->minRttVarianceMs);
54
- MS_DUMP_CLEAN(indentation, " rto (ms): %" PRIu64, GetRtoMs());
55
- MS_DUMP_CLEAN(indentation, " srtt (ms): %" PRIu64, GetSrttMs());
53
+ MS_DUMP_CLEAN(indentation, " min rto (us): %" PRIi64, this->minRtoUs);
54
+ MS_DUMP_CLEAN(indentation, " max rto (us): %" PRIi64, this->maxRtoUs);
55
+ MS_DUMP_CLEAN(indentation, " max rtt (us): %" PRIi64, this->maxRttUs);
56
+ MS_DUMP_CLEAN(indentation, " min rtt variance (us): %" PRIi64, this->minRttVarianceUs);
57
+ MS_DUMP_CLEAN(indentation, " rto (us): %" PRIi64, GetRtoUs());
58
+ MS_DUMP_CLEAN(indentation, " srtt (us): %" PRIi64, GetSrttUs());
56
59
  MS_DUMP_CLEAN(indentation, "</SCTP::RetransmissionTimeout>");
57
60
  }
58
61
 
59
- void RetransmissionTimeout::ObserveRttMs(uint64_t rttMs)
62
+ void RetransmissionTimeout::ObserveRttUs(int64_t rttUs)
60
63
  {
61
64
  MS_TRACE();
62
65
 
63
66
  // Unrealistic values will be skipped. If a wrongly measured (or otherwise
64
67
  // corrupt) value was processed, it could change the state in a way that
65
68
  // would take a very long time to recover.
66
- if (rttMs == 0 || rttMs > this->maxRttMs)
69
+ if (rttUs <= 0 || rttUs > this->maxRttUs)
67
70
  {
68
- MS_WARN_DEV(sctp, "skipping given unrealistic rttMs value %" PRIu64, rttMs);
71
+ MS_WARN_DEV(sctp, "skipping given unrealistic rttUs value %" PRIi64, rttUs);
69
72
 
70
73
  return;
71
74
  }
@@ -73,25 +76,25 @@ namespace RTC
73
76
  // https://datatracker.ietf.org/doc/html/rfc9260#section-6.3.1
74
77
  if (this->firstMeasurement)
75
78
  {
76
- this->srttMs = rttMs;
77
- this->rttVarMs = rttMs / 2.0;
79
+ this->srttUs = rttUs;
80
+ this->rttVarUs = rttUs / 2.0;
78
81
  this->firstMeasurement = false;
79
82
  }
80
83
  else
81
84
  {
82
- const double rttDiffMs = std::abs(this->srttMs - static_cast<double>(rttMs));
85
+ const double rttDiffUs = std::abs(this->srttUs - static_cast<double>(rttUs));
83
86
 
84
- this->rttVarMs = ((1.0 - RtoBeta) * this->rttVarMs) + (RtoBeta * rttDiffMs);
85
- this->srttMs = ((1.0 - RtoAlpha) * this->srttMs) + (RtoAlpha * rttMs);
87
+ this->rttVarUs = ((1.0 - RtoBeta) * this->rttVarUs) + (RtoBeta * rttDiffUs);
88
+ this->srttUs = ((1.0 - RtoAlpha) * this->srttUs) + (RtoAlpha * rttUs);
86
89
  }
87
90
 
88
- this->rttVarMs = std::max(this->rttVarMs, static_cast<double>(this->minRttVarianceMs));
89
- this->rtoMs = this->srttMs + (4.0 * this->rttVarMs);
90
- this->rtoMs = std::round(
91
+ this->rttVarUs = std::max(this->rttVarUs, static_cast<double>(this->minRttVarianceUs));
92
+ this->rtoUs = this->srttUs + (4.0 * this->rttVarUs);
93
+ this->rtoUs = std::round(
91
94
  std::clamp(
92
- this->rtoMs, static_cast<double>(this->minRtoMs), static_cast<double>(this->maxRtoMs)));
95
+ this->rtoUs, static_cast<double>(this->minRtoUs), static_cast<double>(this->maxRtoUs)));
93
96
 
94
- MS_DEBUG_DEV("new computed RTO: %" PRIu64 " ms", this->rtoMs);
97
+ MS_DEBUG_DEV("new computed RTO: %" PRIi64 " us", static_cast<int64_t>(this->rtoUs));
95
98
  }
96
99
  } // namespace SCTP
97
100
  } // namespace RTC
@@ -43,7 +43,7 @@ namespace RTC
43
43
  }
44
44
 
45
45
  void RoundRobinSendQueue::AddMessage(
46
- uint64_t nowMs, Message message, const SendMessageOptions& sendMessageOptions)
46
+ int64_t nowUs, Message message, const SendMessageOptions& sendMessageOptions)
47
47
  {
48
48
  MS_TRACE();
49
49
 
@@ -51,17 +51,18 @@ namespace RTC
51
51
 
52
52
  // Any limited lifetime should start counting from now - when the message
53
53
  // has been added to the queue.
54
- // `expiresAtMs` is the time when it expires. Which is slightly larger
54
+ // `expiresAtUs` is the time when it expires. Which is slightly larger
55
55
  // than the message's lifetime, as the message is alive during its entire
56
56
  // lifetime (which may be zero).
57
+ // NOTE: `lifetimeMs` is in milliseconds, being it given by the API.
57
58
  const MessageAttributes attributes = {
58
59
  .isUnordered = sendMessageOptions.unordered,
59
60
  .maxRetransmissions = sendMessageOptions.maxRetransmissions.has_value()
60
61
  ? sendMessageOptions.maxRetransmissions.value()
61
62
  : Types::MaxRetransmitsNoLimit,
62
- .expiresAtMs = sendMessageOptions.lifetimeMs.has_value()
63
- ? nowMs + sendMessageOptions.lifetimeMs.value() + 1
64
- : Types::ExpiresAtMsInfinite,
63
+ .expiresAtUs = sendMessageOptions.lifetimeMs.has_value()
64
+ ? nowUs + (sendMessageOptions.lifetimeMs.value() * 1000) + 1
65
+ : Types::ExpiresAtUsInfinite,
65
66
  .lifecycleId = sendMessageOptions.lifecycleId,
66
67
  };
67
68
 
@@ -98,11 +99,11 @@ namespace RTC
98
99
  }
99
100
 
100
101
  std::optional<SendQueueInterface::DataToSend> RoundRobinSendQueue::Produce(
101
- uint64_t nowMs, size_t maxLength)
102
+ int64_t nowUs, size_t maxLength)
102
103
  {
103
104
  MS_TRACE();
104
105
 
105
- return this->scheduler.Produce(nowMs, maxLength);
106
+ return this->scheduler.Produce(nowUs, maxLength);
106
107
  }
107
108
 
108
109
  bool RoundRobinSendQueue::Discard(uint16_t streamId, uint32_t outgoingMessageId)
@@ -418,7 +419,7 @@ namespace RTC
418
419
  }
419
420
 
420
421
  std::optional<SendQueueInterface::DataToSend> RoundRobinSendQueue::OutgoingStream::Produce(
421
- uint64_t nowMs, size_t maxLength)
422
+ int64_t nowUs, size_t maxLength)
422
423
  {
423
424
  MS_TRACE();
424
425
 
@@ -435,7 +436,7 @@ namespace RTC
435
436
  if (!item.mid.has_value())
436
437
  {
437
438
  // This entire message has already expired. Try the next one.
438
- if (item.attributes.expiresAtMs != Types::ExpiresAtMsInfinite && item.attributes.expiresAtMs <= nowMs)
439
+ if (item.attributes.expiresAtUs != Types::ExpiresAtUsInfinite && item.attributes.expiresAtUs <= nowUs)
439
440
  {
440
441
  HandleMessageExpired(item);
441
442
 
@@ -472,7 +473,7 @@ namespace RTC
472
473
  // Zero-copy the payload if the message fits in a single chunk.
473
474
  std::vector<uint8_t> payload =
474
475
  isBeginning && isEnd ? std::move(message).ReleasePayload()
475
- : std::vector<uint8_t>(chunkPayload.begin(), chunkPayload.end());
476
+ : std::vector<uint8_t>(chunkPayload.begin(), chunkPayload.end());
476
477
 
477
478
  const uint32_t fsn = item.currentFsn;
478
479
 
@@ -495,7 +496,7 @@ namespace RTC
495
496
  item.attributes.isUnordered));
496
497
 
497
498
  dataToSend.maxRetransmissions = item.attributes.maxRetransmissions;
498
- dataToSend.expiresAtMs = item.attributes.expiresAtMs;
499
+ dataToSend.expiresAtUs = item.attributes.expiresAtUs;
499
500
  dataToSend.lifecycleId = isEnd ? item.attributes.lifecycleId : std::nullopt;
500
501
 
501
502
  if (isEnd)
@@ -11,7 +11,7 @@ namespace RTC
11
11
  {
12
12
  /* Instance methods. */
13
13
 
14
- std::optional<SendQueueInterface::DataToSend> StreamScheduler::Produce(uint64_t nowMs, size_t maxLength)
14
+ std::optional<SendQueueInterface::DataToSend> StreamScheduler::Produce(int64_t nowUs, size_t maxLength)
15
15
  {
16
16
  MS_TRACE();
17
17
 
@@ -56,7 +56,7 @@ namespace RTC
56
56
  "current stream should be in active streams");
57
57
  }
58
58
 
59
- dataToSend = this->currentStream->Produce(nowMs, maxLength);
59
+ dataToSend = this->currentStream->Produce(nowUs, maxLength);
60
60
  }
61
61
 
62
62
  if (!dataToSend.has_value())
@@ -234,12 +234,12 @@ namespace RTC
234
234
  }
235
235
 
236
236
  std::optional<SendQueueInterface::DataToSend> StreamScheduler::Stream::Produce(
237
- uint64_t nowMs, size_t maxLength)
237
+ int64_t nowUs, size_t maxLength)
238
238
  {
239
239
  MS_TRACE();
240
240
 
241
241
  std::optional<SendQueueInterface::DataToSend> dataToSend =
242
- this->producer.Produce(nowMs, maxLength);
242
+ this->producer.Produce(nowUs, maxLength);
243
243
 
244
244
  if (dataToSend.has_value())
245
245
  {
@@ -66,8 +66,8 @@ namespace RTC
66
66
  this->streamId,
67
67
  this->ordered,
68
68
  this->maxPacketLifeTime ? flatbuffers::Optional<uint16_t>(this->maxPacketLifeTime)
69
- : flatbuffers::nullopt,
69
+ : flatbuffers::nullopt,
70
70
  this->maxRetransmits ? flatbuffers::Optional<uint16_t>(this->maxRetransmits)
71
- : flatbuffers::nullopt);
71
+ : flatbuffers::nullopt);
72
72
  }
73
73
  } // namespace RTC
@@ -90,8 +90,8 @@ namespace RTC
90
90
  // Do nothing.
91
91
  }
92
92
 
93
- uint32_t SimpleProducerStreamManager::IncreaseLayer(
94
- uint32_t bitrate, bool /*considerLoss*/, float /*lossPercentage*/, uint64_t nowMs)
93
+ int64_t SimpleProducerStreamManager::IncreaseLayer(
94
+ int64_t bitrate, bool /*considerLoss*/, float /*lossPercentage*/, int64_t nowMs)
95
95
  {
96
96
  MS_TRACE();
97
97
 
@@ -103,7 +103,7 @@ namespace RTC
103
103
  // about this.
104
104
  if (this->managingBitrate)
105
105
  {
106
- return 0u;
106
+ return 0;
107
107
  }
108
108
 
109
109
  this->managingBitrate = true;
@@ -112,10 +112,10 @@ namespace RTC
112
112
  // because Consumer::GetBitratePriority() does not account for the producer
113
113
  // stream presence/score, so the Transport may still ask us to increase.
114
114
  if (
115
- !this->producerRtpStream || (this->producerRtpStream->GetScore() == 0u &&
116
- this->producerRtpStream->HasRtpInactivityCheckEnabled()))
115
+ !this->producerRtpStream || (this->producerRtpStream->GetScore() == 0 &&
116
+ this->producerRtpStream->HasRtpInactivityCheckEnabled()))
117
117
  {
118
- return 0u;
118
+ return 0;
119
119
  }
120
120
 
121
121
  // Video Simple consumer does not really play the BWE game. However, let's
@@ -132,7 +132,7 @@ namespace RTC
132
132
  }
133
133
  }
134
134
 
135
- void SimpleProducerStreamManager::ApplyLayers(uint64_t /*rtpStreamActiveMs*/)
135
+ void SimpleProducerStreamManager::ApplyLayers(int64_t /*rtpStreamActiveMs*/)
136
136
  {
137
137
  MS_TRACE();
138
138
 
@@ -144,7 +144,7 @@ namespace RTC
144
144
  // Simple does not play the BWE game (even if video kind).
145
145
  }
146
146
 
147
- uint32_t SimpleProducerStreamManager::GetDesiredBitrate(uint64_t nowMs) const
147
+ int64_t SimpleProducerStreamManager::GetDesiredBitrate(int64_t nowMs) const
148
148
  {
149
149
  MS_TRACE();
150
150
 
@@ -153,12 +153,12 @@ namespace RTC
153
153
  // Audio does not play the BWE game.
154
154
  if (this->kind != RTC::Media::Kind::VIDEO)
155
155
  {
156
- return 0u;
156
+ return 0;
157
157
  }
158
158
 
159
159
  if (!IsActive())
160
160
  {
161
- return 0u;
161
+ return 0;
162
162
  }
163
163
 
164
164
  return this->producerRtpStream->GetBitrate(nowMs);