8000 attempt to implement switch camera #2 · flutter-webrtc/flutter-webrtc@4c08aff · GitHub
[go: up one dir, main page]

Skip to content

Commit 4c08aff

Browse files
committed
attempt to implement switch camera #2
1 parent 235b5d9 commit 4c08aff

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/FlutterWebRTCPlugin.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,6 @@ public void onMethodCall(MethodCall call, Result result) {
128128
peerConnectionCreateAnswer(peerConnectionId, new ConstraintsMap(constraints), result);
129129
} else if (call.method.equals("mediaStreamGetTracks")) {
130130
String streamId = call.argument("streamId");
131-
MediaStream stream = getStreamForId(streamId);
132-
String streamId = call.argument("streamId");
133131
MediaStream stream = getStreamForId(streamId);
134132
Map<String, Object> resultMap = new HashMap<>();
135133
List<Object> audioTracks = new ArrayList<>();

ios/Classes/FlutterWebRTCPlugin.m

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,25 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult) result
345345
[self setStreamId:streamId view:render];
346346
}
347347
result(nil);
348+
}else if ([@"mediaStreamTrackSwitchCamera" isEqualToString:call.method]){
349+
NSDictionary* argsMap = call.arguments;
350+
NSString* trackId = argsMap[@"trackId"];
351+
RTCMediaStreamTrack *track = self.localTracks[trackId];
352+
if (track != nil && [track isKindOfClass:[RTCVideoTrack class]]) {
353+
RTCVideoTrack *videoTrack = (RTCVideoTrack *)track;
354+
RTCVideoSource *source = videoTrack.source;
355+
if ([source isKindOfClass:[RTCAVFoundationVideoSource class]]) {
356+
RTCAVFoundationVideoSource *avSource = (RTCAVFoundationVideoSource *)source;
357+
avSource.useBackCamera = !avSource.useBackCamera;
358+
}
359+
} else {
360+
if (track == nil) {
361+
NSLog(@"Track is nil");
362+
} else {
363+
NSLog([@"Track is class of " stringByAppendingString:[[track class] description]]);
364+
}
365+
}
366+
result(nil);
348367
}else{
349368
result(FlutterMethodNotImplemented);
350369
}
@@ -376,6 +395,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
376395

377396
for (RTCMediaStreamTrack *track in stream.audioTracks) {
378397
NSString *trackId = track.trackId;
398+
[self.localTracks setObject:track forKey:trackId];
379399
[audioTracks addObject:@{
380400
@"enabled": @(track.isEnabled),
381401
@"id": trackId,
@@ -388,6 +408,7 @@ -(void)mediaStreamGetTracks:(NSString*)streamId
388408

389409
for (RTCMediaStreamTrack *track in stream.videoTracks) {
390410
NSString *trackId = track.trackId;
411+
[self.localTracks setObject:track forKey:trackId];
391412
[videoTracks addObject:@{
392413
@"enabled": @(track.isEnabled),
393414
@"id": trackId,

0 commit comments

Comments
 (0)
0