@@ -64,6 +64,47 @@ void main() {
6464 await videoTrans1.dispose ();
6565 });
6666
67+ testWidgets ('Correct codecs' , (WidgetTester tester) async {
68+ var server = IceServer (['stun:stun.l.google.com:19302' ]);
69+ var pc1 = await PeerConnection .create (IceTransportType .all, [server]);
70+
71+ var videoTransceiver = await pc1.addTransceiver (
72+ MediaKind .video, RtpTransceiverInit (TransceiverDirection .sendOnly));
73+
74+ var offer = (await pc1.createOffer ()).description;
75+
76+ var codecs = ['VP8/90000' , 'VP9/90000' , 'AV1/90000' ];
77+ if (! Platform .isAndroid) {
78+ codecs.add ('H264/90000' );
79+ }
80+
81+ for (var codec in codecs) {
82+ var reg = RegExp (r'a=rtpmap:\d{2,3} ' + codec);
83+ expect (offer.contains (reg), isTrue);
84+
85+ var rtpmaps = reg
86+ .allMatches (offer)
87+ .map ((e) => RegExp (r'\d{2,3}' ).firstMatch (e[0 ]! )! [0 ]! );
88+
89+ for (var rtpmap in rtpmaps) {
90+ var fbPref = 'a=rtcp-fb:$rtpmap ' ;
91+
92+ for (var fb in [
93+ 'goog-remb' ,
94+ 'transport-cc' ,
95+ 'ccm fir' ,
96+ 'nack' ,
97+ 'nack pli' ,
98+ ]) {
99+ expect (offer.contains (fbPref + fb), isTrue);
100+ }
101+ }
102+ }
103+
104+ await pc1.close ();
105+ await videoTransceiver.dispose ();
106+ });
107+
67108 testWidgets ('Get transceivers' , (WidgetTester tester) async {
68109 var pc = await PeerConnection .create (IceTransportType .all, []);
69110 var t1 = await pc.addTransceiver (
0 commit comments