Commit Graph

51 Commits

Author SHA1 Message Date
28d5bc68c3 Fix deadlock issue in CameraCapturer.stopCapture.
BUG=webrtc:6404
NOTRY=True

Review-Url: https://codereview.webrtc.org/2357213002
Cr-Commit-Position: refs/heads/master@{#14333}
2016-09-21 14:44:55 +00:00
7640fcf6ed Android VideoSource: Add adaptOutputFormat function
The Java VideoSource class wraps the C++ AndroidVideoTrackSource.
AndroidVideoTrackSource is the object actually owning the VideoAdapter.
We currently control the VideoAdapter through the Java VideoCapturer,
but it is more natural and direct to control it through the Java
VideoSource class. This CL adds the necessary function to do this, and
the function in VideoCapturer is deprecated.

BUG=webrtc:6391
R=sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14332}
2016-09-21 14:20:16 +00:00
0cb8828bce Reland of lease camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353163003/ )
Reason for revert:
Fix bugs causing the new code to fail.

Original issue's description:
> Revert of Release camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353263002/ )
>
> Reason for revert:
> Breaks bots.
>
> Original issue's description:
> > Release camera statistics after switching camera on CameraCapturer.
> >
> > BUG=webrtc:6397
> > TBR=magjed@webrtc.org
> > NOTRY=True
> >
> > Committed: https://crrev.com/d5e9237b303e5fe253dc6530fbcf939921f4eaed
> > Cr-Commit-Position: refs/heads/master@{#14323}
>
> TBR=magjed@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6397
>
> Committed: https://crrev.com/ad5d65845f5c859d0564811a4eea68e1efdb8450
> Cr-Commit-Position: refs/heads/master@{#14324}

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

Review-Url: https://codereview.webrtc.org/2357893002
Cr-Commit-Position: refs/heads/master@{#14330}
2016-09-21 13:08:59 +00:00
ad5d65845f Revert of Release camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353263002/ )
Reason for revert:
Breaks bots.

Original issue's description:
> Release camera statistics after switching camera on CameraCapturer.
>
> BUG=webrtc:6397
> TBR=magjed@webrtc.org
> NOTRY=True
>
> Committed: https://crrev.com/d5e9237b303e5fe253dc6530fbcf939921f4eaed
> Cr-Commit-Position: refs/heads/master@{#14323}

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

Review-Url: https://codereview.webrtc.org/2353163003
Cr-Commit-Position: refs/heads/master@{#14324}
2016-09-21 10:51:15 +00:00
d5e9237b30 Release camera statistics after switching camera on CameraCapturer.
BUG=webrtc:6397
TBR=magjed@webrtc.org
NOTRY=True

Review-Url: https://codereview.webrtc.org/2353263002
Cr-Commit-Position: refs/heads/master@{#14323}
2016-09-21 10:15:53 +00:00
3442579fd7 Session based capturing for Camera1Capturer.
BUG=webrtc:6148

Review-Url: https://codereview.webrtc.org/2187293002
Cr-Commit-Position: refs/heads/master@{#14318}
2016-09-21 08:35:01 +00:00
be22d51307 Enable auto-focus on Camera2.
BUG=webrtc:6357

Review-Url: https://codereview.webrtc.org/2347823002
Cr-Commit-Position: refs/heads/master@{#14288}
2016-09-19 13:01:59 +00:00
dd0c7f0ea4 Events refactor in Android session based capturing.
In the new implementation session reports all events through
CameraSession.Events interface. CameraCapturer passes these events
forward.

BUG=webrtc:6325

Review-Url: https://codereview.webrtc.org/2331343010
Cr-Commit-Position: refs/heads/master@{#14286}
2016-09-19 11:37:22 +00:00
227c3c125e Enable stabilization on Camera2.
BUG=webrtc:6357

Review-Url: https://codereview.webrtc.org/2345213002
Cr-Commit-Position: refs/heads/master@{#14285}
2016-09-19 10:08:21 +00:00
232c56ba9a Add logging available fps ranges to Camera2Session.
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2340283002
Cr-Commit-Position: refs/heads/master@{#14242}
2016-09-15 19:31:21 +00:00
4ed5b9f62d Android SurfaceViewRenderer: Create EGL context on render thread
This CL avoids eglMakeCurrent failing on some problematic Marvel based
Jelly Bean devices.

BUG=webrtc:6350
R=perkj@webrtc.org, sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14234}
2016-09-15 13:30:29 +00:00
bc18fc07be Change onCameraOpening to take camera name as a parameter instead of camera id.
Camera id doesn't really exist for Camera2. Changing onCameraOpening to
take a string instead removes ugly code.

BUG=webrtc:6325
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2331013002
Cr-Commit-Position: refs/heads/master@{#14212}
2016-09-14 12:36:26 +00:00
b471d1cffb Android EglBase: Include EGL error code in exceptions
This CL appends the EGL error code in exceptions after an EGL function
fails. This information is helpful when debugging.

BUG=webrtc:6350

Review-Url: https://codereview.webrtc.org/2338033002
Cr-Commit-Position: refs/heads/master@{#14208}
2016-09-14 09:40:58 +00:00
b3f7876a95 Add printStackTrace method to CameraCapturer.
The method can be used to print the stack trace of the camera thread in
error conditions.

BUG=webrtc:6148

Review-Url: https://codereview.webrtc.org/2332693002
Cr-Commit-Position: refs/heads/master@{#14187}
2016-09-12 14:35:21 +00:00
1a0533dc3d Add statistics for the time it takes to start and stop the camera on Camera2.
BUG=webrtc:6302

Review-Url: https://codereview.webrtc.org/2326483003
Cr-Commit-Position: refs/heads/master@{#14180}
2016-09-12 08:05:28 +00:00
961168a6db Add sakal as an OWNER to some Android files.
I have written a large part of the code in these files and I feel I
should be an OWNER of them.

NOTRY=True

Review-Url: https://codereview.webrtc.org/2322983002
Cr-Commit-Position: refs/heads/master@{#14148}
2016-09-09 07:22:33 +00:00
2a5f371df3 Make UMA stats creation available in the Java interface.
Only has counts stats right now but enumeration stats can easily be added in the future if needed.

BUG=webrtc:6313

Review-Url: https://codereview.webrtc.org/2320473002
Cr-Commit-Position: refs/heads/master@{#14146}
2016-09-09 07:11:54 +00:00
cfaca03b4b Add dynamic bitrate tracker and adjustment for Exynos VP8 HW encoder.
Exynos VP8 HW encoder may generate a bitrate which deviates too
much from target value causing frame drops and fps reduction or
BWE stuck at low values.

Add one more option to bitrate adjustment in HW encoder wrapper
which allows to track and dynamicaly scale bitrate used for
codec configuration.

BUG=b/30951236
R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14095}
2016-09-06 21:08:27 +00:00
c55c39ddf7 Limit initial fps value used in Android HW encoder initialization.
BUG=b/30951236
R=magjed@webrtc.org, wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14054}
2016-09-02 19:16:39 +00:00
504e838be2 Move getSupportedFormats from capturer interface to camera enumerator.
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2308493002
Cr-Commit-Position: refs/heads/master@{#14047}
2016-09-02 12:58:15 +00:00
4b2be9739b Remove VideoSource.stop() and VideoSource.restart() from the Java API.
These methods are not used by the new AndroidVideoTrackSource API.

Review-Url: https://codereview.webrtc.org/2280873002
Cr-Commit-Position: refs/heads/master@{#14036}
2016-09-02 08:10:39 +00:00
8a2098cb8d Fix a race condition where Camera2Session forgot to return the texture frame when closing the camera.
BUG=b/31201445

Review-Url: https://codereview.webrtc.org/2289303005
Cr-Commit-Position: refs/heads/master@{#14015}
2016-09-01 09:07:09 +00:00
b75f2541c9 Create Android screen capturer.
Review-Url: https://codereview.webrtc.org/2276593003
Cr-Commit-Position: refs/heads/master@{#14010}
2016-09-01 01:51:01 +00:00
9e4a3040ed Reland of move the old AndroidVideoCapturer stack code. (patchset #1 id:1 of https://codereview.webrtc.org/2291583002/ )
Reason for revert:
Downstream apps should now be fixed.

Original issue's description:
> Revert of Remove the old AndroidVideoCapturer stack code. (patchset #2 id:20001 of https://codereview.webrtc.org/2235893003/ )
>
> Reason for revert:
> Breaks downstream.
>
> Original issue's description:
> > Remove the old AndroidVideoCapturer stack code.
> >
> > This code is no longer needed. Apps should be using the new API introduced here: https://codereview.webrtc.org/2127893002/
> >
> > Committed: https://crrev.com/1b365a8db070f9cdcbf35ec871f758dcd909e51d
> > Cr-Commit-Position: refs/heads/master@{#13950}
>
> TBR=magjed@webrtc.org,glaznev@webrtc.org,kjellander@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://crrev.com/e39f251dacf66e50153bcda615f06b7c59e5856b
> Cr-Commit-Position: refs/heads/master@{#13958}

TBR=magjed@webrtc.org,glaznev@webrtc.org,kjellander@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review-Url: https://codereview.webrtc.org/2298063003
Cr-Commit-Position: refs/heads/master@{#13988}
2016-08-31 09:53:54 +00:00
e39f251dac Revert of Remove the old AndroidVideoCapturer stack code. (patchset #2 id:20001 of https://codereview.webrtc.org/2235893003/ )
Reason for revert:
Breaks downstream.

Original issue's description:
> Remove the old AndroidVideoCapturer stack code.
>
> This code is no longer needed. Apps should be using the new API introduced here: https://codereview.webrtc.org/2127893002/
>
> Committed: https://crrev.com/1b365a8db070f9cdcbf35ec871f758dcd909e51d
> Cr-Commit-Position: refs/heads/master@{#13950}

TBR=magjed@webrtc.org,glaznev@webrtc.org,kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.webrtc.org/2291583002
Cr-Commit-Position: refs/heads/master@{#13958}
2016-08-29 14:31:31 +00:00
1b365a8db0 Remove the old AndroidVideoCapturer stack code.
This code is no longer needed. Apps should be using the new API introduced here: https://codereview.webrtc.org/2127893002/

Review-Url: https://codereview.webrtc.org/2235893003
Cr-Commit-Position: refs/heads/master@{#13950}
2016-08-29 09:20:26 +00:00
294fb050a0 Add a timeout for starting the camera on CameraCapturer.
This allows to at least get a camera error back if the camera thread freezes. Application can use this as a signal to restart the program.

R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2257123002
Cr-Commit-Position: refs/heads/master@{#13830}
2016-08-19 10:02:44 +00:00
869dab775c Disable Intel VP8 HW encoder.
Need to investigate dequeueOutputBuffer failure on Asus
Zenfones before re-enabling back.

BUG=b/30890961
R=jiayl@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#13805}
2016-08-17 22:41:22 +00:00
7c0f8ee67a Avoid null pointer exception if Android getCameraInfo fails.
BUG=b/30890971
R=magjed@webrtc.org, sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13803}
2016-08-17 22:18:27 +00:00
92c09509bd Make CameraCapturer.switchCamera try again if session is still opening.
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2238263002
Cr-Commit-Position: refs/heads/master@{#13747}
2016-08-15 13:19:40 +00:00
d30e0ad3e7 Session based capturing for Camera2Capturer.
BUG=webrtc:6148
TBR=tommi@webrtc.org

Review-Url: https://codereview.webrtc.org/2186253002
Cr-Commit-Position: refs/heads/master@{#13723}
2016-08-11 08:00:43 +00:00
0060c56b22 Catch exceptions thrown by getCodecInfoAt() and getCapabilitiesForType().
BUG=b/30715199
R=jiayl@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#13678}
2016-08-08 19:27:37 +00:00
d3235f0cd9 Re-order and remove unused Java imports.
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13608}
2016-08-02 13:44:19 +00:00
7fbe2ee224 Make EGL10 class public.
To allow accessing its function for 3rd party apps.

BUG=b/30502777
R=jiayl@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#13595}
2016-08-01 20:31:42 +00:00
c980062242 Use a new method (android_setsocknetwork) to bind socket to network in Android M and later.
The old method (setNetworkForSocket) is not supported in Android-N.

BUG=
R=glaznev@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13591}
2016-08-01 16:27:43 +00:00
43e15bb9f0 Android Camera2Enumerator: Remove CameraAccessException to avoid VerifyError
Apparently, a class will fail with VerifyError if it contains catch
statements with an Exception from a newer API, even if the code is never
executed. This happens only on Android versions before 4.4.2 and is a
bug. See https://code.google.com/p/android/issues/detail?id=209129 for
more info.

BUG=b/30376736

Review-Url: https://codereview.webrtc.org/2185833003
Cr-Commit-Position: refs/heads/master@{#13542}
2016-07-27 15:25:13 +00:00
81031d6dca Cleanup code in Camera2.
BUG=b/30423446
NOTRY=True

Review-Url: https://codereview.webrtc.org/2189473003
Cr-Commit-Position: refs/heads/master@{#13540}
2016-07-27 12:25:49 +00:00
f22d3c48fa Filter to formats that match device sensor array aspect ratio on pre-LMR1 devices offering only legacy camera2 support.
There is a bug on pre LMR1 devices that only support legacy
implementation of camera2 API where aspect ratio of the camera is
incorrect if the output format doesn't match the aspect ratio of the
sensor array. On these devices, we want to disable the output formats that
have different aspect ratio.

Review-Url: https://codereview.webrtc.org/2181803003
Cr-Commit-Position: refs/heads/master@{#13538}
2016-07-27 08:28:51 +00:00
63d3f8390e Fix a bug where Camera2 tried to start on FPS ranges multiplied by 1000.
This bug caused Camera2Capturer to not work on Samsung Galaxy S7.

BUG=b/30349906
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2174343002
Cr-Commit-Position: refs/heads/master@{#13529}
2016-07-26 12:43:39 +00:00
2fa14623cc Convert Android camera tests to use the new createVideoSource API.
Review-Url: https://codereview.webrtc.org/2171023003
Cr-Commit-Position: refs/heads/master@{#13528}
2016-07-26 12:41:43 +00:00
16032126ed This implementation greatly simplifies Android video capturing stack. The old
stack will be removed soon in a separate CL. Constraints will not be supported
in the new implementation. Apps can request a format directly and the closest
supported format will be selected.

Changes needed from the apps:
1. Use the new createVideoSource without constraints.
2. Call startCapture manually.
3. Don't call videoSource.stop/restart, use startCapture/stopCapture instead.

R=magjed@webrtc.org
TBR=kjellander@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13504}
2016-07-20 14:13:20 +00:00
27dcacdbc1 Android: Add initialize() function to VideoCapturer interface
This CL moves some arguments, e.g. the camera thread, from the startCapture() function to a new initialize() function. These arguments are constant during the lifetime of the VideoCapturer, and are not changed for different startCapture() calls. Setting them once allows for simplifications in the code.

This CL also fixes a bug for camera2 where pendingCameraSwitchSemaphore might not be released when switchEventsHandler is null.

In camera1, the handler lock and 'cameraThreadHandler == null' check is replaced with an atomic boolean to check if the camera is stopped.

BUG=webrtc:5519
R=sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13404}
2016-07-07 08:00:35 +00:00
44abcb5e41 Android SurfaceViewRenderer: Fix eglBase null pointer exception
Add null checks for eglBase, and detach the egl context in
SurfaceViewRenderer.surfaceDestroyed().

BUG=webrtc:6032
R=sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13396}
2016-07-06 14:16:23 +00:00
0c6f0f6d96 Fix for the JNI interface of RtcEventLog functions.
BUG=webrtc:4741

Review-Url: https://codereview.webrtc.org/2128483002
Cr-Commit-Position: refs/heads/master@{#13393}
2016-07-06 11:34:34 +00:00
14d5dbe5b3 Reland of "Move RtcEventLog object from inside VoiceEngine to Call.", "Fix to make the start/stop functions for the Rtc Eventlog non-virtual." and "Fix for RtcEventLog ObjC interface"
The breaking tests in Chromium have been temporarily disabled, they will be fixed and reenabled soon.

Original CLs: https://codereview.webrtc.org/1748403002/, https://codereview.webrtc.org/2107253002/ and https://codereview.webrtc.org/2106103003/.

TBR=solenberg@webrtc.org,tommi@webrtc.org,stefan@webrtc.org,terelius@webrtc.org,tkchin@webrtc.org
BUG=webrtc:4741, webrtc:5603, chromium:609749

Review-Url: https://codereview.webrtc.org/2110113003
Cr-Commit-Position: refs/heads/master@{#13379}
2016-07-04 14:07:03 +00:00
d78ecf78c9 Add pruneTurnPorts to the java RTCConfiguration.
And adds a log about the flag.

BUG=
R=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13369}
2016-07-01 21:40:53 +00:00
e9851116e2 Adding API for "presume writable when fully relayed" ICE option.
For explanation of what this is, see:
https://codereview.webrtc.org/2063823008/

R=glaznev@webrtc.org, pthatcher@webrtc.org
TBR=tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13366}
2016-07-01 18:11:22 +00:00
897d932e0b Android SurfaceViewRenderer: Fix deadlock
Deadlock caused by two methods grabbing two locks in the opposite order:
renderFrame():
  handlerLock
    layoutLock
onMeasure():
  layoutLock
    handlerLock

This CL removs the nested locking to fix the deadlock and make it less
error prone for the future.

BUG=webrtc:6003
R=sakal@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13364}
2016-07-01 13:52:25 +00:00
d34a711f22 Reland of Combine webrtc/api/java/android and webrtc/api/java/src. (patchset #1 id:1 of https://codereview.webrtc.org/2106333005/ )
Reason for revert:
Issues fixed

Original issue's description:
> Revert of Combine webrtc/api/java/android and webrtc/api/java/src. (patchset #1 id:1 of https://codereview.webrtc.org/2111823002/ )
>
> Reason for revert:
> Breaks downstream dependencies
>
> Original issue's description:
> > Combine webrtc/api/java/android and webrtc/api/java/src.
> >
> > It used to be that there was a Java api for devices not running Android
> > but that is no longer the case. I combined the directories and made
> > the folder structure chromium style.
> >
> > BUG=webrtc:6067
> > R=magjed@webrtc.org, tommi@webrtc.org
> >
> > Committed: ceefe20dd6
>
> TBR=magjed@webrtc.org,tommi@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6067
>
> Committed: 9b0dc622d4

TBR=magjed@webrtc.org,tommi@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6067

Review-Url: https://codereview.webrtc.org/2111923003
Cr-Commit-Position: refs/heads/master@{#13363}
2016-07-01 12:10:59 +00:00
9b0dc622d4 Revert of Combine webrtc/api/java/android and webrtc/api/java/src. (patchset #1 id:1 of https://codereview.webrtc.org/2111823002/ )
Reason for revert:
Breaks downstream dependencies

Original issue's description:
> Combine webrtc/api/java/android and webrtc/api/java/src.
>
> It used to be that there was a Java api for devices not running Android
> but that is no longer the case. I combined the directories and made
> the folder structure chromium style.
>
> BUG=webrtc:6067
> R=magjed@webrtc.org, tommi@webrtc.org
>
> Committed: ceefe20dd6

TBR=magjed@webrtc.org,tommi@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6067

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

Cr-Commit-Position: refs/heads/master@{#13357}
2016-07-01 07:37:49 +00:00