Commit Graph

23 Commits

Author SHA1 Message Date
98903d2f5e Remove ScreenCapturer and WindowCapturer
This change removes ScreenCapturer and WindowCapturer from WebRTC.

BUG=webrtc:6513

Review-Url: https://codereview.webrtc.org/2490063002
Cr-Commit-Position: refs/heads/master@{#15033}
2016-11-11 05:57:19 +00:00
54fd57980f Add CreateWindowCapturer() and CreateScreenCapturer() in DesktopCapturer
This change copies ScreenCapturerDifferWrapper to a new
DesktopCapturerDifferWrapper, and adds DesktopCapturer::CreateWindowCapturer and
DesktopCapturer::CreateScreenCapturer functions to replace
WindowCapturer::Create and ScreenCapturer::Create.

BUG=webrtc:6513

Committed: https://crrev.com/b763e39beba92b45baa09542f949daabbe6258a3
Review-Url: https://codereview.webrtc.org/2468753002
Cr-Original-Commit-Position: refs/heads/master@{#14880}
Cr-Commit-Position: refs/heads/master@{#14903}
2016-11-02 21:49:38 +00:00
4d0ec05323 Revert of Add CreateWindowCapturer() and CreateScreenCapturer() in DesktopCapturer (patchset #2 id:40001 of https://codereview.webrtc.org/2468753002/ )
Reason for revert:
Prevents WebRTC rolls into Chrome.

https://build.chromium.org/p/chromium.linux/builders/Blimp%20Linux%20%28dbg%29/builds/14848/steps/compile/logs/stdio

The reason for reverting is: Breaks
https://build.chromium.org/p/chromium.linux/builders/Blimp%20Linux%20%28dbg%2...
[881/894] SOLINK ./libcontent.so
FAILED: libcontent.so libcontent.so.TOC
../../third_party/webrtc/modules/desktop_capture/desktop_capturer.cc:45: error:
undefined reference to
'webrtc::DesktopCapturer::CreateRawWindowCapturer(webrtc::DesktopCaptureOptions
const&)'
../../third_party/webrtc/modules/desktop_capture/desktop_capturer.cc:56: error:
undefined reference to
'webrtc::DesktopCapturer::CreateRawScreenCapturer(webrtc::DesktopCaptureOptions
const&)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

Original issue's description:
> Add CreateWindowCapturer() and CreateScreenCapturer() in DesktopCapturer
>
> This change copies ScreenCapturerDifferWrapper to a new
> DesktopCapturerDifferWrapper, and adds DesktopCapturer::CreateWindowCapturer and
> DesktopCapturer::CreateScreenCapturer functions to replace
> WindowCapturer::Create and ScreenCapturer::Create.
>
> BUG=webrtc:6513
>
> Committed: https://crrev.com/b763e39beba92b45baa09542f949daabbe6258a3
> Cr-Commit-Position: refs/heads/master@{#14880}

TBR=sergeyu@chromium.org,zijiehe@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6513

Review-Url: https://codereview.webrtc.org/2471773002
Cr-Commit-Position: refs/heads/master@{#14884}
2016-11-02 10:13:23 +00:00
b763e39beb Add CreateWindowCapturer() and CreateScreenCapturer() in DesktopCapturer
This change copies ScreenCapturerDifferWrapper to a new
DesktopCapturerDifferWrapper, and adds DesktopCapturer::CreateWindowCapturer and
DesktopCapturer::CreateScreenCapturer functions to replace
WindowCapturer::Create and ScreenCapturer::Create.

BUG=webrtc:6513

Review-Url: https://codereview.webrtc.org/2468753002
Cr-Commit-Position: refs/heads/master@{#14880}
2016-11-01 23:02:51 +00:00
e9a3c7f43c Wrap ScreenCapturer with ScreenCapturerDifferWrapper
This change is to add an DesktopCapturerOptions accurate_updated_region() with
default value as false to indicate whether a pixel-wise differentiation is
required. And ScreenCapturer::Create() function will wrap the implementation
with ScreenCapturerDifferWrapper.

Chromoting will use this option to filter out unchanged frames.

BUG=314516

Review-Url: https://codereview.webrtc.org/2314323002
Cr-Commit-Position: refs/heads/master@{#14248}
2016-09-16 07:03:20 +00:00
2d618de25a [Chromoting] Improve DirectX capturer to support multiple outputs
Current DirectX capturer cannot capture multiple video cards or monitors. But
according to DXGI desktop duplication sample (https://goo.gl/An0L9l), we can
capture multiple video cards and monitors by duplicating them one by one. So
instead of one IDXGIOutputDuplication instance, this change creates an
IDXGIOutputDuplication instance for each monitor, and merge the output into
one DesktopFrame.
Several other changes are also included,
1. Add supports to DXGI_OUTDUPL_DESC.DesktopImageInSystemMemory. When this flag
is true, we won't copy its content to staging buffer.
2. Capture one monitor instead of entire screen.

Above changes make the logic complex. But with some refactor work, the logic is
not disordered. Please refer to the doc @ https://goo.gl/hU1ifG.

BUG=314516

Review-Url: https://codereview.webrtc.org/2099123002
Cr-Commit-Position: refs/heads/master@{#13684}
2016-08-09 00:50:28 +00:00
2970c2a237 DirectX based screen capturer logic
BUG=595530,314516

Review-Url: https://codereview.webrtc.org/1845113002
Cr-Commit-Position: refs/heads/master@{#12835}
2016-05-21 05:08:08 +00:00
2bb3afa054 Replace scoped_ptr with unique_ptr in webrtc/modules/desktop_capture/
BUG=webrtc:5520

Review URL: https://codereview.webrtc.org/1743203002

Cr-Commit-Position: refs/heads/master@{#12023}
2016-03-16 22:58:13 +00:00
0eb15ed7b8 Don't call the Pass methods of rtc::Buffer, rtc::scoped_ptr, and rtc::ScopedVector
We can now use std::move instead!

This CL leaves the Pass methods in place; a follow-up CL will add deprecation annotations to them.

Review URL: https://codereview.webrtc.org/1460043002

Cr-Commit-Position: refs/heads/master@{#11064}
2015-12-17 11:04:24 +00:00
00b8f6b364 Use base/scoped_ptr.h; system_wrappers/interface/scoped_ptr.h is going away
BUG=
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36229004

Cr-Commit-Position: refs/heads/master@{#8517}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8517 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:43:50 +00:00
4220434d37 Implement the Windows screen capturer using the Magnification API.
The original ScreenCapturerWin is renamed ScreenCapturerWinGdi.

BUG=2789
TESTED=full desktop cast and single monitor cast works on win7 and win8 desktop mode. Have to use GDI capturer on win8 metro mode. Changing display configuration work on the fly.
R=sergeyu@chromium.org, wez@chromium.org

Committed: https://code.google.com/p/webrtc/source/detail?r=6048

Review URL: https://webrtc-codereview.appspot.com/12149004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6053 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-05 16:08:47 +00:00
7dccce3948 Revert 6048 "Implement the Windows screen capturer using the Mag..."
> Implement the Windows screen capturer using the Magnification API.
> The original ScreenCapturerWin is renamed ScreenCapturerWinGdi.
> 
> BUG=2789
> TESTED=full desktop cast and single monitor cast works on win7 and win8 desktop mode. Have to use GDI capturer on win8 metro mode. Changing display configuration work on the fly.
> R=sergeyu@chromium.org, wez@chromium.org
> 
> Review URL: https://webrtc-codereview.appspot.com/12149004

TBR=jiayl@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/15429005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6052 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-05 11:17:26 +00:00
b235c56017 Implement the Windows screen capturer using the Magnification API.
The original ScreenCapturerWin is renamed ScreenCapturerWinGdi.

BUG=2789
TESTED=full desktop cast and single monitor cast works on win7 and win8 desktop mode. Have to use GDI capturer on win8 metro mode. Changing display configuration work on the fly.
R=sergeyu@chromium.org, wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/12149004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6048 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-03 00:16:29 +00:00
8ce7c72456 Fix the captured screen rect conversion.
device_mode.dmPosition is already relative to the primary display's top-left, while the expected value of GetScreenRect() is also relative to the primary display's top-left.

TESTED=verified on Windows single monitor capturing and cursor capturing is fixed.

BUG=https://code.google.com/p/chromium/issues/detail?id=362631
R=wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/11789006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5890 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-11 22:31:15 +00:00
0231e801d6 Invalidate the whole screen when the frame size is changed.
Otherwise we'll compare frames of different sizes and read into invalid
memory.

BUG=https://code.google.com/p/chromium/issues/detail?id=345498
R=sergeyu@chromium.org

Review URL: https://webrtc-codereview.appspot.com/9149004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5614 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-26 18:54:57 +00:00
4985927d36 Implement screen enumeration and individual screen capturing for Windows.
BUG=2787
R=sergeyu@chromium.org

Review URL: https://webrtc-codereview.appspot.com/7239004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5399 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-17 17:19:16 +00:00
017b619010 Extends the ScreenCapturer interface for individual display screen cast.
Real implementations for each platform will be added in future CLs.

BUG=2787
R=sergeyu@chromium.org

Review URL: https://webrtc-codereview.appspot.com/6819005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5386 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-14 18:26:37 +00:00
8ae72560dd Make MouseCursor mutable
MouseCursor objects were previous immutable which makes it harder to
implement deserializers when MouseCursor is sent over IPC in Chromium.

R=dcaiafa@chromium.org

Committed: https://code.google.com/p/webrtc/source/detail?r=5310

Review URL: https://webrtc-codereview.appspot.com/6059005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5314 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-18 02:18:01 +00:00
e839da02c1 Fix MouseCursor to MouseCursorShape conversion in ScreenCapturerWin.
BUG=crbug.com/322596
R=dcaiafa@chromium.org, wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/4279005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5165 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-11-22 20:39:16 +00:00
2df89c0c8b MouseCursorMonitor implementation for OSX and Windows.
BUG=crbug.com/173265
R=wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/2388004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4994 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-17 19:47:18 +00:00
894e6fe9ea Add DesktopCaptureOptions class.
The new class is used to pass configuration parameters to screen/window
capturers. It also allows to share X Window connection between multiple
objects.

R=wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/2374004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4952 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-12 22:40:05 +00:00
4af0878e57 Allow the screen capturer to capture oversized cursors and cursors without alpha channel (Windows).
Changes in this CL:
  - CaptureCursor() scans the cursor to verify that it has alpha channel.
  - The AND mask of the cursor is used to reconstruct transparency if the cursor does not have alpha channel.
  - CaptureCursor() always outlines the cursor when a "screen reverse" pixel detected.  Previously it was only done for black and while cursors.
    
Added desktop_capture_unittest.MouseCursorShapeTest to test the cursor conversion code.
    
BUG=chromium:223147
R=sergeyu@chromium.org

Review URL: https://webrtc-codereview.appspot.com/1627004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4210 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-10 22:29:17 +00:00
3d34f66292 Move screen capturers from chromium to webrtc.
R=alexeypa@chromium.org, wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/1586005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4175 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-04 18:51:23 +00:00