Chromium Code Reviews| 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(), |