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

Unified Diff: media/audio/win/audio_low_latency_input_win.cc

Issue 1111503003: Revert of Switch to STA mode for audio thread and WASAPI I/O streams. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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: media/audio/win/audio_low_latency_input_win.cc
diff --git a/media/audio/win/audio_low_latency_input_win.cc b/media/audio/win/audio_low_latency_input_win.cc
index 674a097368ebce9afb33c02d1bed92979bf9a5b8..72d1d725f5bede99fcea3668212ba63d61c4e020 100644
--- a/media/audio/win/audio_low_latency_input_win.cc
+++ b/media/audio/win/audio_low_latency_input_win.cc
@@ -158,11 +158,6 @@
// using SetAutomaticGainControl().
StartAgc();
- if (!MarshalComPointers()) {
- HandleError(S_FALSE);
- return;
- }
-
// Create and start the thread that will drive the capturing by waiting for
// capture events.
capture_thread_ =
@@ -177,8 +172,6 @@
hr = audio_render_client_for_loopback_->Start();
started_ = SUCCEEDED(hr);
- if (!started_)
- HandleError(hr);
}
void WASAPIAudioInputStream::Stop() {
@@ -357,7 +350,7 @@
}
void WASAPIAudioInputStream::Run() {
- ScopedCOMInitializer com_init;
+ ScopedCOMInitializer com_init(ScopedCOMInitializer::kMTA);
// Increase the thread priority.
capture_thread_->SetThreadPriority(base::ThreadPriority::REALTIME_AUDIO);
@@ -376,10 +369,6 @@
LOG(WARNING) << "Failed to enable MMCSS (error code=" << err << ").";
}
- // Retrieve COM pointers from the main thread.
- ScopedComPtr<IAudioCaptureClient> audio_capture_client;
- UnmarshalComPointers(&audio_capture_client);
-
// Allocate a buffer with a size that enables us to take care of cases like:
// 1) The recorded buffer size is smaller, or does not match exactly with,
// the selected packet size used in each callback.
@@ -394,7 +383,7 @@
LARGE_INTEGER now_count;
bool recording = true;
bool error = false;
- double volume = 0;
+ double volume = GetVolume();
HANDLE wait_array[2] =
{ stop_capture_event_.Get(), audio_samples_ready_event_.Get() };
@@ -423,9 +412,11 @@
// Retrieve the amount of data in the capture endpoint buffer,
// replace it with silence if required, create callbacks for each
// packet and store non-delivered data for the next event.
- hr = audio_capture_client->GetBuffer(
- &data_ptr, &num_frames_to_read, &flags, &device_position,
- &first_audio_frame_timestamp);
+ hr = audio_capture_client_->GetBuffer(&data_ptr,
+ &num_frames_to_read,
+ &flags,
+ &device_position,
+ &first_audio_frame_timestamp);
if (FAILED(hr)) {
DLOG(ERROR) << "Failed to get data from the capture buffer";
continue;
@@ -447,7 +438,7 @@
buffer_frame_index += num_frames_to_read;
}
- hr = audio_capture_client->ReleaseBuffer(num_frames_to_read);
+ hr = audio_capture_client_->ReleaseBuffer(num_frames_to_read);
DLOG_IF(ERROR, FAILED(hr)) << "Failed to release capture buffer";
// Derive a delay estimate for the captured audio packet.
@@ -685,11 +676,8 @@
&format_,
(effects_ & AudioParameters::DUCKING) ? &kCommunicationsSessionId : NULL);
- if (FAILED(hr)) {
- PLOG(ERROR) << "Failed to initalize IAudioClient: " << std::hex << hr
- << " : ";
- return hr;
- }
+ if (FAILED(hr))
+ return hr;
// Retrieve the length of the endpoint buffer shared between the client
// and the audio engine. The buffer length determines the maximum amount
@@ -780,26 +768,4 @@
return hr;
}
-bool WASAPIAudioInputStream::MarshalComPointers() {
- DCHECK(CalledOnValidThread());
- DCHECK(!com_stream_);
- HRESULT hr = CoMarshalInterThreadInterfaceInStream(
- __uuidof(IAudioCaptureClient), audio_capture_client_.get(),
- com_stream_.Receive());
- if (FAILED(hr))
- DLOG(ERROR) << "Marshal failed for IAudioCaptureClient: " << std::hex << hr;
- DCHECK_EQ(SUCCEEDED(hr), !!com_stream_);
- return SUCCEEDED(hr);
-}
-
-void WASAPIAudioInputStream::UnmarshalComPointers(
- ScopedComPtr<IAudioCaptureClient>* audio_capture_client) {
- DCHECK_EQ(capture_thread_->tid(), base::PlatformThread::CurrentId());
- DCHECK(com_stream_);
- HRESULT hr = CoGetInterfaceAndReleaseStream(
- com_stream_.Detach(), __uuidof(IAudioCaptureClient),
- audio_capture_client->ReceiveVoid());
- CHECK(SUCCEEDED(hr));
-}
-
} // namespace media
« no previous file with comments | « media/audio/win/audio_low_latency_input_win.h ('k') | media/audio/win/audio_low_latency_input_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698