Index: content/browser/renderer_host/media/video_capture_host.cc |
diff --git a/content/browser/renderer_host/media/video_capture_host.cc b/content/browser/renderer_host/media/video_capture_host.cc |
index d37dc46fcdb864ee5e43c1e21d17f4249749c132..b689e07e39e65a1e5d3db0d61b51f8f49c875c79 100644 |
--- a/content/browser/renderer_host/media/video_capture_host.cc |
+++ b/content/browser/renderer_host/media/video_capture_host.cc |
@@ -12,6 +12,7 @@ |
#include "content/browser/renderer_host/media/media_stream_manager.h" |
#include "content/browser/renderer_host/media/video_capture_manager.h" |
#include "content/common/media/video_capture_messages.h" |
+#include "mojo/public/cpp/system/platform_handle.h" |
namespace content { |
@@ -67,7 +68,11 @@ void VideoCaptureHost::OnBufferCreated(VideoCaptureControllerID controller_id, |
if (controllers_.find(controller_id) == controllers_.end()) |
return; |
- Send(new VideoCaptureMsg_NewBuffer(controller_id, handle, length, buffer_id)); |
+ if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { |
+ device_id_to_observer_map_[controller_id]->OnBufferCreated( |
+ buffer_id, |
+ mojo::WrapSharedMemoryHandle(handle, length, true /* read_only */)); |
+ } |
} |
void VideoCaptureHost::OnBufferDestroyed(VideoCaptureControllerID controller_id, |
@@ -113,34 +118,6 @@ void VideoCaptureHost::OnEnded(VideoCaptureControllerID controller_id) { |
base::Bind(&VideoCaptureHost::DoEnded, this, controller_id)); |
} |
-void VideoCaptureHost::DoError(VideoCaptureControllerID controller_id) { |
- DVLOG(1) << __func__; |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- if (controllers_.find(controller_id) == controllers_.end()) |
- return; |
- |
- if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { |
- device_id_to_observer_map_[controller_id]->OnStateChanged( |
- mojom::VideoCaptureState::FAILED); |
- } |
- |
- DeleteVideoCaptureController(controller_id, true); |
-} |
- |
-void VideoCaptureHost::DoEnded(VideoCaptureControllerID controller_id) { |
- DVLOG(1) << __func__; |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- if (controllers_.find(controller_id) == controllers_.end()) |
- return; |
- |
- if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { |
- device_id_to_observer_map_[controller_id]->OnStateChanged( |
- mojom::VideoCaptureState::ENDED); |
- } |
- |
- DeleteVideoCaptureController(controller_id, false); |
-} |
- |
void VideoCaptureHost::Start(int32_t device_id, |
int32_t session_id, |
const media::VideoCaptureParams& params, |
@@ -282,6 +259,34 @@ void VideoCaptureHost::GetDeviceFormatsInUse( |
callback.Run(formats_in_use); |
} |
+void VideoCaptureHost::DoError(VideoCaptureControllerID controller_id) { |
+ DVLOG(1) << __func__; |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ if (controllers_.find(controller_id) == controllers_.end()) |
+ return; |
+ |
+ if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { |
+ device_id_to_observer_map_[controller_id]->OnStateChanged( |
+ mojom::VideoCaptureState::FAILED); |
+ } |
+ |
+ DeleteVideoCaptureController(controller_id, true); |
+} |
+ |
+void VideoCaptureHost::DoEnded(VideoCaptureControllerID controller_id) { |
+ DVLOG(1) << __func__; |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ if (controllers_.find(controller_id) == controllers_.end()) |
+ return; |
+ |
+ if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { |
+ device_id_to_observer_map_[controller_id]->OnStateChanged( |
+ mojom::VideoCaptureState::ENDED); |
+ } |
+ |
+ DeleteVideoCaptureController(controller_id, false); |
+} |
+ |
void VideoCaptureHost::OnControllerAdded( |
int device_id, |
const base::WeakPtr<VideoCaptureController>& controller) { |