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

Unified Diff: content/renderer/media/video_capture_impl.h

Issue 2430313007: VideoCapture: remove last remnants of IPC (Closed)
Patch Set: rockot@ comment on using ChildThread 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
« no previous file with comments | « content/renderer/BUILD.gn ('k') | content/renderer/media/video_capture_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/video_capture_impl.h
diff --git a/content/renderer/media/video_capture_impl.h b/content/renderer/media/video_capture_impl.h
index 1e6bacb849fbdd5ae260c8f92521998cef73eee3..16c71a2c8fab67db12dc37265a995a1abf3b0f02 100644
--- a/content/renderer/media/video_capture_impl.h
+++ b/content/renderer/media/video_capture_impl.h
@@ -16,39 +16,20 @@
#include "content/common/content_export.h"
#include "content/common/media/video_capture.h"
#include "content/common/video_capture.mojom.h"
-#include "content/public/renderer/media_stream_video_sink.h"
-#include "content/renderer/media/video_capture_message_filter.h"
#include "media/base/video_capture_types.h"
#include "media/base/video_frame.h"
#include "mojo/public/cpp/bindings/binding.h"
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
namespace content {
// VideoCaptureImpl represents a capture device in renderer process. It provides
-// interfaces for clients to Start/Stop capture. It also communicates to clients
-// when buffer is ready, state of capture device is changed.
-//
-// VideoCaptureImpl is also a delegate of VideoCaptureMessageFilter to receive
-// notification of the browser process being ready to communicate.
-//
-// VideoCaptureImpl is an IO thread only object. See the comments in
-// video_capture_impl_manager.cc for the lifetime of this object.
-// All methods must be called on the IO thread.
-//
-// This is an internal class used by VideoCaptureImplManager only. Do not access
-// this directly.
-class CONTENT_EXPORT VideoCaptureImpl
- : public VideoCaptureMessageFilter::Delegate,
- public mojom::VideoCaptureObserver {
+// an interface for clients to command the capture (Start, Stop, etc), and
+// communicates back to these clients e.g. the capture state or incoming
+// captured VideoFrames. VideoCaptureImpl is created in the main Renderer thread
+// but otherwise operates on |io_task_runner_|, which is usually the IO thread.
+class CONTENT_EXPORT VideoCaptureImpl : public mojom::VideoCaptureObserver {
public:
- VideoCaptureImpl(
- media::VideoCaptureSessionId session_id,
- VideoCaptureMessageFilter* filter,
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
+ explicit VideoCaptureImpl(media::VideoCaptureSessionId session_id);
~VideoCaptureImpl() override;
// Stop/resume delivering video frames to clients, based on flag |suspend|.
@@ -93,25 +74,15 @@ class CONTENT_EXPORT VideoCaptureImpl
// renderer.
class ClientBuffer;
- // Contains information for a video capture client. Including parameters
- // for capturing and callbacks to the client.
- struct ClientInfo {
- ClientInfo();
- ClientInfo(const ClientInfo& other);
- ~ClientInfo();
- media::VideoCaptureParams params;
- VideoCaptureStateUpdateCB state_update_cb;
- VideoCaptureDeliverFrameCB deliver_frame_cb;
- };
+ // Contains information about a video capture client, including capture
+ // parameters callbacks to the client.
+ struct ClientInfo;
using ClientInfoMap = std::map<int, ClientInfo>;
using BufferFinishedCallback =
base::Callback<void(const gpu::SyncToken& sync_token,
double consumer_resource_utilization)>;
- // VideoCaptureMessageFilter::Delegate interface implementation.
- void OnDelegateAdded(int32_t device_id) override;
-
// mojom::VideoCaptureObserver implementation.
void OnStateChanged(mojom::VideoCaptureState state) override;
void OnBufferCreated(int32_t buffer_id,
@@ -151,40 +122,40 @@ class CONTENT_EXPORT VideoCaptureImpl
std::unique_ptr<gpu::SyncToken> release_sync_token,
const BufferFinishedCallback& callback_to_io_thread);
- const scoped_refptr<VideoCaptureMessageFilter> message_filter_;
- int device_id_;
+ // |device_id_| and |session_id_| are different concepts, but we reuse the
+ // same numerical value, passed on construction.
+ const int device_id_;
const int session_id_;
- mojom::VideoCaptureHostAssociatedPtr video_capture_host_;
+ // |video_capture_host_| is an IO-thread InterfacePtr to a remote service
+ // implementation and is created by binding |video_capture_host_info_|,
+ // unless a |video_capture_host_for_testing_| has been injected.
+ mojom::VideoCaptureHostPtrInfo video_capture_host_info_;
+ mojom::VideoCaptureHostPtr video_capture_host_;
mojom::VideoCaptureHost* video_capture_host_for_testing_;
mojo::Binding<mojom::VideoCaptureObserver> observer_binding_;
// Buffers available for sending to the client.
- typedef std::map<int32_t, scoped_refptr<ClientBuffer>> ClientBufferMap;
+ using ClientBufferMap = std::map<int32_t, scoped_refptr<ClientBuffer>>;
ClientBufferMap client_buffers_;
ClientInfoMap clients_;
- ClientInfoMap clients_pending_on_filter_;
ClientInfoMap clients_pending_on_restart_;
- // Member params_ represents the video format requested by the
- // client to this class via StartCapture().
+ // Video format requested by the client to this class via StartCapture().
media::VideoCaptureParams params_;
- // The device's first captured frame reference time sent from browser process
- // side.
+ // First captured frame reference time sent from browser process side.
base::TimeTicks first_frame_ref_time_;
VideoCaptureState state_;
- // IO message loop reference for checking correct class operation.
- const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
+ base::ThreadChecker io_thread_checker_;
// WeakPtrFactory pointing back to |this| object, for use with
// media::VideoFrames constructed in OnBufferReceived() from buffers cached
// in |client_buffers_|.
- // NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtrFactory<VideoCaptureImpl> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(VideoCaptureImpl);
« no previous file with comments | « content/renderer/BUILD.gn ('k') | content/renderer/media/video_capture_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698