mediasoup 3.11.24 → 3.11.26

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 (41) hide show
  1. package/node/lib/Worker.js +1 -1
  2. package/node/lib/index.d.ts +1 -1
  3. package/node/lib/index.js +1 -1
  4. package/package.json +6 -6
  5. package/worker/Makefile +1 -1
  6. package/worker/deps/libwebrtc/libwebrtc/modules/congestion_controller/goog_cc/alr_detector.cc +2 -2
  7. package/worker/include/RTC/RtpStream.hpp +1 -2
  8. package/worker/meson.build +2 -2
  9. package/worker/src/RTC/NackGenerator.cpp +37 -3
  10. package/worker/src/RTC/RtpStream.cpp +1 -1
  11. package/worker/src/RTC/RtpStreamRecv.cpp +3 -2
  12. package/worker/src/RTC/RtpStreamSend.cpp +4 -3
  13. package/worker/subprojects/abseil-cpp.wrap +8 -8
  14. package/worker/subprojects/libuv.wrap +5 -4
  15. package/worker/subprojects/openssl.wrap +9 -8
  16. package/worker/include/FBS/activeSpeakerObserver_generated.h +0 -157
  17. package/worker/include/FBS/audioLevelObserver_generated.h +0 -272
  18. package/worker/include/FBS/common_generated.h +0 -463
  19. package/worker/include/FBS/consumer_generated.h +0 -2390
  20. package/worker/include/FBS/dataConsumer_generated.h +0 -953
  21. package/worker/include/FBS/dataProducer_generated.h +0 -662
  22. package/worker/include/FBS/directTransport_generated.h +0 -298
  23. package/worker/include/FBS/log_generated.h +0 -95
  24. package/worker/include/FBS/message_generated.h +0 -362
  25. package/worker/include/FBS/notification_generated.h +0 -867
  26. package/worker/include/FBS/pipeTransport_generated.h +0 -503
  27. package/worker/include/FBS/plainTransport_generated.h +0 -785
  28. package/worker/include/FBS/producer_generated.h +0 -1331
  29. package/worker/include/FBS/request_generated.h +0 -1368
  30. package/worker/include/FBS/response_generated.h +0 -859
  31. package/worker/include/FBS/router_generated.h +0 -925
  32. package/worker/include/FBS/rtpObserver_generated.h +0 -168
  33. package/worker/include/FBS/rtpParameters_generated.h +0 -1853
  34. package/worker/include/FBS/rtpStream_generated.h +0 -1273
  35. package/worker/include/FBS/rtxStream_generated.h +0 -237
  36. package/worker/include/FBS/sctpAssociation_generated.h +0 -85
  37. package/worker/include/FBS/sctpParameters_generated.h +0 -328
  38. package/worker/include/FBS/transport_generated.h +0 -3558
  39. package/worker/include/FBS/webRtcServer_generated.h +0 -571
  40. package/worker/include/FBS/webRtcTransport_generated.h +0 -1722
  41. package/worker/include/FBS/worker_generated.h +0 -879
@@ -90,7 +90,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
90
90
  // options
91
91
  {
92
92
  env: {
93
- MEDIASOUP_VERSION: '3.11.24',
93
+ MEDIASOUP_VERSION: '3.11.26',
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.
@@ -10,7 +10,7 @@ export { types };
10
10
  /**
11
11
  * Expose mediasoup version.
12
12
  */
13
- export declare const version = "3.11.24";
13
+ export declare const version = "3.11.26";
14
14
  /**
15
15
  * Expose parseScalabilityMode() function.
16
16
  */
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.24';
14
+ exports.version = '3.11.26';
15
15
  /**
16
16
  * Expose parseScalabilityMode() function.
17
17
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mediasoup",
3
- "version": "3.11.24",
3
+ "version": "3.11.26",
4
4
  "description": "Cutting Edge WebRTC Video Conferencing",
5
5
  "contributors": [
6
6
  "Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
@@ -92,19 +92,19 @@
92
92
  },
93
93
  "devDependencies": {
94
94
  "@types/debug": "^4.1.7",
95
- "@types/jest": "^29.5.0",
95
+ "@types/jest": "^29.5.1",
96
96
  "@types/node": "^18.15.11",
97
97
  "@types/uuid": "^9.0.1",
98
- "@typescript-eslint/eslint-plugin": "^5.59.0",
99
- "@typescript-eslint/parser": "^5.59.0",
100
- "eslint": "^8.38.0",
98
+ "@typescript-eslint/eslint-plugin": "^5.59.6",
99
+ "@typescript-eslint/parser": "^5.59.6",
100
+ "eslint": "^8.40.0",
101
101
  "eslint-plugin-jest": "^27.2.1",
102
102
  "jest": "^29.5.0",
103
103
  "open-cli": "^7.2.0",
104
104
  "pick-port": "^1.0.1",
105
105
  "sctp": "^1.0.0",
106
106
  "ts-jest": "^29.1.0",
107
- "tsc-watch": "^6.0.0",
107
+ "tsc-watch": "^6.0.4",
108
108
  "typescript": "^5.0.4"
109
109
  }
110
110
  }
package/worker/Makefile CHANGED
@@ -20,7 +20,7 @@ PIP_DIR = $(MEDIASOUP_OUT_DIR)/pip
20
20
  INSTALL_DIR ?= $(MEDIASOUP_OUT_DIR)/$(MEDIASOUP_BUILDTYPE)
21
21
  BUILD_DIR ?= $(INSTALL_DIR)/build
22
22
  MESON ?= $(PIP_DIR)/bin/meson
23
- MESON_VERSION ?= 0.61.5
23
+ MESON_VERSION ?= 1.1.0
24
24
  # `MESON_ARGS` can be used to provide extra configuration parameters to Meson,
25
25
  # such as adding defines or changing optimization options. For instance, use
26
26
  # `MESON_ARGS="-Dms_log_trace=true -Dms_log_file_line=true" npm i` to compile
@@ -116,11 +116,11 @@ absl::optional<int64_t> AlrDetector::GetApplicationLimitedRegionStartTime()
116
116
 
117
117
  absl::optional<int64_t> AlrDetector::GetApplicationLimitedRegionStartTime(
118
118
  int64_t at_time_ms) {
119
- if (!alr_started_time_ms_ && *last_send_time_ms_) {
119
+ if (!alr_started_time_ms_ && last_send_time_ms_.has_value()) {
120
120
  int64_t delta_time_ms = at_time_ms - *last_send_time_ms_;
121
121
  // If ALR is stopped and we haven't sent any packets for a while, force start.
122
122
  if (delta_time_ms > alr_timeout_) {
123
- MS_WARN_TAG(bwe, "large delta_time_ms: %ld, forcing alr state change",
123
+ MS_WARN_TAG(bwe, "large delta_time_ms: %" PRIi64 ", forcing alr state change",
124
124
  delta_time_ms);
125
125
  alr_started_time_ms_.emplace(at_time_ms);
126
126
  }
@@ -214,8 +214,7 @@ namespace RTC
214
214
  uint64_t lastSenderReportNtpMs{ 0u };
215
215
  // RTP timestamp in last Sender Report.
216
216
  uint32_t lastSenderReportTs{ 0u };
217
- float rtt{ 0 };
218
- bool hasRtt{ false };
217
+ float rtt{ 0.0f };
219
218
  // Instance of RtxStream.
220
219
  RTC::RtxStream* rtxStream{ nullptr };
221
220
 
@@ -3,10 +3,10 @@ project(
3
3
  ['c', 'cpp'],
4
4
  default_options : [
5
5
  'warning_level=1',
6
- 'cpp_std=c++11',
6
+ 'cpp_std=c++17',
7
7
  'default_library=static',
8
8
  ],
9
- meson_version: '>= 0.58',
9
+ meson_version: '>= 1.1.0',
10
10
  )
11
11
 
12
12
  cpp_args = [
@@ -51,14 +51,18 @@ namespace RTC
51
51
  this->lastSeq = seq;
52
52
 
53
53
  if (isKeyFrame)
54
+ {
54
55
  this->keyFrameList.insert(seq);
56
+ }
55
57
 
56
58
  return false;
57
59
  }
58
60
 
59
61
  // Obviously never nacked, so ignore.
60
62
  if (seq == this->lastSeq)
63
+ {
61
64
  return false;
65
+ }
62
66
 
63
67
  // May be an out of order packet, or already handled retransmitted packet,
64
68
  // or a retransmitted packet.
@@ -80,9 +84,13 @@ namespace RTC
80
84
  this->nackList.erase(it);
81
85
 
82
86
  if (retries != 0)
87
+ {
83
88
  return true;
89
+ }
84
90
  else
91
+ {
85
92
  return false;
93
+ }
86
94
  }
87
95
 
88
96
  // Out of order packet or already handled NACKed packet.
@@ -101,14 +109,18 @@ namespace RTC
101
109
  // newer than the latest seq seen.
102
110
 
103
111
  if (isKeyFrame)
112
+ {
104
113
  this->keyFrameList.insert(seq);
114
+ }
105
115
 
106
116
  // Remove old keyframes.
107
117
  {
108
118
  auto it = this->keyFrameList.lower_bound(seq - MaxPacketAge);
109
119
 
110
120
  if (it != this->keyFrameList.begin())
121
+ {
111
122
  this->keyFrameList.erase(this->keyFrameList.begin(), it);
123
+ }
112
124
  }
113
125
 
114
126
  if (isRecovered)
@@ -119,7 +131,9 @@ namespace RTC
119
131
  auto it = this->recoveredList.lower_bound(seq - MaxPacketAge);
120
132
 
121
133
  if (it != this->recoveredList.begin())
134
+ {
122
135
  this->recoveredList.erase(this->recoveredList.begin(), it);
136
+ }
123
137
 
124
138
  // Do not let a packet pass if it's newer than last seen seq and came via
125
139
  // RTX.
@@ -134,12 +148,16 @@ namespace RTC
134
148
  std::vector<uint16_t> nackBatch = GetNackBatch(NackFilter::SEQ);
135
149
 
136
150
  if (!nackBatch.empty())
151
+ {
137
152
  this->listener->OnNackGeneratorNackRequired(nackBatch);
153
+ }
138
154
 
139
155
  // This is important. Otherwise the running timer (filter:TIME) would be
140
156
  // interrupted and NACKs would never been sent more than once for each seq.
141
157
  if (!this->timer->IsActive())
158
+ {
142
159
  MayRunTimer();
160
+ }
143
161
 
144
162
  return false;
145
163
  }
@@ -187,7 +205,9 @@ namespace RTC
187
205
 
188
206
  // Do not send NACK for packets that are already recovered by RTX.
189
207
  if (this->recoveredList.find(seq) != this->recoveredList.end())
208
+ {
190
209
  continue;
210
+ }
191
211
 
192
212
  this->nackList.emplace(std::make_pair(
193
213
  seq,
@@ -277,7 +297,10 @@ namespace RTC
277
297
  continue;
278
298
  }
279
299
 
280
- if (filter == NackFilter::TIME && (nackInfo.sentAtMs == 0 || nowMs - nackInfo.sentAtMs >= this->rtt))
300
+ if (
301
+ filter == NackFilter::TIME &&
302
+ (nackInfo.sentAtMs == 0 ||
303
+ nowMs - nackInfo.sentAtMs >= (this->rtt > 0u ? this->rtt : DefaultRtt)))
281
304
  {
282
305
  nackBatch.emplace_back(seq);
283
306
  nackInfo.retries++;
@@ -313,9 +336,13 @@ namespace RTC
313
336
  seqsStream << nackBatch.back();
314
337
 
315
338
  if (filter == NackFilter::SEQ)
339
+ {
316
340
  MS_DEBUG_DEV("[filter:SEQ, asking seqs:%s]", seqsStream.str().c_str());
341
+ }
317
342
  else
343
+ {
318
344
  MS_DEBUG_DEV("[filter:TIME, asking seqs:%s]", seqsStream.str().c_str());
345
+ }
319
346
  }
320
347
  #endif
321
348
 
@@ -329,15 +356,20 @@ namespace RTC
329
356
  this->nackList.clear();
330
357
  this->keyFrameList.clear();
331
358
  this->recoveredList.clear();
332
-
333
359
  this->started = false;
334
360
  this->lastSeq = 0u;
335
361
  }
336
362
 
337
363
  inline void NackGenerator::MayRunTimer() const
338
364
  {
339
- if (!this->nackList.empty())
365
+ if (this->nackList.empty())
366
+ {
367
+ this->timer->Stop();
368
+ }
369
+ else
370
+ {
340
371
  this->timer->Start(TimerInterval);
372
+ }
341
373
  }
342
374
 
343
375
  inline void NackGenerator::OnTimer(Timer* /*timer*/)
@@ -347,7 +379,9 @@ namespace RTC
347
379
  std::vector<uint16_t> nackBatch = GetNackBatch(NackFilter::TIME);
348
380
 
349
381
  if (!nackBatch.empty())
382
+ {
350
383
  this->listener->OnNackGeneratorNackRequired(nackBatch);
384
+ }
351
385
 
352
386
  MayRunTimer();
353
387
  }
@@ -76,7 +76,7 @@ namespace RTC
76
76
  if (this->rtxStream)
77
77
  jsonObject["rtxPacketsDiscarded"] = this->rtxStream->GetPacketsDiscarded();
78
78
 
79
- if (this->hasRtt)
79
+ if (this->rtt > 0.0f)
80
80
  jsonObject["roundTripTime"] = this->rtt;
81
81
  }
82
82
 
@@ -608,9 +608,10 @@ namespace RTC
608
608
  this->rtt = static_cast<float>(rtt >> 16) * 1000;
609
609
  this->rtt += (static_cast<float>(rtt & 0x0000FFFF) / 65536) * 1000;
610
610
 
611
- if (this->rtt > 0.0f)
611
+ // Avoid negative RTT value since it doesn't make sense.
612
+ if (this->rtt <= 0.0f)
612
613
  {
613
- this->hasRtt = true;
614
+ this->rtt = 0.0f;
614
615
  }
615
616
 
616
617
  // Tell it to the NackGenerator.
@@ -223,9 +223,10 @@ namespace RTC
223
223
  this->rtt = static_cast<float>(rtt >> 16) * 1000;
224
224
  this->rtt += (static_cast<float>(rtt & 0x0000FFFF) / 65536) * 1000;
225
225
 
226
- if (this->rtt > 0.0f)
226
+ // Avoid negative RTT value since it doesn't make sense.
227
+ if (this->rtt <= 0.0f)
227
228
  {
228
- this->hasRtt = true;
229
+ this->rtt = 0.0f;
229
230
  }
230
231
 
231
232
  this->packetsLost = report->GetTotalLost();
@@ -399,7 +400,7 @@ namespace RTC
399
400
 
400
401
  // Look for each requested packet.
401
402
  const uint64_t nowMs = DepLibUV::GetTimeMs();
402
- const uint16_t rtt = (this->rtt != 0u ? this->rtt : DefaultRtt);
403
+ const uint16_t rtt = (this->rtt > 0.0f ? this->rtt : DefaultRtt);
403
404
  uint16_t currentSeq = seq;
404
405
  bool requested{ true };
405
406
  size_t containerIdx{ 0 };
@@ -1,11 +1,12 @@
1
1
  [wrap-file]
2
- directory = abseil-cpp-20211102.0
3
- source_url = https://github.com/abseil/abseil-cpp/archive/20211102.0.tar.gz
4
- source_filename = abseil-cpp-20211102.0.tar.gz
5
- source_hash = dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4
6
- patch_filename = abseil-cpp_20211102.0-2_patch.zip
7
- patch_url = https://wrapdb.mesonbuild.com/v2/abseil-cpp_20211102.0-2/get_patch
8
- patch_hash = 9463930367b0db984435350c7d7614e400faa8811a7e9a2def5a63ff39fdb325
2
+ directory = abseil-cpp-20220623.0
3
+ source_url = https://github.com/abseil/abseil-cpp/archive/20220623.0.tar.gz
4
+ source_filename = abseil-cpp-20220623.0.tar.gz
5
+ source_hash = 4208129b49006089ba1d6710845a45e31c59b0ab6bff9e5788a87f55c5abd602
6
+ patch_filename = abseil-cpp_20220623.0-2_patch.zip
7
+ patch_url = https://wrapdb.mesonbuild.com/v2/abseil-cpp_20220623.0-2/get_patch
8
+ patch_hash = d19cb16610d9310658a815ebcd87a9e2966aafbd57964341c0d1a3a3778c03b6
9
+ wrapdb_version = 20220623.0-2
9
10
 
10
11
  [provide]
11
12
  absl_base = absl_base_dep
@@ -20,4 +21,3 @@ absl_strings = absl_strings_dep
20
21
  absl_synchronization = absl_synchronization_dep
21
22
  absl_time = absl_time_dep
22
23
  absl_types = absl_types_dep
23
-
@@ -3,10 +3,11 @@ directory = libuv-v1.44.2
3
3
  source_url = https://dist.libuv.org/dist/v1.44.2/libuv-v1.44.2.tar.gz
4
4
  source_filename = libuv-v1.44.2.tar.gz
5
5
  source_hash = ccfcdc968c55673c6526d8270a9c8655a806ea92468afcbcabc2b16040f03cb4
6
- patch_filename = libuv_1.44.2-1_patch.zip
7
- patch_url = https://wrapdb.mesonbuild.com/v2/libuv_1.44.2-1/get_patch
8
- patch_hash = c77f6104cffd53f697c3030fccbfd5cc684b59772e8f24529b01908ee27bd751
9
- wrapdb_version = 1.44.2-1
6
+ patch_filename = libuv_1.44.2-2_patch.zip
7
+ patch_url = https://wrapdb.mesonbuild.com/v2/libuv_1.44.2-2/get_patch
8
+ patch_hash = 12a0850e1c925811f54bb022339d3105afaed8bc006b197351006c9c841f06ce
9
+ source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libuv_1.44.2-2/libuv-v1.44.2.tar.gz
10
+ wrapdb_version = 1.44.2-2
10
11
 
11
12
  [provide]
12
13
  libuv = libuv_dep
@@ -1,12 +1,13 @@
1
1
  [wrap-file]
2
- directory = openssl-3.0.7
3
- source_url = https://www.openssl.org/source/openssl-3.0.7.tar.gz
4
- source_filename = openssl-3.0.72.tar.gz
5
- source_hash = 83049d042a260e696f62406ac5c08bf706fd84383f945cf21bd61e9ed95c396e
6
- patch_filename = openssl_3.0.7-1_patch.zip
7
- patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.7-1/get_patch
8
- patch_hash = 8f04d911dc22d1dddc6a192ab27d6d8275976a252bd9c73e09f95f1f927e42b5
9
- wrapdb_version = 3.0.7-1
2
+ directory = openssl-3.0.8
3
+ source_url = https://www.openssl.org/source/openssl-3.0.8.tar.gz
4
+ source_filename = openssl-3.0.8.tar.gz
5
+ source_hash = 6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e
6
+ patch_filename = openssl_3.0.8-1_patch.zip
7
+ patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.8-1/get_patch
8
+ patch_hash = 12d9c884174a91ccd1aa9230e9567c019f8a582ce46c98736f99a5200b4f2514
9
+ source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.8-1/openssl-3.0.8.tar.gz
10
+ wrapdb_version = 3.0.8-1
10
11
 
11
12
  [provide]
12
13
  libcrypto = libcrypto_dep
@@ -1,157 +0,0 @@
1
- // automatically generated by the FlatBuffers compiler, do not modify
2
-
3
-
4
- #ifndef FLATBUFFERS_GENERATED_ACTIVESPEAKEROBSERVER_FBS_ACTIVESPEAKEROBSERVER_H_
5
- #define FLATBUFFERS_GENERATED_ACTIVESPEAKEROBSERVER_FBS_ACTIVESPEAKEROBSERVER_H_
6
-
7
- #include "flatbuffers/flatbuffers.h"
8
-
9
- // Ensure the included flatbuffers.h is the same version as when this file was
10
- // generated, otherwise it may not be compatible.
11
- static_assert(FLATBUFFERS_VERSION_MAJOR == 23 &&
12
- FLATBUFFERS_VERSION_MINOR == 3 &&
13
- FLATBUFFERS_VERSION_REVISION == 3,
14
- "Non-compatible flatbuffers version included");
15
-
16
- namespace FBS {
17
- namespace ActiveSpeakerObserver {
18
-
19
- struct ActiveSpeakerObserverOptions;
20
- struct ActiveSpeakerObserverOptionsBuilder;
21
-
22
- struct DominantSpeakerNotification;
23
- struct DominantSpeakerNotificationBuilder;
24
-
25
- inline const ::flatbuffers::TypeTable *ActiveSpeakerObserverOptionsTypeTable();
26
-
27
- inline const ::flatbuffers::TypeTable *DominantSpeakerNotificationTypeTable();
28
-
29
- struct ActiveSpeakerObserverOptions FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
30
- typedef ActiveSpeakerObserverOptionsBuilder Builder;
31
- static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
32
- return ActiveSpeakerObserverOptionsTypeTable();
33
- }
34
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
35
- VT_INTERVAL = 4
36
- };
37
- uint16_t interval() const {
38
- return GetField<uint16_t>(VT_INTERVAL, 0);
39
- }
40
- bool Verify(::flatbuffers::Verifier &verifier) const {
41
- return VerifyTableStart(verifier) &&
42
- VerifyField<uint16_t>(verifier, VT_INTERVAL, 2) &&
43
- verifier.EndTable();
44
- }
45
- };
46
-
47
- struct ActiveSpeakerObserverOptionsBuilder {
48
- typedef ActiveSpeakerObserverOptions Table;
49
- ::flatbuffers::FlatBufferBuilder &fbb_;
50
- ::flatbuffers::uoffset_t start_;
51
- void add_interval(uint16_t interval) {
52
- fbb_.AddElement<uint16_t>(ActiveSpeakerObserverOptions::VT_INTERVAL, interval, 0);
53
- }
54
- explicit ActiveSpeakerObserverOptionsBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
55
- : fbb_(_fbb) {
56
- start_ = fbb_.StartTable();
57
- }
58
- ::flatbuffers::Offset<ActiveSpeakerObserverOptions> Finish() {
59
- const auto end = fbb_.EndTable(start_);
60
- auto o = ::flatbuffers::Offset<ActiveSpeakerObserverOptions>(end);
61
- return o;
62
- }
63
- };
64
-
65
- inline ::flatbuffers::Offset<ActiveSpeakerObserverOptions> CreateActiveSpeakerObserverOptions(
66
- ::flatbuffers::FlatBufferBuilder &_fbb,
67
- uint16_t interval = 0) {
68
- ActiveSpeakerObserverOptionsBuilder builder_(_fbb);
69
- builder_.add_interval(interval);
70
- return builder_.Finish();
71
- }
72
-
73
- struct DominantSpeakerNotification FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
74
- typedef DominantSpeakerNotificationBuilder Builder;
75
- static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
76
- return DominantSpeakerNotificationTypeTable();
77
- }
78
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
79
- VT_PRODUCERID = 4
80
- };
81
- const ::flatbuffers::String *producerId() const {
82
- return GetPointer<const ::flatbuffers::String *>(VT_PRODUCERID);
83
- }
84
- bool Verify(::flatbuffers::Verifier &verifier) const {
85
- return VerifyTableStart(verifier) &&
86
- VerifyOffsetRequired(verifier, VT_PRODUCERID) &&
87
- verifier.VerifyString(producerId()) &&
88
- verifier.EndTable();
89
- }
90
- };
91
-
92
- struct DominantSpeakerNotificationBuilder {
93
- typedef DominantSpeakerNotification Table;
94
- ::flatbuffers::FlatBufferBuilder &fbb_;
95
- ::flatbuffers::uoffset_t start_;
96
- void add_producerId(::flatbuffers::Offset<::flatbuffers::String> producerId) {
97
- fbb_.AddOffset(DominantSpeakerNotification::VT_PRODUCERID, producerId);
98
- }
99
- explicit DominantSpeakerNotificationBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
100
- : fbb_(_fbb) {
101
- start_ = fbb_.StartTable();
102
- }
103
- ::flatbuffers::Offset<DominantSpeakerNotification> Finish() {
104
- const auto end = fbb_.EndTable(start_);
105
- auto o = ::flatbuffers::Offset<DominantSpeakerNotification>(end);
106
- fbb_.Required(o, DominantSpeakerNotification::VT_PRODUCERID);
107
- return o;
108
- }
109
- };
110
-
111
- inline ::flatbuffers::Offset<DominantSpeakerNotification> CreateDominantSpeakerNotification(
112
- ::flatbuffers::FlatBufferBuilder &_fbb,
113
- ::flatbuffers::Offset<::flatbuffers::String> producerId = 0) {
114
- DominantSpeakerNotificationBuilder builder_(_fbb);
115
- builder_.add_producerId(producerId);
116
- return builder_.Finish();
117
- }
118
-
119
- inline ::flatbuffers::Offset<DominantSpeakerNotification> CreateDominantSpeakerNotificationDirect(
120
- ::flatbuffers::FlatBufferBuilder &_fbb,
121
- const char *producerId = nullptr) {
122
- auto producerId__ = producerId ? _fbb.CreateString(producerId) : 0;
123
- return FBS::ActiveSpeakerObserver::CreateDominantSpeakerNotification(
124
- _fbb,
125
- producerId__);
126
- }
127
-
128
- inline const ::flatbuffers::TypeTable *ActiveSpeakerObserverOptionsTypeTable() {
129
- static const ::flatbuffers::TypeCode type_codes[] = {
130
- { ::flatbuffers::ET_USHORT, 0, -1 }
131
- };
132
- static const char * const names[] = {
133
- "interval"
134
- };
135
- static const ::flatbuffers::TypeTable tt = {
136
- ::flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names
137
- };
138
- return &tt;
139
- }
140
-
141
- inline const ::flatbuffers::TypeTable *DominantSpeakerNotificationTypeTable() {
142
- static const ::flatbuffers::TypeCode type_codes[] = {
143
- { ::flatbuffers::ET_STRING, 0, -1 }
144
- };
145
- static const char * const names[] = {
146
- "producerId"
147
- };
148
- static const ::flatbuffers::TypeTable tt = {
149
- ::flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names
150
- };
151
- return &tt;
152
- }
153
-
154
- } // namespace ActiveSpeakerObserver
155
- } // namespace FBS
156
-
157
- #endif // FLATBUFFERS_GENERATED_ACTIVESPEAKEROBSERVER_FBS_ACTIVESPEAKEROBSERVER_H_