| 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 98b2e4e3f437289635318d2f7e6959802b17aec7..24e1482759be06d7167099c0e69b2b2268a06f42 100644
|
| --- a/content/renderer/media/video_capture_message_filter.cc
|
| +++ b/content/renderer/media/video_capture_message_filter.cc
|
| @@ -58,6 +58,8 @@ bool VideoCaptureMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(VideoCaptureMessageFilter, message)
|
| IPC_MESSAGE_HANDLER(VideoCaptureMsg_BufferReady, OnBufferReceived)
|
| + IPC_MESSAGE_HANDLER(VideoCaptureMsg_MailboxBufferReady,
|
| + OnMailboxBufferReceived)
|
| IPC_MESSAGE_HANDLER(VideoCaptureMsg_StateChanged, OnDeviceStateChanged)
|
| IPC_MESSAGE_HANDLER(VideoCaptureMsg_NewBuffer, OnBufferCreated)
|
| IPC_MESSAGE_HANDLER(VideoCaptureMsg_FreeBuffer, OnBufferDestroyed)
|
| @@ -101,13 +103,13 @@ void VideoCaptureMessageFilter::OnBufferCreated(
|
| int buffer_id) {
|
| Delegate* delegate = find_delegate(device_id);
|
| if (!delegate) {
|
| - DLOG(WARNING) << "OnBufferCreated: Got video frame buffer for a "
|
| - "non-existent or removed video capture.";
|
| + DLOG(WARNING) << "OnBufferCreated: Got video SHM buffer for a "
|
| + "non-existent or removed video capture.";
|
|
|
| // 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));
|
| + Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id, 0));
|
| return;
|
| }
|
|
|
| @@ -117,20 +119,42 @@ void VideoCaptureMessageFilter::OnBufferCreated(
|
| void VideoCaptureMessageFilter::OnBufferReceived(
|
| int device_id,
|
| int buffer_id,
|
| - base::TimeTicks timestamp,
|
| - const media::VideoCaptureFormat& format) {
|
| + const media::VideoCaptureFormat& format,
|
| + base::TimeTicks timestamp) {
|
| Delegate* delegate = find_delegate(device_id);
|
| if (!delegate) {
|
| - DLOG(WARNING) << "OnBufferReceived: Got video frame buffer for a "
|
| - "non-existent or removed video capture.";
|
| + DLOG(WARNING) << "OnBufferReceived: Got video SHM buffer for a "
|
| + "non-existent or removed video capture.";
|
| +
|
| + // Send the buffer back to Host in case it's waiting for all buffers
|
| + // to be returned.
|
| + Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id, 0));
|
| + return;
|
| + }
|
| +
|
| + delegate->OnBufferReceived(buffer_id, format, timestamp);
|
| +}
|
| +
|
| +void VideoCaptureMessageFilter::OnMailboxBufferReceived(
|
| + int device_id,
|
| + int buffer_id,
|
| + const gpu::MailboxHolder& mailbox_holder,
|
| + const media::VideoCaptureFormat& format,
|
| + base::TimeTicks timestamp) {
|
| + Delegate* delegate = find_delegate(device_id);
|
| +
|
| + if (!delegate) {
|
| + DLOG(WARNING) << "OnMailboxBufferReceived: Got video mailbox buffer for a "
|
| + "non-existent or removed video capture.";
|
|
|
| // Send the buffer back to Host in case it's waiting for all buffers
|
| // to be returned.
|
| - Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id));
|
| + Send(new VideoCaptureHostMsg_BufferReady(device_id, buffer_id, 0));
|
| return;
|
| }
|
|
|
| - delegate->OnBufferReceived(buffer_id, timestamp, format);
|
| + delegate->OnMailboxBufferReceived(
|
| + buffer_id, mailbox_holder, format, timestamp);
|
| }
|
|
|
| void VideoCaptureMessageFilter::OnBufferDestroyed(
|
|
|