mediasoup 3.13.15 → 3.13.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.
- package/README.md +27 -41
- package/node/lib/ActiveSpeakerObserver.d.ts.map +1 -1
- package/node/lib/ActiveSpeakerObserver.js +15 -17
- package/node/lib/AudioLevelObserver.d.ts.map +1 -1
- package/node/lib/AudioLevelObserver.js +27 -29
- package/node/lib/Channel.d.ts +1 -1
- package/node/lib/Channel.d.ts.map +1 -1
- package/node/lib/Channel.js +65 -77
- package/node/lib/Consumer.d.ts +2 -2
- package/node/lib/Consumer.d.ts.map +1 -1
- package/node/lib/Consumer.js +158 -184
- package/node/lib/DataConsumer.d.ts +1 -1
- package/node/lib/DataConsumer.d.ts.map +1 -1
- package/node/lib/DataConsumer.js +84 -91
- package/node/lib/DataProducer.d.ts +1 -1
- package/node/lib/DataProducer.d.ts.map +1 -1
- package/node/lib/DataProducer.js +32 -30
- package/node/lib/DirectTransport.d.ts.map +1 -1
- package/node/lib/DirectTransport.js +23 -27
- package/node/lib/EnhancedEventEmitter.d.ts.map +1 -1
- package/node/lib/Logger.d.ts.map +1 -1
- package/node/lib/PipeTransport.d.ts +2 -2
- package/node/lib/PipeTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.js +41 -45
- package/node/lib/PlainTransport.d.ts +1 -1
- package/node/lib/PlainTransport.d.ts.map +1 -1
- package/node/lib/PlainTransport.js +56 -64
- package/node/lib/Producer.d.ts +1 -1
- package/node/lib/Producer.d.ts.map +1 -1
- package/node/lib/Producer.js +102 -124
- package/node/lib/Router.d.ts +9 -9
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +96 -91
- package/node/lib/RtpObserver.d.ts +3 -3
- package/node/lib/RtpObserver.d.ts.map +1 -1
- package/node/lib/RtpObserver.js +6 -4
- package/node/lib/RtpParameters.d.ts.map +1 -1
- package/node/lib/RtpParameters.js +107 -139
- package/node/lib/RtpStream.d.ts.map +1 -1
- package/node/lib/RtpStream.js +6 -8
- package/node/lib/SctpParameters.d.ts.map +1 -1
- package/node/lib/SctpParameters.js +12 -12
- package/node/lib/SrtpParameters.d.ts.map +1 -1
- package/node/lib/SrtpParameters.js +28 -37
- package/node/lib/Transport.d.ts +5 -5
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +128 -139
- package/node/lib/WebRtcServer.d.ts +1 -1
- package/node/lib/WebRtcServer.d.ts.map +1 -1
- package/node/lib/WebRtcServer.js +7 -6
- package/node/lib/WebRtcTransport.d.ts +1 -1
- package/node/lib/WebRtcTransport.d.ts.map +1 -1
- package/node/lib/WebRtcTransport.js +177 -215
- package/node/lib/Worker.d.ts +9 -4
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +45 -36
- package/node/lib/errors.d.ts.map +1 -1
- package/node/lib/errors.js +6 -6
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +2 -2
- package/node/lib/ortc.d.ts +2 -2
- package/node/lib/ortc.d.ts.map +1 -1
- package/node/lib/ortc.js +106 -123
- package/node/lib/scalabilityModes.d.ts.map +1 -1
- package/node/lib/scalabilityModes.js +2 -2
- package/node/lib/supportedRtpCapabilities.d.ts.map +1 -1
- package/node/lib/supportedRtpCapabilities.js +61 -93
- package/node/lib/test/test-ActiveSpeakerObserver.js +17 -18
- package/node/lib/test/test-AudioLevelObserver.js +23 -27
- package/node/lib/test/test-Consumer.js +291 -331
- package/node/lib/test/test-DataConsumer.js +193 -182
- package/node/lib/test/test-DataProducer.js +67 -94
- package/node/lib/test/test-DirectTransport.js +95 -109
- package/node/lib/test/test-PipeTransport.js +402 -383
- package/node/lib/test/test-PlainTransport.js +286 -300
- package/node/lib/test/test-Producer.js +180 -244
- package/node/lib/test/test-Router.js +28 -30
- package/node/lib/test/test-WebRtcServer.js +146 -158
- package/node/lib/test/test-WebRtcTransport.js +306 -346
- package/node/lib/test/test-Worker.js +34 -40
- package/node/lib/test/test-mediasoup.js +53 -21
- package/node/lib/test/test-multiopus.js +77 -81
- package/node/lib/test/test-node-sctp.js +31 -28
- package/node/lib/test/test-ortc.js +104 -111
- package/node/lib/types.d.ts.map +1 -1
- package/node/lib/utils.d.ts.map +1 -1
- package/node/lib/utils.js +9 -12
- package/npm-scripts.mjs +206 -269
- package/package.json +128 -123
- package/worker/include/Channel/ChannelRequest.hpp +1 -1
- package/worker/include/Channel/ChannelSocket.hpp +5 -5
- package/worker/include/Logger.hpp +20 -16
- package/worker/include/MediaSoupErrors.hpp +5 -5
- package/worker/include/RTC/ActiveSpeakerObserver.hpp +2 -2
- package/worker/include/RTC/Consumer.hpp +2 -2
- package/worker/include/RTC/DataConsumer.hpp +2 -2
- package/worker/include/RTC/DataProducer.hpp +1 -1
- package/worker/include/RTC/DtlsTransport.hpp +4 -4
- package/worker/include/RTC/IceCandidate.hpp +6 -6
- package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
- package/worker/include/RTC/PipeTransport.hpp +3 -1
- package/worker/include/RTC/PlainTransport.hpp +6 -2
- package/worker/include/RTC/Producer.hpp +1 -1
- package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +3 -3
- package/worker/include/RTC/RateCalculator.hpp +1 -1
- package/worker/include/RTC/Router.hpp +2 -2
- package/worker/include/RTC/RtcLogger.hpp +6 -6
- package/worker/include/RTC/RtpDictionaries.hpp +1 -2
- package/worker/include/RTC/RtpObserver.hpp +1 -1
- package/worker/include/RTC/RtpPacket.hpp +12 -17
- package/worker/include/RTC/RtpRetransmissionBuffer.hpp +4 -2
- package/worker/include/RTC/RtpStreamRecv.hpp +1 -1
- package/worker/include/RTC/SctpAssociation.hpp +2 -2
- package/worker/include/RTC/SeqManager.hpp +7 -7
- package/worker/include/RTC/SrtpSession.hpp +5 -5
- package/worker/include/RTC/StunPacket.hpp +4 -4
- package/worker/include/RTC/Transport.hpp +2 -2
- package/worker/include/RTC/TransportCongestionControlClient.hpp +1 -1
- package/worker/include/RTC/TransportCongestionControlServer.hpp +1 -1
- package/worker/include/RTC/TransportTuple.hpp +3 -1
- package/worker/include/RTC/TrendCalculator.hpp +1 -1
- package/worker/include/RTC/WebRtcServer.hpp +5 -3
- package/worker/include/Settings.hpp +2 -2
- package/worker/include/Utils.hpp +12 -12
- package/worker/include/Worker.hpp +1 -1
- package/worker/include/handles/TcpConnectionHandle.hpp +5 -4
- package/worker/include/handles/TcpServerHandle.hpp +5 -3
- package/worker/include/handles/UdpSocketHandle.hpp +5 -4
- package/worker/include/handles/UnixStreamSocketHandle.hpp +2 -3
- package/worker/scripts/clang-format.mjs +27 -40
- package/worker/scripts/package-lock.json +1084 -2825
- package/worker/scripts/package.json +11 -12
- package/worker/src/Channel/ChannelRequest.cpp +1 -1
- package/worker/src/Channel/ChannelSocket.cpp +10 -10
- package/worker/src/DepLibSRTP.cpp +8 -8
- package/worker/src/DepLibUV.cpp +0 -1
- package/worker/src/DepLibWebRTC.cpp +2 -2
- package/worker/src/DepOpenSSL.cpp +2 -2
- package/worker/src/DepUsrSCTP.cpp +7 -9
- package/worker/src/Logger.cpp +2 -2
- package/worker/src/MediaSoupErrors.cpp +1 -1
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +15 -19
- package/worker/src/RTC/AudioLevelObserver.cpp +0 -2
- package/worker/src/RTC/Consumer.cpp +2 -5
- package/worker/src/RTC/DataConsumer.cpp +4 -6
- package/worker/src/RTC/DataProducer.cpp +1 -3
- package/worker/src/RTC/DirectTransport.cpp +5 -2
- package/worker/src/RTC/DtlsTransport.cpp +7 -11
- package/worker/src/RTC/IceServer.cpp +1 -3
- package/worker/src/RTC/KeyFrameRequestManager.cpp +2 -4
- package/worker/src/RTC/NackGenerator.cpp +7 -16
- package/worker/src/RTC/PipeConsumer.cpp +1 -3
- package/worker/src/RTC/PipeTransport.cpp +11 -21
- package/worker/src/RTC/PlainTransport.cpp +11 -21
- package/worker/src/RTC/PortManager.cpp +8 -4
- package/worker/src/RTC/Producer.cpp +3 -9
- package/worker/src/RTC/RTCP/Feedback.cpp +0 -1
- package/worker/src/RTC/RTCP/FeedbackPsFir.cpp +0 -1
- package/worker/src/RTC/RTCP/FeedbackPsSli.cpp +0 -1
- package/worker/src/RTC/RTCP/FeedbackPsTst.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackPsVbcm.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackRtpEcn.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackRtpNack.cpp +2 -2
- package/worker/src/RTC/RTCP/FeedbackRtpTllei.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackRtpTmmb.cpp +0 -1
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +11 -11
- package/worker/src/RTC/RTCP/Packet.cpp +2 -2
- package/worker/src/RTC/RTCP/ReceiverReport.cpp +1 -1
- package/worker/src/RTC/RTCP/Sdes.cpp +1 -1
- package/worker/src/RTC/RTCP/SenderReport.cpp +1 -1
- package/worker/src/RTC/RTCP/XrDelaySinceLastRr.cpp +1 -1
- package/worker/src/RTC/RTCP/XrReceiverReferenceTime.cpp +1 -1
- package/worker/src/RTC/Router.cpp +0 -1
- package/worker/src/RTC/RtcLogger.cpp +5 -5
- package/worker/src/RTC/RtpDictionaries/RtcpFeedback.cpp +0 -1
- package/worker/src/RTC/RtpDictionaries/RtcpParameters.cpp +0 -2
- package/worker/src/RTC/RtpDictionaries/RtpCodecParameters.cpp +0 -1
- package/worker/src/RTC/RtpDictionaries/RtpEncodingParameters.cpp +0 -1
- package/worker/src/RTC/RtpDictionaries/RtpHeaderExtensionParameters.cpp +0 -1
- package/worker/src/RTC/RtpDictionaries/RtpHeaderExtensionUri.cpp +0 -1
- package/worker/src/RTC/RtpDictionaries/RtpRtxParameters.cpp +0 -2
- package/worker/src/RTC/RtpPacket.cpp +2 -12
- package/worker/src/RTC/RtpProbationGenerator.cpp +0 -1
- package/worker/src/RTC/RtpRetransmissionBuffer.cpp +38 -36
- package/worker/src/RTC/RtpStreamRecv.cpp +3 -3
- package/worker/src/RTC/RtpStreamSend.cpp +0 -1
- package/worker/src/RTC/SctpAssociation.cpp +36 -19
- package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +0 -1
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +0 -1
- package/worker/src/RTC/SeqManager.cpp +5 -5
- package/worker/src/RTC/SimulcastConsumer.cpp +1 -2
- package/worker/src/RTC/SrtpSession.cpp +12 -13
- package/worker/src/RTC/StunPacket.cpp +14 -14
- package/worker/src/RTC/SvcConsumer.cpp +0 -1
- package/worker/src/RTC/Transport.cpp +5 -5
- package/worker/src/RTC/TransportCongestionControlClient.cpp +0 -1
- package/worker/src/RTC/WebRtcServer.cpp +30 -28
- package/worker/src/RTC/WebRtcTransport.cpp +14 -24
- package/worker/src/Settings.cpp +7 -7
- package/worker/src/Utils/Crypto.cpp +1 -1
- package/worker/src/Utils/File.cpp +3 -1
- package/worker/src/Utils/IP.cpp +1 -1
- package/worker/src/Utils/String.cpp +1 -1
- package/worker/src/Worker.cpp +3 -3
- package/worker/src/handles/TcpConnectionHandle.cpp +3 -2
- package/worker/src/handles/TcpServerHandle.cpp +14 -12
- package/worker/src/handles/TimerHandle.cpp +1 -2
- package/worker/src/handles/UdpSocketHandle.cpp +19 -16
- package/worker/src/handles/UnixStreamSocketHandle.cpp +15 -14
- package/worker/src/lib.cpp +10 -8
- package/worker/subprojects/libsrtp2.wrap +4 -4
- package/worker/tasks.py +48 -35
package/README.md
CHANGED
|
@@ -10,58 +10,51 @@
|
|
|
10
10
|
[![][codeql-shield-mediasoup]][codeql-mediasoup]
|
|
11
11
|
[![][opencollective-shield-mediasoup]][opencollective-mediasoup]
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
## Website and Documentation
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
- [mediasoup.org][mediasoup-website]
|
|
18
16
|
|
|
19
17
|
## Support Forum
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
- [mediasoup.discourse.group][mediasoup-discourse]
|
|
23
20
|
|
|
24
21
|
## Design Goals
|
|
25
22
|
|
|
26
23
|
mediasoup and its client side libraries are designed to accomplish with the following goals:
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
- Be a [SFU](https://webrtcglossary.com/sfu) (Selective Forwarding Unit).
|
|
26
|
+
- Support both WebRTC and plain RTP input and output.
|
|
27
|
+
- Be a Node.js module or Rust crate in server side.
|
|
28
|
+
- Be a tiny TypeScript and C++ libraries in client side.
|
|
29
|
+
- Be minimalist: just handle the media layer.
|
|
30
|
+
- Be signaling agnostic: do not mandate any signaling protocol.
|
|
31
|
+
- Be super low level API.
|
|
32
|
+
- Support all existing WebRTC endpoints.
|
|
33
|
+
- Enable integration with well known multimedia libraries/tools.
|
|
38
34
|
|
|
39
35
|
## Architecture
|
|
40
36
|
|
|
41
37
|
![][mediasoup-architecture]
|
|
42
38
|
|
|
43
|
-
|
|
44
39
|
## Use Cases
|
|
45
40
|
|
|
46
41
|
mediasoup and its client side libraries provide a super low level API. They are intended to enable different use cases and scenarios, without any constraint or assumption. Some of these use cases are:
|
|
47
42
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
- Group video chat applications.
|
|
44
|
+
- One-to-many (or few-to-many) broadcasting applications in real-time.
|
|
45
|
+
- RTP streaming.
|
|
52
46
|
|
|
53
47
|
## Features
|
|
54
48
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
- ECMAScript 6/Idiomatic Rust low level API.
|
|
50
|
+
- Multi-stream: multiple audio/video streams over a single ICE + DTLS transport.
|
|
51
|
+
- IPv6 ready.
|
|
52
|
+
- ICE / DTLS / RTP / RTCP over UDP and TCP.
|
|
53
|
+
- Simulcast and SVC support.
|
|
54
|
+
- Congestion control.
|
|
55
|
+
- Sender and receiver bandwidth estimation with spatial/temporal layers distribution algorithm.
|
|
56
|
+
- Data message exchange (via WebRTC DataChannels, SCTP over plain UDP, and direct termination in Node.js/Rust).
|
|
57
|
+
- Extremely powerful (media worker thread/subprocess coded in C++ on top of [libuv](https://libuv.org)).
|
|
65
58
|
|
|
66
59
|
## Demo Online
|
|
67
60
|
|
|
@@ -69,31 +62,24 @@ mediasoup and its client side libraries provide a super low level API. They are
|
|
|
69
62
|
|
|
70
63
|
Try it at [v3demo.mediasoup.org](https://v3demo.mediasoup.org) ([source code](https://github.com/versatica/mediasoup-demo)).
|
|
71
64
|
|
|
72
|
-
|
|
73
65
|
## Authors
|
|
74
66
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
- Iñaki Baz Castillo [[website](https://inakibaz.me)|[github](https://github.com/ibc/)]
|
|
68
|
+
- José Luis Millán [[github](https://github.com/jmillan/)]
|
|
69
|
+
- Nazar Mokynskyi [[github](https://github.com/nazar-pc/)]
|
|
79
70
|
|
|
80
71
|
## Social
|
|
81
72
|
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
- Twitter: [@mediasoup_sfu](https://twitter.com/mediasoup_sfu)
|
|
84
74
|
|
|
85
75
|
## Sponsor
|
|
86
76
|
|
|
87
77
|
You can support mediasoup by [sponsoring][sponsor] it. Thanks!
|
|
88
78
|
|
|
89
|
-
|
|
90
79
|
## License
|
|
91
80
|
|
|
92
81
|
[ISC](./LICENSE)
|
|
93
82
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
83
|
[mediasoup-banner]: /art/mediasoup-banner.png
|
|
98
84
|
[mediasoup-website]: https://mediasoup.org
|
|
99
85
|
[mediasoup-discourse]: https://mediasoup.discourse.group
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveSpeakerObserver.d.ts","sourceRoot":"","sources":["../src/ActiveSpeakerObserver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,4BAA4B,
|
|
1
|
+
{"version":3,"file":"ActiveSpeakerObserver.d.ts","sourceRoot":"","sources":["../src/ActiveSpeakerObserver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,4BAA4B,CACvC,4BAA4B,SAAS,OAAO,GAAG,OAAO,IACnD;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IAClD;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GAAG;IAC7D,eAAe,EAAE,CAAC,oCAAoC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,yBAAyB,GAAG;IAC7E,eAAe,EAAE,CAAC,oCAAoC,CAAC,CAAC;CACxD,CAAC;AAEF,KAAK,qCAAqC,CAAC,4BAA4B,IACtE,6BAA6B,CAAC,4BAA4B,CAAC,CAAC;AAI7D,qBAAa,qBAAqB,CACjC,4BAA4B,SAAS,OAAO,GAAG,OAAO,CACrD,SAAQ,WAAW,CACpB,4BAA4B,EAC5B,2BAA2B,CAC3B;IACA;;OAEG;gBAEF,OAAO,EAAE,qCAAqC,CAAC,4BAA4B,CAAC;IAO7E;;OAEG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAAC,mCAAmC,CAAC,CAExE;IAED,OAAO,CAAC,yBAAyB;CAkCjC"}
|
|
@@ -23,25 +23,23 @@ class ActiveSpeakerObserver extends RtpObserver_1.RtpObserver {
|
|
|
23
23
|
handleWorkerNotifications() {
|
|
24
24
|
this.channel.on(this.internal.rtpObserverId, (event, data) => {
|
|
25
25
|
switch (event) {
|
|
26
|
-
case notification_1.Event.ACTIVESPEAKEROBSERVER_DOMINANT_SPEAKER:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (!producer) {
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
const dominantSpeaker = {
|
|
35
|
-
producer
|
|
36
|
-
};
|
|
37
|
-
this.safeEmit('dominantspeaker', dominantSpeaker);
|
|
38
|
-
this.observer.safeEmit('dominantspeaker', dominantSpeaker);
|
|
26
|
+
case notification_1.Event.ACTIVESPEAKEROBSERVER_DOMINANT_SPEAKER: {
|
|
27
|
+
const notification = new FbsActiveSpeakerObserver.DominantSpeakerNotification();
|
|
28
|
+
data.body(notification);
|
|
29
|
+
const producer = this.getProducerById(notification.producerId());
|
|
30
|
+
if (!producer) {
|
|
39
31
|
break;
|
|
40
32
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
const dominantSpeaker = {
|
|
34
|
+
producer,
|
|
35
|
+
};
|
|
36
|
+
this.safeEmit('dominantspeaker', dominantSpeaker);
|
|
37
|
+
this.observer.safeEmit('dominantspeaker', dominantSpeaker);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
default: {
|
|
41
|
+
logger.error('ignoring unknown event "%s"', event);
|
|
42
|
+
}
|
|
45
43
|
}
|
|
46
44
|
});
|
|
47
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioLevelObserver.d.ts","sourceRoot":"","sources":["../src/AudioLevelObserver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,MAAM,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"AudioLevelObserver.d.ts","sourceRoot":"","sources":["../src/AudioLevelObserver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,MAAM,MAAM,yBAAyB,CACpC,yBAAyB,SAAS,OAAO,GAAG,OAAO,IAChD;IACH;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IAC1D,OAAO,EAAE,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,yBAAyB,GAAG;IAC1E,OAAO,EAAE,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,KAAK,oCAAoC,CAAC,yBAAyB,IAClE,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;AAI1D,qBAAa,kBAAkB,CAC9B,yBAAyB,SAAS,OAAO,GAAG,OAAO,CAClD,SAAQ,WAAW,CAAC,yBAAyB,EAAE,wBAAwB,CAAC;IACzE;;OAEG;gBAEF,OAAO,EAAE,oCAAoC,CAAC,yBAAyB,CAAC;IAOzE;;OAEG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAAC,gCAAgC,CAAC,CAErE;IAED,OAAO,CAAC,yBAAyB;CAuDjC"}
|
|
@@ -24,36 +24,34 @@ class AudioLevelObserver extends RtpObserver_1.RtpObserver {
|
|
|
24
24
|
handleWorkerNotifications() {
|
|
25
25
|
this.channel.on(this.internal.rtpObserverId, (event, data) => {
|
|
26
26
|
switch (event) {
|
|
27
|
-
case notification_1.Event.AUDIOLEVELOBSERVER_VOLUMES:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Emit observer event.
|
|
42
|
-
this.observer.safeEmit('volumes', volumes);
|
|
43
|
-
}
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
case notification_1.Event.AUDIOLEVELOBSERVER_SILENCE:
|
|
47
|
-
{
|
|
48
|
-
this.safeEmit('silence');
|
|
27
|
+
case notification_1.Event.AUDIOLEVELOBSERVER_VOLUMES: {
|
|
28
|
+
const notification = new FbsAudioLevelObserver.VolumesNotification();
|
|
29
|
+
data.body(notification);
|
|
30
|
+
// Get the corresponding Producer instance and remove entries with
|
|
31
|
+
// no Producer (it may have been closed in the meanwhile).
|
|
32
|
+
const volumes = utils
|
|
33
|
+
.parseVector(notification, 'volumes', parseVolume)
|
|
34
|
+
.map(({ producerId, volume, }) => ({
|
|
35
|
+
producer: this.getProducerById(producerId),
|
|
36
|
+
volume,
|
|
37
|
+
}))
|
|
38
|
+
.filter(({ producer }) => producer);
|
|
39
|
+
if (volumes.length > 0) {
|
|
40
|
+
this.safeEmit('volumes', volumes);
|
|
49
41
|
// Emit observer event.
|
|
50
|
-
this.observer.safeEmit('
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
default:
|
|
54
|
-
{
|
|
55
|
-
logger.error('ignoring unknown event "%s"', event);
|
|
42
|
+
this.observer.safeEmit('volumes', volumes);
|
|
56
43
|
}
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case notification_1.Event.AUDIOLEVELOBSERVER_SILENCE: {
|
|
47
|
+
this.safeEmit('silence');
|
|
48
|
+
// Emit observer event.
|
|
49
|
+
this.observer.safeEmit('silence');
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
default: {
|
|
53
|
+
logger.error('ignoring unknown event "%s"', event);
|
|
54
|
+
}
|
|
57
55
|
}
|
|
58
56
|
});
|
|
59
57
|
}
|
|
@@ -62,6 +60,6 @@ exports.AudioLevelObserver = AudioLevelObserver;
|
|
|
62
60
|
function parseVolume(binary) {
|
|
63
61
|
return {
|
|
64
62
|
producerId: binary.producerId(),
|
|
65
|
-
volume: binary.volume()
|
|
63
|
+
volume: binary.volume(),
|
|
66
64
|
};
|
|
67
65
|
}
|
package/node/lib/Channel.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare class Channel extends EnhancedEventEmitter {
|
|
|
8
8
|
/**
|
|
9
9
|
* @private
|
|
10
10
|
*/
|
|
11
|
-
constructor({ producerSocket, consumerSocket, pid }: {
|
|
11
|
+
constructor({ producerSocket, consumerSocket, pid, }: {
|
|
12
12
|
producerSocket: any;
|
|
13
13
|
consumerSocket: any;
|
|
14
14
|
pid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,EAAW,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,
|
|
1
|
+
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../src/Channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,EAAW,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAEN,IAAI,IAAI,gBAAgB,EACxB,KAAK,EACL,MAAM,oBAAoB,CAAC;AAmB5B,qBAAa,OAAQ,SAAQ,oBAAoB;;IAsBhD;;OAEG;gBACS,EACX,cAAc,EACd,cAAc,EACd,GAAG,GACH,EAAE;QACF,cAAc,EAAE,GAAG,CAAC;QACpB,cAAc,EAAE,GAAG,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACZ;IAmID;;OAEG;IACH,IAAI,aAAa,IAAI,WAAW,CAAC,OAAO,CAEvC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAiCb;;OAEG;IACH,MAAM,CACL,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI;IA6DD,OAAO,CACZ,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,WAAW,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;IA4FpB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;CAkClB"}
|
package/node/lib/Channel.js
CHANGED
|
@@ -34,7 +34,7 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
34
34
|
/**
|
|
35
35
|
* @private
|
|
36
36
|
*/
|
|
37
|
-
constructor({ producerSocket, consumerSocket, pid }) {
|
|
37
|
+
constructor({ producerSocket, consumerSocket, pid, }) {
|
|
38
38
|
super();
|
|
39
39
|
logger.debug('constructor()');
|
|
40
40
|
this.#producerSocket = producerSocket;
|
|
@@ -54,8 +54,8 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
let msgStart = 0;
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
// eslint-disable-next-line no-constant-condition
|
|
58
|
+
while (true) {
|
|
59
59
|
const readLen = this.#recvBuffer.length - msgStart;
|
|
60
60
|
if (readLen < 4) {
|
|
61
61
|
// Incomplete data.
|
|
@@ -73,32 +73,28 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
73
73
|
const message = message_1.Message.getRootAsMessage(buf);
|
|
74
74
|
try {
|
|
75
75
|
switch (message.dataType()) {
|
|
76
|
-
case message_1.Body.Response:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
{
|
|
99
|
-
// eslint-disable-next-line no-console
|
|
100
|
-
console.warn(`worker[pid:${pid}] unexpected data: ${payload.toString('utf8', 1)}`);
|
|
101
|
-
}
|
|
76
|
+
case message_1.Body.Response: {
|
|
77
|
+
const response = new response_1.Response();
|
|
78
|
+
message.data(response);
|
|
79
|
+
this.processResponse(response);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case message_1.Body.Notification: {
|
|
83
|
+
const notification = new notification_1.Notification();
|
|
84
|
+
message.data(notification);
|
|
85
|
+
this.processNotification(notification);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case message_1.Body.Log: {
|
|
89
|
+
const log = new log_1.Log();
|
|
90
|
+
message.data(log);
|
|
91
|
+
this.processLog(pid, log);
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
default: {
|
|
95
|
+
// eslint-disable-next-line no-console
|
|
96
|
+
console.warn(`worker[pid:${pid}] unexpected data: ${payload.toString('utf8', 1)}`);
|
|
97
|
+
}
|
|
102
98
|
}
|
|
103
99
|
}
|
|
104
100
|
catch (error) {
|
|
@@ -109,10 +105,10 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
109
105
|
this.#recvBuffer = this.#recvBuffer.slice(msgStart);
|
|
110
106
|
}
|
|
111
107
|
});
|
|
112
|
-
this.#consumerSocket.on('end', () =>
|
|
113
|
-
this.#consumerSocket.on('error',
|
|
114
|
-
this.#producerSocket.on('end', () =>
|
|
115
|
-
this.#producerSocket.on('error',
|
|
108
|
+
this.#consumerSocket.on('end', () => logger.debug('Consumer Channel ended by the worker process'));
|
|
109
|
+
this.#consumerSocket.on('error', error => logger.error(`Consumer Channel error: ${error}`));
|
|
110
|
+
this.#producerSocket.on('end', () => logger.debug('Producer Channel ended by the worker process'));
|
|
111
|
+
this.#producerSocket.on('error', error => logger.error(`Producer Channel error: ${error}`));
|
|
116
112
|
}
|
|
117
113
|
/**
|
|
118
114
|
* flatbuffer builder.
|
|
@@ -141,17 +137,15 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
141
137
|
this.#producerSocket.removeAllListeners('end');
|
|
142
138
|
this.#producerSocket.removeAllListeners('error');
|
|
143
139
|
this.#producerSocket.on('error', () => { });
|
|
144
|
-
// Destroy the
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
catch (error) { }
|
|
154
|
-
}, 200);
|
|
140
|
+
// Destroy the sockets.
|
|
141
|
+
try {
|
|
142
|
+
this.#producerSocket.destroy();
|
|
143
|
+
}
|
|
144
|
+
catch (error) { }
|
|
145
|
+
try {
|
|
146
|
+
this.#consumerSocket.destroy();
|
|
147
|
+
}
|
|
148
|
+
catch (error) { }
|
|
155
149
|
}
|
|
156
150
|
/**
|
|
157
151
|
* @private
|
|
@@ -221,13 +215,13 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
221
215
|
const sent = {
|
|
222
216
|
id: id,
|
|
223
217
|
method: request_1.Method[method],
|
|
224
|
-
resolve:
|
|
218
|
+
resolve: data2 => {
|
|
225
219
|
if (!this.#sents.delete(id)) {
|
|
226
220
|
return;
|
|
227
221
|
}
|
|
228
222
|
pResolve(data2);
|
|
229
223
|
},
|
|
230
|
-
reject:
|
|
224
|
+
reject: error => {
|
|
231
225
|
if (!this.#sents.delete(id)) {
|
|
232
226
|
return;
|
|
233
227
|
}
|
|
@@ -235,7 +229,7 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
235
229
|
},
|
|
236
230
|
close: () => {
|
|
237
231
|
pReject(new errors_1.InvalidStateError(`Channel closed, pending request aborted [method:${request_1.Method[method]}, id:${id}]`));
|
|
238
|
-
}
|
|
232
|
+
},
|
|
239
233
|
};
|
|
240
234
|
// Add sent stuff to the map.
|
|
241
235
|
this.#sents.set(id, sent);
|
|
@@ -254,15 +248,13 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
254
248
|
else if (response.error()) {
|
|
255
249
|
logger.warn(`request failed [method:${sent.method}, id:${sent.id}]: ${response.reason()}`);
|
|
256
250
|
switch (response.error()) {
|
|
257
|
-
case 'TypeError':
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
sent.reject(new Error(response.reason()));
|
|
265
|
-
}
|
|
251
|
+
case 'TypeError': {
|
|
252
|
+
sent.reject(new TypeError(response.reason()));
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
default: {
|
|
256
|
+
sent.reject(new Error(response.reason()));
|
|
257
|
+
}
|
|
266
258
|
}
|
|
267
259
|
}
|
|
268
260
|
else {
|
|
@@ -282,30 +274,26 @@ class Channel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
282
274
|
const logData = log.data();
|
|
283
275
|
switch (logData[0]) {
|
|
284
276
|
// 'D' (a debug log).
|
|
285
|
-
case 'D':
|
|
286
|
-
{
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
277
|
+
case 'D': {
|
|
278
|
+
logger.debug(`[pid:${pid}] ${logData.slice(1)}`);
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
290
281
|
// 'W' (a warn log).
|
|
291
|
-
case 'W':
|
|
292
|
-
{
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
282
|
+
case 'W': {
|
|
283
|
+
logger.warn(`[pid:${pid}] ${logData.slice(1)}`);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
296
286
|
// 'E' (a error log).
|
|
297
|
-
case 'E':
|
|
298
|
-
{
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
}
|
|
287
|
+
case 'E': {
|
|
288
|
+
logger.error(`[pid:${pid}] ${logData.slice(1)}`);
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
302
291
|
// 'X' (a dump log).
|
|
303
|
-
case 'X':
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
292
|
+
case 'X': {
|
|
293
|
+
// eslint-disable-next-line no-console
|
|
294
|
+
console.log(logData.slice(1));
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
309
297
|
}
|
|
310
298
|
}
|
|
311
299
|
}
|
package/node/lib/Consumer.d.ts
CHANGED
|
@@ -221,7 +221,7 @@ export declare class Consumer<ConsumerAppData extends AppData = AppData> extends
|
|
|
221
221
|
/**
|
|
222
222
|
* @private
|
|
223
223
|
*/
|
|
224
|
-
constructor({ internal, data, channel, appData, paused, producerPaused, score, preferredLayers }: {
|
|
224
|
+
constructor({ internal, data, channel, appData, paused, producerPaused, score, preferredLayers, }: {
|
|
225
225
|
internal: ConsumerInternal;
|
|
226
226
|
data: ConsumerData;
|
|
227
227
|
channel: Channel;
|
|
@@ -325,7 +325,7 @@ export declare class Consumer<ConsumerAppData extends AppData = AppData> extends
|
|
|
325
325
|
/**
|
|
326
326
|
* Set preferred video layers.
|
|
327
327
|
*/
|
|
328
|
-
setPreferredLayers({ spatialLayer, temporalLayer }: ConsumerLayers): Promise<void>;
|
|
328
|
+
setPreferredLayers({ spatialLayer, temporalLayer, }: ConsumerLayers): Promise<void>;
|
|
329
329
|
/**
|
|
330
330
|
* Set priority.
|
|
331
331
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Consumer.d.ts","sourceRoot":"","sources":["../src/Consumer.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACN,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAuB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMlC,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAO9C,MAAM,MAAM,eAAe,CAAC,eAAe,SAAS,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"Consumer.d.ts","sourceRoot":"","sources":["../src/Consumer.ts"],"names":[],"mappings":"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"}
|