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

Unified Diff: media/audio/audio_input_device.cc

Issue 2076793002: Cleanup AudioDeviceThread to reduce locking and unused features. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Relocate one-time use variables. Created 4 years, 6 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/audio_input_device.h ('k') | media/audio/audio_output_device.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_input_device.cc
diff --git a/media/audio/audio_input_device.cc b/media/audio/audio_input_device.cc
index fc6b39285ad363aeb2e7591eacfcd77b8d97bfbb..cee639bb68073055d8dab39ff8306086e9c2cfbb 100644
--- a/media/audio/audio_input_device.cc
+++ b/media/audio/audio_input_device.cc
@@ -44,6 +44,7 @@ class AudioInputDevice::AudioThreadCallback
void Process(uint32_t pending_data) override;
private:
+ const double bytes_per_ms_;
int current_segment_id_;
uint32_t last_buffer_id_;
ScopedVector<media::AudioBus> audio_buses_;
@@ -94,7 +95,7 @@ void AudioInputDevice::Stop() {
{
base::AutoLock auto_lock(audio_thread_lock_);
- audio_thread_.Stop(base::MessageLoop::current());
+ audio_thread_.reset();
stopping_hack_ = true;
}
@@ -143,11 +144,12 @@ void AudioInputDevice::OnStreamCreated(
if (stopping_hack_)
return;
- DCHECK(audio_thread_.IsStopped());
+ DCHECK(!audio_callback_);
+ DCHECK(!audio_thread_);
audio_callback_.reset(new AudioInputDevice::AudioThreadCallback(
audio_parameters_, handle, length, total_segments, callback_));
- audio_thread_.Start(
- audio_callback_.get(), socket_handle, "AudioInputDevice", true);
+ audio_thread_.reset(new AudioDeviceThread(audio_callback_.get(),
+ socket_handle, "AudioInputDevice"));
state_ = RECORDING;
ipc_->RecordStream();
@@ -182,9 +184,13 @@ void AudioInputDevice::OnStateChanged(
// TODO(tommi): Add an explicit contract for clearing the callback
// object. Possibly require calling Initialize again or provide
// a callback object via Start() and clear it in Stop().
- if (!audio_thread_.IsStopped())
- callback_->OnCaptureError(
- "AudioInputDevice::OnStateChanged - audio thread still running");
+ {
+ base::AutoLock auto_lock_(audio_thread_lock_);
+ if (audio_thread_) {
+ callback_->OnCaptureError(
+ "AudioInputDevice::OnStateChanged - audio thread still running");
+ }
+ }
break;
default:
NOTREACHED();
@@ -198,11 +204,7 @@ void AudioInputDevice::OnIPCClosed() {
ipc_.reset();
}
-AudioInputDevice::~AudioInputDevice() {
- // TODO(henrika): The current design requires that the user calls
- // Stop before deleting this class.
- DCHECK(audio_thread_.IsStopped());
-}
+AudioInputDevice::~AudioInputDevice() {}
void AudioInputDevice::StartUpOnIOThread() {
DCHECK(task_runner()->BelongsToCurrentThread());
@@ -241,7 +243,7 @@ void AudioInputDevice::ShutDownOnIOThread() {
// and can't not rely on the main thread existing either.
base::AutoLock auto_lock_(audio_thread_lock_);
base::ThreadRestrictions::ScopedAllowIO allow_io;
- audio_thread_.Stop(NULL);
+ audio_thread_.reset();
audio_callback_.reset();
stopping_hack_ = false;
}
@@ -277,12 +279,15 @@ AudioInputDevice::AudioThreadCallback::AudioThreadCallback(
int memory_length,
int total_segments,
CaptureCallback* capture_callback)
- : AudioDeviceThread::Callback(audio_parameters, memory, memory_length,
+ : AudioDeviceThread::Callback(audio_parameters,
+ memory,
+ memory_length,
total_segments),
+ bytes_per_ms_(static_cast<double>(audio_parameters.GetBytesPerSecond()) /
+ base::Time::kMillisecondsPerSecond),
current_segment_id_(0),
last_buffer_id_(UINT32_MAX),
- capture_callback_(capture_callback) {
-}
+ capture_callback_(capture_callback) {}
AudioInputDevice::AudioThreadCallback::~AudioThreadCallback() {
}
« no previous file with comments | « media/audio/audio_input_device.h ('k') | media/audio/audio_output_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698