Index: content/browser/media/capture/desktop_capture_device.cc |
diff --git a/content/browser/media/capture/desktop_capture_device.cc b/content/browser/media/capture/desktop_capture_device.cc |
index a11e473e83cf6497e49952e5c594ad88a317100a..ef44f56b15ffb90d311774d1bcda34ece27c017a 100644 |
--- a/content/browser/media/capture/desktop_capture_device.cc |
+++ b/content/browser/media/capture/desktop_capture_device.cc |
@@ -17,6 +17,9 @@ |
#include "content/public/browser/desktop_media_id.h" |
#include "content/public/browser/power_save_blocker.h" |
#include "media/base/video_util.h" |
+#if defined(OS_ANDROID) |
+#include "media/screen_capture/android/screen_capturer_android.h" |
+#endif |
#include "third_party/libyuv/include/libyuv/scale_argb.h" |
#include "third_party/webrtc/modules/desktop_capture/cropping_window_capturer.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_and_cursor_composer.h" |
@@ -182,6 +185,13 @@ void DesktopCaptureDevice::Core::AllocateAndStart( |
desktop_capturer_->Start(this); |
+#if defined(OS_ANDROID) |
+ // For android, we don't use capture_timer_ to triger capturing. Instead, |
+ // we use ImageReader.OnImageAvailableListener to listen when a screen frame |
+ // available which is similar with VideoCapture |
miu
2015/05/20 03:33:27
What happens if the screen does not update for a l
|
+ return; |
+#endif |
+ |
CaptureFrameAndScheduleNext(); |
} |
@@ -199,8 +209,10 @@ DesktopCaptureDevice::Core::CreateSharedMemory(size_t size) { |
void DesktopCaptureDevice::Core::OnCaptureCompleted( |
webrtc::DesktopFrame* frame) { |
+#if !defined(OS_ANDROID) |
miu
2015/05/20 03:33:27
Why don't these statements apply to the android pl
|
DCHECK(task_runner_->BelongsToCurrentThread()); |
DCHECK(capture_in_progress_); |
+#endif |
if (!first_capture_returned_) { |
first_capture_returned_ = true; |
@@ -410,8 +422,13 @@ scoped_ptr<media::VideoCaptureDevice> DesktopCaptureDevice::Create( |
switch (source.type) { |
case DesktopMediaID::TYPE_SCREEN: { |
+#if defined(OS_ANDROID) |
+ scoped_ptr<webrtc::ScreenCapturer> screen_capturer( |
+ new media::ScreenCapturerAndroid()); |
+#else |
scoped_ptr<webrtc::ScreenCapturer> screen_capturer( |
webrtc::ScreenCapturer::Create(options)); |
+#endif |
if (screen_capturer && screen_capturer->SelectScreen(source.id)) { |
capturer.reset(new webrtc::DesktopAndCursorComposer( |
screen_capturer.release(), |