diff options
author | henrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-19 12:38:56 +0000 |
---|---|---|
committer | henrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-19 12:38:56 +0000 |
commit | f361a0d7b773112b60b80028aeaa2f42385d8487 (patch) | |
tree | 5a303803a2f3c6c0995195efd6a4f417cbbe5783 /media/audio/pulse | |
parent | 4903647573d5f2aad967f777532bedc734188d7c (diff) | |
download | chromium_src-f361a0d7b773112b60b80028aeaa2f42385d8487.zip chromium_src-f361a0d7b773112b60b80028aeaa2f42385d8487.tar.gz chromium_src-f361a0d7b773112b60b80028aeaa2f42385d8487.tar.bz2 |
Modifies AudioInputCallback::OnData and use media::AudioBus instead of plain byte vector (Relanding).
Second attempt to land https://codereview.chromium.org/314713002/ which has been reverted.
TBR=dalecurtis
BUG=375155
TEST=WebRTC and WebSpeech demos
Review URL: https://codereview.chromium.org/344583002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278345 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/pulse')
-rw-r--r-- | media/audio/pulse/pulse_input.cc | 9 | ||||
-rw-r--r-- | media/audio/pulse/pulse_input.h | 2 | ||||
-rw-r--r-- | media/audio/pulse/pulse_output.cc | 14 | ||||
-rw-r--r-- | media/audio/pulse/pulse_output.h | 3 |
4 files changed, 18 insertions, 10 deletions
diff --git a/media/audio/pulse/pulse_input.cc b/media/audio/pulse/pulse_input.cc index 9d31cdd..d5cb94ec 100644 --- a/media/audio/pulse/pulse_input.cc +++ b/media/audio/pulse/pulse_input.cc @@ -34,6 +34,8 @@ PulseAudioInputStream::PulseAudioInputStream(AudioManagerPulse* audio_manager, context_state_changed_(false) { DCHECK(mainloop); DCHECK(context); + CHECK(params_.IsValid()); + audio_bus_ = AudioBus::Create(params_); } PulseAudioInputStream::~PulseAudioInputStream() { @@ -272,8 +274,11 @@ void PulseAudioInputStream::ReadData() { int packet_size = params_.GetBytesPerBuffer(); while (buffer_->forward_bytes() >= packet_size) { buffer_->Read(audio_data_buffer_.get(), packet_size); - callback_->OnData(this, audio_data_buffer_.get(), packet_size, - hardware_delay, normalized_volume); + audio_bus_->FromInterleaved(audio_data_buffer_.get(), + audio_bus_->frames(), + params_.bits_per_sample() / 8); + callback_->OnData( + this, audio_bus_.get(), hardware_delay, normalized_volume); if (buffer_->forward_bytes() < packet_size) break; diff --git a/media/audio/pulse/pulse_input.h b/media/audio/pulse/pulse_input.h index 7566eac..7e64bb2 100644 --- a/media/audio/pulse/pulse_input.h +++ b/media/audio/pulse/pulse_input.h @@ -75,6 +75,8 @@ class PulseAudioInputStream : public AgcAudioStream<AudioInputStream> { // Flag indicating the state of the context has been changed. bool context_state_changed_; + scoped_ptr<AudioBus> audio_bus_; + base::ThreadChecker thread_checker_; DISALLOW_COPY_AND_ASSIGN(PulseAudioInputStream); diff --git a/media/audio/pulse/pulse_output.cc b/media/audio/pulse/pulse_output.cc index a67ee7f..19fc47b 100644 --- a/media/audio/pulse/pulse_output.cc +++ b/media/audio/pulse/pulse_output.cc @@ -49,8 +49,6 @@ PulseAudioOutputStream::PulseAudioOutputStream(const AudioParameters& params, pa_stream_(NULL), volume_(1.0f), source_callback_(NULL) { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); - CHECK(params_.IsValid()); audio_bus_ = AudioBus::Create(params_); } @@ -64,7 +62,7 @@ PulseAudioOutputStream::~PulseAudioOutputStream() { } bool PulseAudioOutputStream::Open() { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); return pulse::CreateOutputStream(&pa_mainloop_, &pa_context_, &pa_stream_, params_, device_id_, &StreamNotifyCallback, &StreamRequestCallback, this); @@ -109,7 +107,7 @@ void PulseAudioOutputStream::Reset() { } void PulseAudioOutputStream::Close() { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); Reset(); @@ -159,7 +157,7 @@ void PulseAudioOutputStream::FulfillWriteRequest(size_t requested_bytes) { } void PulseAudioOutputStream::Start(AudioSourceCallback* callback) { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); CHECK(callback); CHECK(pa_stream_); @@ -181,7 +179,7 @@ void PulseAudioOutputStream::Start(AudioSourceCallback* callback) { } void PulseAudioOutputStream::Stop() { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); // Cork (pause) the stream. Waiting for the main loop lock will ensure // outstanding callbacks have completed. @@ -204,13 +202,13 @@ void PulseAudioOutputStream::Stop() { } void PulseAudioOutputStream::SetVolume(double volume) { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); volume_ = static_cast<float>(volume); } void PulseAudioOutputStream::GetVolume(double* volume) { - DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread()); + DCHECK(thread_checker_.CalledOnValidThread()); *volume = volume_; } diff --git a/media/audio/pulse/pulse_output.h b/media/audio/pulse/pulse_output.h index 437e28c..e1c0045 100644 --- a/media/audio/pulse/pulse_output.h +++ b/media/audio/pulse/pulse_output.h @@ -23,6 +23,7 @@ #include <string> #include "base/memory/scoped_ptr.h" +#include "base/threading/thread_checker.h" #include "media/audio/audio_io.h" #include "media/audio/audio_parameters.h" @@ -90,6 +91,8 @@ class PulseAudioOutputStream : public AudioOutputStream { // Container for retrieving data from AudioSourceCallback::OnMoreData(). scoped_ptr<AudioBus> audio_bus_; + base::ThreadChecker thread_checker_; + DISALLOW_COPY_AND_ASSIGN(PulseAudioOutputStream); }; |