Chromium Code Reviews| 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 a3674502859903c36af4ca3384a04f8a6d41ef02..bf03081ca3254604eec94994498d8e4c4604bd27 100644 |
| --- a/webrtc/modules/audio_device/ios/audio_device_ios.h |
| +++ b/webrtc/modules/audio_device/ios/audio_device_ios.h |
| @@ -1,5 +1,5 @@ |
| /* |
| - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| + * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
|
tkchin_webrtc
2015/07/06 03:46:28
I believe the rule is to never change the copyrigh
|
| * |
| * 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 |
| @@ -13,17 +13,14 @@ |
| #include <AudioUnit/AudioUnit.h> |
| -#include "webrtc/modules/audio_device/audio_device_generic.h" |
| +#include "webrtc/base/thread_checker.h" |
| +#include "webrtc/modules/audio_device/ios/audio_device_not_implemented_ios.h" |
| #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" |
| #include "webrtc/system_wrappers/interface/thread_wrapper.h" |
| namespace webrtc { |
| -const uint32_t N_REC_SAMPLES_PER_SEC = 44000; |
| -const uint32_t N_PLAY_SAMPLES_PER_SEC = 44000; |
| - |
| -const uint32_t N_REC_CHANNELS = 1; // default is mono recording |
| -const uint32_t N_PLAY_CHANNELS = 1; // default is mono playout |
| -const uint32_t N_DEVICE_CHANNELS = 8; |
| +const uint32_t N_REC_SAMPLES_PER_SEC = 44100; |
| +const uint32_t N_PLAY_SAMPLES_PER_SEC = 44100; |
| const uint32_t ENGINE_REC_BUF_SIZE_IN_SAMPLES = (N_REC_SAMPLES_PER_SEC / 100); |
| const uint32_t ENGINE_PLAY_BUF_SIZE_IN_SAMPLES = (N_PLAY_SAMPLES_PER_SEC / 100); |
| @@ -31,137 +28,47 @@ const uint32_t ENGINE_PLAY_BUF_SIZE_IN_SAMPLES = (N_PLAY_SAMPLES_PER_SEC / 100); |
| // Number of 10 ms recording blocks in recording buffer |
| const uint16_t N_REC_BUFFERS = 20; |
| -class AudioDeviceIOS : public AudioDeviceGeneric { |
| +class AudioDeviceIOS : public AudioDeviceNotImplementedIOS { |
| public: |
| - AudioDeviceIOS(const int32_t id); |
| + AudioDeviceIOS(); |
| ~AudioDeviceIOS(); |
| - // Retrieve the currently utilized audio layer |
| - virtual int32_t ActiveAudioLayer( |
| - AudioDeviceModule::AudioLayer& audioLayer) const; |
| - |
| - // Main initializaton and termination |
| - virtual int32_t Init(); |
| - virtual int32_t Terminate(); |
| - virtual bool Initialized() const; |
| - |
| - // Device enumeration |
| - virtual int16_t PlayoutDevices(); |
| - virtual int16_t RecordingDevices(); |
| - virtual int32_t PlayoutDeviceName(uint16_t index, |
| - char name[kAdmMaxDeviceNameSize], |
| - char guid[kAdmMaxGuidSize]); |
| - virtual int32_t RecordingDeviceName(uint16_t index, |
| - char name[kAdmMaxDeviceNameSize], |
| - char guid[kAdmMaxGuidSize]); |
| - |
| - // Device selection |
| - virtual int32_t SetPlayoutDevice(uint16_t index); |
| - virtual int32_t SetPlayoutDevice(AudioDeviceModule::WindowsDeviceType device); |
| - virtual int32_t SetRecordingDevice(uint16_t index); |
| - virtual int32_t SetRecordingDevice( |
| - AudioDeviceModule::WindowsDeviceType device); |
| - |
| - // Audio transport initialization |
| - virtual int32_t PlayoutIsAvailable(bool& available); |
| - virtual int32_t InitPlayout(); |
| - virtual bool PlayoutIsInitialized() const; |
| - virtual int32_t RecordingIsAvailable(bool& available); |
| - virtual int32_t InitRecording(); |
| - virtual bool RecordingIsInitialized() const; |
| - |
| - // Audio transport control |
| - virtual int32_t StartPlayout(); |
| - virtual int32_t StopPlayout(); |
| - virtual bool Playing() const; |
| - virtual int32_t StartRecording(); |
| - virtual int32_t StopRecording(); |
| - virtual bool Recording() const; |
| - |
| - // Microphone Automatic Gain Control (AGC) |
| - virtual int32_t SetAGC(bool enable); |
| - virtual bool AGC() const; |
| - |
| - // Volume control based on the Windows Wave API (Windows only) |
| - virtual int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight); |
| - virtual int32_t WaveOutVolume(uint16_t& volumeLeft, |
| - uint16_t& volumeRight) const; |
| - |
| - // Audio mixer initialization |
| - virtual int32_t InitSpeaker(); |
| - virtual bool SpeakerIsInitialized() const; |
| - virtual int32_t InitMicrophone(); |
| - virtual bool MicrophoneIsInitialized() const; |
| - |
| - // Speaker volume controls |
| - virtual int32_t SpeakerVolumeIsAvailable(bool& available); |
| - virtual int32_t SetSpeakerVolume(uint32_t volume); |
| - virtual int32_t SpeakerVolume(uint32_t& volume) const; |
| - virtual int32_t MaxSpeakerVolume(uint32_t& maxVolume) const; |
| - virtual int32_t MinSpeakerVolume(uint32_t& minVolume) const; |
| - virtual int32_t SpeakerVolumeStepSize(uint16_t& stepSize) const; |
| - |
| - // Microphone volume controls |
| - virtual int32_t MicrophoneVolumeIsAvailable(bool& available); |
| - virtual int32_t SetMicrophoneVolume(uint32_t volume); |
| - virtual int32_t MicrophoneVolume(uint32_t& volume) const; |
| - virtual int32_t MaxMicrophoneVolume(uint32_t& maxVolume) const; |
| - virtual int32_t MinMicrophoneVolume(uint32_t& minVolume) const; |
| - virtual int32_t MicrophoneVolumeStepSize(uint16_t& stepSize) const; |
| - |
| - // Microphone mute control |
| - virtual int32_t MicrophoneMuteIsAvailable(bool& available); |
| - virtual int32_t SetMicrophoneMute(bool enable); |
| - virtual int32_t MicrophoneMute(bool& enabled) const; |
| - |
| - // Speaker mute control |
| - virtual int32_t SpeakerMuteIsAvailable(bool& available); |
| - virtual int32_t SetSpeakerMute(bool enable); |
| - virtual int32_t SpeakerMute(bool& enabled) const; |
| - |
| - // Microphone boost control |
| - virtual int32_t MicrophoneBoostIsAvailable(bool& available); |
| - virtual int32_t SetMicrophoneBoost(bool enable); |
| - virtual int32_t MicrophoneBoost(bool& enabled) const; |
| - |
| - // Stereo support |
| - virtual int32_t StereoPlayoutIsAvailable(bool& available); |
| - virtual int32_t SetStereoPlayout(bool enable); |
| - virtual int32_t StereoPlayout(bool& enabled) const; |
| - virtual int32_t StereoRecordingIsAvailable(bool& available); |
| - virtual int32_t SetStereoRecording(bool enable); |
| - virtual int32_t StereoRecording(bool& enabled) const; |
| - |
| - // Delay information and control |
| - virtual int32_t SetPlayoutBuffer(const AudioDeviceModule::BufferType type, |
| - uint16_t sizeMS); |
| - virtual int32_t PlayoutBuffer(AudioDeviceModule::BufferType& type, |
| - uint16_t& sizeMS) const; |
| - virtual int32_t PlayoutDelay(uint16_t& delayMS) const; |
| - virtual int32_t RecordingDelay(uint16_t& delayMS) const; |
| - |
| - // CPU load |
| - virtual int32_t CPULoad(uint16_t& load) const; |
| + void AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) override; |
| - public: |
| - virtual bool PlayoutWarning() const; |
| - virtual bool PlayoutError() const; |
| - virtual bool RecordingWarning() const; |
| - virtual bool RecordingError() const; |
| - virtual void ClearPlayoutWarning(); |
| - virtual void ClearPlayoutError(); |
| - virtual void ClearRecordingWarning(); |
| - virtual void ClearRecordingError(); |
| + int32_t Init() override; |
| + int32_t Terminate() override; |
| + bool Initialized() const override { return _initialized; } |
| - public: |
| - virtual void AttachAudioBuffer(AudioDeviceBuffer* audioBuffer); |
| + int32_t InitPlayout() override; |
| + bool PlayoutIsInitialized() const override { return _playIsInitialized; } |
| + |
| + int32_t InitRecording() override; |
| + bool RecordingIsInitialized() const override { return _recIsInitialized; } |
| + |
| + int32_t StartPlayout() override; |
| + int32_t StopPlayout() override; |
| + bool Playing() const override { return _playing; } |
| + |
| + int32_t StartRecording() override; |
| + int32_t StopRecording() override; |
| + bool Recording() const override { return _recording; } |
| + |
| + int32_t SetLoudspeakerStatus(bool enable) override; |
| + int32_t GetLoudspeakerStatus(bool& enabled) const override; |
| + |
| + // TODO(henrika): investigate if we can reduce the complexity here. |
| + // Do we even need delay estimates? |
| + int32_t PlayoutDelay(uint16_t& delayMS) const override; |
| + int32_t RecordingDelay(uint16_t& delayMS) const override; |
| + |
| + int32_t PlayoutBuffer(AudioDeviceModule::BufferType& type, |
| + uint16_t& sizeMS) const override; |
| - // Reset Audio Device (for mobile devices only) |
| - virtual int32_t ResetAudioDevice(); |
| + // These methods are unique for the iOS implementation. |
| - // enable or disable loud speaker (for iphone only) |
| - virtual int32_t SetLoudspeakerStatus(bool enable); |
| - virtual int32_t GetLoudspeakerStatus(bool& enabled) const; |
| + // Native audio parameters stored during construction. |
| + int GetPlayoutAudioParameters(AudioParameters* params) const override; |
| + int GetRecordAudioParameters(AudioParameters* params) const override; |
| private: |
| void Lock() { |
| @@ -172,10 +79,6 @@ class AudioDeviceIOS : public AudioDeviceGeneric { |
| _critSect.Leave(); |
| } |
| - int32_t Id() { |
| - return _id; |
| - } |
| - |
| // Init and shutdown |
| int32_t InitPlayOrRecord(); |
| int32_t ShutdownPlayOrRecord(); |
| @@ -209,18 +112,24 @@ class AudioDeviceIOS : public AudioDeviceGeneric { |
| bool CaptureWorkerThread(); |
| private: |
| - AudioDeviceBuffer* _ptrAudioBuffer; |
| + rtc::ThreadChecker thread_checker_; |
| + |
| + // Raw pointer handle provided to us in AttachAudioBuffer(). Owned by the |
| + // AudioDeviceModuleImpl class and called by AudioDeviceModuleImpl::Create(). |
| + // The AudioDeviceBuffer is a member of the AudioDeviceModuleImpl instance |
| + // and therefore outlives this object. |
| + AudioDeviceBuffer* audio_device_buffer_; |
| CriticalSectionWrapper& _critSect; |
| - rtc::scoped_ptr<ThreadWrapper> _captureWorkerThread; |
| + AudioParameters playout_parameters_; |
| + AudioParameters record_parameters_; |
| - int32_t _id; |
| + rtc::scoped_ptr<ThreadWrapper> _captureWorkerThread; |
| AudioUnit _auVoiceProcessing; |
| void* _audioInterruptionObserver; |
| - private: |
| bool _initialized; |
| bool _isShutDown; |
| bool _recording; |
| @@ -228,15 +137,8 @@ class AudioDeviceIOS : public AudioDeviceGeneric { |
| bool _recIsInitialized; |
| bool _playIsInitialized; |
| - bool _recordingDeviceIsSpecified; |
| - bool _playoutDeviceIsSpecified; |
| - bool _micIsInitialized; |
| - bool _speakerIsInitialized; |
| - |
| - bool _AGC; |
| - |
| // The sampling rate to use with Audio Device Buffer |
| - uint32_t _adbSampFreq; |
| + int _adbSampFreq; |
| // Delay calculation |
| uint32_t _recordingDelay; |
| @@ -245,12 +147,6 @@ class AudioDeviceIOS : public AudioDeviceGeneric { |
| uint32_t _recordingDelayHWAndOS; |
| uint32_t _recordingDelayMeasurementCounter; |
| - // Errors and warnings count |
| - uint16_t _playWarning; |
| - uint16_t _playError; |
| - uint16_t _recWarning; |
| - uint16_t _recError; |
| - |
| // Playout buffer, needed for 44.0 / 44.1 kHz mismatch |
| int16_t _playoutBuffer[ENGINE_PLAY_BUF_SIZE_IN_SAMPLES]; |
| uint32_t _playoutBufferUsed; // How much is filled |