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

Unified Diff: content/renderer/media/video_capture_message_filter.cc

Issue 1267883002: Pass GpuMemoryBuffer backed VideoFrame from browser to renderer processes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gmbtracker-multiple
Patch Set: Rebase Created 5 years, 4 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/media/video_capture_message_filter.cc
diff --git a/content/renderer/media/video_capture_message_filter.cc b/content/renderer/media/video_capture_message_filter.cc
index b6c92d2926ef31e52b29997d2498da9ae0578bae..076e96ec2abcc2e5f3d20bb9253534e649d2b578 100644
--- a/content/renderer/media/video_capture_message_filter.cc
+++ b/content/renderer/media/video_capture_message_filter.cc
@@ -61,6 +61,8 @@ bool VideoCaptureMessageFilter::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(VideoCaptureMsg_BufferReady, OnBufferReceived)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_StateChanged, OnDeviceStateChanged)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_NewBuffer, OnBufferCreated)
+ IPC_MESSAGE_HANDLER(VideoCaptureMsg_NewGpuMemoryBuffer,
+ OnGpuMemoryBufferCreated)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_FreeBuffer, OnBufferDestroyed)
IPC_MESSAGE_HANDLER(VideoCaptureMsg_DeviceSupportedFormatsEnumerated,
OnDeviceSupportedFormatsEnumerated)
@@ -103,7 +105,7 @@ void VideoCaptureMessageFilter::OnBufferCreated(
base::SharedMemoryHandle handle,
int length,
int buffer_id) {
- Delegate* delegate = find_delegate(device_id);
+ Delegate* const delegate = find_delegate(device_id);
if (!delegate) {
DLOG(WARNING) << "OnBufferCreated: Got video SHM buffer for a "
"non-existent or removed video capture.";
@@ -111,6 +113,7 @@ void VideoCaptureMessageFilter::OnBufferCreated(
// Send the buffer back to Host in case it's waiting for all buffers
// to be returned.
base::SharedMemory::CloseHandle(handle);
+
Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id, 0, -1.0));
return;
}
@@ -118,6 +121,22 @@ void VideoCaptureMessageFilter::OnBufferCreated(
delegate->OnBufferCreated(handle, length, buffer_id);
}
+void VideoCaptureMessageFilter::OnGpuMemoryBufferCreated(
+ int device_id,
+ const std::vector<gfx::GpuMemoryBufferHandle>& gmb_handles,
+ const gfx::Size& size,
+ int buffer_id) {
+ Delegate* delegate = find_delegate(device_id);
mcasas 2015/08/21 03:57:25 Delegate* const delegate
+ if (!delegate) {
+ DLOG(WARNING) << "OnBufferCreated: Got video GMB buffer for a "
+ "non-existent or removed video capture.";
+ Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id, 0, -1.0));
mcasas 2015/08/21 03:57:25 0? -1.0?? Proposal: 0 /* release_sync_point */, -
+ return;
+ }
+
+ delegate->OnGpuMemoryBufferCreated(gmb_handles, size, buffer_id);
+}
+
void VideoCaptureMessageFilter::OnBufferReceived(
const VideoCaptureMsg_BufferReady_Params& params) {
Delegate* const delegate = find_delegate(params.device_id);
@@ -139,7 +158,7 @@ void VideoCaptureMessageFilter::OnBufferReceived(
params.storage_type,
params.coded_size,
params.visible_rect,
- params.mailbox_holder);
+ params.mailbox_holders);
}
void VideoCaptureMessageFilter::OnBufferDestroyed(

Powered by Google App Engine
This is Rietveld 408576698