mediasoup 3.16.6 → 3.16.8
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/node/lib/PipeTransportTypes.d.ts +1 -1
- package/node/lib/PipeTransportTypes.d.ts.map +1 -1
- package/node/lib/Router.d.ts +2 -1
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +10 -2
- package/node/lib/RouterTypes.d.ts +5 -0
- package/node/lib/RouterTypes.d.ts.map +1 -1
- package/node/lib/test/test-Router.js +33 -0
- package/npm-scripts.mjs +67 -38
- package/package.json +10 -10
- package/worker/fuzzer/src/FuzzerUtils.cpp +21 -23
- package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +1 -1
- package/worker/fuzzer/src/RTC/FuzzerRtpPacket.cpp +3 -3
- package/worker/fuzzer/src/RTC/RTCP/FuzzerPacket.cpp +3 -3
- package/worker/fuzzer/src/fuzzer.cpp +1 -1
- package/worker/include/RTC/RateCalculator.hpp +5 -1
- package/worker/include/RTC/RtcLogger.hpp +1 -0
- package/worker/include/RTC/SeqManager.hpp +1 -5
- package/worker/include/Utils.hpp +87 -63
- package/worker/meson.build +1 -0
- package/worker/scripts/package-lock.json +316 -277
- package/worker/scripts/package.json +1 -1
- package/worker/src/RTC/PipeConsumer.cpp +11 -11
- package/worker/src/RTC/Producer.cpp +1 -1
- package/worker/src/RTC/RateCalculator.cpp +11 -6
- package/worker/src/RTC/RtcLogger.cpp +1 -0
- package/worker/src/RTC/RtpRetransmissionBuffer.cpp +8 -8
- package/worker/src/RTC/RtpStream.cpp +19 -2
- package/worker/src/RTC/RtpStreamRecv.cpp +15 -16
- package/worker/src/RTC/RtpStreamSend.cpp +2 -1
- package/worker/src/RTC/RtxStream.cpp +19 -2
- package/worker/src/RTC/SeqManager.cpp +14 -23
- package/worker/src/RTC/Transport.cpp +6 -2
- package/worker/src/Utils/BitStream.cpp +22 -5
- package/worker/test/src/Utils/TestNumber.cpp +130 -0
- package/worker/test/src/Utils/TestTime.cpp +0 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipeTransportTypes.d.ts","sourceRoot":"","sources":["../src/PipeTransportTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EACX,SAAS,EACT,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,oBAAoB,CAC/B,oBAAoB,SAAS,OAAO,GAAG,OAAO,IAC3C;IACH;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAC/B,GAAG,mBAAmB,CAAC;AAExB,KAAK,mBAAmB,GAAG,MAAM,CAChC,uBAAuB,EACvB,qBAAqB,CACrB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC5B;;OAEG;IACH,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAErC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,eAAe,IAAI;
|
|
1
|
+
{"version":3,"file":"PipeTransportTypes.d.ts","sourceRoot":"","sources":["../src/PipeTransportTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EACX,SAAS,EACT,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,oBAAoB,CAC/B,oBAAoB,SAAS,OAAO,GAAG,OAAO,IAC3C;IACH;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAC/B,GAAG,mBAAmB,CAAC;AAExB,KAAK,mBAAmB,GAAG,MAAM,CAChC,uBAAuB,EACvB,qBAAqB,CACrB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC5B;;OAEG;IACH,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAErC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,eAAe,SAAS,OAAO,GAAG,OAAO,IAAI;IAC5E;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IACnD,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IACnD,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAChC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;AAEnD,MAAM,MAAM,2BAA2B,GAAG,uBAAuB,GAAG;IACnE,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,aAAa,CAAC,oBAAoB,SAAS,OAAO,GAAG,OAAO,CAC5E,SAAQ,SAAS,CAChB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,CACrB;IACD;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAAC;IAEnB;;;;OAIG;IACH,IAAI,QAAQ,IAAI,qBAAqB,CAAC;IAEtC;;OAEG;IACH,IAAI,KAAK,IAAI,cAAc,CAAC;IAE5B;;OAEG;IACH,IAAI,cAAc,IAAI,cAAc,GAAG,SAAS,CAAC;IAEjD;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC;IAEvC;;OAEG;IACH,IAAI,cAAc,IAAI,cAAc,GAAG,SAAS,CAAC;IAEjD;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEzC;;;;OAIG;IACH,OAAO,CAAC,EACP,EAAE,EACF,IAAI,EACJ,cAAc,GACd,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,cAAc,CAAC;KAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,eAAe,SAAS,OAAO,GAAG,OAAO,EAAE,EAClD,UAAU,EACV,OAAO,GACP,EAAE,mBAAmB,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;CAC7E"}
|
package/node/lib/Router.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { PipeTransport, PipeTransportOptions } from './PipeTransportTypes';
|
|
|
8
8
|
import type { DirectTransport, DirectTransportOptions } from './DirectTransportTypes';
|
|
9
9
|
import type { ActiveSpeakerObserver, ActiveSpeakerObserverOptions } from './ActiveSpeakerObserverTypes';
|
|
10
10
|
import type { AudioLevelObserver, AudioLevelObserverOptions } from './AudioLevelObserverTypes';
|
|
11
|
-
import type { RtpCapabilities } from './rtpParametersTypes';
|
|
11
|
+
import type { RtpCapabilities, RtpCodecCapability } from './rtpParametersTypes';
|
|
12
12
|
import type { AppData } from './types';
|
|
13
13
|
import * as FbsRouter from './fbs/router';
|
|
14
14
|
export type RouterInternal = {
|
|
@@ -52,6 +52,7 @@ export declare class RouterImpl<RouterAppData extends AppData = AppData> extends
|
|
|
52
52
|
producerId: string;
|
|
53
53
|
rtpCapabilities: RtpCapabilities;
|
|
54
54
|
}): boolean;
|
|
55
|
+
updateMediaCodecs(mediaCodecs: RtpCodecCapability[]): void;
|
|
55
56
|
private handleListenerError;
|
|
56
57
|
}
|
|
57
58
|
export declare function parseRouterDumpResponse(binary: FbsRouter.DumpResponse): RouterDump;
|
package/node/lib/Router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../src/Router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACX,MAAM,EACN,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACX,SAAS,EAGT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACX,eAAe,EACf,sBAAsB,EACtB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EACX,cAAc,EACd,qBAAqB,EACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKhF,OAAO,KAAK,EACX,eAAe,EACf,sBAAsB,EACtB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EACX,kBAAkB,EAClB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../src/Router.ts"],"names":[],"mappings":"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"}
|
package/node/lib/Router.js
CHANGED
|
@@ -373,13 +373,13 @@ class RouterImpl extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
373
373
|
/* Decode Response. */
|
|
374
374
|
const data = new FbsPipeTransport.DumpResponse();
|
|
375
375
|
response.body(data);
|
|
376
|
-
const
|
|
376
|
+
const pipeTransportData = (0, PipeTransport_1.parsePipeTransportDumpResponse)(data);
|
|
377
377
|
const transport = new PipeTransport_1.PipeTransportImpl({
|
|
378
378
|
internal: {
|
|
379
379
|
...this.#internal,
|
|
380
380
|
transportId,
|
|
381
381
|
},
|
|
382
|
-
data:
|
|
382
|
+
data: pipeTransportData,
|
|
383
383
|
channel: this.#channel,
|
|
384
384
|
appData,
|
|
385
385
|
getRouterRtpCapabilities: () => this.#data.rtpCapabilities,
|
|
@@ -748,6 +748,14 @@ class RouterImpl extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
748
748
|
return false;
|
|
749
749
|
}
|
|
750
750
|
}
|
|
751
|
+
updateMediaCodecs(mediaCodecs) {
|
|
752
|
+
logger.debug('updateMediaCodecs()');
|
|
753
|
+
// Clone given media codecs to not modify input data.
|
|
754
|
+
const clonedMediaCodecs = utils.clone(mediaCodecs);
|
|
755
|
+
// This may throw.
|
|
756
|
+
const rtpCapabilities = ortc.generateRouterRtpCapabilities(clonedMediaCodecs);
|
|
757
|
+
this.#data.rtpCapabilities = rtpCapabilities;
|
|
758
|
+
}
|
|
751
759
|
handleListenerError() {
|
|
752
760
|
this.on('listenererror', (eventName, error) => {
|
|
753
761
|
logger.error(`event listener threw an error [eventName:${eventName}]:`, error);
|
|
@@ -222,6 +222,11 @@ export interface Router<RouterAppData extends AppData = AppData> extends Enhance
|
|
|
222
222
|
producerId: string;
|
|
223
223
|
rtpCapabilities: RtpCapabilities;
|
|
224
224
|
}): boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Update the Router media codecs. Once called, the return value of the
|
|
227
|
+
* router.rtpCapabilities getter changes.
|
|
228
|
+
*/
|
|
229
|
+
updateMediaCodecs(mediaCodecs: RtpCodecCapability[]): void;
|
|
225
230
|
}
|
|
226
231
|
export {};
|
|
227
232
|
//# sourceMappingURL=RouterTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterTypes.d.ts","sourceRoot":"","sources":["../src/RouterTypes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RouterTypes.d.ts","sourceRoot":"","sources":["../src/RouterTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,19 @@ const ctx = {
|
|
|
33
33
|
rtcpFeedback: [], // Will be ignored.
|
|
34
34
|
},
|
|
35
35
|
]),
|
|
36
|
+
unsupportedMediaCodecs: utils.deepFreeze([
|
|
37
|
+
{
|
|
38
|
+
kind: 'audio',
|
|
39
|
+
mimeType: 'audio/x-aiff',
|
|
40
|
+
clockRate: 8000,
|
|
41
|
+
channels: 1,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
kind: 'video',
|
|
45
|
+
mimeType: 'video/3gpp',
|
|
46
|
+
clockRate: 90000,
|
|
47
|
+
},
|
|
48
|
+
]),
|
|
36
49
|
};
|
|
37
50
|
beforeEach(async () => {
|
|
38
51
|
ctx.worker = await mediasoup.createWorker();
|
|
@@ -56,6 +69,8 @@ test('worker.createRouter() succeeds', async () => {
|
|
|
56
69
|
expect(router.closed).toBe(false);
|
|
57
70
|
expect(typeof router.rtpCapabilities).toBe('object');
|
|
58
71
|
expect(Array.isArray(router.rtpCapabilities.codecs)).toBe(true);
|
|
72
|
+
// 3 codecs + 2 RTX codecs.
|
|
73
|
+
expect(router.rtpCapabilities.codecs?.length).toBe(5);
|
|
59
74
|
expect(Array.isArray(router.rtpCapabilities.headerExtensions)).toBe(true);
|
|
60
75
|
expect(router.appData).toEqual({ foo: 123 });
|
|
61
76
|
expect(() => (router.appData = { foo: 222, bar: 'BBB' })).not.toThrow();
|
|
@@ -85,6 +100,9 @@ test('worker.createRouter() succeeds', async () => {
|
|
|
85
100
|
// API not exposed in the interface.
|
|
86
101
|
expect(ctx.worker.routersForTesting.size).toBe(0);
|
|
87
102
|
}, 2000);
|
|
103
|
+
test('worker.createRouter() with invalid codecs rejects with UnsupportedError', async () => {
|
|
104
|
+
await expect(ctx.worker.createRouter({ mediaCodecs: ctx.unsupportedMediaCodecs })).rejects.toThrow(errors_1.UnsupportedError);
|
|
105
|
+
}, 2000);
|
|
88
106
|
test('worker.createRouter() with wrong arguments rejects with TypeError', async () => {
|
|
89
107
|
// @ts-expect-error --- Testing purposes.
|
|
90
108
|
await expect(ctx.worker.createRouter({ mediaCodecs: {} })).rejects.toThrow(TypeError);
|
|
@@ -96,6 +114,21 @@ test('worker.createRouter() rejects with InvalidStateError if Worker is closed',
|
|
|
96
114
|
ctx.worker.close();
|
|
97
115
|
await expect(ctx.worker.createRouter({ mediaCodecs: ctx.mediaCodecs })).rejects.toThrow(errors_1.InvalidStateError);
|
|
98
116
|
}, 2000);
|
|
117
|
+
test('router.updateMediaCodecs() succeeds', async () => {
|
|
118
|
+
const router = await ctx.worker.createRouter({
|
|
119
|
+
mediaCodecs: ctx.mediaCodecs,
|
|
120
|
+
});
|
|
121
|
+
expect(typeof router.rtpCapabilities).toBe('object');
|
|
122
|
+
expect(Array.isArray(router.rtpCapabilities.codecs)).toBe(true);
|
|
123
|
+
// 3 codecs + 2 RTX codecs.
|
|
124
|
+
expect(router.rtpCapabilities.codecs?.length).toBe(5);
|
|
125
|
+
expect(Array.isArray(router.rtpCapabilities.headerExtensions)).toBe(true);
|
|
126
|
+
router.updateMediaCodecs([]);
|
|
127
|
+
expect(typeof router.rtpCapabilities).toBe('object');
|
|
128
|
+
expect(Array.isArray(router.rtpCapabilities.codecs)).toBe(true);
|
|
129
|
+
expect(router.rtpCapabilities.codecs?.length).toBe(0);
|
|
130
|
+
expect(Array.isArray(router.rtpCapabilities.headerExtensions)).toBe(true);
|
|
131
|
+
}, 2000);
|
|
99
132
|
test('router.close() succeeds', async () => {
|
|
100
133
|
const router = await ctx.worker.createRouter({
|
|
101
134
|
mediaCodecs: ctx.mediaCodecs,
|
package/npm-scripts.mjs
CHANGED
|
@@ -55,7 +55,7 @@ const PRETTIER_PATHS = [
|
|
|
55
55
|
].join(' ');
|
|
56
56
|
|
|
57
57
|
const task = process.argv[2];
|
|
58
|
-
const
|
|
58
|
+
const taskArgs = process.argv.slice(3).join(' ');
|
|
59
59
|
|
|
60
60
|
// PYTHONPATH env must be updated now so all invoke calls below will find the
|
|
61
61
|
// pip invoke module.
|
|
@@ -72,17 +72,19 @@ if (process.env.PYTHONPATH) {
|
|
|
72
72
|
void run();
|
|
73
73
|
|
|
74
74
|
async function run() {
|
|
75
|
-
logInfo(
|
|
75
|
+
logInfo(taskArgs ? `[args:"${taskArgs}"]` : '');
|
|
76
76
|
|
|
77
77
|
switch (task) {
|
|
78
78
|
// As per NPM documentation (https://docs.npmjs.com/cli/v9/using-npm/scripts)
|
|
79
79
|
// `prepare` script:
|
|
80
80
|
//
|
|
81
|
-
// - Runs BEFORE the package is packed, i.e. during `npm publish` and
|
|
81
|
+
// - Runs BEFORE the package is packed, i.e. during `npm publish` and
|
|
82
|
+
// `npm pack`.
|
|
82
83
|
// - Runs on local `npm install` without any arguments.
|
|
83
|
-
// - NOTE: If a package being installed through git contains a `prepare`
|
|
84
|
-
// its dependencies and devDependencies will be installed, and
|
|
85
|
-
// script will be run, before the package is packaged and
|
|
84
|
+
// - NOTE: If a package being installed through git contains a `prepare`
|
|
85
|
+
// script, its dependencies and devDependencies will be installed, and
|
|
86
|
+
// the `prepare` script will be run, before the package is packaged and
|
|
87
|
+
// installed.
|
|
86
88
|
//
|
|
87
89
|
// So here we generate flatbuffers definitions for TypeScript and compile
|
|
88
90
|
// TypeScript to JavaScript.
|
|
@@ -103,8 +105,8 @@ async function run() {
|
|
|
103
105
|
}
|
|
104
106
|
// If MEDIASOUP_LOCAL_DEV is given, or if MEDIASOUP_SKIP_WORKER_PREBUILT_DOWNLOAD
|
|
105
107
|
// env is given, or if mediasoup package is being installed via git+ssh
|
|
106
|
-
// (instead of via npm), and if MEDIASOUP_FORCE_PREBUILT_WORKER_DOWNLOAD
|
|
107
|
-
// not set, then skip mediasoup-worker prebuilt download.
|
|
108
|
+
// (instead of via npm), and if MEDIASOUP_FORCE_PREBUILT_WORKER_DOWNLOAD
|
|
109
|
+
// env is not set, then skip mediasoup-worker prebuilt download.
|
|
108
110
|
else if (
|
|
109
111
|
(process.env.MEDIASOUP_LOCAL_DEV ||
|
|
110
112
|
process.env.MEDIASOUP_SKIP_WORKER_PREBUILT_DOWNLOAD ||
|
|
@@ -218,7 +220,7 @@ async function run() {
|
|
|
218
220
|
}
|
|
219
221
|
|
|
220
222
|
case 'coverage:node': {
|
|
221
|
-
executeCmd(`jest --coverage ${
|
|
223
|
+
executeCmd(`jest --coverage ${taskArgs}`);
|
|
222
224
|
executeCmd('open-cli coverage/lcov-report/index.html');
|
|
223
225
|
|
|
224
226
|
break;
|
|
@@ -260,7 +262,7 @@ async function run() {
|
|
|
260
262
|
draft: false,
|
|
261
263
|
});
|
|
262
264
|
|
|
263
|
-
|
|
265
|
+
executeInteractiveCmd('npm publish');
|
|
264
266
|
|
|
265
267
|
break;
|
|
266
268
|
}
|
|
@@ -341,7 +343,7 @@ function buildTypescript({ force }) {
|
|
|
341
343
|
|
|
342
344
|
deleteNodeLib();
|
|
343
345
|
|
|
344
|
-
executeCmd(`tsc ${
|
|
346
|
+
executeCmd(`tsc ${taskArgs}`);
|
|
345
347
|
}
|
|
346
348
|
|
|
347
349
|
function watchTypescript() {
|
|
@@ -349,7 +351,7 @@ function watchTypescript() {
|
|
|
349
351
|
|
|
350
352
|
deleteNodeLib();
|
|
351
353
|
|
|
352
|
-
executeCmd(`tsc --watch ${
|
|
354
|
+
executeCmd(`tsc --watch ${taskArgs}`);
|
|
353
355
|
}
|
|
354
356
|
|
|
355
357
|
function buildWorker() {
|
|
@@ -465,7 +467,7 @@ function flatcWorker() {
|
|
|
465
467
|
function testNode() {
|
|
466
468
|
logInfo('testNode()');
|
|
467
469
|
|
|
468
|
-
executeCmd(`jest --silent false --detectOpenHandles ${
|
|
470
|
+
executeCmd(`jest --silent false --detectOpenHandles ${taskArgs}`);
|
|
469
471
|
}
|
|
470
472
|
|
|
471
473
|
function testWorker() {
|
|
@@ -518,21 +520,34 @@ async function prebuildWorker() {
|
|
|
518
520
|
const workerPrebuildTar = getWorkerPrebuildTarName();
|
|
519
521
|
const workerPrebuildTarPath = `${WORKER_PREBUILD_DIR}/${workerPrebuildTar}`;
|
|
520
522
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
523
|
+
try {
|
|
524
|
+
await new Promise((resolve, reject) => {
|
|
525
|
+
// Generate a gzip file which just contains mediasoup-worker binary
|
|
526
|
+
// without any folder.
|
|
527
|
+
tar
|
|
528
|
+
.create(
|
|
529
|
+
{
|
|
530
|
+
cwd: WORKER_RELEASE_DIR,
|
|
531
|
+
gzip: true,
|
|
532
|
+
strict: true,
|
|
533
|
+
},
|
|
534
|
+
[WORKER_RELEASE_BIN]
|
|
535
|
+
)
|
|
536
|
+
// This is needed for the case in which tar.create() fails before
|
|
537
|
+
// invoking pipe() on its result.
|
|
538
|
+
.on('error', reject)
|
|
539
|
+
.pipe(fs.createWriteStream(workerPrebuildTarPath))
|
|
540
|
+
.on('finish', resolve)
|
|
541
|
+
.on('error', reject);
|
|
542
|
+
});
|
|
543
|
+
} catch (error) {
|
|
544
|
+
logError(
|
|
545
|
+
'prebuildWorker() | failed to create mediasoup-worker prebuilt tar file:',
|
|
546
|
+
error
|
|
547
|
+
);
|
|
548
|
+
|
|
549
|
+
exitWithError();
|
|
550
|
+
}
|
|
536
551
|
}
|
|
537
552
|
|
|
538
553
|
// Returns a Promise resolving to true if a mediasoup-worker prebuilt binary
|
|
@@ -586,8 +601,9 @@ async function downloadPrebuiltWorker() {
|
|
|
586
601
|
res.body
|
|
587
602
|
.pipe(
|
|
588
603
|
tar.extract({
|
|
589
|
-
newer: false,
|
|
590
604
|
cwd: WORKER_RELEASE_DIR,
|
|
605
|
+
newer: false,
|
|
606
|
+
strict: true,
|
|
591
607
|
})
|
|
592
608
|
)
|
|
593
609
|
.on('finish', () => {
|
|
@@ -607,8 +623,8 @@ async function downloadPrebuiltWorker() {
|
|
|
607
623
|
// Let's confirm that the fetched mediasoup-worker prebuit binary does
|
|
608
624
|
// run in current host. This is to prevent weird issues related to
|
|
609
625
|
// different versions of libc in the system and so on.
|
|
610
|
-
// So run mediasoup-worker without the required MEDIASOUP_VERSION env
|
|
611
|
-
// expect exit code 41 (see main.cpp).
|
|
626
|
+
// So run mediasoup-worker without the required MEDIASOUP_VERSION env
|
|
627
|
+
// and expect exit code 41 (see main.cpp).
|
|
612
628
|
|
|
613
629
|
logInfo(
|
|
614
630
|
'downloadPrebuiltWorker() | checking fetched mediasoup-worker prebuilt binary in current host'
|
|
@@ -646,7 +662,8 @@ async function downloadPrebuiltWorker() {
|
|
|
646
662
|
})
|
|
647
663
|
.on('error', error => {
|
|
648
664
|
logError(
|
|
649
|
-
`downloadPrebuiltWorker() | failed to
|
|
665
|
+
`downloadPrebuiltWorker() | failed to extract downloaded mediasoup-worker prebuilt binary:`,
|
|
666
|
+
error
|
|
650
667
|
);
|
|
651
668
|
|
|
652
669
|
resolve(false);
|
|
@@ -706,19 +723,31 @@ function executeCmd(command) {
|
|
|
706
723
|
}
|
|
707
724
|
}
|
|
708
725
|
|
|
709
|
-
function
|
|
726
|
+
function executeInteractiveCmd(command) {
|
|
727
|
+
logInfo(`executeInteractiveCmd(): ${command}`);
|
|
728
|
+
|
|
729
|
+
try {
|
|
730
|
+
execSync(command, { stdio: 'inherit', env: process.env });
|
|
731
|
+
} catch (error) {
|
|
732
|
+
logError(`executeInteractiveCmd() failed, exiting: ${error}`);
|
|
733
|
+
|
|
734
|
+
exitWithError();
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
function logInfo(...args) {
|
|
710
739
|
// eslint-disable-next-line no-console
|
|
711
|
-
console.log(`npm-scripts.mjs \x1b[36m[INFO] [${task}]\x1b[0m`,
|
|
740
|
+
console.log(`npm-scripts.mjs \x1b[36m[INFO] [${task}]\x1b[0m`, ...args);
|
|
712
741
|
}
|
|
713
742
|
|
|
714
|
-
function logWarn(
|
|
743
|
+
function logWarn(...args) {
|
|
715
744
|
// eslint-disable-next-line no-console
|
|
716
|
-
console.warn(`npm-scripts.mjs \x1b[33m[WARN] [${task}]\x1b\0m`,
|
|
745
|
+
console.warn(`npm-scripts.mjs \x1b[33m[WARN] [${task}]\x1b\0m`, ...args);
|
|
717
746
|
}
|
|
718
747
|
|
|
719
|
-
function logError(
|
|
748
|
+
function logError(...args) {
|
|
720
749
|
// eslint-disable-next-line no-console
|
|
721
|
-
console.error(`npm-scripts.mjs \x1b[31m[ERROR] [${task}]\x1b[0m`,
|
|
750
|
+
console.error(`npm-scripts.mjs \x1b[31m[ERROR] [${task}]\x1b[0m`, ...args);
|
|
722
751
|
}
|
|
723
752
|
|
|
724
753
|
function exitWithError() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mediasoup",
|
|
3
|
-
"version": "3.16.
|
|
3
|
+
"version": "3.16.8",
|
|
4
4
|
"description": "Cutting Edge WebRTC Video Conferencing",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
|
|
@@ -100,24 +100,24 @@
|
|
|
100
100
|
"tar": "^7.4.3"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
|
-
"@eslint/js": "^9.
|
|
103
|
+
"@eslint/js": "^9.32.0",
|
|
104
104
|
"@octokit/rest": "^22.0.0",
|
|
105
105
|
"@types/debug": "^4.1.12",
|
|
106
106
|
"@types/jest": "^30.0.0",
|
|
107
|
-
"@types/node": "^24.0
|
|
108
|
-
"eslint": "^9.
|
|
109
|
-
"eslint-config-prettier": "^10.1.
|
|
107
|
+
"@types/node": "^24.1.0",
|
|
108
|
+
"eslint": "^9.32.0",
|
|
109
|
+
"eslint-config-prettier": "^10.1.8",
|
|
110
110
|
"eslint-plugin-jest": "^29.0.1",
|
|
111
|
-
"eslint-plugin-prettier": "^5.5.
|
|
111
|
+
"eslint-plugin-prettier": "^5.5.3",
|
|
112
112
|
"globals": "^16.3.0",
|
|
113
|
-
"jest": "^30.0.
|
|
114
|
-
"marked": "^16.
|
|
113
|
+
"jest": "^30.0.5",
|
|
114
|
+
"marked": "^16.1.1",
|
|
115
115
|
"open-cli": "^8.0.0",
|
|
116
|
-
"pick-port": "^2.1.
|
|
116
|
+
"pick-port": "^2.1.1",
|
|
117
117
|
"prettier": "^3.6.2",
|
|
118
118
|
"sctp": "^1.0.0",
|
|
119
119
|
"ts-jest": "^29.4.0",
|
|
120
120
|
"typescript": "^5.8.3",
|
|
121
|
-
"typescript-eslint": "^8.
|
|
121
|
+
"typescript-eslint": "^8.38.0"
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -6,26 +6,28 @@
|
|
|
6
6
|
|
|
7
7
|
void Fuzzer::Utils::Fuzz(const uint8_t* data, size_t len)
|
|
8
8
|
{
|
|
9
|
-
|
|
10
|
-
std::
|
|
9
|
+
// For some fuzzers below.
|
|
10
|
+
std::unique_ptr<uint8_t[]> data2(new uint8_t[len + (INET6_ADDRSTRLEN * 3)]);
|
|
11
|
+
|
|
12
|
+
std::memcpy(data2.get(), data, len);
|
|
11
13
|
|
|
12
14
|
/* IP class. */
|
|
13
15
|
|
|
14
16
|
std::string ip;
|
|
15
17
|
|
|
16
|
-
ip = std::string(reinterpret_cast<const char*>(data2), INET6_ADDRSTRLEN / 2);
|
|
18
|
+
ip = std::string(reinterpret_cast<const char*>(data2.get()), INET6_ADDRSTRLEN / 2);
|
|
17
19
|
::Utils::IP::GetFamily(ip);
|
|
18
20
|
|
|
19
|
-
ip = std::string(reinterpret_cast<const char*>(data2), INET6_ADDRSTRLEN);
|
|
21
|
+
ip = std::string(reinterpret_cast<const char*>(data2.get()), INET6_ADDRSTRLEN);
|
|
20
22
|
::Utils::IP::GetFamily(ip);
|
|
21
23
|
|
|
22
|
-
ip = std::string(reinterpret_cast<const char*>(data2), INET6_ADDRSTRLEN * 2);
|
|
24
|
+
ip = std::string(reinterpret_cast<const char*>(data2.get()), INET6_ADDRSTRLEN * 2);
|
|
23
25
|
::Utils::IP::GetFamily(ip);
|
|
24
26
|
|
|
25
27
|
// Protect with try/catch since throws are legit.
|
|
26
28
|
try
|
|
27
29
|
{
|
|
28
|
-
auto ip = std::string(reinterpret_cast<const char*>(data2), len);
|
|
30
|
+
auto ip = std::string(reinterpret_cast<const char*>(data2.get()), len);
|
|
29
31
|
|
|
30
32
|
::Utils::IP::NormalizeIp(ip);
|
|
31
33
|
}
|
|
@@ -35,16 +37,16 @@ void Fuzzer::Utils::Fuzz(const uint8_t* data, size_t len)
|
|
|
35
37
|
|
|
36
38
|
/* Byte class. */
|
|
37
39
|
|
|
38
|
-
::Utils::Byte::Get1Byte(data2, len);
|
|
39
|
-
::Utils::Byte::Get2Bytes(data2, len);
|
|
40
|
-
::Utils::Byte::Get3Bytes(data2, len);
|
|
41
|
-
::Utils::Byte::Get4Bytes(data2, len);
|
|
42
|
-
::Utils::Byte::Get8Bytes(data2, len);
|
|
43
|
-
::Utils::Byte::Set1Byte(data2, len, uint8_t{ 6u });
|
|
44
|
-
::Utils::Byte::Set2Bytes(data2, len, uint16_t{ 66u });
|
|
45
|
-
::Utils::Byte::Set3Bytes(data2, len, uint32_t{ 666u });
|
|
46
|
-
::Utils::Byte::Set4Bytes(data2, len, uint32_t{ 666u });
|
|
47
|
-
::Utils::Byte::Set8Bytes(data2, len, uint64_t{ 6666u });
|
|
40
|
+
::Utils::Byte::Get1Byte(data2.get(), len);
|
|
41
|
+
::Utils::Byte::Get2Bytes(data2.get(), len);
|
|
42
|
+
::Utils::Byte::Get3Bytes(data2.get(), len);
|
|
43
|
+
::Utils::Byte::Get4Bytes(data2.get(), len);
|
|
44
|
+
::Utils::Byte::Get8Bytes(data2.get(), len);
|
|
45
|
+
::Utils::Byte::Set1Byte(data2.get(), len, uint8_t{ 6u });
|
|
46
|
+
::Utils::Byte::Set2Bytes(data2.get(), len, uint16_t{ 66u });
|
|
47
|
+
::Utils::Byte::Set3Bytes(data2.get(), len, uint32_t{ 666u });
|
|
48
|
+
::Utils::Byte::Set4Bytes(data2.get(), len, uint32_t{ 666u });
|
|
49
|
+
::Utils::Byte::Set8Bytes(data2.get(), len, uint64_t{ 6666u });
|
|
48
50
|
::Utils::Byte::PadTo4Bytes(static_cast<uint8_t>(len));
|
|
49
51
|
::Utils::Byte::PadTo4Bytes(static_cast<uint16_t>(len));
|
|
50
52
|
::Utils::Byte::PadTo4Bytes(static_cast<uint32_t>(len));
|
|
@@ -59,7 +61,7 @@ void Fuzzer::Utils::Fuzz(const uint8_t* data, size_t len)
|
|
|
59
61
|
|
|
60
62
|
::Utils::Crypto::GetRandomUInt(static_cast<uint32_t>(len), static_cast<uint32_t>(len + 1000000));
|
|
61
63
|
::Utils::Crypto::GetRandomString(len);
|
|
62
|
-
::Utils::Crypto::GetCRC32(data2, len);
|
|
64
|
+
::Utils::Crypto::GetCRC32(data2.get(), len);
|
|
63
65
|
|
|
64
66
|
/* String class. */
|
|
65
67
|
|
|
@@ -68,8 +70,8 @@ void Fuzzer::Utils::Fuzz(const uint8_t* data, size_t len)
|
|
|
68
70
|
{
|
|
69
71
|
size_t outLen;
|
|
70
72
|
|
|
71
|
-
::Utils::String::Base64Encode(data2, len);
|
|
72
|
-
::Utils::String::Base64Decode(data2, len, outLen);
|
|
73
|
+
::Utils::String::Base64Encode(data2.get(), len);
|
|
74
|
+
::Utils::String::Base64Decode(data2.get(), len, outLen);
|
|
73
75
|
}
|
|
74
76
|
catch (const MediaSoupError& error)
|
|
75
77
|
{
|
|
@@ -80,9 +82,5 @@ void Fuzzer::Utils::Fuzz(const uint8_t* data, size_t len)
|
|
|
80
82
|
auto ntp = ::Utils::Time::TimeMs2Ntp(static_cast<uint64_t>(len));
|
|
81
83
|
|
|
82
84
|
::Utils::Time::Ntp2TimeMs(ntp);
|
|
83
|
-
::Utils::Time::IsNewerTimestamp(static_cast<uint32_t>(len), static_cast<uint32_t>(len * len));
|
|
84
|
-
::Utils::Time::IsNewerTimestamp(static_cast<uint32_t>(len * len), static_cast<uint32_t>(len));
|
|
85
|
-
::Utils::Time::LatestTimestamp(static_cast<uint32_t>(len), static_cast<uint32_t>(len * len));
|
|
86
|
-
::Utils::Time::LatestTimestamp(static_cast<uint32_t>(len * len), static_cast<uint32_t>(len));
|
|
87
85
|
::Utils::Time::TimeMsToAbsSendTime(static_cast<uint64_t>(len));
|
|
88
86
|
}
|
|
@@ -15,7 +15,7 @@ void Fuzzer::RTC::RtpPacket::Fuzz(const uint8_t* data, size_t len)
|
|
|
15
15
|
// below will try to write into packet memory.
|
|
16
16
|
//
|
|
17
17
|
// NOTE: Let's make the buffer bigger to test API that increases packet size.
|
|
18
|
-
uint8_t data2[len + 64];
|
|
18
|
+
std::unique_ptr<uint8_t[]> data2(new uint8_t[len + 64]);
|
|
19
19
|
uint8_t extenLen;
|
|
20
20
|
bool voice;
|
|
21
21
|
uint8_t volume;
|
|
@@ -30,9 +30,9 @@ void Fuzzer::RTC::RtpPacket::Fuzz(const uint8_t* data, size_t len)
|
|
|
30
30
|
std::string rid;
|
|
31
31
|
std::vector<::RTC::RtpPacket::GenericExtension> extensions;
|
|
32
32
|
|
|
33
|
-
std::memcpy(data2, data, len);
|
|
33
|
+
std::memcpy(data2.get(), data, len);
|
|
34
34
|
|
|
35
|
-
::RTC::RtpPacket* packet = ::RTC::RtpPacket::Parse(data2, len);
|
|
35
|
+
::RTC::RtpPacket* packet = ::RTC::RtpPacket::Parse(data2.get(), len);
|
|
36
36
|
|
|
37
37
|
if (!packet)
|
|
38
38
|
{
|
|
@@ -17,11 +17,11 @@ void Fuzzer::RTC::RTCP::Packet::Fuzz(const uint8_t* data, size_t len)
|
|
|
17
17
|
|
|
18
18
|
// We need to clone the given data into a separate buffer because setters
|
|
19
19
|
// below will try to write into packet memory.
|
|
20
|
-
uint8_t data2[len];
|
|
20
|
+
std::unique_ptr<uint8_t[]> data2(new uint8_t[len]);
|
|
21
21
|
|
|
22
|
-
std::memcpy(data2, data, len);
|
|
22
|
+
std::memcpy(data2.get(), data, len);
|
|
23
23
|
|
|
24
|
-
::RTC::RTCP::Packet* packet = ::RTC::RTCP::Packet::Parse(data2, len);
|
|
24
|
+
::RTC::RTCP::Packet* packet = ::RTC::RTCP::Packet::Parse(data2.get(), len);
|
|
25
25
|
|
|
26
26
|
if (!packet)
|
|
27
27
|
{
|
|
@@ -77,7 +77,8 @@ namespace RTC
|
|
|
77
77
|
class RtpDataCounter
|
|
78
78
|
{
|
|
79
79
|
public:
|
|
80
|
-
explicit RtpDataCounter(size_t windowSizeMs = 2500)
|
|
80
|
+
explicit RtpDataCounter(bool ignorePaddingOnlyPackets, size_t windowSizeMs = 2500)
|
|
81
|
+
: ignorePaddingOnlyPackets(ignorePaddingOnlyPackets), rate(windowSizeMs)
|
|
81
82
|
{
|
|
82
83
|
}
|
|
83
84
|
|
|
@@ -100,6 +101,9 @@ namespace RTC
|
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
private:
|
|
104
|
+
// Whether the size of padding only RTP packets should not be taken into
|
|
105
|
+
// account
|
|
106
|
+
bool ignorePaddingOnlyPackets{ false };
|
|
103
107
|
RateCalculator rate;
|
|
104
108
|
size_t packets{ 0u };
|
|
105
109
|
};
|
|
@@ -27,12 +27,8 @@ namespace RTC
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
public:
|
|
30
|
-
static bool IsSeqLowerThan(T lhs, T rhs);
|
|
31
30
|
static bool IsSeqHigherThan(T lhs, T rhs);
|
|
32
|
-
|
|
33
|
-
private:
|
|
34
|
-
static const SeqLowerThan isSeqLowerThan; // NOLINT(readability-identifier-naming)
|
|
35
|
-
static const SeqHigherThan isSeqHigherThan; // NOLINT(readability-identifier-naming)
|
|
31
|
+
static bool IsSeqLowerThan(T lhs, T rhs);
|
|
36
32
|
|
|
37
33
|
public:
|
|
38
34
|
SeqManager() = default;
|