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