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

Side by Side Diff: content/browser/renderer_host/media/video_capture_manager.h

Issue 2729783003: [Mojo Video Capture] Add content_browsertest for exercising video capture (Closed)
Patch Set: incorporated miu@'s suggestions Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // VideoCaptureManager is used to open/close, start/stop, enumerate available 5 // VideoCaptureManager is used to open/close, start/stop, enumerate available
6 // video capture devices, and manage VideoCaptureController's. 6 // video capture devices, and manage VideoCaptureController's.
7 // All functions are expected to be called from Browser::IO thread. Some helper 7 // All functions are expected to be called from Browser::IO thread. Some helper
8 // functions (*OnDeviceThread) will dispatch operations to the device thread. 8 // functions (*OnDeviceThread) will dispatch operations to the device thread.
9 // VideoCaptureManager will open OS dependent instances of VideoCaptureDevice. 9 // VideoCaptureManager will open OS dependent instances of VideoCaptureDevice.
10 // A device can only be opened once. 10 // A device can only be opened once.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 // are closed. 61 // are closed.
62 // They can be called more than once and it's ok to not call at all if the 62 // They can be called more than once and it's ok to not call at all if the
63 // client is not interested in receiving media::VideoCaptureObserver callacks. 63 // client is not interested in receiving media::VideoCaptureObserver callacks.
64 // This methods can be called on whatever thread. The callbacks of 64 // This methods can be called on whatever thread. The callbacks of
65 // media::VideoCaptureObserver arrive on browser IO thread. 65 // media::VideoCaptureObserver arrive on browser IO thread.
66 void AddVideoCaptureObserver(media::VideoCaptureObserver* observer); 66 void AddVideoCaptureObserver(media::VideoCaptureObserver* observer);
67 void RemoveAllVideoCaptureObservers(); 67 void RemoveAllVideoCaptureObservers();
68 68
69 // Implements MediaStreamProvider. 69 // Implements MediaStreamProvider.
70 void RegisterListener(MediaStreamProviderListener* listener) override; 70 void RegisterListener(MediaStreamProviderListener* listener) override;
71 void UnregisterListener() override; 71 void UnregisterListener(MediaStreamProviderListener* listener) override;
72 int Open(const StreamDeviceInfo& device) override; 72 int Open(const MediaStreamDevice& device) override;
73 void Close(int capture_session_id) override; 73 void Close(int capture_session_id) override;
74 74
75 // Called by VideoCaptureHost to locate a capture device for |capture_params|, 75 // Called by VideoCaptureHost to locate a capture device for |capture_params|,
76 // adding the Host as a client of the device's controller if successful. The 76 // adding the Host as a client of the device's controller if successful. The
77 // value of |session_id| controls which device is selected; 77 // value of |session_id| controls which device is selected;
78 // this value should be a session id previously returned by Open(). 78 // this value should be a session id previously returned by Open().
79 // 79 //
80 // If the device is not already started (i.e., no other client is currently 80 // If the device is not already started (i.e., no other client is currently
81 // capturing from this device), this call will cause a VideoCaptureController 81 // capturing from this device), this call will cause a VideoCaptureController
82 // and VideoCaptureDevice to be created, possibly asynchronously. 82 // and VideoCaptureDevice to be created, possibly asynchronously.
83 // 83 //
84 // On success, the controller is returned via calling |done_cb|, indicating 84 // On success, the controller is returned via calling |done_cb|, indicating
85 // that the client was successfully added. A NULL controller is passed to 85 // that the client was successfully added. A NULL controller is passed to
86 // the callback on failure. 86 // the callback on failure. |done_cb| is not allowed to synchronously call
87 // StopCaptureForClient().
87 void StartCaptureForClient(media::VideoCaptureSessionId session_id, 88 void StartCaptureForClient(media::VideoCaptureSessionId session_id,
88 const media::VideoCaptureParams& capture_params, 89 const media::VideoCaptureParams& capture_params,
89 VideoCaptureControllerID client_id, 90 VideoCaptureControllerID client_id,
90 VideoCaptureControllerEventHandler* client_handler, 91 VideoCaptureControllerEventHandler* client_handler,
91 const DoneCB& done_cb); 92 const DoneCB& done_cb);
92 93
93 // Called by VideoCaptureHost to remove |client_handler|. If this is the last 94 // Called by VideoCaptureHost to remove |client_handler|. If this is the last
94 // client of the device, the |controller| and its VideoCaptureDevice may be 95 // client of the device, the |controller| and its VideoCaptureDevice may be
95 // destroyed. The client must not access |controller| after calling this 96 // destroyed. The client must not access |controller| after calling this
96 // function. 97 // function.
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 320
320 std::unique_ptr<base::android::ApplicationStatusListener> 321 std::unique_ptr<base::android::ApplicationStatusListener>
321 app_status_listener_; 322 app_status_listener_;
322 bool application_state_has_running_activities_; 323 bool application_state_has_running_activities_;
323 #endif 324 #endif
324 325
325 // The message loop of media stream device thread, where VCD's live. 326 // The message loop of media stream device thread, where VCD's live.
326 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_; 327 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
327 328
328 // Only accessed on Browser::IO thread. 329 // Only accessed on Browser::IO thread.
329 MediaStreamProviderListener* listener_; 330 base::ObserverList<MediaStreamProviderListener> listeners_;
330 media::VideoCaptureSessionId new_capture_session_id_; 331 media::VideoCaptureSessionId new_capture_session_id_;
331 332
332 // An entry is kept in this map for every session that has been created via 333 // An entry is kept in this map for every session that has been created via
333 // the Open() entry point. The keys are session_id's. This map is used to 334 // the Open() entry point. The keys are session_id's. This map is used to
334 // determine which device to use when StartCaptureForClient() occurs. Used 335 // determine which device to use when StartCaptureForClient() occurs. Used
335 // only on the IO thread. 336 // only on the IO thread.
336 SessionMap sessions_; 337 SessionMap sessions_;
337 338
338 // Currently opened DeviceEntry instances (each owning a VideoCaptureDevice - 339 // Currently opened DeviceEntry instances (each owning a VideoCaptureDevice -
339 // VideoCaptureController pair). The device may or may not be started. This 340 // VideoCaptureController pair). The device may or may not be started. This
(...skipping 26 matching lines...) Expand all
366 // Map used by DesktopCapture. 367 // Map used by DesktopCapture.
367 std::map<media::VideoCaptureSessionId, gfx::NativeViewId> 368 std::map<media::VideoCaptureSessionId, gfx::NativeViewId>
368 notification_window_ids_; 369 notification_window_ids_;
369 370
370 DISALLOW_COPY_AND_ASSIGN(VideoCaptureManager); 371 DISALLOW_COPY_AND_ASSIGN(VideoCaptureManager);
371 }; 372 };
372 373
373 } // namespace content 374 } // namespace content
374 375
375 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_MANAGER_H_ 376 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698