Commit Graph

41 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
fce4905987 Implement and use new DesktopCapturer APIs in WebRTC
This change replaces all GetWindowList / GetScreenList with GetScreenList,
SelectWindow / SelectScreen with SelectSource, and BringSelectedWindowToFront
with FocusOnSelectedSource in WebRTC.

BUG=webrtc:6513

Review-Url: https://codereview.webrtc.org/2479553006
Cr-Commit-Position: refs/heads/master@{#14960}
2016-11-07 23:25:22 +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
b68d655f36 Add DesktopCapturer GetSourceList SelectSource FocusOnSelectedSource functions
I have chosen part of 2435603010 changes to compose this change.
According to the discussion we have made in previous change, this CL contains,
1. Source structure to represent a source of a DesktopCapturer.
2. GetSourceList / SelectSource / FocusOnSelectedSource functions in
DesktopCapturer.
3. ScreenCapturer and WindowCapturer forward corresponding functions to the new
DesktopCapturer APIs.

After this change, We can remove WindowCapturer & ScreenCapturer references from
Chromium, and use the new APIs.

BUG=webrtc:6513

Committed: https://crrev.com/9cb0b3b4ac916cdf52d97a63d923dfbe73f0541e
Review-Url: https://codereview.webrtc.org/2452263003
Cr-Original-Commit-Position: refs/heads/master@{#14830}
Cr-Commit-Position: refs/heads/master@{#14832}
2016-10-29 00:35:16 +00:00
fcab7d62d5 Revert of Add DesktopCapturer GetSourceList SelectSource FocusOnSelectedSource functions (patchset #3 id:120001 of https://codereview.chromium.org/2452263003/ )
Reason for revert:
Build break in Chromium

Original issue's description:
> Add DesktopCapturer GetSourceList SelectSource FocusOnSelectedSource functions
>
> I have chosen part of 2435603010 changes to compose this change.
> According to the discussion we have made in previous change, this CL contains,
> 1. Source structure to represent a source of a DesktopCapturer.
> 2. GetSourceList / SelectSource / FocusOnSelectedSource functions in
> DesktopCapturer.
> 3. ScreenCapturer and WindowCapturer forward corresponding functions to the new
> DesktopCapturer APIs.
>
> After this change, We can remove WindowCapturer & ScreenCapturer references from
> Chromium, and use the new APIs.
>
> BUG=webrtc:6513
>
> Committed: https://crrev.com/9cb0b3b4ac916cdf52d97a63d923dfbe73f0541e
> Cr-Commit-Position: refs/heads/master@{#14830}

TBR=sergeyu@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/2464553002
Cr-Commit-Position: refs/heads/master@{#14831}
2016-10-29 00:14:16 +00:00
9cb0b3b4ac Add DesktopCapturer GetSourceList SelectSource FocusOnSelectedSource functions
I have chosen part of 2435603010 changes to compose this change.
According to the discussion we have made in previous change, this CL contains,
1. Source structure to represent a source of a DesktopCapturer.
2. GetSourceList / SelectSource / FocusOnSelectedSource functions in
DesktopCapturer.
3. ScreenCapturer and WindowCapturer forward corresponding functions to the new
DesktopCapturer APIs.

After this change, We can remove WindowCapturer & ScreenCapturer references from
Chromium, and use the new APIs.

BUG=webrtc:6513

Review-Url: https://codereview.webrtc.org/2452263003
Cr-Commit-Position: refs/heads/master@{#14830}
2016-10-29 00:07:00 +00:00
e183121657 Enable clang style plugin in webrtc/modules/desktop_capture
Enabled the plugin and cleaned up all issues it found, mainly virtual
destructors not being marked as override.

BUG=webrtc:163

Review-Url: https://codereview.webrtc.org/2436503004
Cr-Commit-Position: refs/heads/master@{#14793}
2016-10-26 20:15:47 +00:00
bdb8df895a BringSelectedWindowToFront should bring the window to front instead of only focusing it
The API is misused, please refer to the bug for detail explanation.

BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=6565

Review-Url: https://codereview.webrtc.org/2426423005
Cr-Commit-Position: refs/heads/master@{#14715}
2016-10-20 23:44:22 +00:00
91902cb6c0 Remove DesktopRegion parameter from DesktopCapturer::Capture.
To ensure this change won't break Chromium, this is the first change, to add a
new CaptureFrame() function, and let Capture(DesktopRegion) and CaptureFrame()
call each other. So both a legacy consumer or a legacy implementation won't be
broken.

BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=6513

Review-Url: https://codereview.webrtc.org/2409833002
Cr-Commit-Position: refs/heads/master@{#14635}
2016-10-13 23:47:54 +00:00
5d910286e1 Use std::unique_ptr<> to pass frame ownership in DesktopCapturer impls.
Previously raw pointers were used for owned DesktopFrame instances.
Updated all screen and window capturer implementations to use
std::unique_ptr<>.

Also includes some other cleanups in the capturers:
 - s/NULL/nullptr
 - moved default initializers to class definition.

BUG=webrtc:5950

Review-Url: https://codereview.webrtc.org/1988783003
Cr-Commit-Position: refs/heads/master@{#13058}
2016-06-07 23:42:07 +00:00
b4c7b8365d Revert of Use std::unique_ptr<> to pass frame ownership in DesktopCapturer impls. (patchset #7 id:140001 of https://codereview.webrtc.org/1988783003/ )
Reason for revert:
Broke chromium builder

Original issue's description:
> Use std::unique_ptr<> to pass frame ownership in DesktopCapturer impls.
>
> Previously raw pointers were used for owned DesktopFrame instances.
> Updated all screen and window capturer implementations to use
> std::unique_ptr<>.
>
> Also includes some other cleanups in the capturers:
>  - s/NULL/nullptr
>  - moved default initializers to class definition.
>
> BUG=webrtc:5950
>
> Committed: https://crrev.com/4a627a8c13554d12412cabb8f751caee6e61ee32
> Cr-Commit-Position: refs/heads/master@{#13032}

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

Review-Url: https://codereview.webrtc.org/2030333003
Cr-Commit-Position: refs/heads/master@{#13033}
2016-06-03 12:56:47 +00:00
4a627a8c13 Use std::unique_ptr<> to pass frame ownership in DesktopCapturer impls.
Previously raw pointers were used for owned DesktopFrame instances.
Updated all screen and window capturer implementations to use
std::unique_ptr<>.

Also includes some other cleanups in the capturers:
 - s/NULL/nullptr
 - moved default initializers to class definition.

BUG=webrtc:5950

Review-Url: https://codereview.webrtc.org/1988783003
Cr-Commit-Position: refs/heads/master@{#13032}
2016-06-03 12:15:32 +00:00
4485ffb58d #include "webrtc/base/constructormagic.h" where appropriate
Any file that uses the RTC_DISALLOW_* macros should #include
"webrtc/base/constructormagic.h", but a shocking number of them don't.
This causes trouble when we try to wean files off of #including
scoped_ptr.h, since a bunch of files get their constructormagic macros
only from there.

Rather than fixing these errors one by one as they turn up, this CL
simply ensures that every file in the WebRTC tree that uses the
RTC_DISALLOW_* macros #includes "webrtc/base/constructormagic.h".

BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#12509}
2016-04-26 15:14:48 +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
77f3e0da5a Screen was flickering when the picker for desktop medias showed up in Windows platform. Keeping track of window size for each window so that BitBlt() instead of PrintWindow() will be called for windows with unchanged sizes.
BUG=472857

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

Cr-Commit-Position: refs/heads/master@{#11721}
2016-02-23 16:57:54 +00:00
c94bd9bf86 If a desktop captured window switches on/off it full screen mode, the capture may be unexpectedly terminated. During the transition of full screen mode on/off, the window can be temporarily invisible.
BUG=498484

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

Cr-Commit-Position: refs/heads/master@{#10583}
2015-11-10 15:33:58 +00:00
98f53510b2 system_wrappers: rename interface -> include
BUG=webrtc:5095
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10438}
2015-10-28 17:17:50 +00:00
371dc7e560 WebRtc Win Desktop capture: ignore Win8+ Modern Apps' windows.
Microsoft introduced modern app from win8. Modern apps can be used cross Microsoft's platforms.

It was confirmed from Microsoft that there is no support for modern app's window capture.

BUG=526883

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

Cr-Commit-Position: refs/heads/master@{#10154}
2015-10-02 22:36:36 +00:00
3c089d751e Add RTC_ prefix to contructormagic macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

* DISALLOW_ASSIGN -> RTC_DISALLOW_ASSIGN
* DISALLOW_COPY_AND_ASSIGN -> RTC_DISALLOW_COPY_AND_ASSIGN
* DISALLOW_IMPLICIT_CONSTRUCTORS -> RTC_DISALLOW_IMPLICIT_CONSTRUCTORS

Related CL: https://codereview.webrtc.org/1335923002/

BUG=chromium:468375
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9953}
2015-09-16 12:37:52 +00:00
d848d5e74a Enable cropping window capturing for Win7 when Aero is disabled.
BUG=webrtc:496110
R=sergeyu@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#9595}
2015-07-16 15:49:46 +00:00
14665ff7d4 Roll chromium_revision e144d30..6fdb142 (318658:318841) + remove OVERRIDE macro
Clang version changed 223108:230914
Details: e144d30..6fdb142/tools/clang/scripts/update.sh

Removes the OVERRIDE macro defined in:
* webrtc/base/common.h
* webrtc/typedefs.h

The majority of the source changes were done by running this in src/:
perl -0pi -e "s/virtual\s([^({;]*(\([^({;]*\)[^({;]*))(OVERRIDE|override)/\1override/sg" `find {talk,webrtc} -name "*.h"  -o -name "*.cc*" -o -name "*.mm*"`

which converted all:
virtual Foo() OVERRIDE
functions to:
Foo() override

Then I manually edited:
* talk/media/webrtc/fakewebrtccommon.h
* webrtc/test/fake_common.h

Remaining uses of OVERRIDE was fixed by search+replace.

Manual edits were done to fix virtual destructors that were
overriding inherited ones.

Finally a build error related to the pure virtual definitions of
Read, Write and Rewind in common_types.h required a bit of
refactoring in:
* webrtc/common_types.cc
* webrtc/common_types.h
* webrtc/system_wrappers/interface/file_wrapper.h
* webrtc/system_wrappers/source/file_impl.cc

This roll should make it possible for us to finally re-enable deadlock
detection for TSan on the buildbots.

BUG=4106
R=pbos@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8596}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8596 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 13:04:54 +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
d91608dd2d The 2x2 black frame on windows when the shared window is minimized caused an assert from vp8 and may lead to memroy corruption.
It's changed to 1x1 to match the behavior on Mac. The Chromium code will detect the size and convert it to a black frame in the original size.

TBR=sergeyu@chromium.org
BUG=crbug/414908

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7214 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-17 16:12:49 +00:00
89959966a9 Fix window capturing on Windows when the window is minimized.
BUG=crbug/410290
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7158 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-11 19:33:58 +00:00
047abc93a2 Remove trailing null character from std::string
R=jiayl@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6923 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-18 20:48:15 +00:00
d402875fa5 Set updated_rect for frames generated by WindowCapturer implementationsw
Previous updated_rect wasn't set for frames generated by WindowCapturer
implementation. That makes them unustable with chromoting host that
uses update_rect. With that change the frames will always contain
updated_rect that coveras the whole frame.

Change by Ronak Vora <ronakvora@google.com>

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6912 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-15 23:13:23 +00:00
cc1ba15fe7 Returns a NULL frame on all platforms if the captured window is closed.
Part of the fix for crbug/360181.
On Mac/Linux, it previously continues capturing even if the window is closed.
Now it stops by returning a NULL frame.
On Windows, it used to stop capturing when the window is minimized. Now fixed to match other platforms.
Note: the crbug still needs a chrome side fix to close the notification bar.
This fix only stops the stream (i.e. stream onended event fired).

BUG=crbug/360181
TESTED=manually tested in Chrome
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5977 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-24 23:45:56 +00:00
c8ac17ca04 Adjust the captured window rect when the window is maximized.
GetWindowRect includes the window frames for maximized window even they are off screen, causing content outside the window being captured falsely. The fix is to remove the left/right/bottom window frame from the captured rect. Mouse capturing is adjusted accordingly as well.

BUG=3076
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5732 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-20 00:06:41 +00:00
886c94f07c Adds a method to WindowCapturer to bring a window to the front.
BUG=3071
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5718 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-18 17:10:36 +00:00
f0fc72f70e Call PrintWindow for the first time of capturing to capture the window frames correctly.
This will fix artifacts on the captured window frames, especially for cmd, which
sometimes leaks glimpss of other window's content.

BUG=
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5616 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-27 16:43:12 +00:00
ad3035fc9e Fix WindowCapturerWin to unselect bitmap before destroying DC.
BUG=https://code.google.com/p/webrtc/issues/detail?id=2901
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5504 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-07 21:24:04 +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
becbefaee6 Fix WindowCapturerWin to capture window decorations after window size changes.
DWM doesn't update window decorations in bitmap captured
from GetWindowDC(). Work it around by calling PrintWindow()
after each resize (which somehow affects what's later
captured from GetWindowDC()). That solution avoids the
downsides of PrintWindow() (namely flickering) while still
allowing to capture window decorations correctly.

BUG=crbug.com/289759
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4847 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 22:56:59 +00:00
8d757ac0a2 Fix window capturer not to leak HDC.
Previously Windows window capturer kept DC handles between captures. As
result it was leaking DC handles in SelectWindow(). Fixed it so that it
calls GetWindowDC() for each capture.

R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4834 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-24 23:13:51 +00:00
958cdf68f3 Fix window capturer to stop capturing when the target is minimized.
BUG=crbug.com/288205
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4833 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-24 22:10:13 +00:00
6a5cc9d899 Fix crash in the window capturer on windows
BUG=crbug.com/289753
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4737 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-12 19:17:26 +00:00
12dc1a38ca Switch C++-style C headers with their C equivalents.
The C++ headers define the C functions within the std:: namespace, but
we mainly don't use the std:: namespace for C functions. Therefore we
should include the C headers.

BUG=1833
R=tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4486 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-05 16:22:53 +00:00
a590b41c9a Use intptr_t to represent window IDs on all platforms.
Previously void* was used on windows which makes it harder to work
with the IDs in cross-platform code.

R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4237 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-17 20:02:21 +00:00
b10ccbec02 Window capturer implementation for Windows.
R=alexeypa@chromium.org, andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4064 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-19 07:02:48 +00:00