mediasoup 3.27.0 → 3.28.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 (213) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/node/lib/Consumer.d.ts.map +1 -1
  3. package/node/lib/Consumer.js +4 -51
  4. package/node/lib/Producer.d.ts.map +1 -1
  5. package/node/lib/Producer.js +4 -8
  6. package/node/lib/ProducerTypes.d.ts +4 -2
  7. package/node/lib/ProducerTypes.d.ts.map +1 -1
  8. package/node/lib/Router.d.ts.map +1 -1
  9. package/node/lib/Router.js +4 -0
  10. package/node/lib/Transport.d.ts.map +1 -1
  11. package/node/lib/Transport.js +7 -10
  12. package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.d.ts +3 -4
  13. package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.d.ts.map +1 -1
  14. package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.js +3 -4
  15. package/node/lib/ortc.d.ts +0 -2
  16. package/node/lib/ortc.d.ts.map +1 -1
  17. package/node/lib/ortc.js +11 -21
  18. package/node/lib/rtpMappingFbsUtils.d.ts +6 -0
  19. package/node/lib/rtpMappingFbsUtils.d.ts.map +1 -0
  20. package/node/lib/rtpMappingFbsUtils.js +65 -0
  21. package/node/lib/rtpParametersFbsUtils.d.ts.map +1 -1
  22. package/node/lib/rtpParametersFbsUtils.js +0 -6
  23. package/node/lib/rtpParametersTypes.d.ts +1 -1
  24. package/node/lib/rtpParametersTypes.d.ts.map +1 -1
  25. package/node/lib/rtpStreamFbsUtils.d.ts +4 -0
  26. package/node/lib/rtpStreamFbsUtils.d.ts.map +1 -0
  27. package/node/lib/rtpStreamFbsUtils.js +51 -0
  28. package/node/lib/supportedRtpCapabilities.d.ts.map +1 -1
  29. package/node/lib/supportedRtpCapabilities.js +6 -13
  30. package/node/lib/test/test-Consumer.js +1 -13
  31. package/node/lib/test/test-DataConsumer.js +9 -0
  32. package/node/lib/test/test-DataProducer.js +38 -0
  33. package/node/lib/test/test-PipeTransport.js +27 -29
  34. package/node/lib/test/test-Producer.js +97 -0
  35. package/node/lib/test/test-ortc.js +34 -14
  36. package/package.json +10 -10
  37. package/worker/fbs/FBS/meson.build +25 -0
  38. package/worker/fbs/meson.build +15 -18
  39. package/worker/fbs/rtpParameters.fbs +0 -1
  40. package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
  41. package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +16 -2
  42. package/worker/include/DepLibUV.hpp +13 -0
  43. package/worker/include/RTC/BWE/AlrDetector.hpp +97 -0
  44. package/worker/include/RTC/BWE/BitrateProber.hpp +217 -0
  45. package/worker/include/RTC/BWE/BitrateUtils.hpp +39 -0
  46. package/worker/include/RTC/BWE/BweTypes.hpp +171 -3
  47. package/worker/include/RTC/BWE/FeedbackAdapter.hpp +0 -14
  48. package/worker/include/RTC/BWE/InterArrival.hpp +117 -0
  49. package/worker/include/RTC/BWE/IntervalBudget.hpp +81 -0
  50. package/worker/include/RTC/BWE/LossBasedController.hpp +625 -0
  51. package/worker/include/RTC/BWE/OveruseDetector.hpp +71 -0
  52. package/worker/include/RTC/BWE/OveruseEstimator.hpp +115 -0
  53. package/worker/include/RTC/BWE/ProbeBitrateEstimator.hpp +84 -0
  54. package/worker/include/RTC/BWE/ProbeController.hpp +379 -0
  55. package/worker/include/RTC/BWE/ProbePacketGenerator.hpp +130 -0
  56. package/worker/include/RTC/BWE/ProbingScheduler.hpp +187 -0
  57. package/worker/include/RTC/BWE/RembGenerator.hpp +96 -0
  58. package/worker/include/RTC/BWE/RemoteBitrateEstimatorAbsSendTime.hpp +237 -0
  59. package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +26 -0
  60. package/worker/include/RTC/BWE/SendPacketHistory.hpp +161 -25
  61. package/worker/include/RTC/BWE/TargetRateController.hpp +306 -0
  62. package/worker/include/RTC/BWE/TransportWideCcFeedbackGenerator.hpp +146 -0
  63. package/worker/include/RTC/BWE/TrendlineEstimator.hpp +73 -16
  64. package/worker/include/RTC/Consts.hpp +70 -0
  65. package/worker/include/RTC/DataConsumer.hpp +3 -5
  66. package/worker/include/RTC/DirectTransport.hpp +4 -5
  67. package/worker/include/RTC/PipeTransport.hpp +4 -5
  68. package/worker/include/RTC/PlainTransport.hpp +4 -5
  69. package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +6 -7
  70. package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +3 -1
  71. package/worker/include/RTC/RTP/Codecs/Tools.hpp +1 -1
  72. package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +0 -1
  73. package/worker/include/RTC/RTP/Packet.hpp +16 -4
  74. package/worker/include/RTC/RTP/ProbationGenerator.hpp +0 -8
  75. package/worker/include/RTC/RTP/RtpStream.hpp +12 -9
  76. package/worker/include/RTC/RTP/RtpStreamRecv.hpp +22 -4
  77. package/worker/include/RTC/RTP/RtpStreamSend.hpp +4 -2
  78. package/worker/include/RTC/RTP/RtxStream.hpp +10 -4
  79. package/worker/include/RTC/RateCalculator.hpp +103 -24
  80. package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +33 -3
  81. package/worker/include/RTC/{RtcLogger.hpp → RtcLogger/RtpPacket.hpp} +5 -3
  82. package/worker/include/RTC/RtcLogger/SendBurst.hpp +88 -0
  83. package/worker/include/RTC/RtpDictionaries.hpp +3 -4
  84. package/worker/include/RTC/SCTP/association/Association.hpp +1 -1
  85. package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +36 -0
  86. package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +0 -1
  87. package/worker/include/RTC/SCTP/public/SctpTypes.hpp +9 -9
  88. package/worker/include/RTC/SCTP/rx/DataTracker.hpp +1 -1
  89. package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +11 -1
  90. package/worker/include/RTC/SctpDictionaries.hpp +2 -2
  91. package/worker/include/RTC/TcpConnection.hpp +2 -1
  92. package/worker/include/RTC/Transport.hpp +23 -8
  93. package/worker/include/RTC/TransportTuple.hpp +61 -6
  94. package/worker/include/RTC/WebRtcTransport.hpp +4 -5
  95. package/worker/include/Shared.hpp +5 -0
  96. package/worker/include/SharedInterface.hpp +10 -0
  97. package/worker/include/Utils.hpp +72 -3
  98. package/worker/include/common.hpp +12 -4
  99. package/worker/include/handles/SendCallbacks.hpp +34 -0
  100. package/worker/include/handles/TcpConnectionHandle.hpp +4 -12
  101. package/worker/include/handles/UdpSocketHandle.hpp +4 -8
  102. package/worker/meson.build +45 -1
  103. package/worker/meson_options.txt +1 -0
  104. package/worker/mocks/include/MockShared.hpp +16 -2
  105. package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +1 -1
  106. package/worker/scripts/package-lock.json +6 -6
  107. package/worker/src/RTC/BWE/AimdRateControl.cpp +4 -5
  108. package/worker/src/RTC/BWE/AlrDetector.cpp +80 -0
  109. package/worker/src/RTC/BWE/BitrateProber.cpp +256 -0
  110. package/worker/src/RTC/BWE/BitrateUtils.cpp +54 -0
  111. package/worker/src/RTC/BWE/DelayBasedBwe.cpp +2 -2
  112. package/worker/src/RTC/BWE/FeedbackAdapter.cpp +20 -37
  113. package/worker/src/RTC/BWE/InterArrival.cpp +216 -0
  114. package/worker/src/RTC/BWE/IntervalBudget.cpp +93 -0
  115. package/worker/src/RTC/BWE/LossBasedController.cpp +1194 -0
  116. package/worker/src/RTC/BWE/OveruseDetector.cpp +128 -0
  117. package/worker/src/RTC/BWE/OveruseEstimator.cpp +166 -0
  118. package/worker/src/RTC/BWE/ProbeBitrateEstimator.cpp +222 -0
  119. package/worker/src/RTC/BWE/ProbeController.cpp +645 -0
  120. package/worker/src/RTC/BWE/ProbePacketGenerator.cpp +140 -0
  121. package/worker/src/RTC/BWE/ProbingScheduler.cpp +196 -0
  122. package/worker/src/RTC/BWE/RembGenerator.cpp +169 -0
  123. package/worker/src/RTC/BWE/RemoteBitrateEstimatorAbsSendTime.cpp +497 -0
  124. package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +47 -0
  125. package/worker/src/RTC/BWE/SendPacketHistory.cpp +173 -50
  126. package/worker/src/RTC/BWE/TargetRateController.cpp +433 -0
  127. package/worker/src/RTC/BWE/TransportWideCcFeedbackGenerator.cpp +377 -0
  128. package/worker/src/RTC/BWE/TrendlineEstimator.cpp +102 -5
  129. package/worker/src/RTC/Consumer.cpp +7 -5
  130. package/worker/src/RTC/DataConsumer.cpp +8 -10
  131. package/worker/src/RTC/DirectTransport.cpp +14 -8
  132. package/worker/src/RTC/DtlsTransport.cpp +8 -8
  133. package/worker/src/RTC/ICE/IceCandidate.cpp +4 -4
  134. package/worker/src/RTC/ICE/IceServer.cpp +1 -1
  135. package/worker/src/RTC/PipeTransport.cpp +13 -8
  136. package/worker/src/RTC/PlainTransport.cpp +13 -8
  137. package/worker/src/RTC/Producer.cpp +14 -31
  138. package/worker/src/RTC/RTCP/Bye.cpp +1 -1
  139. package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +18 -0
  140. package/worker/src/RTC/RTCP/FeedbackPsRpsi.cpp +2 -2
  141. package/worker/src/RTC/RTCP/FeedbackPsVbcm.cpp +2 -1
  142. package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +2 -2
  143. package/worker/src/RTC/RTCP/Sdes.cpp +1 -1
  144. package/worker/src/RTC/RTP/Codecs/DependencyDescriptor.cpp +2 -1
  145. package/worker/src/RTC/RTP/Packet.cpp +26 -11
  146. package/worker/src/RTC/RTP/ProbationGenerator.cpp +5 -6
  147. package/worker/src/RTC/RTP/RtpStream.cpp +1 -1
  148. package/worker/src/RTC/RTP/RtpStreamRecv.cpp +69 -48
  149. package/worker/src/RTC/RTP/RtpStreamSend.cpp +31 -31
  150. package/worker/src/RTC/RTP/RtxStream.cpp +22 -7
  151. package/worker/src/RTC/RateCalculator.cpp +133 -28
  152. package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +56 -1
  153. package/worker/src/RTC/{RtcLogger.cpp → RtcLogger/RtpPacket.cpp} +2 -2
  154. package/worker/src/RTC/RtcLogger/SendBurst.cpp +124 -0
  155. package/worker/src/RTC/RtpDictionaries/RtpHeaderExtensionUri.cpp +2 -12
  156. package/worker/src/RTC/RtpDictionaries/RtpParameters.cpp +1 -1
  157. package/worker/src/RTC/SCTP/association/Association.cpp +16 -2
  158. package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +106 -1
  159. package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +1 -1
  160. package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +3 -3
  161. package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +2 -1
  162. package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +4 -4
  163. package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +4 -4
  164. package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +6 -10
  165. package/worker/src/RTC/SimulcastProducerStreamManager.cpp +2 -2
  166. package/worker/src/RTC/SrtpSession.cpp +2 -2
  167. package/worker/src/RTC/SvcProducerStreamManager.cpp +2 -2
  168. package/worker/src/RTC/TcpConnection.cpp +2 -2
  169. package/worker/src/RTC/Transport.cpp +112 -75
  170. package/worker/src/RTC/TransportTuple.cpp +4 -4
  171. package/worker/src/RTC/WebRtcServer.cpp +4 -3
  172. package/worker/src/RTC/WebRtcTransport.cpp +20 -13
  173. package/worker/src/Utils/BitStream.cpp +24 -0
  174. package/worker/src/handles/BackoffTimerHandle.cpp +1 -1
  175. package/worker/src/handles/TcpConnectionHandle.cpp +13 -23
  176. package/worker/src/handles/UdpSocketHandle.cpp +14 -21
  177. package/worker/tasks.py +43 -18
  178. package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +68 -14
  179. package/worker/test/include/RTC/BWE/helpers/RemoteBitrateEstimatorAbsSendTimeTestHelper.hpp +125 -0
  180. package/worker/test/src/RTC/BWE/TestAlrDetector.cpp +110 -0
  181. package/worker/test/src/RTC/BWE/TestBitrateProber.cpp +418 -0
  182. package/worker/test/src/RTC/BWE/TestBitrateUtils.cpp +61 -0
  183. package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +4 -4
  184. package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +53 -37
  185. package/worker/test/src/RTC/BWE/TestInterArrival.cpp +643 -0
  186. package/worker/test/src/RTC/BWE/TestIntervalBudget.cpp +130 -0
  187. package/worker/test/src/RTC/BWE/TestLossBasedController.cpp +1199 -0
  188. package/worker/test/src/RTC/BWE/TestOveruseDetector.cpp +519 -0
  189. package/worker/test/src/RTC/BWE/TestProbeBitrateEstimator.cpp +266 -0
  190. package/worker/test/src/RTC/BWE/TestProbeController.cpp +1682 -0
  191. package/worker/test/src/RTC/BWE/TestProbePacketGenerator.cpp +265 -0
  192. package/worker/test/src/RTC/BWE/TestProbingScheduler.cpp +260 -0
  193. package/worker/test/src/RTC/BWE/TestRembGenerator.cpp +285 -0
  194. package/worker/test/src/RTC/BWE/TestRemoteBitrateEstimatorAbsSendTime.cpp +414 -0
  195. package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +296 -77
  196. package/worker/test/src/RTC/BWE/TestTargetRateController.cpp +337 -0
  197. package/worker/test/src/RTC/BWE/TestTransportWideCcFeedbackGenerator.cpp +578 -0
  198. package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +45 -0
  199. package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +133 -29
  200. package/worker/test/src/RTC/BWE/helpers/RemoteBitrateEstimatorAbsSendTimeTestHelper.cpp +625 -0
  201. package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +19 -0
  202. package/worker/test/src/RTC/RTP/TestPacket.cpp +58 -4
  203. package/worker/test/src/RTC/RTP/TestProbationGenerator.cpp +3 -2
  204. package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +50 -0
  205. package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +59 -0
  206. package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +111 -0
  207. package/worker/test/src/RTC/TestRateCalculator.cpp +322 -60
  208. package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +95 -7
  209. package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +34 -16
  210. package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +31 -13
  211. package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +37 -19
  212. package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +10 -10
  213. package/worker/test/src/Utils/TestTime.cpp +120 -21
@@ -18,6 +18,22 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
18
18
  constexpr uint32_t MediaSsrc{ 3333 };
19
19
  constexpr size_t RtcpMtu{ 1200 };
20
20
 
21
+ // Take note of a packet and of it having left right away.
22
+ const auto sendPacket = [](
23
+ RTC::BWE::SendPacketHistory& sendPacketHistory,
24
+ uint16_t seq,
25
+ size_t size,
26
+ bool isAudio,
27
+ int64_t atUs) -> int64_t
28
+ {
29
+ const int64_t sequenceNumber = sendPacketHistory.AddPacket(
30
+ { .ssrc = Ssrc, .seq = seq, .size = size, .isAudio = isAudio, .createdAtUs = atUs });
31
+
32
+ sendPacketHistory.ProcessSentPacket(sequenceNumber, atUs);
33
+
34
+ return sequenceNumber;
35
+ };
36
+
21
37
  // Builds the feedback a receiver would send, reporting the given arrival
22
38
  // times. The sequence numbers left out of them are reported as lost.
23
39
  auto createFeedback = [SenderSsrc, MediaSsrc](
@@ -45,9 +61,9 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
45
61
  RTC::BWE::SendPacketHistory sendPacketHistory;
46
62
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
47
63
 
48
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
49
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 10000);
50
- sendPacketHistory.AddPacket(Ssrc, 102, PacketSize, false, InitialTimeUs + 20000);
64
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
65
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 10000);
66
+ sendPacket(sendPacketHistory, 102, PacketSize, false, InitialTimeUs + 20000);
51
67
 
52
68
  const auto feedback = createFeedback(
53
69
  0,
@@ -92,9 +108,9 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
92
108
  RTC::BWE::SendPacketHistory sendPacketHistory;
93
109
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
94
110
 
95
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
96
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 10000);
97
- sendPacketHistory.AddPacket(Ssrc, 102, PacketSize, false, InitialTimeUs + 20000);
111
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
112
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 10000);
113
+ sendPacket(sendPacketHistory, 102, PacketSize, false, InitialTimeUs + 20000);
98
114
 
99
115
  const auto feedback = createFeedback(
100
116
  0,
@@ -123,8 +139,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
123
139
  RTC::BWE::SendPacketHistory sendPacketHistory;
124
140
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
125
141
 
126
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, true, InitialTimeUs);
127
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 10000);
142
+ sendPacket(sendPacketHistory, 100, PacketSize, true, InitialTimeUs);
143
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 10000);
128
144
 
129
145
  const auto feedback = createFeedback(
130
146
  0,
@@ -143,8 +159,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
143
159
  const auto& result = processedFeedback.value();
144
160
 
145
161
  REQUIRE(result.packetFeedbacks.size() == 2);
146
- REQUIRE(result.packetFeedbacks[0].sentPacket.audio == true);
147
- REQUIRE(result.packetFeedbacks[1].sentPacket.audio == false);
162
+ REQUIRE(result.packetFeedbacks[0].sentPacket.isAudio == true);
163
+ REQUIRE(result.packetFeedbacks[1].sentPacket.isAudio == false);
148
164
  }
149
165
 
150
166
  SECTION("the feedback tells the data still in flight once it's been resolved")
@@ -152,8 +168,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
152
168
  RTC::BWE::SendPacketHistory sendPacketHistory;
153
169
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
154
170
 
155
- sendPacketHistory.AddPacket(Ssrc, 100, 200, false, InitialTimeUs);
156
- sendPacketHistory.AddPacket(Ssrc, 101, 300, false, InitialTimeUs + 10000);
171
+ sendPacket(sendPacketHistory, 100, 200, false, InitialTimeUs);
172
+ sendPacket(sendPacketHistory, 101, 300, false, InitialTimeUs + 10000);
157
173
 
158
174
  const auto firstFeedback = createFeedback(
159
175
  0,
@@ -190,11 +206,10 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
190
206
  RTC::BWE::SendPacketHistory sendPacketHistory({ .windowDurationUs = WindowDurationUs });
191
207
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
192
208
 
193
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
209
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
194
210
 
195
211
  // Long enough afterwards for the window to drop the first packet.
196
- sendPacketHistory.AddPacket(
197
- Ssrc, 101, PacketSize, false, InitialTimeUs + WindowDurationUs + 10000);
212
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + WindowDurationUs + 10000);
198
213
 
199
214
  const auto feedback = createFeedback(
200
215
  0,
@@ -221,8 +236,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
221
236
  RTC::BWE::SendPacketHistory sendPacketHistory;
222
237
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
223
238
 
224
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
225
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 100000);
239
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
240
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 100000);
226
241
 
227
242
  const auto firstFeedback = createFeedback(
228
243
  0,
@@ -273,8 +288,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
273
288
  RTC::BWE::SendPacketHistory sendPacketHistory;
274
289
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
275
290
 
276
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
277
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 100000);
291
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
292
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 100000);
278
293
 
279
294
  const auto firstFeedback = createFeedback(
280
295
  0,
@@ -329,8 +344,8 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
329
344
  RTC::BWE::SendPacketHistory sendPacketHistory;
330
345
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
331
346
 
332
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
333
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + ElapsedUs);
347
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
348
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + ElapsedUs);
334
349
 
335
350
  const auto firstFeedback = createFeedback(
336
351
  0,
@@ -379,9 +394,9 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
379
394
  RTC::BWE::SendPacketHistory sendPacketHistory;
380
395
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
381
396
 
382
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
383
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 10000);
384
- sendPacketHistory.AddPacket(Ssrc, 102, PacketSize, false, InitialTimeUs + 20000);
397
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
398
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 10000);
399
+ sendPacket(sendPacketHistory, 102, PacketSize, false, InitialTimeUs + 20000);
385
400
 
386
401
  // The packets sent later arrived earlier, which is up to whoever consumes
387
402
  // this to reorder.
@@ -415,9 +430,9 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
415
430
  RTC::BWE::SendPacketHistory sendPacketHistory;
416
431
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
417
432
 
418
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
419
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs + 10000);
420
- sendPacketHistory.AddPacket(Ssrc, 102, PacketSize, false, InitialTimeUs + 20000);
433
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
434
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs + 10000);
435
+ sendPacket(sendPacketHistory, 102, PacketSize, false, InitialTimeUs + 20000);
421
436
 
422
437
  // The feedback reporting on the first two packets never made it, so the next
423
438
  // one starts at the third.
@@ -442,15 +457,17 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
442
457
 
443
458
  SECTION("the feedbacks are resolved although the packets being sent run far ahead of them")
444
459
  {
445
- // More than half the range of the sequence numbers the wire carries, which is
446
- // what makes the latest packet sent useless to resolve against.
447
- constexpr int64_t PacketCount{ 40000 };
460
+ // Far enough ahead that the sequence numbers on the wire are nowhere near
461
+ // the ones being reported on, but within half their range, which is as far
462
+ // as a number carrying only its lowest 16 bits can be told apart from the
463
+ // same number one turn of the counter away.
464
+ constexpr int64_t PacketCount{ 30000 };
448
465
 
449
466
  RTC::BWE::SendPacketHistory sendPacketHistory;
450
467
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
451
468
 
452
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
453
- sendPacketHistory.AddPacket(Ssrc, 101, PacketSize, false, InitialTimeUs);
469
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
470
+ sendPacket(sendPacketHistory, 101, PacketSize, false, InitialTimeUs);
454
471
 
455
472
  // The first feedback reports on the packets sent so far.
456
473
  const auto firstFeedback = createFeedback(
@@ -471,11 +488,10 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
471
488
  // And now a lot of packets are sent before the next feedback comes.
472
489
  for (int64_t idx{ 2 }; idx < PacketCount; ++idx)
473
490
  {
474
- sendPacketHistory.AddPacket(Ssrc, 102, PacketSize, false, InitialTimeUs);
491
+ sendPacket(
492
+ sendPacketHistory, static_cast<uint16_t>(100 + idx), PacketSize, false, InitialTimeUs);
475
493
  }
476
494
 
477
- REQUIRE(sendPacketHistory.GetLastSequenceNumber() == PacketCount - 1);
478
-
479
495
  const auto secondFeedback = createFeedback(
480
496
  2,
481
497
  RemoteTimeUs,
@@ -500,7 +516,7 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
500
516
  RTC::BWE::SendPacketHistory sendPacketHistory;
501
517
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
502
518
 
503
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
519
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
504
520
 
505
521
  const auto feedback = createFeedback(0, RemoteTimeUs, {});
506
522
 
@@ -530,7 +546,7 @@ SCENARIO("BWE FeedbackAdapter", "[bwe][feedbackadapter]")
530
546
  RTC::BWE::SendPacketHistory sendPacketHistory;
531
547
  RTC::BWE::FeedbackAdapter feedbackAdapter(&sendPacketHistory);
532
548
 
533
- sendPacketHistory.AddPacket(Ssrc, 100, PacketSize, false, InitialTimeUs);
549
+ sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
534
550
 
535
551
  // A sequence number this history never gave out.
536
552
  const auto feedback = createFeedback(