Skip to content

Commit cd8cfe4

Browse files
authored
Merge pull request #24 from avrininnovations/master
Add ex_webrtc options to Source and Sink
2 parents fd5ed67 + c9dc4bb commit cd8cfe4

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

lib/membrane_webrtc/ex_webrtc/sink.ex

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ defmodule Membrane.WebRTC.ExWebRTCSink do
1616

1717
alias Membrane.WebRTC.{ExWebRTCUtils, Signaling, SimpleWebSocketServer}
1818

19-
def_options signaling: [], tracks: [], video_codec: [], ice_servers: []
19+
def_options signaling: [], tracks: [], video_codec: [], ice_servers: [], ice_port_range: [], ice_ip_filter: []
2020

2121
def_input_pad :input,
2222
accepted_format: Membrane.RTP,
@@ -41,7 +41,9 @@ defmodule Membrane.WebRTC.ExWebRTCSink do
4141
audio_params: ExWebRTCUtils.codec_params(:opus),
4242
video_params: ExWebRTCUtils.codec_params(opts.video_codec),
4343
video_codec: opts.video_codec,
44-
ice_servers: opts.ice_servers
44+
ice_servers: opts.ice_servers,
45+
ice_port_range: opts.ice_port_range,
46+
ice_ip_filter: opts.ice_ip_filter
4547
}}
4648
end
4749

@@ -69,6 +71,8 @@ defmodule Membrane.WebRTC.ExWebRTCSink do
6971
{:ok, pc} =
7072
PeerConnection.start_link(
7173
ice_servers: state.ice_servers,
74+
ice_port_range: state.ice_port_range,
75+
ice_ip_filter: state.ice_ip_filter,
7276
video_codecs: state.video_params,
7377
audio_codecs: state.audio_params
7478
)

lib/membrane_webrtc/ex_webrtc/source.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ defmodule Membrane.WebRTC.ExWebRTCSource do
1212
allowed_video_codecs: [],
1313
preferred_video_codec: [],
1414
ice_servers: [],
15+
ice_port_range: [],
16+
ice_ip_filter: [],
1517
keyframe_interval: [],
1618
sdp_candidates_timeout: []
1719

@@ -43,6 +45,8 @@ defmodule Membrane.WebRTC.ExWebRTCSource do
4345
allowed_video_codecs: [:h264 | :vp8],
4446
preferred_video_codec: :h264 | :vp8,
4547
ice_servers: [ExWebRTC.PeerConnection.Configuration.ice_server()],
48+
ice_port_range: Enumerable.t(non_neg_integer()),
49+
ice_ip_filter: (:inet.ip_address() -> boolean()),
4650
keyframe_interval: Membrane.Time.t() | nil,
4751
sdp_candidates_timeout: Membrane.Time.t() | nil
4852
}
@@ -53,6 +57,8 @@ defmodule Membrane.WebRTC.ExWebRTCSource do
5357
:allowed_video_codecs,
5458
:preferred_video_codec,
5559
:ice_servers,
60+
:ice_port_range,
61+
:ice_ip_filter,
5662
:keyframe_interval,
5763
:sdp_candidates_timeout
5864
]
@@ -78,6 +84,8 @@ defmodule Membrane.WebRTC.ExWebRTCSource do
7884
allowed_video_codecs: opts.allowed_video_codecs |> Enum.uniq(),
7985
preferred_video_codec: opts.preferred_video_codec,
8086
ice_servers: opts.ice_servers,
87+
ice_port_range: opts.ice_port_range,
88+
ice_ip_filter: opts.ice_ip_filter,
8189
keyframe_interval: opts.keyframe_interval,
8290
sdp_candidates_timeout: opts.sdp_candidates_timeout
8391
}}
@@ -325,6 +333,8 @@ defmodule Membrane.WebRTC.ExWebRTCSource do
325333
{:ok, pc} =
326334
PeerConnection.start(
327335
ice_servers: state.ice_servers,
336+
ice_port_range: state.ice_port_range,
337+
ice_ip_filter: state.ice_ip_filter,
328338
video_codecs: video_params,
329339
audio_codecs: state.audio_params
330340
)

lib/membrane_webrtc/sink.ex

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ defmodule Membrane.WebRTC.Sink do
8585
spec: [ExWebRTC.PeerConnection.Configuration.ice_server()],
8686
default: [%{urls: "stun:stun.l.google.com:19302"}]
8787
],
88+
ice_port_range: [
89+
spec: Enumerable.t(non_neg_integer()),
90+
default: [0]
91+
],
92+
ice_ip_filter: [
93+
spec: (:inet.ip_address() -> boolean()),
94+
default: &__MODULE__.default_ice_ip_filter/1
95+
],
8896
payload_rtp: [
8997
spec: boolean(),
9098
default: true
@@ -120,7 +128,9 @@ defmodule Membrane.WebRTC.Sink do
120128
signaling: opts.signaling,
121129
tracks: opts.tracks,
122130
video_codec: opts.video_codec,
123-
ice_servers: opts.ice_servers
131+
ice_servers: opts.ice_servers,
132+
ice_port_range: opts.ice_port_range,
133+
ice_ip_filter: opts.ice_ip_filter
124134
})
125135

126136
{[spec: spec], %{payload_rtp: opts.payload_rtp, video_codec: opts.video_codec}}
@@ -219,4 +229,6 @@ defmodule Membrane.WebRTC.Sink do
219229
def handle_element_end_of_stream(_name, _pad, _ctx, state) do
220230
{[], state}
221231
end
232+
233+
def default_ice_ip_filter(_ip), do: true
222234
end

lib/membrane_webrtc/source.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,14 @@ defmodule Membrane.WebRTC.Source do
108108
spec: [ExWebRTC.PeerConnection.Configuration.ice_server()],
109109
default: [%{urls: "stun:stun.l.google.com:19302"}]
110110
],
111+
ice_port_range: [
112+
spec: Enumerable.t(non_neg_integer()),
113+
default: [0]
114+
],
115+
ice_ip_filter: [
116+
spec: (:inet.ip_address() -> boolean()),
117+
default: &__MODULE__.default_ice_ip_filter/1
118+
],
111119
depayload_rtp: [
112120
spec: boolean(),
113121
default: true
@@ -263,4 +271,6 @@ defmodule Membrane.WebRTC.Source do
263271
clock_rate: ExWebRTCUtils.codec_clock_rate(:h264)
264272
})
265273
end
274+
275+
def default_ice_ip_filter(_ip), do: true
266276
end

0 commit comments

Comments
 (0)