@@ -19,6 +19,9 @@ class _MyAppState extends State<LoopBackSample> {
19
19
bool _inCalling = false ;
20
20
Timer _timer;
21
21
22
+ String get sdpSemantics =>
23
+ WebRTC .platformIsWindows ? 'plan-b' : 'unified-plan' ;
24
+
22
25
@override
23
26
void initState () {
24
27
super .initState ();
@@ -137,7 +140,7 @@ class _MyAppState extends State<LoopBackSample> {
137
140
'iceServers' : [
138
141
{'url' : 'stun:stun.l.google.com:19302' },
139
142
],
140
- 'sdpSemantics' : 'unified-plan'
143
+ 'sdpSemantics' : sdpSemantics
141
144
};
142
145
143
146
final offerSdpConstraints = < String , dynamic > {
@@ -170,20 +173,22 @@ class _MyAppState extends State<LoopBackSample> {
170
173
_peerConnection.onIceCandidate = _onCandidate;
171
174
_peerConnection.onRenegotiationNeeded = _onRenegotiationNeeded;
172
175
173
- _peerConnection.onTrack = _onTrack;
174
-
175
176
_localStream =
176
177
await navigator.mediaDevices.getUserMedia (mediaConstraints);
177
178
_localRenderer.srcObject = _localStream;
178
- await _peerConnection.addStream (_localStream);
179
- /* old API
180
- await _peerConnection.addStream(_localStream);
181
- // Unified-Plan
182
- _localStream.getTracks().forEach((track) {
183
- _peerConnection.addTrack(track, [_localStream]);
184
- });
185
- */
186
- // or
179
+
180
+ switch (sdpSemantics) {
181
+ case 'plan-b' :
182
+ await _peerConnection.addStream (_localStream);
183
+ break ;
184
+ case 'unified-plan' :
185
+ _peerConnection.onTrack = _onTrack;
186
+ _localStream.getTracks ().forEach ((track) {
187
+ _peerConnection.addTrack (track, _localStream);
188
+ });
189
+ break ;
190
+ }
191
+
187
192
/*
188
193
await _peerConnection.addTransceiver(
189
194
track: _localStream.getAudioTracks()[0],
@@ -251,7 +256,6 @@ class _MyAppState extends State<LoopBackSample> {
251
256
_localRenderer.srcObject = _localStream;
252
257
await transceiver.sender.replaceTrack(stream.getVideoTracks()[0]);
253
258
// do re-negotiation ....
254
-
255
259
*/
256
260
} catch (e) {
257
261
print (e.toString ());
0 commit comments