mediasoup 3.11.15 → 3.11.17

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.
@@ -85,6 +85,10 @@ export declare class DirectTransport extends Transport<DirectTransportEvents, Di
85
85
  * @override
86
86
  */
87
87
  setMaxOutgoingBitrate(bitrate: number): Promise<void>;
88
+ /**
89
+ * @override
90
+ */
91
+ setMinOutgoingBitrate(bitrate: number): Promise<void>;
88
92
  /**
89
93
  * Send RTCP packet.
90
94
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DirectTransport.d.ts","sourceRoot":"","sources":["../src/DirectTransport.ts"],"names":[],"mappings":";AAEA,OAAO,EACN,SAAS,EAET,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,sBAAsB,GAClC;IACC;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC/B;IAEC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACnD;IACC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GACnE;IACC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;CACf,CAAC;AAEF,KAAK,iCAAiC,GAAG,2BAA2B,GACpE;IACC,IAAI,EAAE,mBAAmB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC/B;IACC,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC,CAAC;AAIF,qBAAa,eAAgB,SAC5B,SAAS,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;;IAK/D;;OAEG;gBACS,OAAO,EAAE,iCAAiC;IActD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAUb;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAUpB;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAOhD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IAEG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IAEG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM;IAW3B,OAAO,CAAC,yBAAyB;CAoDjC"}
1
+ {"version":3,"file":"DirectTransport.d.ts","sourceRoot":"","sources":["../src/DirectTransport.ts"],"names":[],"mappings":";AAEA,OAAO,EACN,SAAS,EAET,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,sBAAsB,GAClC;IACC;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC/B;IAEC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACnD;IACC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GACnE;IACC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;CACf,CAAC;AAEF,KAAK,iCAAiC,GAAG,2BAA2B,GACpE;IACC,IAAI,EAAE,mBAAmB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC/B;IACC,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC,CAAC;AAIF,qBAAa,eAAgB,SAC5B,SAAS,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;;IAK/D;;OAEG;gBACS,OAAO,EAAE,iCAAiC;IActD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAUb;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAUpB;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAOhD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IAEG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IAEG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IAEG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM;IAW3B,OAAO,CAAC,yBAAyB;CAoDjC"}
@@ -74,6 +74,13 @@ class DirectTransport extends Transport_1.Transport {
74
74
  async setMaxOutgoingBitrate(bitrate) {
75
75
  throw new errors_1.UnsupportedError('setMaxOutgoingBitrate() not implemented in DirectTransport');
76
76
  }
77
+ /**
78
+ * @override
79
+ */
80
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
81
+ async setMinOutgoingBitrate(bitrate) {
82
+ throw new errors_1.UnsupportedError('setMinOutgoingBitrate() not implemented in DirectTransport');
83
+ }
77
84
  /**
78
85
  * Send RTCP packet.
79
86
  */
@@ -174,6 +174,10 @@ export declare class Transport<Events extends TransportEvents = TransportEvents,
174
174
  * Set maximum outgoing bitrate for sending media.
175
175
  */
176
176
  setMaxOutgoingBitrate(bitrate: number): Promise<void>;
177
+ /**
178
+ * Set minimum outgoing bitrate for sending media.
179
+ */
180
+ setMinOutgoingBitrate(bitrate: number): Promise<void>;
177
181
  /**
178
182
  * Create a Producer.
179
183
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../src/Transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../src/Transport.ts"],"names":[],"mappings":"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"}
@@ -276,6 +276,14 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
276
276
  const reqData = { bitrate };
277
277
  await this.channel.request('transport.setMaxOutgoingBitrate', this.internal.transportId, reqData);
278
278
  }
279
+ /**
280
+ * Set minimum outgoing bitrate for sending media.
281
+ */
282
+ async setMinOutgoingBitrate(bitrate) {
283
+ logger.debug('setMinOutgoingBitrate() [bitrate:%s]', bitrate);
284
+ const reqData = { bitrate };
285
+ await this.channel.request('transport.setMinOutgoingBitrate', this.internal.transportId, reqData);
286
+ }
279
287
  /**
280
288
  * Create a Producer.
281
289
  */
@@ -90,7 +90,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
90
90
  // options
91
91
  {
92
92
  env: {
93
- MEDIASOUP_VERSION: '3.11.15',
93
+ MEDIASOUP_VERSION: '3.11.17',
94
94
  // Let the worker process inherit all environment variables, useful
95
95
  // if a custom and not in the path GCC is used so the user can set
96
96
  // LD_LIBRARY_PATH environment variable for runtime.
@@ -9,7 +9,7 @@ export { types };
9
9
  /**
10
10
  * Expose mediasoup version.
11
11
  */
12
- export declare const version = "3.11.15";
12
+ export declare const version = "3.11.17";
13
13
  /**
14
14
  * Expose parseScalabilityMode() function.
15
15
  */
package/node/lib/index.js CHANGED
@@ -11,7 +11,7 @@ exports.types = types;
11
11
  /**
12
12
  * Expose mediasoup version.
13
13
  */
14
- exports.version = '3.11.15';
14
+ exports.version = '3.11.17';
15
15
  /**
16
16
  * Expose parseScalabilityMode() function.
17
17
  */
@@ -275,12 +275,53 @@ test('webRtcTransport.connect() with wrong arguments rejects with TypeError', as
275
275
  expect(transport.dtlsParameters.role).toBe('auto');
276
276
  }, 2000);
277
277
  test('webRtcTransport.setMaxIncomingBitrate() succeeds', async () => {
278
- await expect(transport.setMaxIncomingBitrate(100000))
278
+ await expect(transport.setMaxIncomingBitrate(1000000))
279
+ .resolves
280
+ .toBeUndefined();
281
+ // Remove limit.
282
+ await expect(transport.setMaxIncomingBitrate(0))
279
283
  .resolves
280
284
  .toBeUndefined();
281
285
  }, 2000);
282
286
  test('webRtcTransport.setMaxOutgoingBitrate() succeeds', async () => {
283
- await expect(transport.setMaxIncomingBitrate(100000))
287
+ await expect(transport.setMaxOutgoingBitrate(2000000))
288
+ .resolves
289
+ .toBeUndefined();
290
+ // Remove limit.
291
+ await expect(transport.setMaxOutgoingBitrate(0))
292
+ .resolves
293
+ .toBeUndefined();
294
+ }, 2000);
295
+ test('webRtcTransport.setMinOutgoingBitrate() succeeds', async () => {
296
+ await expect(transport.setMinOutgoingBitrate(100000))
297
+ .resolves
298
+ .toBeUndefined();
299
+ // Remove limit.
300
+ await expect(transport.setMinOutgoingBitrate(0))
301
+ .resolves
302
+ .toBeUndefined();
303
+ }, 2000);
304
+ test('webRtcTransport.setMaxOutgoingBitrate() fails if value is lower than current min limit', async () => {
305
+ await expect(transport.setMinOutgoingBitrate(3000000))
306
+ .resolves
307
+ .toBeUndefined();
308
+ await expect(transport.setMaxOutgoingBitrate(2000000))
309
+ .rejects
310
+ .toThrow(Error);
311
+ // Remove limit.
312
+ await expect(transport.setMinOutgoingBitrate(0))
313
+ .resolves
314
+ .toBeUndefined();
315
+ }, 2000);
316
+ test('webRtcTransport.setMinOutgoingBitrate() fails if value is higher than current max limit', async () => {
317
+ await expect(transport.setMaxOutgoingBitrate(2000000))
318
+ .resolves
319
+ .toBeUndefined();
320
+ await expect(transport.setMinOutgoingBitrate(3000000))
321
+ .rejects
322
+ .toThrow(Error);
323
+ // Remove limit.
324
+ await expect(transport.setMaxOutgoingBitrate(0))
284
325
  .resolves
285
326
  .toBeUndefined();
286
327
  }, 2000);
@@ -394,6 +435,9 @@ test('WebRtcTransport methods reject if closed', async () => {
394
435
  await expect(transport.setMaxOutgoingBitrate(200000))
395
436
  .rejects
396
437
  .toThrow(Error);
438
+ await expect(transport.setMinOutgoingBitrate(100000))
439
+ .rejects
440
+ .toThrow(Error);
397
441
  await expect(transport.restartIce())
398
442
  .rejects
399
443
  .toThrow(Error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mediasoup",
3
- "version": "3.11.15",
3
+ "version": "3.11.17",
4
4
  "description": "Cutting Edge WebRTC Video Conferencing",
5
5
  "contributors": [
6
6
  "Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
@@ -93,11 +93,11 @@
93
93
  "devDependencies": {
94
94
  "@types/debug": "^4.1.7",
95
95
  "@types/jest": "^29.5.0",
96
- "@types/node": "^18.15.5",
96
+ "@types/node": "^18.15.11",
97
97
  "@types/uuid": "^9.0.1",
98
- "@typescript-eslint/eslint-plugin": "^5.56.0",
99
- "@typescript-eslint/parser": "^5.56.0",
100
- "eslint": "^8.36.0",
98
+ "@typescript-eslint/eslint-plugin": "^5.57.0",
99
+ "@typescript-eslint/parser": "^5.57.0",
100
+ "eslint": "^8.37.0",
101
101
  "eslint-plugin-jest": "^27.2.1",
102
102
  "jest": "^29.5.0",
103
103
  "open-cli": "^7.2.0",
@@ -105,6 +105,6 @@
105
105
  "sctp": "^1.0.0",
106
106
  "ts-jest": "^29.0.5",
107
107
  "tsc-watch": "^6.0.0",
108
- "typescript": "^4.9.5"
108
+ "typescript": "^5.0.2"
109
109
  }
110
110
  }
@@ -43,6 +43,7 @@ namespace Channel
43
43
  TRANSPORT_CONNECT,
44
44
  TRANSPORT_SET_MAX_INCOMING_BITRATE,
45
45
  TRANSPORT_SET_MAX_OUTGOING_BITRATE,
46
+ TRANSPORT_SET_MIN_OUTGOING_BITRATE,
46
47
  TRANSPORT_RESTART_ICE,
47
48
  TRANSPORT_PRODUCE,
48
49
  TRANSPORT_CONSUME,
@@ -60,8 +60,6 @@ namespace RTC
60
60
  uint16_t maxItems;
61
61
  uint32_t maxRetransmissionDelayMs;
62
62
  uint32_t clockRate;
63
- // Others.
64
- uint16_t startSeq{ 0u };
65
63
  };
66
64
  } // namespace RTC
67
65
 
@@ -29,7 +29,6 @@ namespace RTC
29
29
  private:
30
30
  static const SeqLowerThan isSeqLowerThan;
31
31
  static const SeqHigherThan isSeqHigherThan;
32
- static T Delta(const T lhs, const T rhs);
33
32
 
34
33
  public:
35
34
  static bool IsSeqLowerThan(const T lhs, const T rhs);
@@ -46,6 +45,9 @@ namespace RTC
46
45
  T GetMaxInput() const;
47
46
  T GetMaxOutput() const;
48
47
 
48
+ private:
49
+ void ClearDropped();
50
+
49
51
  private:
50
52
  T base{ 0 };
51
53
  T maxOutput{ 0 };
@@ -329,6 +329,7 @@ namespace RTC
329
329
  uint32_t initialAvailableOutgoingBitrate{ 600000u };
330
330
  uint32_t maxIncomingBitrate{ 0u };
331
331
  uint32_t maxOutgoingBitrate{ 0u };
332
+ uint32_t minOutgoingBitrate{ 0u };
332
333
  struct TraceEventTypes traceEventTypes;
333
334
  };
334
335
  } // namespace RTC
@@ -56,7 +56,8 @@ namespace RTC
56
56
  RTC::TransportCongestionControlClient::Listener* listener,
57
57
  RTC::BweType bweType,
58
58
  uint32_t initialAvailableBitrate,
59
- uint32_t maxOutgoingBitrate);
59
+ uint32_t maxOutgoingBitrate,
60
+ uint32_t minOutgoingBitrate);
60
61
  virtual ~TransportCongestionControlClient();
61
62
 
62
63
  public:
@@ -74,6 +75,7 @@ namespace RTC
74
75
  void ReceiveRtcpTransportFeedback(const RTC::RTCP::FeedbackRtpTransportPacket* feedback);
75
76
  void SetDesiredBitrate(uint32_t desiredBitrate, bool force);
76
77
  void SetMaxOutgoingBitrate(uint32_t maxBitrate);
78
+ void SetMinOutgoingBitrate(uint32_t minBitrate);
77
79
  const Bitrates& GetBitrates() const
78
80
  {
79
81
  return this->bitrates;
@@ -118,6 +120,7 @@ namespace RTC
118
120
  RTC::BweType bweType;
119
121
  uint32_t initialAvailableBitrate{ 0u };
120
122
  uint32_t maxOutgoingBitrate{ 0u };
123
+ uint32_t minOutgoingBitrate{ 0u };
121
124
  Bitrates bitrates;
122
125
  bool availableBitrateEventCalled{ false };
123
126
  uint64_t lastAvailableBitrateEventAtMs{ 0u };
@@ -172,18 +172,26 @@ namespace Utils
172
172
  {
173
173
  // If size is not multiple of 32 bits then pad it.
174
174
  if (size & 0x03)
175
+ {
175
176
  return (size & 0xFFFC) + 4;
177
+ }
176
178
  else
179
+ {
177
180
  return size;
181
+ }
178
182
  }
179
183
 
180
184
  static uint32_t PadTo4Bytes(uint32_t size)
181
185
  {
182
186
  // If size is not multiple of 32 bits then pad it.
183
187
  if (size & 0x03)
188
+ {
184
189
  return (size & 0xFFFFFFFC) + 4;
190
+ }
185
191
  else
192
+ {
186
193
  return size;
194
+ }
187
195
  }
188
196
  };
189
197
 
@@ -213,10 +221,14 @@ namespace Utils
213
221
 
214
222
  // Special case.
215
223
  if (max == 4294967295)
224
+ {
216
225
  --max;
226
+ }
217
227
 
218
228
  if (min > max)
229
+ {
219
230
  min = max;
231
+ }
220
232
 
221
233
  return (((Crypto::seed >> 4) & 0x7FFF7FFF) % (max - min + 1)) + min;
222
234
  }
@@ -229,7 +241,9 @@ namespace Utils
229
241
  'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
230
242
 
231
243
  if (len > 64)
244
+ {
232
245
  len = 64;
246
+ }
233
247
 
234
248
  for (size_t i{ 0 }; i < len; ++i)
235
249
  {
@@ -323,10 +337,12 @@ namespace Utils
323
337
  // IsNewer(t2,t1)=false
324
338
  // rather than having IsNewer(t1,t2) = IsNewer(t2,t1) = false.
325
339
  if (static_cast<uint32_t>(timestamp - prevTimestamp) == 0x80000000)
340
+ {
326
341
  return timestamp > prevTimestamp;
342
+ }
327
343
 
328
- return timestamp != prevTimestamp &&
329
- static_cast<uint32_t>(timestamp - prevTimestamp) < 0x80000000;
344
+ return (
345
+ timestamp != prevTimestamp && static_cast<uint32_t>(timestamp - prevTimestamp) < 0x80000000);
330
346
  }
331
347
 
332
348
  static uint32_t LatestTimestamp(uint32_t timestamp1, uint32_t timestamp2)
@@ -346,11 +362,17 @@ namespace Utils
346
362
  static bool IsPositiveInteger(const json& value)
347
363
  {
348
364
  if (value.is_number_unsigned())
365
+ {
349
366
  return true;
367
+ }
350
368
  else if (value.is_number_integer())
369
+ {
351
370
  return value.get<int64_t>() >= 0;
371
+ }
352
372
  else
373
+ {
353
374
  return false;
375
+ }
354
376
  }
355
377
  };
356
378
  } // namespace Utils
@@ -37,6 +37,7 @@ namespace Channel
37
37
  { "transport.connect", ChannelRequest::MethodId::TRANSPORT_CONNECT },
38
38
  { "transport.setMaxIncomingBitrate", ChannelRequest::MethodId::TRANSPORT_SET_MAX_INCOMING_BITRATE },
39
39
  { "transport.setMaxOutgoingBitrate", ChannelRequest::MethodId::TRANSPORT_SET_MAX_OUTGOING_BITRATE },
40
+ { "transport.setMinOutgoingBitrate", ChannelRequest::MethodId::TRANSPORT_SET_MIN_OUTGOING_BITRATE },
40
41
  { "transport.restartIce", ChannelRequest::MethodId::TRANSPORT_RESTART_ICE },
41
42
  { "transport.produce", ChannelRequest::MethodId::TRANSPORT_PRODUCE },
42
43
  { "transport.consume", ChannelRequest::MethodId::TRANSPORT_CONSUME },
@@ -29,17 +29,19 @@ namespace RTC
29
29
  {
30
30
  MS_TRACE();
31
31
 
32
- if (this->buffer.empty())
32
+ const auto* oldestItem = GetOldest();
33
+
34
+ if (!oldestItem)
33
35
  {
34
36
  return nullptr;
35
37
  }
36
38
 
37
- if (RTC::SeqManager<uint16_t>::IsSeqLowerThan(seq, this->startSeq))
39
+ if (RTC::SeqManager<uint16_t>::IsSeqLowerThan(seq, oldestItem->sequenceNumber))
38
40
  {
39
41
  return nullptr;
40
42
  }
41
43
 
42
- auto idx = static_cast<uint16_t>(seq - this->startSeq);
44
+ const auto idx = static_cast<uint16_t>(seq - oldestItem->sequenceNumber);
43
45
 
44
46
  if (idx > static_cast<uint16_t>(this->buffer.size() - 1))
45
47
  {
@@ -61,9 +63,9 @@ namespace RTC
61
63
  {
62
64
  MS_TRACE();
63
65
 
64
- auto ssrc = packet->GetSsrc();
65
- auto seq = packet->GetSequenceNumber();
66
- auto timestamp = packet->GetTimestamp();
66
+ const auto ssrc = packet->GetSsrc();
67
+ const auto seq = packet->GetSequenceNumber();
68
+ const auto timestamp = packet->GetTimestamp();
67
69
 
68
70
  MS_DEBUG_DEV("packet [seq:%" PRIu16 ", timestamp:%" PRIu32 "]", seq, timestamp);
69
71
 
@@ -76,17 +78,14 @@ namespace RTC
76
78
 
77
79
  this->buffer.push_back(FillItem(item, packet, sharedPacket));
78
80
 
79
- // Packet's seq number becomes startSeq.
80
- this->startSeq = seq;
81
-
82
81
  return;
83
82
  }
84
83
 
85
84
  // Clear too old packets in the buffer.
86
85
  ClearTooOld();
87
86
 
88
- auto* oldestItem = GetOldest();
89
- auto* newestItem = GetNewest();
87
+ const auto* oldestItem = GetOldest();
88
+ const auto* newestItem = GetNewest();
90
89
 
91
90
  MS_ASSERT(oldestItem != nullptr, "oldest item doesn't exist");
92
91
  MS_ASSERT(newestItem != nullptr, "newest item doesn't exist");
@@ -120,7 +119,7 @@ namespace RTC
120
119
  // the buffer.
121
120
  if (this->buffer.size() + numBlankSlots + 1 > this->maxItems)
122
121
  {
123
- auto numItemsToRemove =
122
+ const auto numItemsToRemove =
124
123
  static_cast<uint16_t>(this->buffer.size() + numBlankSlots + 1 - this->maxItems);
125
124
 
126
125
  // If num of items to be removed exceed buffer size minus one (needed to
@@ -138,9 +137,6 @@ namespace RTC
138
137
  numBlankSlots = 0u;
139
138
 
140
139
  Clear();
141
-
142
- // After clearing the buffer, update startSeq.
143
- this->startSeq = seq;
144
140
  }
145
141
  else
146
142
  {
@@ -203,7 +199,7 @@ namespace RTC
203
199
 
204
200
  // Calculate how many blank slots it would be necessary to add when
205
201
  // pushing new item to the fton of the buffer.
206
- auto numBlankSlots = static_cast<uint16_t>(oldestItem->sequenceNumber - seq - 1);
202
+ const auto numBlankSlots = static_cast<uint16_t>(oldestItem->sequenceNumber - seq - 1);
207
203
 
208
204
  // If adding this packet (and needed blank slots) to the front makes the
209
205
  // buffer exceed its max size, discard this packet.
@@ -230,9 +226,6 @@ namespace RTC
230
226
  auto* item = new Item();
231
227
 
232
228
  this->buffer.push_front(FillItem(item, packet, sharedPacket));
233
-
234
- // Packet's seq number becomes startSeq.
235
- this->startSeq = seq;
236
229
  }
237
230
  // Otherwise packet must be inserted between oldest and newest stored items
238
231
  // so there is already an allocated slot for it.
@@ -259,13 +252,13 @@ namespace RTC
259
252
  }
260
253
 
261
254
  // idx is the intended position of the received packet in the buffer.
262
- auto idx = static_cast<uint16_t>(seq - this->startSeq);
255
+ const auto idx = static_cast<uint16_t>(seq - oldestItem->sequenceNumber);
263
256
 
264
257
  // Validate that packet timestamp is equal or higher than the timestamp of
265
258
  // the immediate older packet (if any).
266
259
  for (auto idx2 = static_cast<int32_t>(idx - 1); idx2 >= 0; --idx2)
267
260
  {
268
- auto* olderItem = this->buffer.at(idx2);
261
+ const auto* olderItem = this->buffer.at(idx2);
269
262
 
270
263
  // Blank slot, continue.
271
264
  if (!olderItem)
@@ -296,7 +289,7 @@ namespace RTC
296
289
  // the immediate newer packet (if any).
297
290
  for (auto idx2 = static_cast<size_t>(idx + 1); idx2 < this->buffer.size(); ++idx2)
298
291
  {
299
- auto* newerItem = this->buffer.at(idx2);
292
+ const auto* newerItem = this->buffer.at(idx2);
300
293
 
301
294
  // Blank slot, continue.
302
295
  if (!newerItem)
@@ -354,7 +347,6 @@ namespace RTC
354
347
  }
355
348
 
356
349
  this->buffer.clear();
357
- this->startSeq = 0u;
358
350
  }
359
351
 
360
352
  void RtpRetransmissionBuffer::Dump() const
@@ -362,11 +354,7 @@ namespace RTC
362
354
  MS_TRACE();
363
355
 
364
356
  MS_DUMP("<RtpRetransmissionBuffer>");
365
- MS_DUMP(
366
- " buffer [size:%zu, maxSize:%" PRIu16 ", startSeq:%" PRIu16 "]",
367
- this->buffer.size(),
368
- this->maxItems,
369
- this->startSeq);
357
+ MS_DUMP(" buffer [size:%zu, maxSize:%" PRIu16 "]", this->buffer.size(), this->maxItems);
370
358
  if (this->buffer.size() > 0)
371
359
  {
372
360
  const auto* oldestItem = GetOldest();
@@ -392,14 +380,24 @@ namespace RTC
392
380
  {
393
381
  MS_TRACE();
394
382
 
395
- return this->Get(this->startSeq);
383
+ if (this->buffer.empty())
384
+ {
385
+ return nullptr;
386
+ }
387
+
388
+ return this->buffer.front();
396
389
  }
397
390
 
398
391
  RtpRetransmissionBuffer::Item* RtpRetransmissionBuffer::GetNewest() const
399
392
  {
400
393
  MS_TRACE();
401
394
 
402
- return this->Get(this->startSeq + this->buffer.size() - 1);
395
+ if (this->buffer.empty())
396
+ {
397
+ return nullptr;
398
+ }
399
+
400
+ return this->buffer.back();
403
401
  }
404
402
 
405
403
  void RtpRetransmissionBuffer::RemoveOldest()
@@ -411,7 +409,7 @@ namespace RTC
411
409
  return;
412
410
  }
413
411
 
414
- auto* item = this->buffer.at(0);
412
+ auto* item = this->buffer.front();
415
413
 
416
414
  // Reset the stored item (decrease RTP packet shared pointer counter).
417
415
  item->Reset();
@@ -419,7 +417,6 @@ namespace RTC
419
417
  delete item;
420
418
 
421
419
  this->buffer.pop_front();
422
- this->startSeq++;
423
420
 
424
421
  MS_DEBUG_DEV("removed 1 item from the front");
425
422
 
@@ -430,7 +427,6 @@ namespace RTC
430
427
  while (!this->buffer.empty() && this->buffer.front() == nullptr)
431
428
  {
432
429
  this->buffer.pop_front();
433
- this->startSeq++;
434
430
 
435
431
  ++numItemsRemoved;
436
432
  }
@@ -439,12 +435,6 @@ namespace RTC
439
435
  {
440
436
  MS_DEBUG_DEV("removed 1 blank slot from the front");
441
437
  }
442
-
443
- // If we emptied the full buffer, reset startSeq.
444
- if (this->buffer.empty())
445
- {
446
- this->startSeq = 0u;
447
- }
448
438
  }
449
439
 
450
440
  void RtpRetransmissionBuffer::RemoveOldest(uint16_t numItems)
@@ -458,7 +448,7 @@ namespace RTC
458
448
  numItems,
459
449
  this->buffer.size());
460
450
 
461
- auto intendedBufferSize = this->buffer.size() - numItems;
451
+ const auto intendedBufferSize = this->buffer.size() - numItems;
462
452
 
463
453
  while (this->buffer.size() > intendedBufferSize)
464
454
  {
@@ -11,8 +11,8 @@ namespace RTC
11
11
  {
12
12
  /* Static. */
13
13
 
14
- // Limit retransmission buffer max size to 2500 items.
15
- static constexpr size_t RetransmissionBufferMaxItems{ 2500u };
14
+ // Limit max number of items in the retransmission buffer.
15
+ static constexpr size_t RetransmissionBufferMaxItems{ 5000u };
16
16
  // 17: 16 bit mask + the initial sequence number.
17
17
  static constexpr size_t MaxRequestedPackets{ 17u };
18
18
  thread_local static std::vector<RTC::RtpRetransmissionBuffer::Item*> RetransmissionContainer(