Last active
October 7, 2021 16:15
-
-
Save sax/3ff89074947d078eac51c7f10d0b239f to your computer and use it in GitHub Desktop.
membrane re-linking crash
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[error] GenServer #PID<0.1474.0> terminating | |
** (Membrane.LinkError) Pad {Membrane.Pad, :input, "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "} has already been linked | |
(membrane_core 0.7.0) lib/membrane/core/child/pad_controller.ex:165: Membrane.Core.Child.PadController.validate_pad_being_linked!/4 | |
(membrane_core 0.7.0) lib/membrane/core/child/pad_controller.ex:48: Membrane.Core.Child.PadController.handle_link/5 | |
(membrane_core 0.7.0) lib/membrane/core/bin.ex:173: Membrane.Core.Bin.handle_call/3 | |
(stdlib 3.16) gen_server.erl:721: :gen_server.try_handle_call/4 | |
(stdlib 3.16) gen_server.erl:750: :gen_server.handle_msg/6 | |
(stdlib 3.16) proc_lib.erl:226: :proc_lib.init_p_do_apply/3 | |
Last message (from #PID<0.1587.0>): {Membrane.Core.Message, :handle_link, [:input, %Membrane.Core.Parent.Link.Endpoint{child: {:endpoint, "0c920133-55a6-45a3-9087-9ef9307d906a"}, pad_props: [options: [encoding: :OPUS]], pad_ref: {Membrane.Pad, :input, "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "}, pad_spec: {Membrane.Pad, :input, "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "}, pid: #PID<0.1474.0>}, %Membrane.Core.Parent.Link.Endpoint{child: {:tee, {"80942349-2d9d-48f2-b20e-f5d1aabbb057", "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "}}, pad_props: [], pad_ref: {Membrane.Pad, :copy, #Reference<0.2858565386.3600023554.36716>}, pad_spec: :copy, pid: #PID<0.1587.0>}, %{accepted_caps: :any, availability: :on_request, direction: :output, mode: :push, name: :copy, options: nil}], []} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defp pause_peer(tracks, peer_id, ctx) do | |
endpoint = ctx.children[{:endpoint, peer_id}] | |
endpoint_node = node(endpoint.pid) | |
Enum.reduce(tracks, [], fn | |
{track_id, _encoding}, link_removals -> | |
tee = find_child(ctx, pattern: {:tee, {_other_endpoint_id, ^track_id}}) | |
if is_nil(tee) do | |
link_removals | |
else | |
tee_child_entry = ctx.children[tee] | |
tee_node = node(tee_child_entry.pid) | |
track_source_id = {endpoint_node, track_id} | |
track_source = {:track_source, track_source_id} | |
if tee_node == endpoint_node do | |
# Unlink track from endpoint on the same node | |
link_removal = | |
unlink(:copy) | |
|> from(tee) | |
|> to({:endpoint, peer_id}) | |
|> via_in(Pad.ref(:input, track_id)) | |
link_removals ++ [link_removal] | |
else | |
# Unlink track to existing UDP receiver on endpoint's node | |
link_removal = | |
unlink(:output) | |
|> from(track_source) | |
|> to({:endpoint, peer_id}) | |
|> via_in(Pad.ref(:input, track_id)) | |
link_removals ++ [link_removal] | |
end | |
end | |
end) | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
raising: pad ref: {Membrane.Pad, :input, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "} | |
raising: state: %Membrane.Core.Bin.State{ | |
children: %{ | |
:ice => %Membrane.ChildEntry{ | |
clock: nil, | |
component_type: :bin, | |
module: Membrane.ICE.Bin, | |
name: :ice, | |
options: %Membrane.ICE.Bin{ | |
controlling_mode: true, | |
handshake_module: Membrane.DTLS.Handshake, | |
handshake_opts: [client_mode: false, dtls_srtp: true], | |
log_metadata: [peer_id: "0c920133-55a6-45a3-9087-9ef9307d906a"], | |
n_components: 1, | |
port_range: 0..0, | |
stream_name: "", | |
stun_servers: [%{server_addr: "stun.l.google.com", server_port: 19302}], | |
turn_servers: [] | |
}, | |
pid: #PID<0.1476.0>, | |
playback_synced?: true, | |
sync: :membrane_no_sync, | |
terminating?: false | |
}, | |
:ice_funnel => %Membrane.ChildEntry{ | |
clock: nil, | |
component_type: :element, | |
module: Membrane.Funnel, | |
name: :ice_funnel, | |
options: %Membrane.Funnel{end_of_stream: :on_last_pad}, | |
pid: #PID<0.1484.0>, | |
playback_synced?: true, | |
sync: :membrane_no_sync, | |
terminating?: false | |
}, | |
:rtp => %Membrane.ChildEntry{ | |
clock: nil, | |
component_type: :bin, | |
module: Membrane.RTP.SessionBin, | |
name: :rtp, | |
options: %Membrane.RTP.SessionBin{ | |
custom_depayloaders: %{}, | |
custom_payloaders: %{}, | |
fmt_mapping: %{}, | |
receiver_srtp_policies: nil, | |
receiver_ssrc_generator: &Membrane.RTP.SessionBin.generate_receiver_ssrc/2, | |
rtcp_report_interval: nil, | |
secure?: true, | |
srtp_policies: [] | |
}, | |
pid: #PID<0.1485.0>, | |
playback_synced?: true, | |
sync: :membrane_no_sync, | |
terminating?: false | |
}, | |
{:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "} => %Membrane.ChildEntry{ | |
clock: nil, | |
component_type: :element, | |
module: Membrane.WebRTC.TrackFilter, | |
name: {:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "}, | |
options: %Membrane.WebRTC.TrackFilter{enabled: true}, | |
pid: #PID<0.1510.0>, | |
playback_synced?: true, | |
sync: :membrane_no_sync, | |
terminating?: false | |
}, | |
{:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "} => %Membrane.ChildEntry{ | |
clock: nil, | |
component_type: :element, | |
module: Membrane.WebRTC.TrackFilter, | |
name: {:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "}, | |
options: %Membrane.WebRTC.TrackFilter{enabled: true}, | |
pid: #PID<0.1500.0>, | |
playback_synced?: true, | |
sync: :membrane_no_sync, | |
terminating?: false | |
} | |
}, | |
children_log_metadata: [ | |
parent_path: ["pipeline@<0.1450.0>"], | |
peer_id: "0c920133-55a6-45a3-9087-9ef9307d906a", | |
sfu: "horse" | |
], | |
controlling_pid: #PID<0.1450.0>, | |
crash_groups: %{}, | |
internal_state: %{ | |
audio_codecs: [], | |
candidate_gathering_state: :done, | |
candidates: ["a=candidate:45 1 TCP 843058175 136.25.139.210 63013 typ srflx raddr 172.16.0.200 rport 63013 tcptype passive", | |
"a=candidate:44 1 TCP 847252479 136.25.139.210 9 typ srflx raddr 172.16.0.200 rport 9 tcptype active", | |
"a=candidate:43 1 UDP 1679821823 136.25.139.210 53294 typ srflx raddr 172.16.0.200 rport 53294", | |
"a=candidate:42 1 TCP 843056127 136.25.139.210 63005 typ srflx raddr 172.16.0.219 rport 63005 tcptype passive", | |
"a=candidate:41 1 TCP 847250431 136.25.139.210 9 typ srflx raddr 172.16.0.219 rport 9 tcptype active", | |
"a=candidate:40 1 UDP 1679819775 136.25.139.210 52739 typ srflx raddr 172.16.0.219 rport 52739", | |
"a=candidate:39 1 TCP 1010830591 fdaf:837d:9166:1:c5e:8697:8db:11f0 63014 typ host tcptype passive", | |
"a=candidate:38 1 TCP 1015024895 fdaf:837d:9166:1:c5e:8697:8db:11f0 9 typ host tcptype active", | |
"a=candidate:37 1 UDP 2015366399 fdaf:837d:9166:1:c5e:8697:8db:11f0 63866 typ host", | |
"a=candidate:36 1 TCP 1010830335 172.16.0.200 63013 typ host tcptype passive", | |
"a=candidate:35 1 TCP 1015024639 172.16.0.200 9 typ host tcptype active", | |
"a=candidate:34 1 UDP 2015366143 172.16.0.200 53294 typ host", | |
"a=candidate:33 1 TCP 1010830079 fe80::bd:61c4:4e8a:3591 63012 typ host tcptype passive", | |
"a=candidate:32 1 TCP 1015024383 fe80::bd:61c4:4e8a:3591 9 typ host tcptype active", | |
"a=candidate:31 1 UDP 2015365887 fe80::bd:61c4:4e8a:3591 54380 typ host", | |
"a=candidate:30 1 TCP 1010829823 fe80::783a:9539:35ae:9506 63011 typ host tcptype passive", | |
"a=candidate:29 1 TCP 1015024127 fe80::783a:9539:35ae:9506 9 typ host tcptype active", | |
"a=candidate:28 1 UDP 2015365631 fe80::783a:9539:35ae:9506 63477 typ host", | |
"a=candidate:27 1 TCP 1010829567 fe80::a992:17ee:7625:a13a 63010 typ host tcptype passive", | |
"a=candidate:26 1 TCP 1015023871 fe80::a992:17ee:7625:a13a 9 typ host tcptype active", | |
"a=candidate:25 1 UDP 2015365375 fe80::a992:17ee:7625:a13a 55264 typ host", | |
"a=candidate:24 1 TCP 1010829311 fe80::137e:bdc0:6934:145f 63009 typ host tcptype passive", | |
"a=candidate:23 1 TCP 1015023615 fe80::137e:bdc0:6934:145f 9 typ host tcptype active", | |
"a=candidate:22 1 UDP 2015365119 fe80::137e:bdc0:6934:145f 60474 typ host", | |
"a=candidate:21 1 TCP 1010829055 fe80::27f4:74ea:db3e:3532 63008 typ host tcptype passive", | |
"a=candidate:20 1 TCP 1015023359 fe80::27f4:74ea:db3e:3532 9 typ host tcptype active", | |
"a=candidate:19 1 UDP 2015364863 fe80::27f4:74ea:db3e:3532 62012 typ host", | |
"a=candidate:18 1 TCP 1010828543 fe80::acf1:e7ff:fede:5862 63007 typ host tcptype passive", | |
"a=candidate:17 1 TCP 1015022847 fe80::acf1:e7ff:fede:5862 9 typ host tcptype active", | |
"a=candidate:16 1 UDP 2015364351 fe80::acf1:e7ff:fede:5862 55569 typ host", | |
"a=candidate:15 1 TCP 1010828543 fe80::acf1:e7ff:fede:5862 63006 typ host tcptype passive", | |
"a=candidate:14 1 TCP 1015022847 fe80::acf1:e7ff:fede:5862 9 typ host tcptype active", | |
"a=candidate:13 1 UDP 2015364351 fe80::acf1:e7ff:fede:5862 49430 typ host", | |
"a=candidate:12 1 TCP 1010828287 172.16.0.219 63005 typ host tcptype passive", | |
"a=candidate:11 1 TCP 1015022591 172.16.0.219 9 typ host tcptype active", | |
"a=candidate:10 1 UDP 2015364095 172.16.0.219 52739 typ host", | |
"a=candidate:9 1 TCP 1010828031 fdaf:837d:9166:1:14c9:37e7:f32:1c05 63004 typ host tcptype passive", | |
"a=candidate:8 1 TCP 1015022335 fdaf:837d:9166:1:14c9:37e7:f32:1c05 9 typ host tcptype active", | |
"a=candidate:7 1 UDP 2015363839 fdaf:837d:9166:1:14c9:37e7:f32:1c05 51773 typ host", | |
"a=candidate:6 1 TCP 1010827775 fe80::143b:5976:b048:cacf 63003 typ host tcptype passive", | |
"a=candidate:5 1 TCP 1015022079 fe80::143b:5976:b048:cacf 9 typ host tcptype active", | |
"a=candidate:4 1 UDP 2015363583 fe80::143b:5976:b048:cacf 56898 typ host", | |
...], | |
dtls_fingerprint: {:sha256, | |
"36:41:EC:C9:9A:09:45:CB:83:78:08:7B:4D:E2:94:15:4E:DB:96:3C:46:85:E0:F1:EA:41:A5:41:7F:7D:DB:7D"}, | |
filter_codecs: &Membrane.WebRTC.SDP.filter_mappings/1, | |
ice: %{ | |
pwd: "IajOWw6k9TyzsLttkqsjke", | |
restarting?: false, | |
ufrag: "wa+K", | |
waiting_restart?: false | |
}, | |
inbound_tracks: %{ | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 " => %Membrane.WebRTC.Track{ | |
encoding: :VP8, | |
fmtp: nil, | |
id: "0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 ", | |
mid: "1", | |
name: "0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 -video-101ae44a-60b5-4cca-b707-d4d24d7f7032", | |
rtp_mapping: %ExSDP.Attribute.RTPMapping{ | |
clock_rate: 90000, | |
encoding: "VP8", | |
params: nil, | |
payload_type: 96 | |
}, | |
ssrc: 1646399729, | |
status: :linked, | |
stream_id: "101ae44a-60b5-4cca-b707-d4d24d7f7032", | |
type: :video | |
}, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 " => %Membrane.WebRTC.Track{ | |
encoding: :OPUS, | |
fmtp: %ExSDP.Attribute.FMTP{ | |
apt: nil, | |
cbr: nil, | |
level_asymmetry_allowed: nil, | |
max_br: nil, | |
max_dpb: nil, | |
max_fr: nil, | |
max_fs: nil, | |
max_mbps: nil, | |
max_smbps: nil, | |
maxaveragebitrate: nil, | |
maxplaybackrate: nil, | |
minptime: 10, | |
packetization_mode: nil, | |
profile_id: nil, | |
profile_level_id: nil, | |
pt: 111, | |
range: nil, | |
repair_window: nil, | |
stereo: nil, | |
usedtx: nil, | |
useinbandfec: true | |
}, | |
id: "0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 ", | |
mid: "0", | |
name: "0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 -audio-101ae44a-60b5-4cca-b707-d4d24d7f7032", | |
rtp_mapping: %ExSDP.Attribute.RTPMapping{ | |
clock_rate: 48000, | |
encoding: "opus", | |
params: 2, | |
payload_type: 111 | |
}, | |
ssrc: 2672441444, | |
status: :linked, | |
stream_id: "101ae44a-60b5-4cca-b707-d4d24d7f7032", | |
type: :audio | |
} | |
}, | |
outbound_tracks: %{ | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 " => %Membrane.WebRTC.Track{ | |
encoding: :OPUS, | |
fmtp: %ExSDP.Attribute.FMTP{ | |
apt: nil, | |
cbr: nil, | |
level_asymmetry_allowed: nil, | |
max_br: nil, | |
max_dpb: nil, | |
max_fr: nil, | |
max_fs: nil, | |
max_mbps: nil, | |
max_smbps: nil, | |
maxaveragebitrate: nil, | |
maxplaybackrate: nil, | |
minptime: 10, | |
packetization_mode: nil, | |
profile_id: nil, | |
profile_level_id: nil, | |
pt: 111, | |
range: nil, | |
repair_window: nil, | |
stereo: nil, | |
usedtx: nil, | |
useinbandfec: true | |
}, | |
id: "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 ", | |
mid: "2", | |
name: "80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 -audio-f72f4a32-31a3-49a8-9380-3300d4be781e", | |
rtp_mapping: %ExSDP.Attribute.RTPMapping{ | |
clock_rate: 48000, | |
encoding: "opus", | |
params: 2, | |
payload_type: 111 | |
}, | |
ssrc: 1342114200, | |
status: :linked, | |
stream_id: "f72f4a32-31a3-49a8-9380-3300d4be781e", | |
type: :audio | |
}, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd " => %Membrane.WebRTC.Track{ | |
encoding: :VP8, | |
fmtp: nil, | |
id: "80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd ", | |
mid: "3", | |
name: "80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd -video-f72f4a32-31a3-49a8-9380-3300d4be781e", | |
rtp_mapping: %ExSDP.Attribute.RTPMapping{ | |
clock_rate: 90000, | |
encoding: "VP8", | |
params: nil, | |
payload_type: 96 | |
}, | |
ssrc: 3992177227, | |
status: :linked, | |
stream_id: "f72f4a32-31a3-49a8-9380-3300d4be781e", | |
type: :video | |
} | |
}, | |
ssrc_to_track_id: %{ | |
1646399729 => "0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 ", | |
2672441444 => "0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 " | |
}, | |
video_codecs: [] | |
}, | |
linking_buffer: %{}, | |
links: [ | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [ | |
options: [encoding: :OPUS, clock_rate: 48000, payload_type: 111] | |
], | |
pad_ref: {Membrane.Pad, :rtp_output, 1342114200}, | |
pad_spec: {Membrane.Pad, :rtp_output, 1342114200}, | |
pid: #PID<0.1485.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice_funnel, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :input, | |
#Reference<0.2858565386.3600023563.30891>}, | |
pad_spec: :input, | |
pid: #PID<0.1484.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [ | |
options: [encoding: :VP8, clock_rate: 90000, payload_type: 96] | |
], | |
pad_ref: {Membrane.Pad, :rtp_output, 3992177227}, | |
pad_spec: {Membrane.Pad, :rtp_output, 3992177227}, | |
pid: #PID<0.1485.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice_funnel, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :input, | |
#Reference<0.2858565386.3600023563.30866>}, | |
pad_spec: :input, | |
pid: #PID<0.1484.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [ | |
options: [ | |
encoding: :VP8, | |
packet_filters: [], | |
extensions: [], | |
clock_rate: 90000 | |
] | |
], | |
pad_ref: {Membrane.Pad, :output, 1646399729}, | |
pad_spec: {Membrane.Pad, :output, 1646399729}, | |
pid: #PID<0.1485.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: {:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "}, | |
pad_props: [], | |
pad_ref: :input, | |
pad_spec: :input, | |
pid: #PID<0.1510.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [ | |
options: [ | |
encoding: :OPUS, | |
packet_filters: [], | |
extensions: [vad: Membrane.RTP.VAD], | |
clock_rate: 48000 | |
] | |
], | |
pad_ref: {Membrane.Pad, :output, 2672441444}, | |
pad_spec: {Membrane.Pad, :output, 2672441444}, | |
pid: #PID<0.1485.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: {:track_filter, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "}, | |
pad_props: [], | |
pad_ref: :input, | |
pad_spec: :input, | |
pid: #PID<0.1500.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice_funnel, | |
pad_props: [], | |
pad_ref: :output, | |
pad_spec: :output, | |
pid: #PID<0.1484.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :input, 1}, | |
pad_spec: {Membrane.Pad, :input, 1}, | |
pid: #PID<0.1476.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :output, 1}, | |
pad_spec: {Membrane.Pad, :output, 1}, | |
pid: #PID<0.1476.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :rtp_input, | |
#Reference<0.2858565386.3600023553.35374>}, | |
pad_spec: {Membrane.Pad, :rtp_input, | |
#Reference<0.2858565386.3600023553.35374>}, | |
pid: #PID<0.1485.0> | |
} | |
}, | |
%Membrane.Core.Parent.Link{ | |
from: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :rtp, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :rtcp_output, | |
#Reference<0.2858565386.3600023553.35374>}, | |
pad_spec: {Membrane.Pad, :rtcp_output, | |
#Reference<0.2858565386.3600023553.35374>}, | |
pid: #PID<0.1485.0> | |
}, | |
to: %Membrane.Core.Parent.Link.Endpoint{ | |
child: :ice_funnel, | |
pad_props: [], | |
pad_ref: {Membrane.Pad, :input, | |
#Reference<0.2858565386.3600023553.35468>}, | |
pad_spec: :input, | |
pid: #PID<0.1484.0> | |
} | |
} | |
], | |
module: Membrane.WebRTC.EndpointBin, | |
name: {:endpoint, "0c920133-55a6-45a3-9087-9ef9307d906a"}, | |
pads: %{ | |
data: %{ | |
{Membrane.Pad, :input, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: nil, | |
demand_unit: :buffers, | |
direction: :input, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :input, | |
options: %{encoding: :OPUS, track_enabled: true}, | |
other_demand_unit: nil, | |
other_ref: {Membrane.Pad, :copy, | |
#Reference<0.2858565386.3600023563.30881>}, | |
pid: #PID<0.1587.0>, | |
ref: {Membrane.Pad, :input, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "}, | |
start_of_stream?: false, | |
sticky_messages: [] | |
}, | |
{Membrane.Pad, :input, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: nil, | |
demand_unit: :buffers, | |
direction: :input, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :input, | |
options: %{encoding: :VP8, track_enabled: true}, | |
other_demand_unit: nil, | |
other_ref: {Membrane.Pad, :copy, | |
#Reference<0.2858565386.3600023563.30837>}, | |
pid: #PID<0.1572.0>, | |
ref: {Membrane.Pad, :input, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd "}, | |
start_of_stream?: false, | |
sticky_messages: [] | |
}, | |
{Membrane.Pad, :output, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: 0, | |
demand_unit: nil, | |
direction: :output, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :output, | |
options: %{extensions: [], packet_filters: [], track_enabled: true}, | |
other_demand_unit: :buffers, | |
other_ref: :input, | |
pid: #PID<0.1508.0>, | |
ref: {Membrane.Pad, :output, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "}, | |
start_of_stream?: false, | |
sticky_messages: nil | |
}, | |
{Membrane.Pad, :output, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: 0, | |
demand_unit: nil, | |
direction: :output, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :output, | |
options: %{ | |
extensions: [vad: Membrane.RTP.VAD], | |
packet_filters: [], | |
track_enabled: true | |
}, | |
other_demand_unit: :buffers, | |
other_ref: :input, | |
pid: #PID<0.1498.0>, | |
ref: {Membrane.Pad, :output, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "}, | |
start_of_stream?: false, | |
sticky_messages: nil | |
}, | |
{Membrane.Pad, {:private, :input}, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: 0, | |
demand_unit: nil, | |
direction: :output, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :input, | |
options: %{}, | |
other_demand_unit: :buffers, | |
other_ref: :input, | |
pid: #PID<0.1597.0>, | |
ref: {Membrane.Pad, {:private, :input}, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:c8beb6b4-5c3c-4c8f-8521-43c32490e172 "}, | |
start_of_stream?: false, | |
sticky_messages: nil | |
}, | |
{Membrane.Pad, {:private, :input}, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: 0, | |
demand_unit: nil, | |
direction: :output, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :input, | |
options: %{}, | |
other_demand_unit: :buffers, | |
other_ref: :input, | |
pid: #PID<0.1581.0>, | |
ref: {Membrane.Pad, {:private, :input}, | |
"80942349-2d9d-48f2-b20e-f5d1aabbb057:efd2c3a7-a215-48fc-b374-657ffdba68cd "}, | |
start_of_stream?: false, | |
sticky_messages: nil | |
}, | |
{Membrane.Pad, {:private, :output}, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: nil, | |
demand_unit: :buffers, | |
direction: :input, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :output, | |
options: %{}, | |
other_demand_unit: nil, | |
other_ref: :output, | |
pid: #PID<0.1510.0>, | |
ref: {Membrane.Pad, {:private, :output}, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:60fe9231-04d5-46ac-9b0d-76aebd6d6fd3 "}, | |
start_of_stream?: false, | |
sticky_messages: [] | |
}, | |
{Membrane.Pad, {:private, :output}, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "} => %Membrane.Pad.Data{ | |
accepted_caps: :any, | |
availability: :on_request, | |
caps: nil, | |
demand: nil, | |
demand_unit: :buffers, | |
direction: :input, | |
end_of_stream?: false, | |
input_buf: nil, | |
mode: :pull, | |
name: :output, | |
options: %{}, | |
other_demand_unit: nil, | |
other_ref: :output, | |
pid: #PID<0.1500.0>, | |
ref: {Membrane.Pad, {:private, :output}, | |
"0c920133-55a6-45a3-9087-9ef9307d906a:a955f43f-f1c9-4d87-a7ef-14121ec562a5 "}, | |
start_of_stream?: false, | |
sticky_messages: [] | |
} | |
}, | |
dynamic_currently_linking: [], | |
info: %{ | |
:input => %{ | |
accepted_caps: :any, | |
availability: :on_request, | |
demand_unit: :buffers, | |
direction: :input, | |
mode: :pull, | |
name: :input, | |
options: [ | |
encoding: [spec: ":OPUS | :H264", description: "Track encoding"], | |
track_enabled: [ | |
spec: "boolean()", | |
default: true, | |
description: "Enable or disable track" | |
] | |
] | |
}, | |
:output => %{ | |
accepted_caps: :any, | |
availability: :on_request, | |
direction: :output, | |
mode: :pull, | |
name: :output, | |
options: [ | |
track_enabled: [ | |
spec: "boolean()", | |
default: true, | |
description: "Enable or disable track" | |
], | |
packet_filters: [ | |
spec: "[Membrane.RTP.SessionBin.packet_filter_t()]", | |
default: [], | |
description: "List of packet filters that will be applied to the SessionBin's output pad" | |
], | |
extensions: [ | |
spec: "[Membrane.RTP.SessionBin.extension_t()]", | |
default: [], | |
description: "List of tuples representing rtp extensions" | |
] | |
] | |
}, | |
{:private, :input} => %{ | |
accepted_caps: :any, | |
availability: :on_request, | |
direction: :output, | |
mode: :pull, | |
name: :input, | |
options: [] | |
}, | |
{:private, :output} => %{ | |
accepted_caps: :any, | |
availability: :on_request, | |
demand_unit: :buffers, | |
direction: :input, | |
mode: :pull, | |
name: :output, | |
options: [] | |
} | |
} | |
}, | |
playback: %Membrane.Core.Playback{ | |
async_state_change: false, | |
pending_state: nil, | |
state: :playing, | |
target_state: :playing | |
}, | |
synchronization: %{ | |
clock: nil, | |
clock_provider: %{ | |
choice: :auto, | |
clock: #PID<0.1451.0>, | |
provider: Membrane.Parent | |
}, | |
clock_proxy: #PID<0.1475.0>, | |
latency: 0, | |
parent_clock: #PID<0.1451.0>, | |
stream_sync: :membrane_no_sync, | |
timers: %{} | |
}, | |
watcher: #PID<0.1450.0> | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment