Index: content/browser/renderer_host/media/video_capture_manager.cc |
diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc |
index 007fae8d034143bd019b28d18fa6ea52b26a205f..e778e6e1ca2d0aca6a381d7a9e2eb8cfcc1d798c 100644 |
--- a/content/browser/renderer_host/media/video_capture_manager.cc |
+++ b/content/browser/renderer_host/media/video_capture_manager.cc |
@@ -34,6 +34,7 @@ |
#include "content/public/common/media_stream_request.h" |
#include "media/base/bind_to_current_loop.h" |
#include "media/base/media_switches.h" |
+#include "media/base/video_facing.h" |
#include "media/capture/video/video_capture_buffer_pool_impl.h" |
#include "media/capture/video/video_capture_buffer_tracker_factory_impl.h" |
#include "media/capture/video/video_capture_device.h" |
@@ -334,13 +335,19 @@ VideoCaptureManager::VideoCaptureManager( |
std::unique_ptr<media::VideoCaptureDeviceFactory> factory) |
: listener_(nullptr), |
new_capture_session_id_(1), |
- video_capture_device_factory_(std::move(factory)) {} |
+ video_capture_device_factory_(std::move(factory)), |
+ capture_observer_(NULL) {} |
VideoCaptureManager::~VideoCaptureManager() { |
DCHECK(devices_.empty()); |
DCHECK(device_start_queue_.empty()); |
} |
+void VideoCaptureManager::SetVideoCaptureObserver( |
+ media::VideoCaptureObserver* observer) { |
+ capture_observer_ = observer; |
+} |
+ |
void VideoCaptureManager::Register( |
MediaStreamProviderListener* listener, |
const scoped_refptr<base::SingleThreadTaskRunner>& device_task_runner) { |
@@ -471,6 +478,11 @@ void VideoCaptureManager::DoStopDevice(DeviceEntry* entry) { |
} |
} |
+ const DeviceInfo* device_info = GetDeviceInfoById(entry->id); |
+ if (device_info != NULL && capture_observer_ != NULL) { |
+ capture_observer_->OnVideoCaptureStopped(device_info->descriptor.facing); |
+ } |
+ |
DVLOG(3) << "DoStopDevice. Send stop request for device = " << entry->id |
<< " serial_id = " << entry->serial_id << "."; |
entry->video_capture_controller.OnLog( |
@@ -649,6 +661,10 @@ VideoCaptureManager::DoStartDeviceCaptureOnDeviceThread( |
return nullptr; |
} |
+ if (capture_observer_ != NULL) { |
+ capture_observer_->OnVideoCaptureStarted(descriptor.facing); |
+ } |
+ |
video_capture_device->AllocateAndStart(params, std::move(device_client)); |
return video_capture_device; |
} |