10000 Web related fixes (#670) · tx-tomcat/flutter-webrtc@434bfbf · GitHub
[go: up one dir, main page]

Skip to content

Commit 434bfbf

Browse files
authored
Web related fixes (flutter-webrtc#670)
* Use `track` instead of `kind` when both `track` and `kind` are set (flutter-webrtc#4) * `getSettings` for Web (flutter-webrtc#3)
1 parent 0febe01 commit 434bfbf

File tree

5 files changed

+53
-35
lines changed

5 files changed

+53
-35
lines changed

.gitignore

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
*.iml
22
.idea
33
.DS_Store
4-
.vscode/.DS_Store
54
example/pubspec.lock
65
pubspec.lock
76
example/ios/Podfile.lock
@@ -17,8 +16,6 @@ example/ios/Runner/GeneratedPluginRegistrant.m
1716
example/ios/Runner/GeneratedPluginRegistrant.h
1817
example/ios/Flutter/Generated.xcconfig
1918
example/ios/Flutter/flutter_export_environment.sh
20-
.vscode/launch.json
21-
example/.vscode/launch.json
2219

2320
# Miscellaneous
2421
*.class
@@ -51,3 +48,6 @@ example/.vscode/launch.json
5148

5249
android/.classpath
5350
android/.settings/org.eclipse.buildship.core.prefs
51+
52+
# VSCode
53+
.vscode/

lib/src/interface/media_stream_track.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ abstract class MediaStreamTrack {
7272

7373
Future<void> stop();
7474

75+
//
76+
// https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getSettings
77+
//
78+
Map<String, dynamic> getSettings() => throw UnimplementedError();
79+
7580
/// Throws error if switching camera failed
7681
@Deprecated('use Helper.switchCamera() instead')
7782
Future<bool> switchCamera() {

lib/src/web/media_stream_track_impl.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ class MediaStreamTrackWeb extends MediaStreamTrack {
5858
// return null;
5959
// }
6060

61+
@override
62+
Map<String, dynamic> getSettings() {
63+
return jsTrack.getSettings() as Map<String, dynamic>;
64+
}
65+
6166
@override
6267
Future<ByteBuffer> captureFrame() async {
6368
final imageCapture = html.ImageCapture(jsTrack);

lib/src/web/rtc_peerconnection_impl.dart

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -369,18 +369,31 @@ class RTCPeerConnectionWeb extends RTCPeerConnection {
369369
}
370370

371371
//'audio|video', { 'direction': 'recvonly|sendonly|sendrecv' }
372+
//
373+
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTransceiver
374+
//
372375
@override
373-
Future<RTCRtpTransceiver> addTransceiver(
374-
{MediaStreamTrack? track,
375-
RTCRtpMediaType? kind,
376-
RTCRtpTransceiverInit? init}) async {
377-
var kindLabel = kind != null ? typeRTCRtpMediaTypetoString[kind] : null;
378-
var kindOrTrack = kindLabel ?? (track as MediaStreamTrackWeb).jsTrack;
379-
final jsOptions = jsutil
380-
.jsify(init != null ? RTCRtpTransceiverInitWeb.initToMap(init) : {});
381-
var transceiver =
382-
jsutil.callMethod(_jsPc, 'addTransceiver', [kindOrTrack, jsOptions]);
383-
return RTCRtpTransceiverWeb.fromJsObject(transceiver,
384-
peerConnectionId: _peerConnectionId);
376+
Future<RTCRtpTransceiver> addTransceiver({
377+
MediaStreamTrack? track,
378+
RTCRtpMediaType? kind,
379+
RTCRtpTransceiverInit? init,
380+
}) async {
381+
final jsTrack = track is MediaStreamTrackWeb ? track.jsTrack : null;
382+
final kindString = kind != null ? typeRTCRtpMediaTypetoString[kind] : null;
383+
final trackOrKind = jsTrack ?? kindString;
384+
final jsOptions = jsutil.jsify(
385+
init is RTCRtpTransceiverInitWeb ? init.toJSMap() : {},
386+
);
387+
388+
final transceiver = jsutil.callMethod(
389+
_jsPc,
390+
'addTransceiver',
391+
[trackOrKind, jsOptions],
392+
);
393+
394+
return RTCRtpTransceiverWeb.fromJsObject(
395+
transceiver,
396+
peerConnectionId: _peerConnectionId,
397+
);
385398
}
386399
}

lib/src/web/rtc_rtp_transceiver_impl.dart

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,21 @@ class RTCRtpTransceiverInitWeb extends RTCRtpTransceiverInit {
3939
listToRtpEncodings(map['sendEncodings']));
4040
}
4141

42-
Map<String, dynamic> toMap() {
43-
return {
44-
'direction': typeRtpTransceiverDirectionToString[direction],
45-
if (streams != null) 'streamIds': streams!.map((e) => e.id).toList(),
46-
if (sendEncodings != null)
47-
'sendEncodings': sendEncodings!.map((e) => e.toMap()).toList(),
48-
};
49-
}
50-
51-
static Map<String, dynamic> initToMap(RTCRtpTransceiverInit init) {
52-
return {
53-
'direction': typeRtpTransceiverDirectionToString[init.direction],
54-
'streams': init.streams != null
55-
? init.streams!.map((e) => (e as MediaStreamWeb).jsStream).toList()
56-
: [],
57-
'sendEncodings': init.sendEncodings != null
58-
? init.sendEncodings!.map((e) => e.toMap()).toList()
59-
: [],
60-
};
61-
}
42+
Map<String, dynamic> toMap() => {
43+
'direction': typeRtpTransceiverDirectionToString[direction],
44+
if (streams != null) 'streamIds': streams!.map((e) => e.id).toList(),
45+
if (sendEncodings != null)
46+
'sendEncodings': sendEncodings!.map((e) => e.toMap()).toList(),
47+
};
48+
49+
Map<String, dynamic> toJSMap() => {
50+
'direction': typeRtpTransceiverDirectionToString[direction],
51+
if (streams != null)
52+
'streams':
53+
streams!.map((e) => (e as MediaStreamWeb).jsStream).toList(),
54+
if (sendEncodings != null)
55+
'sendEncodings': sendEncodings!.map((e) => e.toMap()).toList(),
56+
};
6257
}
6358

6459
class RTCRtpTransceiverWeb extends RTCRtpTransceiver {

0 commit comments

Comments
 (0)
0