Skip to content

Commit 9e28488

Browse files
committed
Apply requested changes
1 parent a1aab58 commit 9e28488

File tree

6 files changed

+24
-24
lines changed

6 files changed

+24
-24
lines changed

examples/echo/.DS_Store

6 KB
Binary file not shown.

examples/save_to_file/.DS_Store

6 KB
Binary file not shown.

examples/send_from_file/.DS_Store

6 KB
Binary file not shown.

lib/ex_webrtc/peer_connection.ex

+14-14
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ defmodule ExWebRTC.PeerConnection do
6161
"""
6262
@type connection_state() :: :closed | :failed | :disconnected | :new | :connecting | :connected
6363

64+
@twcc_uri "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
65+
6466
#### API ####
6567
@doc """
6668
Returns a list of all running peer connections.
@@ -734,10 +736,7 @@ defmodule ExWebRTC.PeerConnection do
734736
case transceiver do
735737
%RTPTransceiver{} ->
736738
{packet, state} =
737-
case Map.fetch(
738-
state.config.video_rtp_hdr_exts,
739-
"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
740-
) do
739+
case Map.fetch(state.config.video_rtp_hdr_exts, @twcc_uri) do
741740
{:ok, %{id: id}} ->
742741
twcc =
743742
ExRTP.Packet.Extension.TWCC.new(state.sent_packets)
@@ -818,20 +817,16 @@ defmodule ExWebRTC.PeerConnection do
818817
def handle_info({:dtls_transport, _pid, {:rtp, data}}, state) do
819818
with {:ok, demuxer, mid, packet} <- Demuxer.demux(state.demuxer, data),
820819
{idx, %RTPTransceiver{} = t} <- find_transceiver(state.transceivers, mid) do
821-
%{twcc_recorder: twcc_recorder} = state
822-
820+
# we always update the ssrc's for the one's from the latest packet
821+
# although this is not a necessity, the feedbacks are transport-wide
823822
twcc_recorder = %TWCCRecorder{
824-
twcc_recorder
823+
state.twcc_recorder
825824
| media_ssrc: packet.ssrc,
826825
sender_ssrc: t.sender.ssrc
827826
}
828827

829828
twcc_recorder =
830-
with {:ok, %{id: id}} <-
831-
Map.fetch(
832-
state.config.video_rtp_hdr_exts,
833-
"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
834-
),
829+
with {:ok, %{id: id}} <- Map.fetch(state.config.video_rtp_hdr_exts, @twcc_uri),
835830
{:ok, raw_ext} <- ExRTP.Packet.fetch_extension(packet, id),
836831
{:ok, %{sequence_number: seq_no}} <- ExRTP.Packet.Extension.TWCC.from_raw(raw_ext) do
837832
TWCCRecorder.record_packet(twcc_recorder, seq_no)
@@ -870,8 +865,13 @@ defmodule ExWebRTC.PeerConnection do
870865
notify(state.owner, {:rtcp, packets})
871866

872867
{:error, _res} ->
873-
<<2::2, _::1, count::5, ptype::8, _::binary>> = data
874-
Logger.warning("Failed to decode RTCP packet, type: #{ptype}, count: #{count}")
868+
case data do
869+
<<2::2, _::1, count::5, ptype::8, _::binary>> ->
870+
Logger.warning("Failed to decode RTCP packet, type: #{ptype}, count: #{count}")
871+
872+
_ ->
873+
Logger.warning("Failed to decode RTCP packet, packet is too short")
874+
end
875875
end
876876

877877
{:noreply, state}

lib/ex_webrtc/peer_connection/twcc_recorder.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,11 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorder do
180180
end
181181
end
182182

183-
@spec get_feedback(t()) :: {t(), [CC.t()]}
183+
@spec get_feedback(t()) :: {[CC.t()], t()}
184184
def get_feedback(recorder, feedbacks \\ [])
185185

186186
def get_feedback(%{base_seq_no: seq_no, end_seq_no: seq_no} = recorder, feedbacks),
187-
do: {recorder, Enum.reverse(feedbacks)}
187+
do: {Enum.reverse(feedbacks), recorder}
188188

189189
def get_feedback(recorder, feedbacks) do
190190
%__MODULE__{

test/ex_webrtc/peer_connection/twcc_recorder_test.exs

+8-8
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
197197
timestamps: timestamps
198198
}
199199

200-
assert {recorder, [feedback]} = TWCCRecorder.get_feedback(recorder)
200+
assert {[feedback], recorder} = TWCCRecorder.get_feedback(recorder)
201201

202202
assert %CC{
203203
base_sequence_number: @seq_no,
@@ -209,7 +209,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
209209
} = feedback
210210

211211
# no new packets -> no feedback
212-
assert {_recorder, []} = TWCCRecorder.get_feedback(recorder)
212+
assert {[], _recorder} = TWCCRecorder.get_feedback(recorder)
213213
end
214214

215215
test "packets out of order, with gaps" do
@@ -231,7 +231,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
231231
timestamps: timestamps
232232
}
233233

234-
assert {recorder, [feedback]} = TWCCRecorder.get_feedback(recorder)
234+
assert {[feedback], recorder} = TWCCRecorder.get_feedback(recorder)
235235

236236
symbols = [
237237
:small_delta,
@@ -252,7 +252,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
252252
recv_deltas: [246, 5, -17, -8, 25]
253253
} = feedback
254254

255-
assert {_recorder, []} = TWCCRecorder.get_feedback(recorder)
255+
assert {[], _recorder} = TWCCRecorder.get_feedback(recorder)
256256
end
257257

258258
test "mixed chunks" do
@@ -266,7 +266,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
266266
TWCCRecorder.record_packet(recorder, i)
267267
end)
268268

269-
assert {recorder, [feedback]} = TWCCRecorder.get_feedback(recorder)
269+
assert {[feedback], recorder} = TWCCRecorder.get_feedback(recorder)
270270

271271
assert %CC{
272272
base_sequence_number: @seq_no,
@@ -288,7 +288,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
288288

289289
assert length(deltas) == packet_num - 1
290290

291-
assert {_recorder, []} = TWCCRecorder.get_feedback(recorder)
291+
assert {[], _recorder} = TWCCRecorder.get_feedback(recorder)
292292
end
293293

294294
test "split into two feedbacks" do
@@ -303,7 +303,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
303303
timestamps = Map.update!(recorder.timestamps, base_no2, &(&1 + 35_000))
304304
recorder = %{recorder | timestamps: timestamps}
305305

306-
assert {recorder, [feedback1, feedback2]} = TWCCRecorder.get_feedback(recorder)
306+
assert {[feedback1, feedback2], recorder} = TWCCRecorder.get_feedback(recorder)
307307

308308
assert %CC{
309309
base_sequence_number: @seq_no,
@@ -327,7 +327,7 @@ defmodule ExWebRTC.PeerConnection.TWCCRecorderTest do
327327
refute_in_delta ref_time1, ref_time2, 133
328328
assert_in_delta ref_time1, ref_time2, 143
329329

330-
assert {_recorder, []} = TWCCRecorder.get_feedback(recorder)
330+
assert {[], _recorder} = TWCCRecorder.get_feedback(recorder)
331331
end
332332
end
333333
end

0 commit comments

Comments
 (0)