89 Commits

Author SHA1 Message Date
sergeyu@chromium.org
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
sergeyu@chromium.org
e6e749da38 Add MouseCursorRenderer.
The new class acts as a wrapper for DesktopCapturer interface. It takes
mouse shape and position from MouseCursorCapturer and renders it on the
frames produced by underlying DesktopCapturer.

BUG=crbug.com/173265
R=wez@chromium.org
TBR=andrew@webrtc.org (modules.gyp)

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4968 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-16 02:48:41 +00:00
sergeyu@chromium.org
2767b53f66 Add MouseCursorCapturer interface with implementation for X11.
The new interface will be used to capture cursor shape and position and
blend it into the image captured with desktop capturers.

BUG=crbug.com/173265
R=wez@chromium.org
TBR=andrew@webrtc.org (modules.gyp)

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4967 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-16 02:42:38 +00:00
sergeyu@chromium.org
30792987b8 Remove empty line in SharedXDisplay::RemoveEventHandler.
TBR=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4958 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-14 17:58:46 +00:00
sergeyu@chromium.org
7419a72383 Add event handling in SharedXDisplay.
SharedXDisplay has to handle X events because the events may belong to
different clients of that class.

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4953 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-13 00:44:09 +00:00
sergeyu@chromium.org
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
sergeyu@chromium.org
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
sergeyu@chromium.org
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
sergeyu@chromium.org
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
sergeyu@chromium.org
2edb642810 Fix bugs in DesktopRegion::Subtract().
Fixed a bug that caused the crash in the linked bug and also couple of
other issues in the same code. Also added more tests.

BUG=crbug.com/295057
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4806 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-20 21:29:18 +00:00
sergeyu@chromium.org
6ab45b9dab Implement DesktopRegion subtraction.
Region subtraction is used in chromoting client, so it's needed to
replace SkRegion.

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4741 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-13 19:53:16 +00:00
sergeyu@chromium.org
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
alexeypa@chromium.org
bebf3995ce Pre-multiply images for MouseCursorShape.
BUG=chromium:267270
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4685 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-05 19:32:46 +00:00
sergeyu@chromium.org
9ded07e3a4 Fix typo in InvertedDesktopFrame
BUG=279334
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4643 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-30 01:05:14 +00:00
sergeyu@chromium.org
01cb3ad883 Fix image flipping for OpenGL-based screen capturer on Mac.
I broke captured image flipping when refactoring this code while it was
still in chromium. Previously we had CaptureData that was returned from
capturers with correctly inverted stride, but frames were still stored
with positive stride. CaptureData was removed and so the returned frames
always had positive stride, which is not correct. Now ScreenCapturerMac
uses frames with inverted stride when capturing using OpenGL.

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4621 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-26 21:48:56 +00:00
sergeyu@chromium.org
9f282403f2 WindowCapturer implementation for Linux.
Window enumeration is based on the code used by hangouts plugin
(see libjingle/talk/base/linuxwindowpicker.cc). XServerPixelBuffer
is used to capture windows. It had to be refactored to support window
capturing (previously it worked only for the whole screen).

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4605 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-23 18:22:12 +00:00
sergeyu@chromium.org
eef29ec6cf Implement window capturer for OS X.
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4599 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-23 00:39:46 +00:00
sergeyu@chromium.org
bf853f2732 Fix crash in screen capturer on Mac
BUG=crbug.com/247685
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4518 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-10 01:30:23 +00:00
pbos@webrtc.org
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
sergeyu@chromium.org
17758e96c5 Fix crash in DesktopRegion::Intersect().
BUG=crbug.com/266933
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4468 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-01 19:51:04 +00:00
pbos@webrtc.org
e72428442d Fix some chromium-style warnings in webrtc/modules/desktop_capture/
BUG=163
R=sergeyu@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4446 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-31 15:32:43 +00:00
sergeyu@chromium.org
d102e66ef9 Fix ScreenCapturerLinux not to use XDamage when requested.
When moving this code to webrtc I added line "use_x_damage=true" for
debugging and forgot to remove it when landing this code, so the
capturer always tries to use XDamage.

BUG=crbug.com/263003
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4387 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-23 20:05:42 +00:00
pbos@webrtc.org
d900e8bea8 Proper spacing for end-of-namespace comments.
BUG=
R=mflodman@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4293 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-03 15:12:26 +00:00
sergeyu@chromium.org
3348ae2b97 mac: Mark kCGLPFAFullScreen as allowed in a 10.6-only function.
kCGLPFAFullScreen is marked deprecated starting with 10.6 in the 10.9 SDK,
but it's functional on 10.6 and this code only runs on 10.6 and will go away
when support for 10.6 is dropped.

BUG=webrtc:1958
R=sergeyu@chromium.org

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

Patch from Nico Weber <thakis@chromium.org>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4255 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-21 23:33:10 +00:00
sergeyu@chromium.org
a20eb91154 Make ScreenCapturerMac work in versions of OSX before Lion.
The screen capturer was broken when moving code to webrtc: width
and height parameters for glReadPixels were swapped by mistkake.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4239 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-17 22:22:40 +00:00
sergeyu@chromium.org
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
kjellander@webrtc.org
6c35e0b0f7 Reorganize test targets in WebRTC
This CL will lower the number of test targets in WebRTC by:

Add common_audio_unittests and merge the following targets into it (copied from http://review.webrtc.org/1584006):
* resampler_unittests
* signal_processing_unittests
* vad_unittests

Merge into modules_unittests:
* bitrate_controller_unittests
* desktop_capture_unittests
* media_file_unittests
* remote_bitrate_estimator_unittests
* rtp_rtcp_unittests
* paced_sender_unittests

Merge into test_support_unittests:
* channel_transport_unittests

channel_transport.gyp was also removed in favor for test.gyp.

I had to remove a main method from rtcp_format_remb_unittest.cc
since it caused the fileutils.h code to not be able to find the
right project root path in ordrer to provide correct paths
to test files.

Buildbot configuration update will be synced with the commit of this CL.

TEST=trybots
BUG=1843
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4213 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-11 08:29:17 +00:00
alexeypa@chromium.org
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
alexeypa@chromium.org
5e03f8ab67 Landing binary cursor image files to be used in a follow up CL.
See https://webrtc-codereview.appspot.com/1627004/ for more details. TBR since that CL has been reviewed and LGTMed.

TBR=sergeyu@chromium.org

BUG=chromium:223147

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4209 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-10 21:07:31 +00:00
sergeyu@chromium.org
7e4ff354e3 Remove fake screen capturer because it's not used anywhere.
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4191 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-06 23:11:33 +00:00
sergeyu@chromium.org
d9c4658756 Fix leaks in DesktopRegion
BUG=crbug.com/246870
R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4186 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-05 19:24:42 +00:00
sergeyu@chromium.org
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
sergeyu@chromium.org
3ee13e4ac2 Optimized DesktopRegion implementation.
Now DestktopRegion can merge overlapping rectangles.

R=wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4161 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-06-04 00:38:39 +00:00
sergeyu@chromium.org
ead3c6d508 Fix bugs in DesktopRegion::IntersectWith() and DesktopRect::IntersectWith().
IntersectWith() didn't work correctly which breaks screen capturers in chromium.

BUG=crbug.com/243160
R=alexeypa@chromium.org, wez@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4102 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-24 21:07:20 +00:00
sergeyu@chromium.org
6ec25073e3 Disable WindowCapturer tests on OSX and Linux
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4085 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-22 18:47:07 +00:00
sergeyu@chromium.org
6ebfd346ae Add direct_dependent_settings in common.gypi.
When building chromium targets that depend on webrtc, compiler settings must
have the include path to webrtc and webrtc-specific defines that the headers
may depend on. Added direct_dependent_settings in common.gyp, so that all
webrtc target propagate these settings to dependencies.

R=andrew@webrtc.org, tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4084 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-22 18:22:21 +00:00
sergeyu@chromium.org
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
sergeyu@chromium.org
15e32ccd30 Add DesktopCapturer interface for desktop capturers.
The new DesktopCapturer interface will be used for screen and window
captures. Beside DesktopCapturer itself also added classes/interfaces
that it depends on.

R=alexeypa@chromium.org, tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3917 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-29 20:10:57 +00:00
sergeyu@chromium.org
a0cd9182aa Add desktop_capture directory for screen and window capturers.
The screen captures will be moved from chromium to WebRTC to make it easy
to share this code with other projects. This CL adds a new directory where
the current screen capturer code will be moved to.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3866 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-17 18:21:42 +00:00