Support delayed AudioUnit initialization.

Applications can choose to decide when to give up control of the
AVAudioSession to WebRTC. Otherwise, behavior should be
unchanged.

Adds a toggle to AppRTCDemo so developers can see the different
paths.

BUG=
R=haysc@webrtc.org

Review URL: https://codereview.webrtc.org/1822543002 .

Cr-Commit-Position: refs/heads/master@{#12080}
diff --git a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.h b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.h
index a77cc8c..d3a583d 100644
--- a/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.h
+++ b/webrtc/examples/objc/AppRTCDemo/ios/ARDMainView.h
@@ -15,9 +15,12 @@
 @protocol ARDMainViewDelegate <NSObject>
 
 - (void)mainView:(ARDMainView *)mainView
-    didInputRoom:(NSString *)room
-      isLoopback:(BOOL)isLoopback
-     isAudioOnly:(BOOL)isAudioOnly;
+             didInputRoom:(NSString *)room
+               isLoopback:(BOOL)isLoopback
+              isAudioOnly:(BOOL)isAudioOnly
+   shouldDelayAudioConfig:(BOOL)shouldDelayAudioConfig;
+
+- (void)mainViewDidToggleAudioLoop:(ARDMainView *)mainView;
 
 @end
 
@@ -26,5 +29,7 @@
 @interface ARDMainView : UIView
 
 @property(nonatomic, weak) id<ARDMainViewDelegate> delegate;
+// Updates the audio loop button as needed.
+@property(nonatomic, assign) BOOL isAudioLoopPlaying;
 
 @end