mediasoup 3.9.2 → 3.9.3
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/Channel.js +1 -1
- package/node/lib/PayloadChannel.js +1 -1
- package/node/lib/Worker.js +1 -1
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.js +1 -1
- package/node/lib/ortc.js +4 -6
- package/node/lib/supportedRtpCapabilities.d.ts.map +1 -1
- package/node/lib/supportedRtpCapabilities.js +0 -34
- package/npm-scripts.js +6 -2
- package/package.json +12 -12
- package/worker/Makefile +30 -14
- package/worker/include/Channel/ChannelNotifier.hpp +1 -0
- package/worker/include/Channel/ChannelSocket.hpp +16 -5
- package/worker/include/Logger.hpp +1 -1
- package/worker/include/PayloadChannel/PayloadChannelSocket.hpp +17 -4
- package/worker/include/RTC/RTCP/CompoundPacket.hpp +4 -3
- package/worker/include/RTC/RTCP/FeedbackPsTst.hpp +11 -1
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +3 -2
- package/worker/include/common.hpp +39 -0
- package/worker/include/lib.hpp +12 -2
- package/worker/scripts/package-lock.json +9913 -0
- package/worker/src/Channel/ChannelNotifier.cpp +14 -0
- package/worker/src/Channel/ChannelSocket.cpp +141 -14
- package/worker/src/DepOpenSSL.cpp +8 -5
- package/worker/src/Logger.cpp +1 -1
- package/worker/src/PayloadChannel/PayloadChannelSocket.cpp +226 -17
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +1 -1
- package/worker/src/RTC/DataConsumer.cpp +9 -6
- package/worker/src/RTC/Transport.cpp +48 -36
- package/worker/src/Worker.cpp +1 -1
- package/worker/src/lib.cpp +29 -5
- package/worker/src/lib.rs +80 -2
- package/worker/src/main.cpp +10 -2
|
@@ -2598,23 +2598,27 @@ namespace RTC
|
|
|
2598
2598
|
sentInfo.size = packet->GetSize();
|
|
2599
2599
|
sentInfo.sendingAtMs = DepLibUV::GetTimeMs();
|
|
2600
2600
|
|
|
2601
|
-
auto* cb = new onSendCallback(
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2601
|
+
auto* cb = new onSendCallback(
|
|
2602
|
+
[tccClient, &packetInfo, senderBwe, &sentInfo](bool sent)
|
|
2603
|
+
{
|
|
2604
|
+
if (sent)
|
|
2605
|
+
{
|
|
2606
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
2605
2607
|
|
|
2606
|
-
|
|
2608
|
+
sentInfo.sentAtMs = DepLibUV::GetTimeMs();
|
|
2607
2609
|
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2610
|
+
senderBwe->RtpPacketSent(sentInfo);
|
|
2611
|
+
}
|
|
2612
|
+
});
|
|
2611
2613
|
|
|
2612
2614
|
SendRtpPacket(consumer, packet, cb);
|
|
2613
2615
|
#else
|
|
2614
|
-
const auto* cb = new onSendCallback(
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2616
|
+
const auto* cb = new onSendCallback(
|
|
2617
|
+
[tccClient, &packetInfo](bool sent)
|
|
2618
|
+
{
|
|
2619
|
+
if (sent)
|
|
2620
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
2621
|
+
});
|
|
2618
2622
|
|
|
2619
2623
|
SendRtpPacket(consumer, packet, cb);
|
|
2620
2624
|
#endif
|
|
@@ -2666,23 +2670,27 @@ namespace RTC
|
|
|
2666
2670
|
sentInfo.size = packet->GetSize();
|
|
2667
2671
|
sentInfo.sendingAtMs = DepLibUV::GetTimeMs();
|
|
2668
2672
|
|
|
2669
|
-
auto* cb = new onSendCallback(
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
+
auto* cb = new onSendCallback(
|
|
2674
|
+
[tccClient, &packetInfo, senderBwe, &sentInfo](bool sent)
|
|
2675
|
+
{
|
|
2676
|
+
if (sent)
|
|
2677
|
+
{
|
|
2678
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
2673
2679
|
|
|
2674
|
-
|
|
2680
|
+
sentInfo.sentAtMs = DepLibUV::GetTimeMs();
|
|
2675
2681
|
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2682
|
+
senderBwe->RtpPacketSent(sentInfo);
|
|
2683
|
+
}
|
|
2684
|
+
});
|
|
2679
2685
|
|
|
2680
2686
|
SendRtpPacket(consumer, packet, cb);
|
|
2681
2687
|
#else
|
|
2682
|
-
const auto* cb = new onSendCallback(
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2688
|
+
const auto* cb = new onSendCallback(
|
|
2689
|
+
[tccClient, &packetInfo](bool sent)
|
|
2690
|
+
{
|
|
2691
|
+
if (sent)
|
|
2692
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
2693
|
+
});
|
|
2686
2694
|
|
|
2687
2695
|
SendRtpPacket(consumer, packet, cb);
|
|
2688
2696
|
#endif
|
|
@@ -3001,23 +3009,27 @@ namespace RTC
|
|
|
3001
3009
|
sentInfo.isProbation = true;
|
|
3002
3010
|
sentInfo.sendingAtMs = DepLibUV::GetTimeMs();
|
|
3003
3011
|
|
|
3004
|
-
auto* cb = new onSendCallback(
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3012
|
+
auto* cb = new onSendCallback(
|
|
3013
|
+
[tccClient, &packetInfo, senderBwe, &sentInfo](bool sent)
|
|
3014
|
+
{
|
|
3015
|
+
if (sent)
|
|
3016
|
+
{
|
|
3017
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
3008
3018
|
|
|
3009
|
-
|
|
3019
|
+
sentInfo.sentAtMs = DepLibUV::GetTimeMs();
|
|
3010
3020
|
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3021
|
+
senderBwe->RtpPacketSent(sentInfo);
|
|
3022
|
+
}
|
|
3023
|
+
});
|
|
3014
3024
|
|
|
3015
3025
|
SendRtpPacket(nullptr, packet, cb);
|
|
3016
3026
|
#else
|
|
3017
|
-
const auto* cb = new onSendCallback(
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3027
|
+
const auto* cb = new onSendCallback(
|
|
3028
|
+
[tccClient, &packetInfo](bool sent)
|
|
3029
|
+
{
|
|
3030
|
+
if (sent)
|
|
3031
|
+
tccClient->PacketSent(packetInfo, DepLibUV::GetTimeMsInt64());
|
|
3032
|
+
});
|
|
3021
3033
|
|
|
3022
3034
|
SendRtpPacket(nullptr, packet, cb);
|
|
3023
3035
|
#endif
|
package/worker/src/Worker.cpp
CHANGED
|
@@ -37,7 +37,7 @@ Worker::Worker(::Channel::ChannelSocket* channel, PayloadChannel::PayloadChannel
|
|
|
37
37
|
DepUsrSCTP::CreateChecker();
|
|
38
38
|
|
|
39
39
|
// Tell the Node process that we are running.
|
|
40
|
-
Channel::ChannelNotifier::Emit(
|
|
40
|
+
Channel::ChannelNotifier::Emit(Logger::pid, "running");
|
|
41
41
|
|
|
42
42
|
MS_DEBUG_DEV("starting libuv loop");
|
|
43
43
|
DepLibUV::RunLoop();
|
package/worker/src/lib.cpp
CHANGED
|
@@ -28,14 +28,22 @@
|
|
|
28
28
|
|
|
29
29
|
void IgnoreSignals();
|
|
30
30
|
|
|
31
|
-
extern "C" int
|
|
31
|
+
extern "C" int mediasoup_worker_run(
|
|
32
32
|
int argc,
|
|
33
33
|
char* argv[],
|
|
34
34
|
const char* version,
|
|
35
35
|
int consumerChannelFd,
|
|
36
36
|
int producerChannelFd,
|
|
37
37
|
int payloadConsumeChannelFd,
|
|
38
|
-
int payloadProduceChannelFd
|
|
38
|
+
int payloadProduceChannelFd,
|
|
39
|
+
ChannelReadFn channelReadFn,
|
|
40
|
+
ChannelReadCtx channelReadCtx,
|
|
41
|
+
ChannelWriteFn channelWriteFn,
|
|
42
|
+
ChannelWriteCtx channelWriteCtx,
|
|
43
|
+
PayloadChannelReadFn payloadChannelReadFn,
|
|
44
|
+
PayloadChannelReadCtx payloadChannelReadCtx,
|
|
45
|
+
PayloadChannelWriteFn payloadChannelWriteFn,
|
|
46
|
+
PayloadChannelWriteCtx payloadChannelWriteCtx)
|
|
39
47
|
{
|
|
40
48
|
// Initialize libuv stuff (we need it for the Channel).
|
|
41
49
|
DepLibUV::ClassInit();
|
|
@@ -52,7 +60,15 @@ extern "C" int run_worker(
|
|
|
52
60
|
|
|
53
61
|
try
|
|
54
62
|
{
|
|
55
|
-
|
|
63
|
+
if (channelReadFn)
|
|
64
|
+
{
|
|
65
|
+
channel.reset(
|
|
66
|
+
new Channel::ChannelSocket(channelReadFn, channelReadCtx, channelWriteFn, channelWriteCtx));
|
|
67
|
+
}
|
|
68
|
+
else
|
|
69
|
+
{
|
|
70
|
+
channel.reset(new Channel::ChannelSocket(consumerChannelFd, producerChannelFd));
|
|
71
|
+
}
|
|
56
72
|
}
|
|
57
73
|
catch (const MediaSoupError& error)
|
|
58
74
|
{
|
|
@@ -66,8 +82,16 @@ extern "C" int run_worker(
|
|
|
66
82
|
|
|
67
83
|
try
|
|
68
84
|
{
|
|
69
|
-
|
|
70
|
-
|
|
85
|
+
if (payloadChannelReadFn)
|
|
86
|
+
{
|
|
87
|
+
payloadChannel.reset(new PayloadChannel::PayloadChannelSocket(
|
|
88
|
+
payloadChannelReadFn, payloadChannelReadCtx, payloadChannelWriteFn, payloadChannelWriteCtx));
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
{
|
|
92
|
+
payloadChannel.reset(
|
|
93
|
+
new PayloadChannel::PayloadChannelSocket(payloadConsumeChannelFd, payloadProduceChannelFd));
|
|
94
|
+
}
|
|
71
95
|
}
|
|
72
96
|
catch (const MediaSoupError& error)
|
|
73
97
|
{
|
package/worker/src/lib.rs
CHANGED
|
@@ -1,8 +1,78 @@
|
|
|
1
|
-
use std::os::raw::{c_char, c_int};
|
|
1
|
+
use std::os::raw::{c_char, c_int, c_void};
|
|
2
|
+
|
|
3
|
+
#[repr(transparent)]
|
|
4
|
+
#[derive(Copy, Clone)]
|
|
5
|
+
pub struct UvAsyncT(pub *const c_void);
|
|
6
|
+
|
|
7
|
+
unsafe impl Send for UvAsyncT {}
|
|
8
|
+
|
|
9
|
+
#[repr(transparent)]
|
|
10
|
+
pub struct ChannelReadCtx(pub *const c_void);
|
|
11
|
+
pub type ChannelReadFreeFn = Option<
|
|
12
|
+
unsafe extern "C" fn(
|
|
13
|
+
/* message: */ *mut u8,
|
|
14
|
+
/* message_len: */ u32,
|
|
15
|
+
/* message_ctx: */ usize,
|
|
16
|
+
),
|
|
17
|
+
>;
|
|
18
|
+
pub type ChannelReadFn = unsafe extern "C" fn(
|
|
19
|
+
/* message: */ *mut *mut u8,
|
|
20
|
+
/* message_len: */ *mut u32,
|
|
21
|
+
/* message_ctx: */ *mut usize,
|
|
22
|
+
// This is `uv_async_t` handle that can be called later with `uv_async_send()` when there is
|
|
23
|
+
// more data to read
|
|
24
|
+
/* handle */
|
|
25
|
+
UvAsyncT,
|
|
26
|
+
/* ctx: */ ChannelReadCtx,
|
|
27
|
+
) -> ChannelReadFreeFn;
|
|
28
|
+
|
|
29
|
+
#[repr(transparent)]
|
|
30
|
+
pub struct ChannelWriteCtx(pub *const c_void);
|
|
31
|
+
pub type ChannelWriteFn = unsafe extern "C" fn(
|
|
32
|
+
/* message: */ *const u8,
|
|
33
|
+
/* message_len: */ u32,
|
|
34
|
+
/* ctx: */ ChannelWriteCtx,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
#[repr(transparent)]
|
|
38
|
+
pub struct PayloadChannelReadCtx(pub *const c_void);
|
|
39
|
+
pub type PayloadChannelReadFreeFn = Option<
|
|
40
|
+
unsafe extern "C" fn(
|
|
41
|
+
/* message: */ *mut u8,
|
|
42
|
+
/* message_len: */ u32,
|
|
43
|
+
/* message_ctx: */ usize,
|
|
44
|
+
),
|
|
45
|
+
>;
|
|
46
|
+
pub type PayloadChannelReadFn = unsafe extern "C" fn(
|
|
47
|
+
/* message: */ *mut *mut u8,
|
|
48
|
+
/* message_len: */ *mut u32,
|
|
49
|
+
/* message_ctx: */ *mut usize,
|
|
50
|
+
/* payload: */ *mut *mut u8,
|
|
51
|
+
/* payload_len: */ *mut u32,
|
|
52
|
+
/* payload_capacity: */ *mut usize,
|
|
53
|
+
// This is `uv_async_t` handle that can be called later with `uv_async_send()` when there is
|
|
54
|
+
// more data to read
|
|
55
|
+
/* handle */
|
|
56
|
+
UvAsyncT,
|
|
57
|
+
/* ctx: */ PayloadChannelReadCtx,
|
|
58
|
+
) -> PayloadChannelReadFreeFn;
|
|
59
|
+
|
|
60
|
+
#[repr(transparent)]
|
|
61
|
+
pub struct PayloadChannelWriteCtx(pub *const c_void);
|
|
62
|
+
pub type PayloadChannelWriteFn = unsafe extern "C" fn(
|
|
63
|
+
/* message: */ *const u8,
|
|
64
|
+
/* message_len: */ u32,
|
|
65
|
+
/* payload: */ *const u8,
|
|
66
|
+
/* payload_len: */ u32,
|
|
67
|
+
/* ctx: */ PayloadChannelWriteCtx,
|
|
68
|
+
);
|
|
2
69
|
|
|
3
70
|
#[link(name = "mediasoup-worker", kind = "static")]
|
|
4
71
|
extern "C" {
|
|
5
|
-
|
|
72
|
+
/// Returns `0` on success, or an error code `< 0` on failure
|
|
73
|
+
pub fn uv_async_send(handle: UvAsyncT) -> c_int;
|
|
74
|
+
|
|
75
|
+
pub fn mediasoup_worker_run(
|
|
6
76
|
argc: c_int,
|
|
7
77
|
argv: *const *const c_char,
|
|
8
78
|
version: *const c_char,
|
|
@@ -10,5 +80,13 @@ extern "C" {
|
|
|
10
80
|
producer_channel_fd: c_int,
|
|
11
81
|
payload_consumer_channel_fd: c_int,
|
|
12
82
|
payload_producer_channel_fd: c_int,
|
|
83
|
+
channel_read_fn: ChannelReadFn,
|
|
84
|
+
channel_read_ctx: ChannelReadCtx,
|
|
85
|
+
channel_write_fn: ChannelWriteFn,
|
|
86
|
+
channel_write_ctx: ChannelWriteCtx,
|
|
87
|
+
payload_channel_read_fn: PayloadChannelReadFn,
|
|
88
|
+
payload_channel_read_ctx: PayloadChannelReadCtx,
|
|
89
|
+
payload_channel_write_fn: PayloadChannelWriteFn,
|
|
90
|
+
payload_channel_write_ctx: PayloadChannelWriteCtx,
|
|
13
91
|
) -> c_int;
|
|
14
92
|
}
|
package/worker/src/main.cpp
CHANGED
|
@@ -23,14 +23,22 @@ int main(int argc, char* argv[])
|
|
|
23
23
|
|
|
24
24
|
std::string version = std::getenv("MEDIASOUP_VERSION");
|
|
25
25
|
|
|
26
|
-
auto statusCode =
|
|
26
|
+
auto statusCode = mediasoup_worker_run(
|
|
27
27
|
argc,
|
|
28
28
|
argv,
|
|
29
29
|
version.c_str(),
|
|
30
30
|
ConsumerChannelFd,
|
|
31
31
|
ProducerChannelFd,
|
|
32
32
|
PayloadConsumerChannelFd,
|
|
33
|
-
PayloadProducerChannelFd
|
|
33
|
+
PayloadProducerChannelFd,
|
|
34
|
+
nullptr,
|
|
35
|
+
nullptr,
|
|
36
|
+
nullptr,
|
|
37
|
+
nullptr,
|
|
38
|
+
nullptr,
|
|
39
|
+
nullptr,
|
|
40
|
+
nullptr,
|
|
41
|
+
nullptr);
|
|
34
42
|
|
|
35
43
|
switch (statusCode)
|
|
36
44
|
{
|