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

Unified Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 2800493002: [Mojo Video Capture] Create abstraction VideoCaptureProvider (Closed)
Patch Set: Incorporated suggestions from PatchSet 2 Created 3 years, 8 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/media_stream_manager.cc
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index 2711aac7ce99c23aed5401e5a251fea86f556e35..840d9a51f09371a0ae7a03a509511bbdfaab1d85 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -28,6 +28,7 @@
#include "build/build_config.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/renderer_host/media/audio_input_device_manager.h"
+#include "content/browser/renderer_host/media/in_process_video_capture_provider.h"
#include "content/browser/renderer_host/media/media_capture_devices_impl.h"
#include "content/browser/renderer_host/media/media_devices_manager.h"
#include "content/browser/renderer_host/media/media_stream_requester.h"
@@ -394,12 +395,11 @@ void MediaStreamManager::SendMessageToNativeLog(const std::string& message) {
}
MediaStreamManager::MediaStreamManager(media::AudioSystem* audio_system)
- : MediaStreamManager(audio_system, nullptr, nullptr) {}
+ : MediaStreamManager(audio_system, nullptr) {}
MediaStreamManager::MediaStreamManager(
media::AudioSystem* audio_system,
- std::unique_ptr<media::VideoCaptureSystem> video_capture_system,
- scoped_refptr<base::SingleThreadTaskRunner> device_task_runner)
+ std::unique_ptr<VideoCaptureProvider> video_capture_provider)
: audio_system_(audio_system),
#if defined(OS_WIN)
video_capture_thread_("VideoCaptureThread"),
@@ -408,13 +408,9 @@ MediaStreamManager::MediaStreamManager(
switches::kUseFakeUIForMediaStream)) {
DCHECK(audio_system_);
- if (!video_capture_system) {
- video_capture_system = base::MakeUnique<media::VideoCaptureSystemImpl>(
- media::VideoCaptureDeviceFactory::CreateFactory(
- BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)));
- }
- if (!device_task_runner) {
- device_task_runner = audio_system_->GetTaskRunner();
+ if (!video_capture_provider) {
+ scoped_refptr<base::SingleThreadTaskRunner> device_task_runner =
+ audio_system_->GetTaskRunner();
#if defined(OS_WIN)
// Use an STA Video Capture Thread to try to avoid crashes on enumeration of
// buggy third party Direct Show modules, http://crbug.com/428958.
@@ -422,9 +418,13 @@ MediaStreamManager::MediaStreamManager(
CHECK(video_capture_thread_.Start());
device_task_runner = video_capture_thread_.task_runner();
#endif
+ video_capture_provider = base::MakeUnique<InProcessVideoCaptureProvider>(
+ base::MakeUnique<media::VideoCaptureSystemImpl>(
+ media::VideoCaptureDeviceFactory::CreateFactory(
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::UI))),
+ std::move(device_task_runner));
}
- InitializeMaybeAsync(std::move(video_capture_system),
- std::move(device_task_runner));
+ InitializeMaybeAsync(std::move(video_capture_provider));
base::PowerMonitor* power_monitor = base::PowerMonitor::Get();
// BrowserMainLoop always creates the PowerMonitor instance before creating
@@ -1229,8 +1229,7 @@ void MediaStreamManager::FinalizeMediaAccessRequest(
}
void MediaStreamManager::InitializeMaybeAsync(
- std::unique_ptr<media::VideoCaptureSystem> video_capture_system,
- scoped_refptr<base::SingleThreadTaskRunner> device_task_runner) {
+ std::unique_ptr<VideoCaptureProvider> video_capture_provider) {
// Some unit tests initialize the MSM in the IO thread and assume the
// initialization is done synchronously. Other clients call this from a
// different thread and expect initialization to run asynchronously.
@@ -1238,8 +1237,8 @@ void MediaStreamManager::InitializeMaybeAsync(
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&MediaStreamManager::InitializeMaybeAsync,
- base::Unretained(this), base::Passed(&video_capture_system),
- std::move(device_task_runner)));
+ base::Unretained(this),
+ base::Passed(&video_capture_provider)));
return;
}
@@ -1280,8 +1279,8 @@ void MediaStreamManager::InitializeMaybeAsync(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
"457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 4"));
- video_capture_manager_ = new VideoCaptureManager(
- std::move(video_capture_system), std::move(device_task_runner));
+ video_capture_manager_ =
+ new VideoCaptureManager(std::move(video_capture_provider));
video_capture_manager_->RegisterListener(this);
media_devices_manager_.reset(

Powered by Google App Engine
This is Rietveld 408576698