OLD | NEW |
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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 VideoCaptureControllerID client_id, | 72 VideoCaptureControllerID client_id, |
73 VideoCaptureControllerEventHandler* client_handler, | 73 VideoCaptureControllerEventHandler* client_handler, |
74 const DoneCB& done_cb); | 74 const DoneCB& done_cb); |
75 | 75 |
76 // Called by VideoCaptureHost to remove |client_handler|. If this is the last | 76 // Called by VideoCaptureHost to remove |client_handler|. If this is the last |
77 // client of the device, the |controller| and its VideoCaptureDevice may be | 77 // client of the device, the |controller| and its VideoCaptureDevice may be |
78 // destroyed. The client must not access |controller| after calling this | 78 // destroyed. The client must not access |controller| after calling this |
79 // function. | 79 // function. |
80 void StopCaptureForClient(VideoCaptureController* controller, | 80 void StopCaptureForClient(VideoCaptureController* controller, |
81 VideoCaptureControllerID client_id, | 81 VideoCaptureControllerID client_id, |
82 VideoCaptureControllerEventHandler* client_handler); | 82 VideoCaptureControllerEventHandler* client_handler, |
| 83 bool aborted_due_to_error); |
83 | 84 |
84 // Retrieves all capture supported formats for a particular device. Returns | 85 // Retrieves all capture supported formats for a particular device. Returns |
85 // false if the |capture_session_id| is not found. The supported formats are | 86 // false if the |capture_session_id| is not found. The supported formats are |
86 // cached during device(s) enumeration, and depending on the underlying | 87 // cached during device(s) enumeration, and depending on the underlying |
87 // implementation, could be an empty list. | 88 // implementation, could be an empty list. |
88 bool GetDeviceSupportedFormats( | 89 bool GetDeviceSupportedFormats( |
89 media::VideoCaptureSessionId capture_session_id, | 90 media::VideoCaptureSessionId capture_session_id, |
90 media::VideoCaptureFormats* supported_formats); | 91 media::VideoCaptureFormats* supported_formats); |
91 | 92 |
92 // Retrieves the format(s) currently in use. Returns false if the | 93 // Retrieves the format(s) currently in use. Returns false if the |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 DeviceEntry* GetDeviceEntryForMediaStreamDevice( | 141 DeviceEntry* GetDeviceEntryForMediaStreamDevice( |
141 const MediaStreamDevice& device_info); | 142 const MediaStreamDevice& device_info); |
142 | 143 |
143 // Find a DeviceEntry entry for the indicated session, creating a fresh one | 144 // Find a DeviceEntry entry for the indicated session, creating a fresh one |
144 // if necessary. Returns NULL if the session id is invalid. | 145 // if necessary. Returns NULL if the session id is invalid. |
145 DeviceEntry* GetOrCreateDeviceEntry( | 146 DeviceEntry* GetOrCreateDeviceEntry( |
146 media::VideoCaptureSessionId capture_session_id); | 147 media::VideoCaptureSessionId capture_session_id); |
147 | 148 |
148 // Find the DeviceEntry that owns a particular controller pointer. | 149 // Find the DeviceEntry that owns a particular controller pointer. |
149 DeviceEntry* GetDeviceEntryForController( | 150 DeviceEntry* GetDeviceEntryForController( |
150 const VideoCaptureController* controller); | 151 const VideoCaptureController* controller) const; |
151 | 152 |
152 bool IsOnDeviceThread() const; | 153 bool IsOnDeviceThread() const; |
153 | 154 |
154 // Queries the Names of the devices in the system; the formats supported by | 155 // Queries the Names of the devices in the system; the formats supported by |
155 // the new devices are also queried, and consolidated with the copy of the | 156 // the new devices are also queried, and consolidated with the copy of the |
156 // local device info cache passed. The consolidated list of devices and | 157 // local device info cache passed. The consolidated list of devices and |
157 // supported formats is returned. | 158 // supported formats is returned. |
158 DeviceInfos GetAvailableDevicesInfoOnDeviceThread( | 159 DeviceInfos GetAvailableDevicesInfoOnDeviceThread( |
159 MediaStreamType stream_type, | 160 MediaStreamType stream_type, |
160 const DeviceInfos& old_device_info_cache); | 161 const DeviceInfos& old_device_info_cache); |
(...skipping 21 matching lines...) Expand all Loading... |
182 media::VideoCaptureSessionId session_id, | 183 media::VideoCaptureSessionId session_id, |
183 gfx::NativeViewId window_id); | 184 gfx::NativeViewId window_id); |
184 | 185 |
185 // The message loop of media stream device thread, where VCD's live. | 186 // The message loop of media stream device thread, where VCD's live. |
186 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_; | 187 scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_; |
187 | 188 |
188 // Only accessed on Browser::IO thread. | 189 // Only accessed on Browser::IO thread. |
189 MediaStreamProviderListener* listener_; | 190 MediaStreamProviderListener* listener_; |
190 media::VideoCaptureSessionId new_capture_session_id_; | 191 media::VideoCaptureSessionId new_capture_session_id_; |
191 | 192 |
| 193 typedef std::map<media::VideoCaptureSessionId, MediaStreamDevice> SessionMap; |
192 // An entry is kept in this map for every session that has been created via | 194 // An entry is kept in this map for every session that has been created via |
193 // the Open() entry point. The keys are session_id's. This map is used to | 195 // the Open() entry point. The keys are session_id's. This map is used to |
194 // determine which device to use when StartCaptureForClient() occurs. Used | 196 // determine which device to use when StartCaptureForClient() occurs. Used |
195 // only on the IO thread. | 197 // only on the IO thread. |
196 std::map<media::VideoCaptureSessionId, MediaStreamDevice> sessions_; | 198 SessionMap sessions_; |
197 | 199 |
198 // An entry, kept in a map, that owns a VideoCaptureDevice and its associated | 200 // An entry, kept in a map, that owns a VideoCaptureDevice and its associated |
199 // VideoCaptureController. VideoCaptureManager owns all VideoCaptureDevices | 201 // VideoCaptureController. VideoCaptureManager owns all VideoCaptureDevices |
200 // and VideoCaptureControllers and is responsible for deleting the instances | 202 // and VideoCaptureControllers and is responsible for deleting the instances |
201 // when they are not used any longer. | 203 // when they are not used any longer. |
202 // | 204 // |
203 // The set of currently started VideoCaptureDevice and VideoCaptureController | 205 // The set of currently started VideoCaptureDevice and VideoCaptureController |
204 // objects is only accessed from IO thread, though the DeviceEntry instances | 206 // objects is only accessed from IO thread, though the DeviceEntry instances |
205 // themselves may visit to the device thread for device creation and | 207 // themselves may visit to the device thread for device creation and |
206 // destruction. | 208 // destruction. |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 // Accessed on the device thread only. | 240 // Accessed on the device thread only. |
239 std::map<media::VideoCaptureSessionId, gfx::NativeViewId> | 241 std::map<media::VideoCaptureSessionId, gfx::NativeViewId> |
240 notification_window_ids_; | 242 notification_window_ids_; |
241 | 243 |
242 DISALLOW_COPY_AND_ASSIGN(VideoCaptureManager); | 244 DISALLOW_COPY_AND_ASSIGN(VideoCaptureManager); |
243 }; | 245 }; |
244 | 246 |
245 } // namespace content | 247 } // namespace content |
246 | 248 |
247 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_MANAGER_H_ | 249 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_MANAGER_H_ |
OLD | NEW |