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

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

Issue 1379583002: Objective-C++ style guide changes for iOS ADM (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: More changes Created 5 years, 3 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/modules/audio_device/ios/audio_device_ios.mm
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.mm b/webrtc/modules/audio_device/ios/audio_device_ios.mm
index b134143fa9f387183642e0231752a66ecf32c466..355013c8bb93429d74d7b0a8f11be64c29cfd333 100644
--- a/webrtc/modules/audio_device/ios/audio_device_ios.mm
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.mm
@@ -177,34 +177,34 @@ static void LogDeviceInfo() {
#endif // !defined(NDEBUG)
AudioDeviceIOS::AudioDeviceIOS()
- : _audioDeviceBuffer(nullptr),
- _vpioUnit(nullptr),
- _recording(0),
- _playing(0),
- _initialized(false),
- _recIsInitialized(false),
- _playIsInitialized(false),
- _audioInterruptionObserver(nullptr) {
+ : audio_device_buffer_(nullptr),
+ vpio_unit_(nullptr),
+ recording_(0),
+ playing_(0),
+ initialized_(false),
+ rec_is_initialized_(false),
+ play_is_initialized_(false),
+ audio_interruption_observer_(nullptr) {
LOGI() << "ctor" << ios::GetCurrentThreadDescription();
}
AudioDeviceIOS::~AudioDeviceIOS() {
LOGI() << "~dtor";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
Terminate();
}
void AudioDeviceIOS::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) {
LOGI() << "AttachAudioBuffer";
RTC_DCHECK(audioBuffer);
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- _audioDeviceBuffer = audioBuffer;
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ audio_device_buffer_ = audioBuffer;
}
int32_t AudioDeviceIOS::Init() {
LOGI() << "Init";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- if (_initialized) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ if (initialized_) {
return 0;
}
#if !defined(NDEBUG)
@@ -214,119 +214,119 @@ int32_t AudioDeviceIOS::Init() {
// here. They have not been set and confirmed yet since ActivateAudioSession()
// is not called until audio is about to start. However, it makes sense to
// store the parameters now and then verify at a later stage.
- _playoutParameters.reset(kPreferredSampleRate, kPreferredNumberOfChannels);
- _recordParameters.reset(kPreferredSampleRate, kPreferredNumberOfChannels);
+ playout_parameters_.reset(kPreferredSampleRate, kPreferredNumberOfChannels);
+ record_parameters_.reset(kPreferredSampleRate, kPreferredNumberOfChannels);
// Ensure that the audio device buffer (ADB) knows about the internal audio
// parameters. Note that, even if we are unable to get a mono audio session,
// we will always tell the I/O audio unit to do a channel format conversion
// to guarantee mono on the "input side" of the audio unit.
UpdateAudioDeviceBuffer();
- _initialized = true;
+ initialized_ = true;
return 0;
}
int32_t AudioDeviceIOS::Terminate() {
LOGI() << "Terminate";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- if (!_initialized) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ if (!initialized_) {
return 0;
}
ShutdownPlayOrRecord();
- _initialized = false;
+ initialized_ = false;
return 0;
}
int32_t AudioDeviceIOS::InitPlayout() {
LOGI() << "InitPlayout";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- RTC_DCHECK(_initialized);
- RTC_DCHECK(!_playIsInitialized);
- RTC_DCHECK(!_playing);
- if (!_recIsInitialized) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK(initialized_);
+ RTC_DCHECK(!play_is_initialized_);
+ RTC_DCHECK(!playing_);
+ if (!rec_is_initialized_) {
if (!InitPlayOrRecord()) {
LOG_F(LS_ERROR) << "InitPlayOrRecord failed!";
return -1;
}
}
- _playIsInitialized = true;
+ play_is_initialized_ = true;
return 0;
}
int32_t AudioDeviceIOS::InitRecording() {
LOGI() << "InitRecording";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- RTC_DCHECK(_initialized);
- RTC_DCHECK(!_recIsInitialized);
- RTC_DCHECK(!_recording);
- if (!_playIsInitialized) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK(initialized_);
+ RTC_DCHECK(!rec_is_initialized_);
+ RTC_DCHECK(!recording_);
+ if (!play_is_initialized_) {
if (!InitPlayOrRecord()) {
LOG_F(LS_ERROR) << "InitPlayOrRecord failed!";
return -1;
}
}
- _recIsInitialized = true;
+ rec_is_initialized_ = true;
return 0;
}
int32_t AudioDeviceIOS::StartPlayout() {
LOGI() << "StartPlayout";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- RTC_DCHECK(_playIsInitialized);
- RTC_DCHECK(!_playing);
- _fineAudioBuffer->ResetPlayout();
- if (!_recording) {
- OSStatus result = AudioOutputUnitStart(_vpioUnit);
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK(play_is_initialized_);
+ RTC_DCHECK(!playing_);
+ fine_audio_buffer_->ResetPlayout();
+ if (!recording_) {
+ OSStatus result = AudioOutputUnitStart(vpio_unit_);
if (result != noErr) {
LOG_F(LS_ERROR) << "AudioOutputUnitStart failed: " << result;
return -1;
}
}
- rtc::AtomicOps::ReleaseStore(&_playing, 1);
+ rtc::AtomicOps::ReleaseStore(&playing_, 1);
return 0;
}
int32_t AudioDeviceIOS::StopPlayout() {
LOGI() << "StopPlayout";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- if (!_playIsInitialized || !_playing) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ if (!play_is_initialized_ || !playing_) {
return 0;
}
- if (!_recording) {
+ if (!recording_) {
ShutdownPlayOrRecord();
}
- _playIsInitialized = false;
- rtc::AtomicOps::ReleaseStore(&_playing, 0);
+ play_is_initialized_ = false;
+ rtc::AtomicOps::ReleaseStore(&playing_, 0);
return 0;
}
int32_t AudioDeviceIOS::StartRecording() {
LOGI() << "StartRecording";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- RTC_DCHECK(_recIsInitialized);
- RTC_DCHECK(!_recording);
- _fineAudioBuffer->ResetRecord();
- if (!_playing) {
- OSStatus result = AudioOutputUnitStart(_vpioUnit);
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ RTC_DCHECK(rec_is_initialized_);
+ RTC_DCHECK(!recording_);
+ fine_audio_buffer_->ResetRecord();
+ if (!playing_) {
+ OSStatus result = AudioOutputUnitStart(vpio_unit_);
if (result != noErr) {
LOG_F(LS_ERROR) << "AudioOutputUnitStart failed: " << result;
return -1;
}
}
- rtc::AtomicOps::ReleaseStore(&_recording, 1);
+ rtc::AtomicOps::ReleaseStore(&recording_, 1);
return 0;
}
int32_t AudioDeviceIOS::StopRecording() {
LOGI() << "StopRecording";
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- if (!_recIsInitialized || !_recording) {
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ if (!rec_is_initialized_ || !recording_) {
return 0;
}
- if (!_playing) {
+ if (!playing_) {
ShutdownPlayOrRecord();
}
- _recIsInitialized = false;
- rtc::AtomicOps::ReleaseStore(&_recording, 0);
+ rec_is_initialized_ = false;
+ rtc::AtomicOps::ReleaseStore(&recording_, 0);
return 0;
}
@@ -377,17 +377,17 @@ int32_t AudioDeviceIOS::RecordingDelay(uint16_t& delayMS) const {
int AudioDeviceIOS::GetPlayoutAudioParameters(AudioParameters* params) const {
LOGI() << "GetPlayoutAudioParameters";
- RTC_DCHECK(_playoutParameters.is_valid());
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- *params = _playoutParameters;
+ RTC_DCHECK(playout_parameters_.is_valid());
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ *params = playout_parameters_;
return 0;
}
int AudioDeviceIOS::GetRecordAudioParameters(AudioParameters* params) const {
LOGI() << "GetRecordAudioParameters";
- RTC_DCHECK(_recordParameters.is_valid());
- RTC_DCHECK(_threadChecker.CalledOnValidThread());
- *params = _recordParameters;
+ RTC_DCHECK(record_parameters_.is_valid());
+ RTC_DCHECK(thread_checker_.CalledOnValidThread());
+ *params = record_parameters_;
return 0;
}
@@ -395,12 +395,13 @@ void AudioDeviceIOS::UpdateAudioDeviceBuffer() {
LOGI() << "UpdateAudioDevicebuffer";
// AttachAudioBuffer() is called at construction by the main class but check
// just in case.
- RTC_DCHECK(_audioDeviceBuffer) << "AttachAudioBuffer must be called first";
+ RTC_DCHECK(audio_device_buffer_) << "AttachAudioBuffer must be called first";
// Inform the audio device buffer (ADB) about the new audio format.
- _audioDeviceBuffer->SetPlayoutSampleRate(_playoutParameters.sample_rate());
- _audioDeviceBuffer->SetPlayoutChannels(_playoutParameters.channels());
- _audioDeviceBuffer->SetRecordingSampleRate(_recordParameters.sample_rate());
- _audioDeviceBuffer->SetRecordingChannels(_recordParameters.channels());
+ audio_device_buffer_->SetPlayoutSampleRate(playout_parameters_.sample_rate());
+ audio_device_buffer_->SetPlayoutChannels(playout_parameters_.channels());
+ audio_device_buffer_->SetRecordingSampleRate(
+ record_parameters_.sample_rate());
+ audio_device_buffer_->SetRecordingChannels(record_parameters_.channels());
}
void AudioDeviceIOS::SetupAudioBuffersForActiveAudioSession() {
@@ -416,7 +417,7 @@ void AudioDeviceIOS::SetupAudioBuffersForActiveAudioSession() {
// Log a warning message for the case when we are unable to set the preferred
// hardware sample rate but continue and use the non-ideal sample rate after
// reinitializing the audio parameters.
- if (session.sampleRate != _playoutParameters.sample_rate()) {
+ if (session.sampleRate != playout_parameters_.sample_rate()) {
LOG(LS_WARNING)
<< "Failed to enable an audio session with the preferred sample rate!";
}
@@ -426,18 +427,18 @@ void AudioDeviceIOS::SetupAudioBuffersForActiveAudioSession() {
// number of audio frames.
// Example: IO buffer size = 0.008 seconds <=> 128 audio frames at 16kHz.
// Hence, 128 is the size we expect to see in upcoming render callbacks.
- _playoutParameters.reset(session.sampleRate, _playoutParameters.channels(),
+ playout_parameters_.reset(session.sampleRate, playout_parameters_.channels(),
+ session.IOBufferDuration);
+ RTC_DCHECK(playout_parameters_.is_complete());
+ record_parameters_.reset(session.sampleRate, record_parameters_.channels(),
session.IOBufferDuration);
- RTC_DCHECK(_playoutParameters.is_complete());
- _recordParameters.reset(session.sampleRate, _recordParameters.channels(),
- session.IOBufferDuration);
- RTC_DCHECK(_recordParameters.is_complete());
+ RTC_DCHECK(record_parameters_.is_complete());
LOG(LS_INFO) << " frames per I/O buffer: "
- << _playoutParameters.frames_per_buffer();
+ << playout_parameters_.frames_per_buffer();
LOG(LS_INFO) << " bytes per I/O buffer: "
- << _playoutParameters.GetBytesPerBuffer();
- RTC_DCHECK_EQ(_playoutParameters.GetBytesPerBuffer(),
- _recordParameters.GetBytesPerBuffer());
+ << playout_parameters_.GetBytesPerBuffer();
+ RTC_DCHECK_EQ(playout_parameters_.GetBytesPerBuffer(),
+ record_parameters_.GetBytesPerBuffer());
// Update the ADB parameters since the sample rate might have changed.
UpdateAudioDeviceBuffer();
@@ -445,71 +446,71 @@ void AudioDeviceIOS::SetupAudioBuffersForActiveAudioSession() {
// Create a modified audio buffer class which allows us to ask for,
// or deliver, any number of samples (and not only multiple of 10ms) to match
// the native audio unit buffer size.
- RTC_DCHECK(_audioDeviceBuffer);
- _fineAudioBuffer.reset(new FineAudioBuffer(
- _audioDeviceBuffer, _playoutParameters.GetBytesPerBuffer(),
- _playoutParameters.sample_rate()));
+ RTC_DCHECK(audio_device_buffer_);
+ fine_audio_buffer_.reset(new FineAudioBuffer(
+ audio_device_buffer_, playout_parameters_.GetBytesPerBuffer(),
+ playout_parameters_.sample_rate()));
// The extra/temporary playoutbuffer must be of this size to avoid
// unnecessary memcpy while caching data between successive callbacks.
- const int requiredPlayoutBufferSize =
- _fineAudioBuffer->RequiredPlayoutBufferSizeBytes();
+ const int required_playout_buffer_size =
+ fine_audio_buffer_->RequiredPlayoutBufferSizeBytes();
LOG(LS_INFO) << " required playout buffer size: "
- << requiredPlayoutBufferSize;
- _playoutAudioBuffer.reset(new SInt8[requiredPlayoutBufferSize]);
+ << required_playout_buffer_size;
+ playout_audio_buffer_.reset(new SInt8[required_playout_buffer_size]);
// Allocate AudioBuffers to be used as storage for the received audio.
// The AudioBufferList structure works as a placeholder for the
// AudioBuffer structure, which holds a pointer to the actual data buffer
- // in |_recordAudioBuffer|. Recorded audio will be rendered into this memory
+ // in |record_audio_buffer_|. Recorded audio will be rendered into this memory
// at each input callback when calling AudioUnitRender().
- const int dataByteSize = _recordParameters.GetBytesPerBuffer();
- _recordAudioBuffer.reset(new SInt8[dataByteSize]);
- _audioRecordBufferList.mNumberBuffers = 1;
- AudioBuffer* audioBuffer = &_audioRecordBufferList.mBuffers[0];
- audioBuffer->mNumberChannels = _recordParameters.channels();
- audioBuffer->mDataByteSize = dataByteSize;
- audioBuffer->mData = _recordAudioBuffer.get();
+ const int data_byte_size = record_parameters_.GetBytesPerBuffer();
+ record_audio_buffer_.reset(new SInt8[data_byte_size]);
+ audio_record_buffer_list_.mNumberBuffers = 1;
+ AudioBuffer* audioBuffer = &audio_record_buffer_list_.mBuffers[0];
tkchin_webrtc 2015/10/01 00:37:35 audio_buffer
henrika_webrtc 2015/10/01 10:39:05 Thanks.
+ audioBuffer->mNumberChannels = record_parameters_.channels();
+ audioBuffer->mDataByteSize = data_byte_size;
+ audioBuffer->mData = record_audio_buffer_.get();
}
bool AudioDeviceIOS::SetupAndInitializeVoiceProcessingAudioUnit() {
LOGI() << "SetupAndInitializeVoiceProcessingAudioUnit";
- RTC_DCHECK(!_vpioUnit);
+ RTC_DCHECK(!vpio_unit_);
// Create an audio component description to identify the Voice-Processing
// I/O audio unit.
- AudioComponentDescription vpioUnitDescription;
- vpioUnitDescription.componentType = kAudioUnitType_Output;
- vpioUnitDescription.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
- vpioUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
- vpioUnitDescription.componentFlags = 0;
- vpioUnitDescription.componentFlagsMask = 0;
+ AudioComponentDescription vpio_unit_description;
+ vpio_unit_description.componentType = kAudioUnitType_Output;
+ vpio_unit_description.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
+ vpio_unit_description.componentManufacturer = kAudioUnitManufacturer_Apple;
+ vpio_unit_description.componentFlags = 0;
+ vpio_unit_description.componentFlagsMask = 0;
// Obtain an audio unit instance given the description.
- AudioComponent foundVpioUnitRef =
- AudioComponentFindNext(nullptr, &vpioUnitDescription);
+ AudioComponent found_vpio_unit_ref =
+ AudioComponentFindNext(nullptr, &vpio_unit_description);
// Create a Voice-Processing IO audio unit.
LOG_AND_RETURN_IF_ERROR(
- AudioComponentInstanceNew(foundVpioUnitRef, &_vpioUnit),
+ AudioComponentInstanceNew(found_vpio_unit_ref, &vpio_unit_),
"Failed to create a VoiceProcessingIO audio unit");
// A VP I/O unit's bus 1 connects to input hardware (microphone). Enable
// input on the input scope of the input element.
- AudioUnitElement inputBus = 1;
- UInt32 enableInput = 1;
+ AudioUnitElement input_bus = 1;
+ UInt32 enable_input = 1;
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioOutputUnitProperty_EnableIO,
- kAudioUnitScope_Input, inputBus, &enableInput,
- sizeof(enableInput)),
+ AudioUnitSetProperty(vpio_unit_, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Input, input_bus, &enable_input,
+ sizeof(enable_input)),
"Failed to enable input on input scope of input element");
// A VP I/O unit's bus 0 connects to output hardware (speaker). Enable
// output on the output scope of the output element.
- AudioUnitElement outputBus = 0;
- UInt32 enableOutput = 1;
+ AudioUnitElement output_bus = 0;
+ UInt32 enable_output = 1;
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioOutputUnitProperty_EnableIO,
- kAudioUnitScope_Output, outputBus, &enableOutput,
- sizeof(enableOutput)),
+ AudioUnitSetProperty(vpio_unit_, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Output, output_bus, &enable_output,
+ sizeof(enable_output)),
"Failed to enable output on output scope of output element");
// Set the application formats for input and output:
@@ -517,72 +518,73 @@ bool AudioDeviceIOS::SetupAndInitializeVoiceProcessingAudioUnit() {
// - avoid resampling in the I/O unit by using the hardware sample rate
// - linear PCM => noncompressed audio data format with one frame per packet
// - no need to specify interleaving since only mono is supported
- AudioStreamBasicDescription applicationFormat = {0};
- UInt32 size = sizeof(applicationFormat);
- RTC_DCHECK_EQ(_playoutParameters.sample_rate(),
- _recordParameters.sample_rate());
+ AudioStreamBasicDescription application_format = {0};
+ UInt32 size = sizeof(application_format);
+ RTC_DCHECK_EQ(playout_parameters_.sample_rate(),
+ record_parameters_.sample_rate());
RTC_DCHECK_EQ(1, kPreferredNumberOfChannels);
- applicationFormat.mSampleRate = _playoutParameters.sample_rate();
- applicationFormat.mFormatID = kAudioFormatLinearPCM;
- applicationFormat.mFormatFlags =
+ application_format.mSampleRate = playout_parameters_.sample_rate();
+ application_format.mFormatID = kAudioFormatLinearPCM;
+ application_format.mFormatFlags =
kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
- applicationFormat.mBytesPerPacket = kBytesPerSample;
- applicationFormat.mFramesPerPacket = 1; // uncompressed
- applicationFormat.mBytesPerFrame = kBytesPerSample;
- applicationFormat.mChannelsPerFrame = kPreferredNumberOfChannels;
- applicationFormat.mBitsPerChannel = 8 * kBytesPerSample;
+ application_format.mBytesPerPacket = kBytesPerSample;
+ application_format.mFramesPerPacket = 1; // uncompressed
+ application_format.mBytesPerFrame = kBytesPerSample;
+ application_format.mChannelsPerFrame = kPreferredNumberOfChannels;
+ application_format.mBitsPerChannel = 8 * kBytesPerSample;
#if !defined(NDEBUG)
- LogABSD(applicationFormat);
+ LogABSD(application_format);
#endif
// Set the application format on the output scope of the input element/bus.
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioUnitProperty_StreamFormat,
- kAudioUnitScope_Output, inputBus, &applicationFormat,
- size),
+ AudioUnitSetProperty(vpio_unit_, kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Output, input_bus,
+ &application_format, size),
"Failed to set application format on output scope of input element");
// Set the application format on the input scope of the output element/bus.
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioUnitProperty_StreamFormat,
- kAudioUnitScope_Input, outputBus, &applicationFormat,
- size),
+ AudioUnitSetProperty(vpio_unit_, kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Input, output_bus,
+ &application_format, size),
"Failed to set application format on input scope of output element");
// Specify the callback function that provides audio samples to the audio
// unit.
- AURenderCallbackStruct renderCallback;
- renderCallback.inputProc = GetPlayoutData;
- renderCallback.inputProcRefCon = this;
+ AURenderCallbackStruct render_callback;
+ render_callback.inputProc = GetPlayoutData;
+ render_callback.inputProcRefCon = this;
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioUnitProperty_SetRenderCallback,
- kAudioUnitScope_Input, outputBus, &renderCallback,
- sizeof(renderCallback)),
+ AudioUnitSetProperty(vpio_unit_, kAudioUnitProperty_SetRenderCallback,
+ kAudioUnitScope_Input, output_bus, &render_callback,
+ sizeof(render_callback)),
"Failed to specify the render callback on the output element");
// Disable AU buffer allocation for the recorder, we allocate our own.
// TODO(henrika): not sure that it actually saves resource to make this call.
UInt32 flag = 0;
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioUnitProperty_ShouldAllocateBuffer,
- kAudioUnitScope_Output, inputBus, &flag,
+ AudioUnitSetProperty(vpio_unit_, kAudioUnitProperty_ShouldAllocateBuffer,
+ kAudioUnitScope_Output, input_bus, &flag,
sizeof(flag)),
"Failed to disable buffer allocation on the input element");
// Specify the callback to be called by the I/O thread to us when input audio
// is available. The recorded samples can then be obtained by calling the
// AudioUnitRender() method.
- AURenderCallbackStruct inputCallback;
- inputCallback.inputProc = RecordedDataIsAvailable;
- inputCallback.inputProcRefCon = this;
+ AURenderCallbackStruct input_callback;
+ input_callback.inputProc = RecordedDataIsAvailable;
+ input_callback.inputProcRefCon = this;
LOG_AND_RETURN_IF_ERROR(
- AudioUnitSetProperty(_vpioUnit, kAudioOutputUnitProperty_SetInputCallback,
- kAudioUnitScope_Global, inputBus, &inputCallback,
- sizeof(inputCallback)),
+ AudioUnitSetProperty(vpio_unit_,
+ kAudioOutputUnitProperty_SetInputCallback,
+ kAudioUnitScope_Global, input_bus, &input_callback,
+ sizeof(input_callback)),
"Failed to specify the input callback on the input element");
// Initialize the Voice-Processing I/O unit instance.
- LOG_AND_RETURN_IF_ERROR(AudioUnitInitialize(_vpioUnit),
+ LOG_AND_RETURN_IF_ERROR(AudioUnitInitialize(vpio_unit_),
"Failed to initialize the Voice-Processing I/O unit");
return true;
}
@@ -617,9 +619,8 @@ bool AudioDeviceIOS::InitPlayOrRecord() {
switch (type) {
case AVAudioSessionInterruptionTypeBegan:
// At this point our audio session has been deactivated and
- // the
- // audio unit render callbacks no longer occur. Nothing to
- // do.
+ // the audio unit render callbacks no longer occur.
+ // Nothing to do.
break;
case AVAudioSessionInterruptionTypeEnded: {
NSError* error = nil;
@@ -631,8 +632,8 @@ bool AudioDeviceIOS::InitPlayOrRecord() {
// Post interruption the audio unit render callbacks don't
// automatically continue, so we restart the unit manually
// here.
- AudioOutputUnitStop(_vpioUnit);
- AudioOutputUnitStart(_vpioUnit);
+ AudioOutputUnitStop(vpio_unit_);
+ AudioOutputUnitStart(vpio_unit_);
break;
}
}
@@ -640,32 +641,32 @@ bool AudioDeviceIOS::InitPlayOrRecord() {
// Increment refcount on observer using ARC bridge. Instance variable is a
// void* instead of an id because header is included in other pure C++
// files.
- _audioInterruptionObserver = (__bridge_retained void*)observer;
+ audio_interruption_observer_ = (__bridge_retained void*)observer;
return true;
}
bool AudioDeviceIOS::ShutdownPlayOrRecord() {
LOGI() << "ShutdownPlayOrRecord";
- if (_audioInterruptionObserver != nullptr) {
+ if (audio_interruption_observer_ != nullptr) {
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
// Transfer ownership of observer back to ARC, which will dealloc the
// observer once it exits this scope.
- id observer = (__bridge_transfer id)_audioInterruptionObserver;
+ id observer = (__bridge_transfer id)audio_interruption_observer_;
[center removeObserver:observer];
- _audioInterruptionObserver = nullptr;
+ audio_interruption_observer_ = nullptr;
}
// Close and delete the voice-processing I/O unit.
OSStatus result = -1;
- if (nullptr != _vpioUnit) {
- result = AudioOutputUnitStop(_vpioUnit);
+ if (nullptr != vpio_unit_) {
+ result = AudioOutputUnitStop(vpio_unit_);
if (result != noErr) {
LOG_F(LS_ERROR) << "AudioOutputUnitStop failed: " << result;
}
- result = AudioComponentInstanceDispose(_vpioUnit);
+ result = AudioComponentInstanceDispose(vpio_unit_);
if (result != noErr) {
LOG_F(LS_ERROR) << "AudioComponentInstanceDispose failed: " << result;
}
- _vpioUnit = nullptr;
+ vpio_unit_ = nullptr;
}
// All I/O should be stopped or paused prior to deactivating the audio
// session, hence we deactivate as last action.
@@ -675,36 +676,38 @@ bool AudioDeviceIOS::ShutdownPlayOrRecord() {
}
OSStatus AudioDeviceIOS::RecordedDataIsAvailable(
- void* inRefCon,
- AudioUnitRenderActionFlags* ioActionFlags,
- const AudioTimeStamp* inTimeStamp,
- UInt32 inBusNumber,
- UInt32 inNumberFrames,
- AudioBufferList* ioData) {
- RTC_DCHECK_EQ(1u, inBusNumber);
- RTC_DCHECK(!ioData); // no buffer should be allocated for input at this stage
- AudioDeviceIOS* audio_device_ios = static_cast<AudioDeviceIOS*>(inRefCon);
+ void* in_ref_con,
+ AudioUnitRenderActionFlags* io_action_flags,
+ const AudioTimeStamp* in_time_stamp,
+ UInt32 in_bus_number,
+ UInt32 in_number_frames,
+ AudioBufferList* io_data) {
+ RTC_DCHECK_EQ(1u, in_bus_number);
+ RTC_DCHECK(
+ !io_data); // no buffer should be allocated for input at this stage
+ AudioDeviceIOS* audio_device_ios = static_cast<AudioDeviceIOS*>(in_ref_con);
return audio_device_ios->OnRecordedDataIsAvailable(
- ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames);
+ io_action_flags, in_time_stamp, in_bus_number, in_number_frames);
}
OSStatus AudioDeviceIOS::OnRecordedDataIsAvailable(
- AudioUnitRenderActionFlags* ioActionFlags,
- const AudioTimeStamp* inTimeStamp,
- UInt32 inBusNumber,
- UInt32 inNumberFrames) {
- RTC_DCHECK_EQ(_recordParameters.frames_per_buffer(), inNumberFrames);
+ AudioUnitRenderActionFlags* io_action_flags,
+ const AudioTimeStamp* in_time_stamp,
+ UInt32 in_bus_number,
+ UInt32 in_number_frames) {
+ RTC_DCHECK_EQ(record_parameters_.frames_per_buffer(), in_number_frames);
OSStatus result = noErr;
// Simply return if recording is not enabled.
- if (!rtc::AtomicOps::AcquireLoad(&_recording))
+ if (!rtc::AtomicOps::AcquireLoad(&recording_))
return result;
+ RTC_DCHECK_EQ(record_parameters_.frames_per_buffer(), in_number_frames);
// Obtain the recorded audio samples by initiating a rendering cycle.
- // Since it happens on the input bus, the |ioData| parameter is a reference
+ // Since it happens on the input bus, the |io_data| parameter is a reference
// to the preallocated audio buffer list that the audio unit renders into.
// TODO(henrika): should error handling be improved?
- AudioBufferList* ioData = &_audioRecordBufferList;
- result = AudioUnitRender(_vpioUnit, ioActionFlags, inTimeStamp, inBusNumber,
- inNumberFrames, ioData);
+ AudioBufferList* io_data = &audio_record_buffer_list_;
+ result = AudioUnitRender(vpio_unit_, io_action_flags, in_time_stamp,
+ in_bus_number, in_number_frames, io_data);
if (result != noErr) {
LOG_F(LS_ERROR) << "AudioOutputUnitStart failed: " << result;
return result;
@@ -712,53 +715,53 @@ OSStatus AudioDeviceIOS::OnRecordedDataIsAvailable(
// Get a pointer to the recorded audio and send it to the WebRTC ADB.
// Use the FineAudioBuffer instance to convert between native buffer size
// and the 10ms buffer size used by WebRTC.
- const UInt32 dataSizeInBytes = ioData->mBuffers[0].mDataByteSize;
- RTC_CHECK_EQ(dataSizeInBytes / kBytesPerSample, inNumberFrames);
- SInt8* data = static_cast<SInt8*>(ioData->mBuffers[0].mData);
- _fineAudioBuffer->DeliverRecordedData(data, dataSizeInBytes,
- kFixedPlayoutDelayEstimate,
- kFixedRecordDelayEstimate);
+ const UInt32 dataSizeInBytes = io_data->mBuffers[0].mDataByteSize;
tkchin_webrtc 2015/10/01 00:37:35 data_size_in_bytes
+ RTC_CHECK_EQ(dataSizeInBytes / kBytesPerSample, in_number_frames);
+ SInt8* data = static_cast<SInt8*>(io_data->mBuffers[0].mData);
+ fine_audio_buffer_->DeliverRecordedData(data, dataSizeInBytes,
+ kFixedPlayoutDelayEstimate,
+ kFixedRecordDelayEstimate);
return noErr;
}
OSStatus AudioDeviceIOS::GetPlayoutData(
- void* inRefCon,
- AudioUnitRenderActionFlags* ioActionFlags,
- const AudioTimeStamp* inTimeStamp,
- UInt32 inBusNumber,
- UInt32 inNumberFrames,
- AudioBufferList* ioData) {
- RTC_DCHECK_EQ(0u, inBusNumber);
- RTC_DCHECK(ioData);
- AudioDeviceIOS* audio_device_ios = static_cast<AudioDeviceIOS*>(inRefCon);
- return audio_device_ios->OnGetPlayoutData(ioActionFlags, inNumberFrames,
- ioData);
+ void* in_ref_con,
+ AudioUnitRenderActionFlags* io_action_flags,
+ const AudioTimeStamp* in_time_stamp,
+ UInt32 in_bus_number,
+ UInt32 in_number_frames,
+ AudioBufferList* io_data) {
+ RTC_DCHECK_EQ(0u, in_bus_number);
+ RTC_DCHECK(io_data);
+ AudioDeviceIOS* audio_device_ios = static_cast<AudioDeviceIOS*>(in_ref_con);
+ return audio_device_ios->OnGetPlayoutData(io_action_flags, in_number_frames,
+ io_data);
}
OSStatus AudioDeviceIOS::OnGetPlayoutData(
- AudioUnitRenderActionFlags* ioActionFlags,
- UInt32 inNumberFrames,
- AudioBufferList* ioData) {
+ AudioUnitRenderActionFlags* io_action_flags,
+ UInt32 in_number_frames,
+ AudioBufferList* io_data) {
// Verify 16-bit, noninterleaved mono PCM signal format.
- RTC_DCHECK_EQ(1u, ioData->mNumberBuffers);
- RTC_DCHECK_EQ(1u, ioData->mBuffers[0].mNumberChannels);
+ RTC_DCHECK_EQ(1u, io_data->mNumberBuffers);
+ RTC_DCHECK_EQ(1u, io_data->mBuffers[0].mNumberChannels);
// Get pointer to internal audio buffer to which new audio data shall be
// written.
- const UInt32 dataSizeInBytes = ioData->mBuffers[0].mDataByteSize;
- RTC_CHECK_EQ(dataSizeInBytes / kBytesPerSample, inNumberFrames);
- SInt8* destination = static_cast<SInt8*>(ioData->mBuffers[0].mData);
+ const UInt32 dataSizeInBytes = io_data->mBuffers[0].mDataByteSize;
+ RTC_CHECK_EQ(dataSizeInBytes / kBytesPerSample, in_number_frames);
+ SInt8* destination = static_cast<SInt8*>(io_data->mBuffers[0].mData);
// Produce silence and give audio unit a hint about it if playout is not
// activated.
- if (!rtc::AtomicOps::AcquireLoad(&_playing)) {
- *ioActionFlags |= kAudioUnitRenderAction_OutputIsSilence;
+ if (!rtc::AtomicOps::AcquireLoad(&playing_)) {
+ *io_action_flags |= kAudioUnitRenderAction_OutputIsSilence;
memset(destination, 0, dataSizeInBytes);
return noErr;
}
// Read decoded 16-bit PCM samples from WebRTC (using a size that matches
// the native I/O audio unit) to a preallocated intermediate buffer and
- // copy the result to the audio buffer in the |ioData| destination.
- SInt8* source = _playoutAudioBuffer.get();
- _fineAudioBuffer->GetPlayoutData(source);
+ // copy the result to the audio buffer in the |io_data| destination.
+ SInt8* source = playout_audio_buffer_.get();
+ fine_audio_buffer_->GetPlayoutData(source);
memcpy(destination, source, dataSizeInBytes);
return noErr;
}

Powered by Google App Engine
This is Rietveld 408576698