Chromium Code Reviews| 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( |