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

Unified Diff: webrtc/modules/audio_device/ios/audio_device_ios.h

Issue 1796983004: Use RTCAudioSessionDelegate in AudioDeviceIOS. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Some nits. 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
« no previous file with comments | « webrtc/modules/audio_device/audio_device.gypi ('k') | webrtc/modules/audio_device/ios/audio_device_ios.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_device/ios/audio_device_ios.h
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.h b/webrtc/modules/audio_device/ios/audio_device_ios.h
index 73208864d245a71d157138179004ed3dc6d275a3..fe6af6520565bf660ddb72cd3addfbecf8ce12a7 100644
--- a/webrtc/modules/audio_device/ios/audio_device_ios.h
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.h
@@ -15,8 +15,14 @@
#include <AudioUnit/AudioUnit.h>
+#include "webrtc/base/asyncinvoker.h"
+#include "webrtc/base/objc/RTCMacros.h"
+#include "webrtc/base/thread.h"
#include "webrtc/base/thread_checker.h"
#include "webrtc/modules/audio_device/audio_device_generic.h"
+#include "webrtc/modules/audio_device/ios/audio_session_observer.h"
+
+RTC_FWD_DECL_OBJC_CLASS(RTCAudioSessionDelegateAdapter);
namespace webrtc {
@@ -35,7 +41,8 @@ class FineAudioBuffer;
// Recorded audio will be delivered on a real-time internal I/O thread in the
// audio unit. The audio unit will also ask for audio data to play out on this
// same thread.
-class AudioDeviceIOS : public AudioDeviceGeneric {
+class AudioDeviceIOS : public AudioDeviceGeneric,
+ public AudioSessionObserver {
public:
AudioDeviceIOS();
~AudioDeviceIOS();
@@ -151,16 +158,21 @@ class AudioDeviceIOS : public AudioDeviceGeneric {
void ClearRecordingWarning() override {}
void ClearRecordingError() override {}
+ // AudioSessionObserver methods. May be called from any thread.
+ void OnInterruptionBegin() override;
+ void OnInterruptionEnd() override;
+ void OnValidRouteChange() override;
+
private:
+ // Called by the relevant AudioSessionObserver methods on |thread_|.
+ void HandleInterruptionBegin();
+ void HandleInterruptionEnd();
+ void HandleValidRouteChange();
+
// Uses current |playout_parameters_| and |record_parameters_| to inform the
// audio device buffer (ADB) about our internal audio parameters.
void UpdateAudioDeviceBuffer();
- // Registers observers for the AVAudioSessionRouteChangeNotification and
- // AVAudioSessionInterruptionNotification notifications.
- void RegisterNotificationObservers();
- void UnregisterNotificationObservers();
-
// Since the preferred audio parameters are only hints to the OS, the actual
// values may be different once the AVAudioSession has been activated.
// This method asks for the current hardware parameters and takes actions
@@ -218,6 +230,10 @@ class AudioDeviceIOS : public AudioDeviceGeneric {
// Ensures that methods are called from the same thread as this object is
// created on.
rtc::ThreadChecker thread_checker_;
+ // Thread that this object is created on.
+ rtc::Thread* thread_;
+ // Invoker used to execute methods on thread_.
+ std::unique_ptr<rtc::AsyncInvoker> async_invoker_;
// Raw pointer handle provided to us in AttachAudioBuffer(). Owned by the
// AudioDeviceModuleImpl class and called by AudioDeviceModuleImpl::Create().
@@ -286,9 +302,11 @@ class AudioDeviceIOS : public AudioDeviceGeneric {
// Set to true after successful call to InitPlayout(), false otherwise.
bool play_is_initialized_;
+ // Set to true if audio session is interrupted, false otherwise.
+ bool is_interrupted_;
+
// Audio interruption observer instance.
- void* audio_interruption_observer_;
- void* route_change_observer_;
+ RTCAudioSessionDelegateAdapter* audio_session_observer_;
// Contains the audio data format specification for a stream of audio.
AudioStreamBasicDescription application_format_;
« no previous file with comments | « webrtc/modules/audio_device/audio_device.gypi ('k') | webrtc/modules/audio_device/ios/audio_device_ios.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698