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.
- package/CHANGELOG.md +19 -0
- package/node/lib/Consumer.d.ts.map +1 -1
- package/node/lib/Consumer.js +4 -51
- package/node/lib/Producer.d.ts.map +1 -1
- package/node/lib/Producer.js +4 -8
- package/node/lib/ProducerTypes.d.ts +4 -2
- package/node/lib/ProducerTypes.d.ts.map +1 -1
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +4 -0
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +7 -10
- package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.d.ts +3 -4
- package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.d.ts.map +1 -1
- package/node/lib/fbs/rtp-parameters/rtp-header-extension-uri.js +3 -4
- package/node/lib/ortc.d.ts +0 -2
- package/node/lib/ortc.d.ts.map +1 -1
- package/node/lib/ortc.js +11 -21
- package/node/lib/rtpMappingFbsUtils.d.ts +6 -0
- package/node/lib/rtpMappingFbsUtils.d.ts.map +1 -0
- package/node/lib/rtpMappingFbsUtils.js +65 -0
- package/node/lib/rtpParametersFbsUtils.d.ts.map +1 -1
- package/node/lib/rtpParametersFbsUtils.js +0 -6
- package/node/lib/rtpParametersTypes.d.ts +1 -1
- package/node/lib/rtpParametersTypes.d.ts.map +1 -1
- package/node/lib/rtpStreamFbsUtils.d.ts +4 -0
- package/node/lib/rtpStreamFbsUtils.d.ts.map +1 -0
- package/node/lib/rtpStreamFbsUtils.js +51 -0
- package/node/lib/supportedRtpCapabilities.d.ts.map +1 -1
- package/node/lib/supportedRtpCapabilities.js +6 -13
- package/node/lib/test/test-Consumer.js +1 -13
- package/node/lib/test/test-DataConsumer.js +9 -0
- package/node/lib/test/test-DataProducer.js +38 -0
- package/node/lib/test/test-PipeTransport.js +27 -29
- package/node/lib/test/test-Producer.js +97 -0
- package/node/lib/test/test-ortc.js +34 -14
- package/package.json +10 -10
- package/worker/fbs/FBS/meson.build +25 -0
- package/worker/fbs/meson.build +15 -18
- package/worker/fbs/rtpParameters.fbs +0 -1
- package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
- package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +16 -2
- package/worker/include/DepLibUV.hpp +13 -0
- package/worker/include/RTC/BWE/AlrDetector.hpp +97 -0
- package/worker/include/RTC/BWE/BitrateProber.hpp +217 -0
- package/worker/include/RTC/BWE/BitrateUtils.hpp +39 -0
- package/worker/include/RTC/BWE/BweTypes.hpp +171 -3
- package/worker/include/RTC/BWE/FeedbackAdapter.hpp +0 -14
- package/worker/include/RTC/BWE/InterArrival.hpp +117 -0
- package/worker/include/RTC/BWE/IntervalBudget.hpp +81 -0
- package/worker/include/RTC/BWE/LossBasedController.hpp +625 -0
- package/worker/include/RTC/BWE/OveruseDetector.hpp +71 -0
- package/worker/include/RTC/BWE/OveruseEstimator.hpp +115 -0
- package/worker/include/RTC/BWE/ProbeBitrateEstimator.hpp +84 -0
- package/worker/include/RTC/BWE/ProbeController.hpp +379 -0
- package/worker/include/RTC/BWE/ProbePacketGenerator.hpp +130 -0
- package/worker/include/RTC/BWE/ProbingScheduler.hpp +187 -0
- package/worker/include/RTC/BWE/RembGenerator.hpp +96 -0
- package/worker/include/RTC/BWE/RemoteBitrateEstimatorAbsSendTime.hpp +237 -0
- package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +26 -0
- package/worker/include/RTC/BWE/SendPacketHistory.hpp +161 -25
- package/worker/include/RTC/BWE/TargetRateController.hpp +306 -0
- package/worker/include/RTC/BWE/TransportWideCcFeedbackGenerator.hpp +146 -0
- package/worker/include/RTC/BWE/TrendlineEstimator.hpp +73 -16
- package/worker/include/RTC/Consts.hpp +70 -0
- package/worker/include/RTC/DataConsumer.hpp +3 -5
- package/worker/include/RTC/DirectTransport.hpp +4 -5
- package/worker/include/RTC/PipeTransport.hpp +4 -5
- package/worker/include/RTC/PlainTransport.hpp +4 -5
- package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +6 -7
- package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +3 -1
- package/worker/include/RTC/RTP/Codecs/Tools.hpp +1 -1
- package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +0 -1
- package/worker/include/RTC/RTP/Packet.hpp +16 -4
- package/worker/include/RTC/RTP/ProbationGenerator.hpp +0 -8
- package/worker/include/RTC/RTP/RtpStream.hpp +12 -9
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +22 -4
- package/worker/include/RTC/RTP/RtpStreamSend.hpp +4 -2
- package/worker/include/RTC/RTP/RtxStream.hpp +10 -4
- package/worker/include/RTC/RateCalculator.hpp +103 -24
- package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +33 -3
- package/worker/include/RTC/{RtcLogger.hpp → RtcLogger/RtpPacket.hpp} +5 -3
- package/worker/include/RTC/RtcLogger/SendBurst.hpp +88 -0
- package/worker/include/RTC/RtpDictionaries.hpp +3 -4
- package/worker/include/RTC/SCTP/association/Association.hpp +1 -1
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +36 -0
- package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +0 -1
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +9 -9
- package/worker/include/RTC/SCTP/rx/DataTracker.hpp +1 -1
- package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +11 -1
- package/worker/include/RTC/SctpDictionaries.hpp +2 -2
- package/worker/include/RTC/TcpConnection.hpp +2 -1
- package/worker/include/RTC/Transport.hpp +23 -8
- package/worker/include/RTC/TransportTuple.hpp +61 -6
- package/worker/include/RTC/WebRtcTransport.hpp +4 -5
- package/worker/include/Shared.hpp +5 -0
- package/worker/include/SharedInterface.hpp +10 -0
- package/worker/include/Utils.hpp +72 -3
- package/worker/include/common.hpp +12 -4
- package/worker/include/handles/SendCallbacks.hpp +34 -0
- package/worker/include/handles/TcpConnectionHandle.hpp +4 -12
- package/worker/include/handles/UdpSocketHandle.hpp +4 -8
- package/worker/meson.build +45 -1
- package/worker/meson_options.txt +1 -0
- package/worker/mocks/include/MockShared.hpp +16 -2
- package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +1 -1
- package/worker/scripts/package-lock.json +6 -6
- package/worker/src/RTC/BWE/AimdRateControl.cpp +4 -5
- package/worker/src/RTC/BWE/AlrDetector.cpp +80 -0
- package/worker/src/RTC/BWE/BitrateProber.cpp +256 -0
- package/worker/src/RTC/BWE/BitrateUtils.cpp +54 -0
- package/worker/src/RTC/BWE/DelayBasedBwe.cpp +2 -2
- package/worker/src/RTC/BWE/FeedbackAdapter.cpp +20 -37
- package/worker/src/RTC/BWE/InterArrival.cpp +216 -0
- package/worker/src/RTC/BWE/IntervalBudget.cpp +93 -0
- package/worker/src/RTC/BWE/LossBasedController.cpp +1194 -0
- package/worker/src/RTC/BWE/OveruseDetector.cpp +128 -0
- package/worker/src/RTC/BWE/OveruseEstimator.cpp +166 -0
- package/worker/src/RTC/BWE/ProbeBitrateEstimator.cpp +222 -0
- package/worker/src/RTC/BWE/ProbeController.cpp +645 -0
- package/worker/src/RTC/BWE/ProbePacketGenerator.cpp +140 -0
- package/worker/src/RTC/BWE/ProbingScheduler.cpp +196 -0
- package/worker/src/RTC/BWE/RembGenerator.cpp +169 -0
- package/worker/src/RTC/BWE/RemoteBitrateEstimatorAbsSendTime.cpp +497 -0
- package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +47 -0
- package/worker/src/RTC/BWE/SendPacketHistory.cpp +173 -50
- package/worker/src/RTC/BWE/TargetRateController.cpp +433 -0
- package/worker/src/RTC/BWE/TransportWideCcFeedbackGenerator.cpp +377 -0
- package/worker/src/RTC/BWE/TrendlineEstimator.cpp +102 -5
- package/worker/src/RTC/Consumer.cpp +7 -5
- package/worker/src/RTC/DataConsumer.cpp +8 -10
- package/worker/src/RTC/DirectTransport.cpp +14 -8
- package/worker/src/RTC/DtlsTransport.cpp +8 -8
- package/worker/src/RTC/ICE/IceCandidate.cpp +4 -4
- package/worker/src/RTC/ICE/IceServer.cpp +1 -1
- package/worker/src/RTC/PipeTransport.cpp +13 -8
- package/worker/src/RTC/PlainTransport.cpp +13 -8
- package/worker/src/RTC/Producer.cpp +14 -31
- package/worker/src/RTC/RTCP/Bye.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +18 -0
- package/worker/src/RTC/RTCP/FeedbackPsRpsi.cpp +2 -2
- package/worker/src/RTC/RTCP/FeedbackPsVbcm.cpp +2 -1
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +2 -2
- package/worker/src/RTC/RTCP/Sdes.cpp +1 -1
- package/worker/src/RTC/RTP/Codecs/DependencyDescriptor.cpp +2 -1
- package/worker/src/RTC/RTP/Packet.cpp +26 -11
- package/worker/src/RTC/RTP/ProbationGenerator.cpp +5 -6
- package/worker/src/RTC/RTP/RtpStream.cpp +1 -1
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +69 -48
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +31 -31
- package/worker/src/RTC/RTP/RtxStream.cpp +22 -7
- package/worker/src/RTC/RateCalculator.cpp +133 -28
- package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +56 -1
- package/worker/src/RTC/{RtcLogger.cpp → RtcLogger/RtpPacket.cpp} +2 -2
- package/worker/src/RTC/RtcLogger/SendBurst.cpp +124 -0
- package/worker/src/RTC/RtpDictionaries/RtpHeaderExtensionUri.cpp +2 -12
- package/worker/src/RTC/RtpDictionaries/RtpParameters.cpp +1 -1
- package/worker/src/RTC/SCTP/association/Association.cpp +16 -2
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +106 -1
- package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +1 -1
- package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +3 -3
- package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +2 -1
- package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +4 -4
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +4 -4
- package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +6 -10
- package/worker/src/RTC/SimulcastProducerStreamManager.cpp +2 -2
- package/worker/src/RTC/SrtpSession.cpp +2 -2
- package/worker/src/RTC/SvcProducerStreamManager.cpp +2 -2
- package/worker/src/RTC/TcpConnection.cpp +2 -2
- package/worker/src/RTC/Transport.cpp +112 -75
- package/worker/src/RTC/TransportTuple.cpp +4 -4
- package/worker/src/RTC/WebRtcServer.cpp +4 -3
- package/worker/src/RTC/WebRtcTransport.cpp +20 -13
- package/worker/src/Utils/BitStream.cpp +24 -0
- package/worker/src/handles/BackoffTimerHandle.cpp +1 -1
- package/worker/src/handles/TcpConnectionHandle.cpp +13 -23
- package/worker/src/handles/UdpSocketHandle.cpp +14 -21
- package/worker/tasks.py +43 -18
- package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +68 -14
- package/worker/test/include/RTC/BWE/helpers/RemoteBitrateEstimatorAbsSendTimeTestHelper.hpp +125 -0
- package/worker/test/src/RTC/BWE/TestAlrDetector.cpp +110 -0
- package/worker/test/src/RTC/BWE/TestBitrateProber.cpp +418 -0
- package/worker/test/src/RTC/BWE/TestBitrateUtils.cpp +61 -0
- package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +4 -4
- package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +53 -37
- package/worker/test/src/RTC/BWE/TestInterArrival.cpp +643 -0
- package/worker/test/src/RTC/BWE/TestIntervalBudget.cpp +130 -0
- package/worker/test/src/RTC/BWE/TestLossBasedController.cpp +1199 -0
- package/worker/test/src/RTC/BWE/TestOveruseDetector.cpp +519 -0
- package/worker/test/src/RTC/BWE/TestProbeBitrateEstimator.cpp +266 -0
- package/worker/test/src/RTC/BWE/TestProbeController.cpp +1682 -0
- package/worker/test/src/RTC/BWE/TestProbePacketGenerator.cpp +265 -0
- package/worker/test/src/RTC/BWE/TestProbingScheduler.cpp +260 -0
- package/worker/test/src/RTC/BWE/TestRembGenerator.cpp +285 -0
- package/worker/test/src/RTC/BWE/TestRemoteBitrateEstimatorAbsSendTime.cpp +414 -0
- package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +296 -77
- package/worker/test/src/RTC/BWE/TestTargetRateController.cpp +337 -0
- package/worker/test/src/RTC/BWE/TestTransportWideCcFeedbackGenerator.cpp +578 -0
- package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +45 -0
- package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +133 -29
- package/worker/test/src/RTC/BWE/helpers/RemoteBitrateEstimatorAbsSendTimeTestHelper.cpp +625 -0
- package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +19 -0
- package/worker/test/src/RTC/RTP/TestPacket.cpp +58 -4
- package/worker/test/src/RTC/RTP/TestProbationGenerator.cpp +3 -2
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +50 -0
- package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +59 -0
- package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +111 -0
- package/worker/test/src/RTC/TestRateCalculator.cpp +322 -60
- package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +95 -7
- package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +34 -16
- package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +31 -13
- package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +37 -19
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +10 -10
- 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
|
|
49
|
-
sendPacketHistory
|
|
50
|
-
sendPacketHistory
|
|
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
|
|
96
|
-
sendPacketHistory
|
|
97
|
-
sendPacketHistory
|
|
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
|
|
127
|
-
sendPacketHistory
|
|
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.
|
|
147
|
-
REQUIRE(result.packetFeedbacks[1].sentPacket.
|
|
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
|
|
156
|
-
sendPacketHistory
|
|
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
|
|
209
|
+
sendPacket(sendPacketHistory, 100, PacketSize, false, InitialTimeUs);
|
|
194
210
|
|
|
195
211
|
// Long enough afterwards for the window to drop the first packet.
|
|
196
|
-
sendPacketHistory
|
|
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
|
|
225
|
-
sendPacketHistory
|
|
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
|
|
277
|
-
sendPacketHistory
|
|
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
|
|
333
|
-
sendPacketHistory
|
|
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
|
|
383
|
-
sendPacketHistory
|
|
384
|
-
sendPacketHistory
|
|
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
|
|
419
|
-
sendPacketHistory
|
|
420
|
-
sendPacketHistory
|
|
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
|
-
//
|
|
446
|
-
//
|
|
447
|
-
|
|
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
|
|
453
|
-
sendPacketHistory
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|