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

Unified Diff: content/renderer/pepper/pepper_platform_audio_input_impl.cc

Issue 12379071: Use multiple shared memory buffers cyclically for audio capture. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: rebase Created 7 years, 10 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: content/renderer/pepper/pepper_platform_audio_input_impl.cc
===================================================================
--- content/renderer/pepper/pepper_platform_audio_input_impl.cc (revision 186213)
+++ content/renderer/pepper/pepper_platform_audio_input_impl.cc (working copy)
@@ -64,17 +64,10 @@
}
void PepperPlatformAudioInputImpl::OnStreamCreated(
- base::SharedMemoryHandle handle,
base::SyncSocket::Handle socket_handle,
- int length) {
-#if defined(OS_WIN)
- DCHECK(handle);
- DCHECK(socket_handle);
-#else
- DCHECK_NE(-1, handle.fd);
- DCHECK_NE(-1, socket_handle);
-#endif
- DCHECK(length);
+ int total_handles) {
+ DCHECK_NE(socket_handle, base::SyncSocket::kInvalidHandle);
+ DCHECK_EQ(total_handles, 1);
if (base::MessageLoopProxy::current() != main_message_loop_proxy_) {
// No need to check |shutdown_called_| here. If shutdown has occurred,
@@ -83,15 +76,42 @@
main_message_loop_proxy_->PostTask(
FROM_HERE,
base::Bind(&PepperPlatformAudioInputImpl::OnStreamCreated, this,
- handle, socket_handle, length));
+ socket_handle, total_handles));
} else {
// Must dereference the client only on the main thread. Shutdown may have
// occurred while the request was in-flight, so we need to NULL check.
if (client_) {
- client_->StreamCreated(handle, length, socket_handle);
+ socket_handle_ = socket_handle;
} else {
// Clean up the handles.
base::SyncSocket temp_socket(socket_handle);
+ }
+ }
+}
+
+void PepperPlatformAudioInputImpl::OnSharedMemoryCreated(
+ base::SharedMemoryHandle handle,
+ int length,
+ int index) {
+ DCHECK(base::SharedMemory::IsHandleValid(handle));
+ DCHECK(length);
+ DCHECK_NE(socket_handle_, base::SyncSocket::kInvalidHandle);
+
+ if (base::MessageLoopProxy::current() != main_message_loop_proxy_) {
+ // No need to check |shutdown_called_| here. If shutdown has occurred,
+ // |client_| will be NULL and the handles will be cleaned up on the main
+ // thread.
+ main_message_loop_proxy_->PostTask(
+ FROM_HERE,
+ base::Bind(&PepperPlatformAudioInputImpl::OnSharedMemoryCreated, this,
+ handle, length, index));
+ } else {
+ // Must dereference the client only on the main thread. Shutdown may have
+ // occurred while the request was in-flight, so we need to NULL check.
+ if (client_) {
+ client_->StreamCreated(handle, length, socket_handle_);
+ } else {
+ // Clean up the handles.
base::SharedMemory temp_shared_memory(handle, false);
}
}
@@ -117,7 +137,7 @@
this));
} else {
// We will be notified by OnStreamCreated().
- ipc_->CreateStream(stream_id_, params_, device_id, false);
+ ipc_->CreateStream(stream_id_, params_, device_id, false, 1);
}
}
@@ -139,6 +159,7 @@
PepperPlatformAudioInputImpl::PepperPlatformAudioInputImpl()
: client_(NULL),
+ socket_handle_(base::SyncSocket::kInvalidHandle),
stream_id_(0),
render_view_id_(MSG_ROUTING_NONE),
main_message_loop_proxy_(base::MessageLoopProxy::current()),
@@ -196,7 +217,7 @@
if (!session_id) {
// We will be notified by OnStreamCreated().
ipc_->CreateStream(stream_id_, params_,
- media::AudioManagerBase::kDefaultDeviceId, false);
+ media::AudioManagerBase::kDefaultDeviceId, false, 1);
} else {
// We will be notified by OnDeviceReady().
ipc_->StartDevice(stream_id_, session_id);

Powered by Google App Engine
This is Rietveld 408576698