@@ -9,20 +9,28 @@ defmodule ExWebRTC.RTPSenderTest do
9
9
@ ssrc 354_947
10
10
@ rtx_ssrc 123_455
11
11
12
- setup do
13
- track = MediaStreamTrack . new ( :audio )
14
-
15
- codec = % RTPCodecParameters {
16
- payload_type: 111 ,
17
- mime_type: "audio/opus" ,
18
- clock_rate: 48_000 ,
19
- channels: 2 ,
20
- sdp_fmtp_line: % FMTP { pt: 111 , minptime: 10 , useinbandfec: true }
12
+ @ rtp_hdr_exts [ % Extmap { id: 1 , uri: "urn:ietf:params:rtp-hdrext:sdes:mid" } ]
13
+
14
+ @ codec % RTPCodecParameters {
15
+ payload_type: 96 ,
16
+ mime_type: "video/VP8" ,
17
+ clock_rate: 90_000
18
+ }
19
+
20
+ @ rtx_codec % ExWebRTC.RTPCodecParameters {
21
+ payload_type: 124 ,
22
+ mime_type: "video/rtx" ,
23
+ clock_rate: 90000 ,
24
+ sdp_fmtp_line: % ExSDP.Attribute.FMTP {
25
+ pt: 124 ,
26
+ apt: 96
21
27
}
28
+ }
22
29
23
- rtp_hdr_exts = [ % Extmap { id: 1 , uri: "urn:ietf:params:rtp-hdrext:sdes:mid" } ]
30
+ setup do
31
+ track = MediaStreamTrack . new ( :video )
24
32
25
- sender = RTPSender . new ( track , codec , nil , rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
33
+ sender = RTPSender . new ( track , @ codec , nil , @ rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
26
34
27
35
% { sender: sender }
28
36
end
@@ -36,7 +44,7 @@ defmodule ExWebRTC.RTPSenderTest do
36
44
37
45
assert packet . ssrc == @ ssrc
38
46
assert packet . marker == false
39
- assert packet . payload_type == 111
47
+ assert packet . payload_type == 96
40
48
# timestamp and sequence number shouldn't be overwritten
41
49
assert packet . timestamp == 0
42
50
assert packet . sequence_number == 0
@@ -53,6 +61,66 @@ defmodule ExWebRTC.RTPSenderTest do
53
61
assert packet . marker == true
54
62
end
55
63
64
+ describe "get_mline_attrs/1" do
65
+ test "without rtx" do
66
+ stream_id = MediaStreamTrack . generate_stream_id ( )
67
+ track = MediaStreamTrack . new ( :video , [ stream_id ] )
68
+
69
+ sender = RTPSender . new ( track , @ codec , nil , @ rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
70
+
71
+ assert [
72
+ % ExSDP.Attribute.MSID { id: ^ stream_id , app_data: nil } ,
73
+ % ExSDP.Attribute.SSRC { id: @ ssrc , attribute: "msid" , value: ^ stream_id }
74
+ ] = RTPSender . get_mline_attrs ( sender )
75
+ end
76
+
77
+ test "with rtx" do
78
+ stream_id = MediaStreamTrack . generate_stream_id ( )
79
+ track = MediaStreamTrack . new ( :video , [ stream_id ] )
80
+
81
+ sender = RTPSender . new ( track , @ codec , @ rtx_codec , @ rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
82
+
83
+ assert [
84
+ % ExSDP.Attribute.MSID { id: ^ stream_id , app_data: nil } ,
85
+ % ExSDP.Attribute.SSRCGroup { semantics: "FID" , ssrcs: [ @ ssrc , @ rtx_ssrc ] } ,
86
+ % ExSDP.Attribute.SSRC { id: @ ssrc , attribute: "msid" , value: ^ stream_id } ,
87
+ % ExSDP.Attribute.SSRC { id: @ rtx_ssrc , attribute: "msid" , value: ^ stream_id }
88
+ ] = RTPSender . get_mline_attrs ( sender )
89
+ end
90
+
91
+ test "without media stream" do
92
+ track = MediaStreamTrack . new ( :video )
93
+
94
+ sender = RTPSender . new ( track , @ codec , @ rtx_codec , @ rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
95
+
96
+ assert [
97
+ % ExSDP.Attribute.MSID { id: "-" , app_data: nil } ,
98
+ % ExSDP.Attribute.SSRCGroup { semantics: "FID" , ssrcs: [ @ ssrc , @ rtx_ssrc ] } ,
99
+ % ExSDP.Attribute.SSRC { id: @ ssrc , attribute: "msid" , value: "-" } ,
100
+ % ExSDP.Attribute.SSRC { id: @ rtx_ssrc , attribute: "msid" , value: "-" }
101
+ ] = RTPSender . get_mline_attrs ( sender )
102
+ end
103
+
104
+ test "with multiple media streams" do
105
+ s1_id = MediaStreamTrack . generate_stream_id ( )
106
+ s2_id = MediaStreamTrack . generate_stream_id ( )
107
+
108
+ track = MediaStreamTrack . new ( :video , [ s1_id , s2_id ] )
109
+
110
+ sender = RTPSender . new ( track , @ codec , @ rtx_codec , @ rtp_hdr_exts , "1" , @ ssrc , @ rtx_ssrc , [ ] )
111
+
112
+ assert [
113
+ % ExSDP.Attribute.MSID { id: ^ s1_id , app_data: nil } ,
114
+ % ExSDP.Attribute.MSID { id: ^ s2_id , app_data: nil } ,
115
+ % ExSDP.Attribute.SSRCGroup { semantics: "FID" , ssrcs: [ @ ssrc , @ rtx_ssrc ] } ,
116
+ % ExSDP.Attribute.SSRC { id: @ ssrc , attribute: "msid" , value: ^ s1_id } ,
117
+ % ExSDP.Attribute.SSRC { id: @ ssrc , attribute: "msid" , value: ^ s2_id } ,
118
+ % ExSDP.Attribute.SSRC { id: @ rtx_ssrc , attribute: "msid" , value: ^ s1_id } ,
119
+ % ExSDP.Attribute.SSRC { id: @ rtx_ssrc , attribute: "msid" , value: ^ s2_id }
120
+ ] = RTPSender . get_mline_attrs ( sender )
121
+ end
122
+ end
123
+
56
124
test "get_stats/2" , % { sender: sender } do
57
125
timestamp = System . os_time ( :millisecond )
58
126
payload = << 1 , 2 , 3 >>
0 commit comments