Skip to content

Commit 4663179

Browse files
authored
[All] Update ex_webrtc to 0.3.0. Update deps. (#19)
1 parent 71fd3d5 commit 4663179

File tree

7 files changed

+69
-63
lines changed

7 files changed

+69
-63
lines changed

broadcaster/lib/broadcaster/forwarder.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ defmodule Broadcaster.Forwarder do
9797

9898
@impl true
9999
def handle_info(
100-
{:ex_webrtc, input_pc, {:rtp, id, packet}},
100+
{:ex_webrtc, input_pc, {:rtp, id, nil, packet}},
101101
%{input_pc: input_pc, audio_input: id} = state
102102
) do
103103
for {pc, %{audio: track_id}} <- state.outputs do
@@ -109,7 +109,7 @@ defmodule Broadcaster.Forwarder do
109109

110110
@impl true
111111
def handle_info(
112-
{:ex_webrtc, input_pc, {:rtp, id, packet}},
112+
{:ex_webrtc, input_pc, {:rtp, id, nil, packet}},
113113
%{input_pc: input_pc, video_input: id} = state
114114
) do
115115
for {pc, %{video: track_id}} <- state.outputs do

broadcaster/lib/broadcaster/peer_supervisor.ex

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,7 @@ defmodule Broadcaster.PeerSupervisor do
1818
%RTPCodecParameters{
1919
payload_type: 96,
2020
mime_type: "video/H264",
21-
clock_rate: 90_000,
22-
rtcp_fbs: [%ExSDP.Attribute.RTCPFeedback{pt: 96, feedback_type: :nack}]
23-
},
24-
%RTPCodecParameters{
25-
payload_type: 97,
26-
mime_type: "video/rtx",
27-
clock_rate: 90_000,
28-
sdp_fmtp_line: %ExSDP.Attribute.FMTP{pt: 97, apt: 96}
21+
clock_rate: 90_000
2922
}
3023
]
3124

@@ -87,8 +80,13 @@ defmodule Broadcaster.PeerSupervisor do
8780

8881
defp setup_transceivers(pc, direction) do
8982
if direction == :sendonly do
90-
{:ok, _sender} = PeerConnection.add_track(pc, MediaStreamTrack.new(:audio))
91-
{:ok, _sender} = PeerConnection.add_track(pc, MediaStreamTrack.new(:video))
83+
media_stream_id = MediaStreamTrack.generate_stream_id()
84+
85+
{:ok, _sender} =
86+
PeerConnection.add_track(pc, MediaStreamTrack.new(:audio, [media_stream_id]))
87+
88+
{:ok, _sender} =
89+
PeerConnection.add_track(pc, MediaStreamTrack.new(:video, [media_stream_id]))
9290
end
9391

9492
transceivers = PeerConnection.get_transceivers(pc)

broadcaster/mix.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ defmodule Broadcaster.MixProject do
5252
{:jason, "~> 1.2"},
5353
{:dns_cluster, "~> 0.1.1"},
5454
{:bandit, "~> 1.2"},
55-
{:ex_webrtc, "~> 0.2.0"},
56-
{:ex_webrtc_dashboard, "~> 0.2.0"}
55+
{:ex_webrtc, "~> 0.3.0"},
56+
{:ex_webrtc_dashboard, "~> 0.3.0"}
5757
]
5858
end
5959

broadcaster/mix.lock

Lines changed: 15 additions & 15 deletions
Large diffs are not rendered by default.

reco/lib/reco/room.ex

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,20 @@ defmodule Reco.Room do
33

44
require Logger
55

6-
alias ExWebRTC.{ICECandidate, PeerConnection, SessionDescription}
7-
alias ExWebRTC.RTP.VP8Depayloader
6+
alias ExWebRTC.{ICECandidate, PeerConnection, RTPCodecParameters, SessionDescription}
7+
alias ExWebRTC.RTP.VP8.Depayloader
88

99
@max_session_time_s Application.compile_env!(:reco, :max_session_time_s)
1010
@session_time_timer_interval_ms 1_000
1111

12+
@video_codecs [
13+
%RTPCodecParameters{
14+
payload_type: 96,
15+
mime_type: "video/VP8",
16+
clock_rate: 90_000
17+
}
18+
]
19+
1220
defp id(room_id), do: {:via, Registry, {Reco.RoomRegistry, room_id}}
1321

1422
def start_link(room_id) do
@@ -39,7 +47,7 @@ defmodule Reco.Room do
3947
channel: nil,
4048
task: nil,
4149
video_track: nil,
42-
video_depayloader: VP8Depayloader.new(),
50+
video_depayloader: Depayloader.new(),
4351
video_decoder: Xav.Decoder.new(:vp8),
4452
audio_track: nil,
4553
session_start_time: System.monotonic_time(:millisecond)
@@ -49,7 +57,7 @@ defmodule Reco.Room do
4957
@impl true
5058
def handle_call({:connect, channel_pid}, _from, %{channel: nil} = state) do
5159
Process.monitor(channel_pid)
52-
{:ok, pc} = PeerConnection.start_link()
60+
{:ok, pc} = PeerConnection.start_link(video_codecs: @video_codecs)
5361

5462
state =
5563
state
@@ -110,10 +118,10 @@ defmodule Reco.Room do
110118
end
111119

112120
@impl true
113-
def handle_info({:ex_webrtc, _pc, {:rtp, track_id, packet}}, state) do
121+
def handle_info({:ex_webrtc, _pc, {:rtp, track_id, nil, packet}}, state) do
114122
cond do
115123
state.video_track.id == track_id ->
116-
case VP8Depayloader.write(state.video_depayloader, packet) do
124+
case Depayloader.write(state.video_depayloader, packet) do
117125
{:ok, d} ->
118126
state = %{state | video_depayloader: d}
119127
{:noreply, state}

reco/mix.exs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ defmodule Reco.MixProject do
4646
{:jason, "~> 1.2"},
4747
{:dns_cluster, "~> 0.1.1"},
4848
{:plug_cowboy, "~> 2.5"},
49-
{:ex_webrtc, "~> 0.2.0"},
50-
{:ex_webrtc_dashboard, "~> 0.2.0"},
51-
{:xav, "~> 0.2.0"},
49+
{:ex_webrtc, "~> 0.3.0"},
50+
{:ex_webrtc_dashboard, "~> 0.3.0"},
51+
{:xav, "~> 0.3.0"},
5252
{:bumblebee, "~> 0.4.2"},
5353
{:exla, "~> 0.5"}
5454
]

0 commit comments

Comments
 (0)