Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m

Issue 1822543002: Support delayed AudioUnit initialization. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
diff --git a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
index 6f526573e33cde11abceec0dbbea4de40689c611..b2647630e1f2e692ef4f7e334dd8778a23a7df53 100644
--- a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
+++ b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.m
@@ -10,8 +10,6 @@
#import "ARDMainView.h"
-#import <AVFoundation/AVFoundation.h>
-
#import "UIImage+ARDUtilities.h"
// TODO(tkchin): retrieve status bar height dynamically.
@@ -124,24 +122,17 @@ static CGFloat const kAppLabelHeight = 20;
UILabel *_audioOnlyLabel;
UISwitch *_loopbackSwitch;
UILabel *_loopbackLabel;
+ UISwitch *_audioConfigDelaySwitch;
+ UILabel *_audioConfigDelayLabel;
UIButton *_startCallButton;
UIButton *_audioLoopButton;
- AVAudioPlayer *_audioPlayer;
}
@synthesize delegate = _delegate;
+@synthesize isAudioLoopPlaying = _isAudioLoopPlaying;
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
- 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];
-
_appLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_appLabel.text = @"AppRTCDemo";
_appLabel.font = [UIFont fontWithName:@"Roboto" size:34];
@@ -184,6 +175,18 @@ static CGFloat const kAppLabelHeight = 20;
[_loopbackLabel sizeToFit];
[self addSubview:_loopbackLabel];
+ _audioConfigDelaySwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
+ [_audioConfigDelaySwitch sizeToFit];
+ _audioConfigDelaySwitch.on = YES;
+ [self addSubview:_audioConfigDelaySwitch];
+
+ _audioConfigDelayLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+ _audioConfigDelayLabel.text = @"Delay audio config";
+ _audioConfigDelayLabel.font = controlFont;
+ _audioConfigDelayLabel.textColor = controlFontColor;
+ [_audioConfigDelayLabel sizeToFit];
+ [self addSubview:_audioConfigDelayLabel];
+
_startCallButton = [UIButton buttonWithType:UIButtonTypeSystem];
_startCallButton.backgroundColor = [UIColor blueColor];
_startCallButton.layer.cornerRadius = 10;
@@ -223,6 +226,14 @@ static CGFloat const kAppLabelHeight = 20;
return self;
}
+- (void)setIsAudioLoopPlaying:(BOOL)isAudioLoopPlaying {
+ if (_isAudioLoopPlaying == isAudioLoopPlaying) {
+ return;
+ }
+ _isAudioLoopPlaying = isAudioLoopPlaying;
+ [self updateAudioLoopButton];
+}
+
- (void)layoutSubviews {
CGRect bounds = self.bounds;
CGFloat roomTextWidth = bounds.size.width - 2 * kRoomTextFieldMargin;
@@ -264,8 +275,22 @@ static CGFloat const kAppLabelHeight = 20;
_loopbackLabel.center = CGPointMake(loopbackModeLabelCenterX,
CGRectGetMidY(loopbackModeRect));
+ CGFloat audioConfigDelayTop =
+ CGRectGetMaxY(_loopbackSwitch.frame) + kCallControlMargin;
+ CGRect audioConfigDelayRect =
+ CGRectMake(kCallControlMargin * 3,
+ audioConfigDelayTop,
+ _audioConfigDelaySwitch.frame.size.width,
+ _audioConfigDelaySwitch.frame.size.height);
+ _audioConfigDelaySwitch.frame = audioConfigDelayRect;
+ CGFloat audioConfigDelayLabelCenterX = CGRectGetMaxX(audioConfigDelayRect) +
+ kCallControlMargin + _audioConfigDelayLabel.frame.size.width / 2;
+ _audioConfigDelayLabel.center =
+ CGPointMake(audioConfigDelayLabelCenterX,
+ CGRectGetMidY(audioConfigDelayRect));
+
CGFloat audioLoopTop =
- CGRectGetMaxY(loopbackModeRect) + kCallControlMargin * 3;
+ CGRectGetMaxY(audioConfigDelayRect) + kCallControlMargin * 3;
_audioLoopButton.frame = CGRectMake(kCallControlMargin,
audioLoopTop,
_audioLoopButton.frame.size.width,
@@ -282,7 +307,7 @@ static CGFloat const kAppLabelHeight = 20;
#pragma mark - Private
- (void)updateAudioLoopButton {
- if (_audioPlayer.playing) {
+ if (_isAudioLoopPlaying) {
_audioLoopButton.backgroundColor = [UIColor redColor];
[_audioLoopButton setTitle:@"Stop sound"
forState:UIControlStateNormal];
@@ -296,12 +321,7 @@ static CGFloat const kAppLabelHeight = 20;
}
- (void)onToggleAudioLoop:(id)sender {
- if (_audioPlayer.playing) {
- [_audioPlayer stop];
- } else {
- [_audioPlayer play];
- }
- [self updateAudioLoopButton];
+ [_delegate mainViewDidToggleAudioLoop:self];
}
- (void)onStartCall:(id)sender {
@@ -312,9 +332,10 @@ static CGFloat const kAppLabelHeight = 20;
}
room = [room stringByReplacingOccurrencesOfString:@"-" withString:@""];
[_delegate mainView:self
- didInputRoom:room
- isLoopback:_loopbackSwitch.isOn
- isAudioOnly:_audioOnlySwitch.isOn];
+ didInputRoom:room
+ isLoopback:_loopbackSwitch.isOn
+ isAudioOnly:_audioOnlySwitch.isOn
+ shouldDelayAudioConfig:_audioConfigDelaySwitch.isOn];
}
@end

Powered by Google App Engine
This is Rietveld 408576698