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

Unified Diff: media/audio/mac/audio_auhal_mac.cc

Issue 290003002: Remove OnMoreIOData() (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fixed the media unittests on mac. Created 6 years, 7 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 | « media/audio/mac/audio_auhal_mac.h ('k') | media/audio/mac/audio_auhal_mac_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/mac/audio_auhal_mac.cc
diff --git a/media/audio/mac/audio_auhal_mac.cc b/media/audio/mac/audio_auhal_mac.cc
index 0e13ab56ba08a33da1cc4fad0e6006982597fff2..41fc57c553f8d0ba8a4b0a48000cedb10c01b49a 100644
--- a/media/audio/mac/audio_auhal_mac.cc
+++ b/media/audio/mac/audio_auhal_mac.cc
@@ -18,14 +18,6 @@
namespace media {
-static void ZeroBufferList(AudioBufferList* buffer_list) {
- for (size_t i = 0; i < buffer_list->mNumberBuffers; ++i) {
- memset(buffer_list->mBuffers[i].mData,
- 0,
- buffer_list->mBuffers[i].mDataByteSize);
- }
-}
-
static void WrapBufferList(AudioBufferList* buffer_list,
AudioBus* bus,
int frames) {
@@ -51,7 +43,6 @@ AUHALStream::AUHALStream(
AudioDeviceID device)
: manager_(manager),
params_(params),
- input_channels_(params_.input_channels()),
output_channels_(params_.channels()),
number_of_frames_(params_.frames_per_buffer()),
source_(NULL),
@@ -60,14 +51,12 @@ AUHALStream::AUHALStream(
volume_(1),
hardware_latency_frames_(0),
stopped_(false),
- input_buffer_list_(NULL),
current_hardware_pending_bytes_(0) {
// We must have a manager.
DCHECK(manager_);
VLOG(1) << "AUHALStream::AUHALStream()";
VLOG(1) << "Device: " << device;
- VLOG(1) << "Input channels: " << input_channels_;
VLOG(1) << "Output channels: " << output_channels_;
VLOG(1) << "Sample rate: " << params_.sample_rate();
VLOG(1) << "Buffer size: " << number_of_frames_;
@@ -77,27 +66,15 @@ AUHALStream::~AUHALStream() {
}
bool AUHALStream::Open() {
- // Get the total number of input and output channels that the
+ // Get the total number of output channels that the
// hardware supports.
- int device_input_channels;
- bool got_input_channels = AudioManagerMac::GetDeviceChannels(
- device_,
- kAudioDevicePropertyScopeInput,
- &device_input_channels);
-
int device_output_channels;
bool got_output_channels = AudioManagerMac::GetDeviceChannels(
device_,
kAudioDevicePropertyScopeOutput,
&device_output_channels);
- // Sanity check the requested I/O channels.
- if (!got_input_channels ||
- input_channels_ < 0 || input_channels_ > device_input_channels) {
- LOG(ERROR) << "AudioDevice does not support requested input channels.";
- return false;
- }
-
+ // Sanity check the requested output channels.
if (!got_output_channels ||
output_channels_ <= 0 || output_channels_ > device_output_channels) {
LOG(ERROR) << "AudioDevice does not support requested output channels.";
@@ -113,7 +90,10 @@ bool AUHALStream::Open() {
return false;
}
- CreateIOBusses();
+ // The output bus will wrap the AudioBufferList given to us in
+ // the Render() callback.
+ DCHECK_GT(output_channels_, 0);
+ output_bus_ = AudioBus::CreateWrapper(output_channels_);
bool configured = ConfigureAUHAL();
if (configured)
@@ -123,13 +103,6 @@ bool AUHALStream::Open() {
}
void AUHALStream::Close() {
- if (input_buffer_list_) {
- input_buffer_list_storage_.reset();
- input_buffer_list_ = NULL;
- input_bus_.reset(NULL);
- output_bus_.reset(NULL);
- }
-
if (audio_unit_) {
OSStatus result = AudioUnitUninitialize(audio_unit_);
OSSTATUS_DLOG_IF(ERROR, result != noErr, result)
@@ -212,7 +185,7 @@ OSStatus AUHALStream::Render(
const AudioTimeStamp* output_time_stamp,
UInt32 bus_number,
UInt32 number_of_frames,
- AudioBufferList* io_data) {
+ AudioBufferList* data) {
TRACE_EVENT0("audio", "AUHALStream::Render");
// If the stream parameters change for any reason, we need to insert a FIFO
@@ -227,27 +200,10 @@ OSStatus AUHALStream::Render(
number_of_frames_,
base::Bind(&AUHALStream::ProvideInput, base::Unretained(this))));
}
-
- // Synchronous IO is not supported in this state.
- if (input_channels_ > 0)
- input_bus_->Zero();
- } else {
- if (input_channels_ > 0 && input_buffer_list_) {
- // Get the input data. |input_buffer_list_| is wrapped
- // to point to the data allocated in |input_bus_|.
- OSStatus result = AudioUnitRender(audio_unit_,
- flags,
- output_time_stamp,
- 1,
- number_of_frames,
- input_buffer_list_);
- if (result != noErr)
- ZeroBufferList(input_buffer_list_);
- }
}
// Make |output_bus_| wrap the output AudioBufferList.
- WrapBufferList(io_data, output_bus_.get(), number_of_frames);
+ WrapBufferList(data, output_bus_.get(), number_of_frames);
// Update the playout latency.
const double playout_latency_frames = GetPlayoutLatency(output_time_stamp);
@@ -270,8 +226,7 @@ void AUHALStream::ProvideInput(int frame_delay, AudioBus* dest) {
}
// Supply the input data and render the output data.
- source_->OnMoreIOData(
- input_bus_.get(),
+ source_->OnMoreData(
dest,
AudioBuffersState(0,
current_hardware_pending_bytes_ +
@@ -370,52 +325,6 @@ double AUHALStream::GetPlayoutLatency(
return (delay_frames + hardware_latency_frames_);
}
-void AUHALStream::CreateIOBusses() {
- if (input_channels_ > 0) {
- // Allocate storage for the AudioBufferList used for the
- // input data from the input AudioUnit.
- // We allocate enough space for with one AudioBuffer per channel.
- size_t buffer_list_size = offsetof(AudioBufferList, mBuffers[0]) +
- (sizeof(AudioBuffer) * input_channels_);
- input_buffer_list_storage_.reset(new uint8[buffer_list_size]);
-
- input_buffer_list_ =
- reinterpret_cast<AudioBufferList*>(input_buffer_list_storage_.get());
- input_buffer_list_->mNumberBuffers = input_channels_;
-
- // |input_bus_| allocates the storage for the PCM input data.
- input_bus_ = AudioBus::Create(input_channels_, number_of_frames_);
-
- // Make the AudioBufferList point to the memory in |input_bus_|.
- UInt32 buffer_size_bytes = input_bus_->frames() * sizeof(Float32);
- for (size_t i = 0; i < input_buffer_list_->mNumberBuffers; ++i) {
- input_buffer_list_->mBuffers[i].mNumberChannels = 1;
- input_buffer_list_->mBuffers[i].mDataByteSize = buffer_size_bytes;
- input_buffer_list_->mBuffers[i].mData = input_bus_->channel(i);
- }
- }
-
- // The output bus will wrap the AudioBufferList given to us in
- // the Render() callback.
- DCHECK_GT(output_channels_, 0);
- output_bus_ = AudioBus::CreateWrapper(output_channels_);
-}
-
-bool AUHALStream::EnableIO(bool enable, UInt32 scope) {
- // See Apple technote for details about the EnableIO property.
- // Note that we use bus 1 for input and bus 0 for output:
- // http://developer.apple.com/library/mac/#technotes/tn2091/_index.html
- UInt32 enable_IO = enable ? 1 : 0;
- OSStatus result = AudioUnitSetProperty(
- audio_unit_,
- kAudioOutputUnitProperty_EnableIO,
- scope,
- (scope == kAudioUnitScope_Input) ? 1 : 0,
- &enable_IO,
- sizeof(enable_IO));
- return (result == noErr);
-}
-
bool AUHALStream::SetStreamFormat(
AudioStreamBasicDescription* desc,
int channels,
@@ -446,8 +355,7 @@ bool AUHALStream::SetStreamFormat(
}
bool AUHALStream::ConfigureAUHAL() {
- if (device_ == kAudioObjectUnknown ||
- (input_channels_ == 0 && output_channels_ == 0))
+ if (device_ == kAudioObjectUnknown || output_channels_ == 0)
return false;
AudioComponentDescription desc = {
@@ -467,10 +375,19 @@ bool AUHALStream::ConfigureAUHAL() {
return false;
}
- // Enable input and output as appropriate.
- if (!EnableIO(input_channels_ > 0, kAudioUnitScope_Input))
- return false;
- if (!EnableIO(output_channels_ > 0, kAudioUnitScope_Output))
+ // Enable output as appropriate.
+ // See Apple technote for details about the EnableIO property.
+ // Note that we use bus 1 for input and bus 0 for output:
+ // http://developer.apple.com/library/mac/#technotes/tn2091/_index.html
+ UInt32 enable_IO = 1;
+ result = AudioUnitSetProperty(
+ audio_unit_,
+ kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Output,
+ 0,
+ &enable_IO,
+ sizeof(enable_IO));
+ if (result != noErr)
return false;
// Set the device to be used with the AUHAL AudioUnit.
@@ -490,20 +407,11 @@ bool AUHALStream::ConfigureAUHAL() {
// (element) numbers:
// http://developer.apple.com/library/mac/#technotes/tn2091/_index.html
- if (input_channels_ > 0) {
- if (!SetStreamFormat(&input_format_,
- input_channels_,
- kAudioUnitScope_Output,
- 1))
- return false;
- }
-
- if (output_channels_ > 0) {
- if (!SetStreamFormat(&output_format_,
- output_channels_,
- kAudioUnitScope_Input,
- 0))
- return false;
+ if (!SetStreamFormat(&output_format_,
+ output_channels_,
+ kAudioUnitScope_Input,
+ 0)) {
+ return false;
}
// Set the buffer frame size.
« no previous file with comments | « media/audio/mac/audio_auhal_mac.h ('k') | media/audio/mac/audio_auhal_mac_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698