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

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

Issue 270263008: Add a ChromeOS implementation of VideoCaptureDevice (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 7 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 3cdb1abffd3cddfffe648d9c74711eb1c7b8f0ae..c0508302d2728226501944a22c02cb18a91de4d4 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -39,6 +39,7 @@
#include "media/base/media_switches.h"
#include "media/video/capture/fake_video_capture_device_factory.h"
#include "media/video/capture/file_video_capture_device_factory.h"
+#include "ui/gfx/screen.h"
#include "url/gurl.h"
#if defined(OS_WIN)
@@ -343,12 +344,14 @@ MediaStreamManager::MediaStreamManager()
: audio_manager_(NULL),
monitoring_started_(false),
io_loop_(NULL),
+ observing_screen_(false),
use_fake_ui_(false) {}
MediaStreamManager::MediaStreamManager(media::AudioManager* audio_manager)
: audio_manager_(audio_manager),
monitoring_started_(false),
io_loop_(NULL),
+ observing_screen_(false),
use_fake_ui_(false) {
DCHECK(audio_manager_);
memset(active_enumeration_ref_count_, 0,
@@ -382,6 +385,13 @@ MediaStreamManager::~MediaStreamManager() {
// MediaStreamManager, but it may be NULL in unit tests.
if (power_monitor)
power_monitor->RemoveObserver(this);
+
+ if (observing_screen_) {
+ gfx::Screen* screen =
+ gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE);
+ if (screen)
+ screen->RemoveObserver(this);
+ }
}
VideoCaptureManager* MediaStreamManager::video_capture_manager() {
@@ -447,6 +457,16 @@ void MediaStreamManager::GenerateStream(MediaStreamRequester* requester,
UseFakeUI(scoped_ptr<FakeMediaStreamUIProxy>());
}
+ if (!observing_screen_) {
vrk (LEFT CHROMIUM) 2014/05/09 01:11:31 Hmm.. I don't think this is the right place to add
Zachary Kuznia 2014/05/09 07:42:22 I will discuss this with them.
+ gfx::Screen* screen =
+ gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_ALTERNATE);
+ if (screen) {
+ screen->AddObserver(this);
+ OnDisplayBoundsChanged(screen->GetPrimaryDisplay());
vrk (LEFT CHROMIUM) 2014/05/09 01:11:31 Generally it's best let observer functions be call
Zachary Kuznia 2014/05/09 07:42:22 Done.
+ observing_screen_ = true;
+ }
+ }
+
DeviceRequest* request = new DeviceRequest(requester,
render_process_id,
render_view_id,
@@ -708,6 +728,7 @@ void MediaStreamManager::OpenDevice(MediaStreamRequester* requester,
DCHECK(type == MEDIA_DEVICE_AUDIO_CAPTURE ||
type == MEDIA_DEVICE_VIDEO_CAPTURE);
DVLOG(1) << "OpenDevice ({page_request_id = " << page_request_id << "})";
+
StreamOptions options;
if (IsAudioMediaType(type)) {
options.audio_requested = true;
@@ -1947,4 +1968,26 @@ void MediaStreamManager::OnMediaStreamUIWindowId(MediaStreamType video_type,
}
}
+void MediaStreamManager::OnDisplayBoundsChanged(const gfx::Display& display) {
+ if (display.IsInternal()) {
vrk (LEFT CHROMIUM) 2014/05/09 01:11:31 Move the "if (display.IsInternal())" check to SetD
Zachary Kuznia 2014/05/09 07:42:22 Done.
+ BrowserThread::PostTask(
+ BrowserThread::IO,
+ FROM_HERE,
+ base::Bind(&MediaStreamManager::SetDisplayRotationOnIOThread,
+ base::Unretained(this), display.rotation()));
+ }
+}
+
+void MediaStreamManager::OnDisplayAdded(const gfx::Display& new_display) {
vrk (LEFT CHROMIUM) 2014/05/09 01:11:31 Nit: {} on one line, and comment out the unused pa
Zachary Kuznia 2014/05/09 07:42:22 Done.
+}
+
+void MediaStreamManager::OnDisplayRemoved(const gfx::Display& old_display) {
vrk (LEFT CHROMIUM) 2014/05/09 01:11:31 ditto above
Zachary Kuznia 2014/05/09 07:42:22 Done, save that the } doesn't fit on the same line
+}
+
+void MediaStreamManager::SetDisplayRotationOnIOThread(
+ gfx::Display::Rotation rotation) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ video_capture_manager()->SetDisplayRotation(rotation);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698