Index: webrtc/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m |
diff --git a/webrtc/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m b/webrtc/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m |
index 51290a05b585bed47fe4074f17bf80b0cbec5026..9bf4c07daebcb4bb379a84a7f2f0101a909b6381 100644 |
--- a/webrtc/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m |
+++ b/webrtc/examples/objc/AppRTCDemo/ios/ARDVideoCallViewController.m |
@@ -10,6 +10,9 @@ |
#import "ARDVideoCallViewController.h" |
+#import "webrtc/base/objc/RTCDispatcher.h" |
+#import "webrtc/modules/audio_device/ios/objc/RTCAudioSession.h" |
+ |
#import "RTCAVFoundationVideoSource.h" |
#import "RTCLogging.h" |
@@ -27,6 +30,7 @@ |
ARDAppClient *_client; |
RTCVideoTrack *_remoteVideoTrack; |
RTCVideoTrack *_localVideoTrack; |
+ AVAudioSessionPortOverride _portOverride; |
} |
@synthesize videoCallView = _videoCallView; |
@@ -117,6 +121,26 @@ |
[self switchCamera]; |
} |
+- (void)videoCallViewDidChangeRoute:(ARDVideoCallView *)view { |
+ AVAudioSessionPortOverride override = AVAudioSessionPortOverrideNone; |
+ if (_portOverride == AVAudioSessionPortOverrideNone) { |
+ override = AVAudioSessionPortOverrideSpeaker; |
+ } |
+ [RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeAudioSession |
+ block:^{ |
+ RTCAudioSession *session = [RTCAudioSession sharedInstance]; |
+ [session lockForConfiguration]; |
+ NSError *error = nil; |
+ if ([session overrideOutputAudioPort:override error:&error]) { |
+ _portOverride = override; |
+ } else { |
+ RTCLogError(@"Error overriding output port: %@", |
+ error.localizedDescription); |
+ } |
+ [session unlockForConfiguration]; |
+ }]; |
+} |
+ |
- (void)videoCallViewDidEnableStats:(ARDVideoCallView *)view { |
_client.shouldGetStats = YES; |
_videoCallView.statsView.hidden = NO; |