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

Unified Diff: content/browser/renderer_host/media/video_capture_host.h

Issue 2410383002: VideoCapture: more migration IPC-->mojo, part 6 (Closed)
Patch Set: Changed ShareToProcess() to GetHandleForTransit() in VideoCaptureBufferTracker and associates Created 4 years, 2 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/browser/renderer_host/media/video_capture_host.h
diff --git a/content/browser/renderer_host/media/video_capture_host.h b/content/browser/renderer_host/media/video_capture_host.h
index 5bb36f361d5792a058152476fa04c56fd11c73ba..fc7e93df22370248d8dd6b85eacec622134a69ec 100644
--- a/content/browser/renderer_host/media/video_capture_host.h
+++ b/content/browser/renderer_host/media/video_capture_host.h
@@ -1,52 +1,6 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//
-// VideoCaptureHost serves video capture related messages from
-// VideoCaptureMessageFilter which lives inside the render process.
-//
-// This class is owned by RenderProcessHostImpl, and instantiated on UI
-// thread, but all other operations and method calls happen on IO thread.
-//
-// Here's an example of a typical IPC dialog for video capture:
-//
-// Renderer VideoCaptureHost
-// | |
-// | --------- StartCapture --------> |
-// | <------ VideoCaptureObserver ------ |
-// | ::StateChanged(STARTED) |
-// | < VideoCaptureMsg_NewBuffer(1) |
-// | < VideoCaptureMsg_NewBuffer(2) |
-// | < VideoCaptureMsg_NewBuffer(3) |
-// | |
-// | <-------- OnBufferReady(1) --------- |
-// | <-------- OnBufferReady(2) --------- |
-// | -------- ReleaseBuffer(1) ---------> |
-// | <-------- OnBufferReady(3) --------- |
-// | -------- ReleaseBuffer(2) ---------> |
-// | <-------- OnBufferReady(1) --------- |
-// | -------- ReleaseBuffer(3) ---------> |
-// | <-------- OnBufferReady(2) --------- |
-// | -------- ReleaseBuffer(1) ---------> |
-// | ... |
-// | <-------- OnBufferReady(3) --------- |
-// = =
-// | ... (resolution change) |
-// | <------ OnBufferDestroyed(3) ------- | Buffers are re-allocated
-// | < VideoCaptureMsg_NewBuffer(4) | with a larger size, as
-// | <-------- OnBufferReady(4) --------- | needed.
-// | -------- ReleaseBuffer(2) ---------> |
-// | <------ OnBufferDestroyed(2) ------- |
-// | < VideoCaptureMsg_NewBuffer(5) |
-// | <-------- OnBufferReady(5) --------- |
-// = ... =
-// | |
-// | < VideoCaptureMsg_BufferReady |
-// | --------- StopCapture ---------> |
-// | -------- ReleaseBuffer(n) ---------> |
-// | <------ VideoCaptureObserver ------ |
-// | ::StateChanged(STOPPED) |
-// v v
#ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_HOST_H_
#define CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_HOST_H_
@@ -68,6 +22,20 @@
namespace content {
class MediaStreamManager;
+// This class is essentially a super adapter between several different areas. It
ncarter (slow) 2016/10/19 18:58:21 This comment might be better if the first sentence
mcasas 2016/10/19 19:29:51 Done.
+// is:
+// - a mojom::VideoCaptureHost to receive commands from the Renderer, indicating
+// to Start(), Stop() etc, the capture. Every remote client is identified via a
+// unique |device_id|, and is paired with a single VideoCaptureController. The
+// received commands are acted upon via requests to the VideoCaptureManager
+// inside |media_stream_manager_|.
+// - a VideoCaptureControllerEventHandler, to receive updates from a given
+// VideoCaptureController and forward them to a mojom::VideoCaptureObserver
+// remote implementation in Renderer; this Observer is passed during Start().
+// - a BrowserMessageFilter, to listen to OnChannelClosing() and OnDestruct().
+//
+// This class is owned by RenderProcessHostImpl, and instantiated on UI thread,
+// but all other operations and method calls happen on IO thread.
class CONTENT_EXPORT VideoCaptureHost
: public BrowserMessageFilter,
public VideoCaptureControllerEventHandler,
@@ -76,6 +44,13 @@ class CONTENT_EXPORT VideoCaptureHost
public:
explicit VideoCaptureHost(MediaStreamManager* media_stream_manager);
+ private:
+ friend class BrowserThread;
+ friend class base::DeleteHelper<VideoCaptureHost>;
+ friend class VideoCaptureHostTest;
+
+ ~VideoCaptureHost() override;
+
// BrowserMessageFilter implementation.
void OnChannelClosing() override;
void OnDestruct() const override;
@@ -84,7 +59,7 @@ class CONTENT_EXPORT VideoCaptureHost
// VideoCaptureControllerEventHandler implementation.
void OnError(VideoCaptureControllerID id) override;
void OnBufferCreated(VideoCaptureControllerID id,
- base::SharedMemoryHandle handle,
+ mojo::ScopedSharedBufferHandle handle,
int length,
int buffer_id) override;
void OnBufferDestroyed(VideoCaptureControllerID id,
@@ -94,17 +69,6 @@ class CONTENT_EXPORT VideoCaptureHost
const scoped_refptr<media::VideoFrame>& frame) override;
void OnEnded(VideoCaptureControllerID id) override;
- private:
- friend class BrowserThread;
- friend class base::DeleteHelper<VideoCaptureHost>;
- friend class MockVideoCaptureHost;
- friend class VideoCaptureHostTest;
-
- void DoError(VideoCaptureControllerID id);
- void DoEnded(VideoCaptureControllerID id);
-
- ~VideoCaptureHost() override;
-
// mojom::VideoCaptureHost implementation
void Start(int32_t device_id,
int32_t session_id,
@@ -129,12 +93,17 @@ class CONTENT_EXPORT VideoCaptureHost
int32_t session_id,
const GetDeviceFormatsInUseCallback& callback) override;
+ void DoError(VideoCaptureControllerID id);
+ void DoEnded(VideoCaptureControllerID id);
+
+ // Bound as callback for VideoCaptureManager::StartCaptureForClient().
void OnControllerAdded(
int device_id,
const base::WeakPtr<VideoCaptureController>& controller);
- // Deletes the controller and notifies the VideoCaptureManager. |on_error| is
- // true if this is triggered by VideoCaptureControllerEventHandler::OnError.
+ // Helper function that deletes the controller and tells VideoCaptureManager
+ // to StopCaptureForClient(). |on_error| is true if this is triggered by
+ // VideoCaptureControllerEventHandler::OnError.
void DeleteVideoCaptureController(VideoCaptureControllerID controller_id,
bool on_error);

Powered by Google App Engine
This is Rietveld 408576698