Index: webrtc/examples/objc/AppRTCMobile/ios/ARDMainViewController.m |
diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDMainViewController.m b/webrtc/examples/objc/AppRTCMobile/ios/ARDMainViewController.m |
deleted file mode 100644 |
index e392168dee61b3e2dee72a224c593cad3fc3862e..0000000000000000000000000000000000000000 |
--- a/webrtc/examples/objc/AppRTCMobile/ios/ARDMainViewController.m |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-/* |
- * Copyright 2015 The WebRTC Project Authors. All rights reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-#import "ARDMainViewController.h" |
- |
-#import <AVFoundation/AVFoundation.h> |
- |
-#import "WebRTC/RTCDispatcher.h" |
-#import "WebRTC/RTCLogging.h" |
-#import "webrtc/modules/audio_device/ios/objc/RTCAudioSession.h" |
-#import "webrtc/modules/audio_device/ios/objc/RTCAudioSessionConfiguration.h" |
- |
-#import "ARDAppClient.h" |
-#import "ARDMainView.h" |
-#import "ARDVideoCallViewController.h" |
- |
-@interface ARDMainViewController () < |
- ARDMainViewDelegate, |
- ARDVideoCallViewControllerDelegate, |
- RTCAudioSessionDelegate> |
-@end |
- |
-@implementation ARDMainViewController { |
- ARDMainView *_mainView; |
- AVAudioPlayer *_audioPlayer; |
- BOOL _useManualAudio; |
-} |
- |
-- (void)loadView { |
- _mainView = [[ARDMainView alloc] initWithFrame:CGRectZero]; |
- _mainView.delegate = self; |
- self.view = _mainView; |
- |
- RTCAudioSessionConfiguration *webRTCConfig = |
- [RTCAudioSessionConfiguration webRTCConfiguration]; |
- webRTCConfig.categoryOptions = webRTCConfig.categoryOptions | |
- AVAudioSessionCategoryOptionDefaultToSpeaker; |
- [RTCAudioSessionConfiguration setWebRTCConfiguration:webRTCConfig]; |
- |
- RTCAudioSession *session = [RTCAudioSession sharedInstance]; |
- [session addDelegate:self]; |
- |
- [self configureAudioSession]; |
- [self setupAudioPlayer]; |
-} |
- |
-#pragma mark - ARDMainViewDelegate |
- |
-- (void)mainView:(ARDMainView *)mainView |
- didInputRoom:(NSString *)room |
- isLoopback:(BOOL)isLoopback |
- isAudioOnly:(BOOL)isAudioOnly |
- shouldMakeAecDump:(BOOL)shouldMakeAecDump |
- shouldUseLevelControl:(BOOL)shouldUseLevelControl |
- useManualAudio:(BOOL)useManualAudio { |
- if (!room.length) { |
- [self showAlertWithMessage:@"Missing room name."]; |
- return; |
- } |
- // Trim whitespaces. |
- NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet]; |
- NSString *trimmedRoom = [room stringByTrimmingCharactersInSet:whitespaceSet]; |
- |
- // Check that room name is valid. |
- NSError *error = nil; |
- NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive; |
- NSRegularExpression *regex = |
- [NSRegularExpression regularExpressionWithPattern:@"\\w+" |
- options:options |
- error:&error]; |
- if (error) { |
- [self showAlertWithMessage:error.localizedDescription]; |
- return; |
- } |
- NSRange matchRange = |
- [regex rangeOfFirstMatchInString:trimmedRoom |
- options:0 |
- range:NSMakeRange(0, trimmedRoom.length)]; |
- if (matchRange.location == NSNotFound || |
- matchRange.length != trimmedRoom.length) { |
- [self showAlertWithMessage:@"Invalid room name."]; |
- return; |
- } |
- |
- RTCAudioSession *session = [RTCAudioSession sharedInstance]; |
- session.useManualAudio = useManualAudio; |
- session.isAudioEnabled = NO; |
- |
- // Kick off the video call. |
- ARDVideoCallViewController *videoCallViewController = |
- [[ARDVideoCallViewController alloc] initForRoom:trimmedRoom |
- isLoopback:isLoopback |
- isAudioOnly:isAudioOnly |
- shouldMakeAecDump:shouldMakeAecDump |
- shouldUseLevelControl:shouldUseLevelControl |
- delegate:self]; |
- videoCallViewController.modalTransitionStyle = |
- UIModalTransitionStyleCrossDissolve; |
- [self presentViewController:videoCallViewController |
- animated:YES |
- completion:nil]; |
-} |
- |
-- (void)mainViewDidToggleAudioLoop:(ARDMainView *)mainView { |
- if (mainView.isAudioLoopPlaying) { |
- [_audioPlayer stop]; |
- } else { |
- [_audioPlayer play]; |
- } |
- mainView.isAudioLoopPlaying = _audioPlayer.playing; |
-} |
- |
-#pragma mark - ARDVideoCallViewControllerDelegate |
- |
-- (void)viewControllerDidFinish:(ARDVideoCallViewController *)viewController { |
- if (![viewController isBeingDismissed]) { |
- RTCLog(@"Dismissing VC"); |
- [self dismissViewControllerAnimated:YES completion:^{ |
- [self restartAudioPlayerIfNeeded]; |
- }]; |
- } |
- RTCAudioSession *session = [RTCAudioSession sharedInstance]; |
- session.isAudioEnabled = NO; |
-} |
- |
-#pragma mark - RTCAudioSessionDelegate |
- |
-- (void)audioSessionDidStartPlayOrRecord:(RTCAudioSession *)session { |
- // Stop playback on main queue and then configure WebRTC. |
- [RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeMain |
- block:^{ |
- if (_mainView.isAudioLoopPlaying) { |
- RTCLog(@"Stopping audio loop due to WebRTC start."); |
- [_audioPlayer stop]; |
- } |
- RTCLog(@"Setting isAudioEnabled to YES."); |
- session.isAudioEnabled = YES; |
- }]; |
-} |
- |
-- (void)audioSessionDidStopPlayOrRecord:(RTCAudioSession *)session { |
- // WebRTC is done with the audio session. Restart playback. |
- [RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeMain |
- block:^{ |
- RTCLog(@"audioSessionDidStopPlayOrRecord"); |
- [self restartAudioPlayerIfNeeded]; |
- }]; |
-} |
- |
-#pragma mark - Private |
- |
-- (void)configureAudioSession { |
- RTCAudioSessionConfiguration *configuration = |
- [[RTCAudioSessionConfiguration alloc] init]; |
- configuration.category = AVAudioSessionCategoryAmbient; |
- configuration.categoryOptions = AVAudioSessionCategoryOptionDuckOthers; |
- configuration.mode = AVAudioSessionModeDefault; |
- |
- RTCAudioSession *session = [RTCAudioSession sharedInstance]; |
- [session lockForConfiguration]; |
- BOOL hasSucceeded = NO; |
- NSError *error = nil; |
- if (session.isActive) { |
- hasSucceeded = [session setConfiguration:configuration error:&error]; |
- } else { |
- hasSucceeded = [session setConfiguration:configuration |
- active:YES |
- error:&error]; |
- } |
- if (!hasSucceeded) { |
- RTCLogError(@"Error setting configuration: %@", error.localizedDescription); |
- } |
- [session unlockForConfiguration]; |
-} |
- |
-- (void)setupAudioPlayer { |
- NSString *audioFilePath = |
- [[NSBundle mainBundle] pathForResource:@"mozart" ofType:@"mp3"]; |
- NSURL *audioFileURL = [NSURL URLWithString:audioFilePath]; |
- _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL |
- error:nil]; |
- _audioPlayer.numberOfLoops = -1; |
- _audioPlayer.volume = 1.0; |
- [_audioPlayer prepareToPlay]; |
-} |
- |
-- (void)restartAudioPlayerIfNeeded { |
- if (_mainView.isAudioLoopPlaying && !self.presentedViewController) { |
- RTCLog(@"Starting audio loop due to WebRTC end."); |
- [self configureAudioSession]; |
- [_audioPlayer play]; |
- } |
-} |
- |
-- (void)showAlertWithMessage:(NSString*)message { |
- UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:nil |
- message:message |
- delegate:nil |
- cancelButtonTitle:@"OK" |
- otherButtonTitles:nil]; |
- [alertView show]; |
-} |
- |
-@end |