119 Commits

Author SHA1 Message Date
Per
a3c20bb9a0 Add support for scaling textures in AndroidVideoCapturer.
The idea is to also reuse AndroidTextureBuffer::CropAndScale when scaling in the encoder.

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

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

Cr-Commit-Position: refs/heads/master@{#10802}
2015-11-26 12:41:52 +00:00
Magnus Jedvert
4c5eea3c73 Android SurfaceViewRenderer: Don't rely on widthSpec/heightSpec after onMeasure() returns
SurfaceViewRenderer currently stores widthSpec/heightSpec internally, and triggers requestLayout() from renderFrameOnRenderThread()->checkConsistentLayout() when it detects a change using widthSpec/heightSpec. This is not reliable, because onMeasure() might be called several times during the layout process negotiation. For example it might look like this:
-> onMeasure(at most 1920, at most 1080)
<- setMeasuredDimension(1080, 1080)
-> onMeasure(exactly 1080, exactly 1080)
<- setMeasuredDimension(1080, 1080)
Then we store (exactly 1080, exactly 1080) even though we are allowed to be bigger than this, and requestLayout() will never be triggered.

This CL moves the requestLayout() trigger to updateFrameDimensionsAndReportEvents() when the frame size changes.

Other small changes in this CL are:
* Replace with/height variables with Point.
* Add logging in updateFrameDimensionsAndReportEvents() even when rendererEvents is null.
* Use Math.round() in RendererCommon.getDisplaySize() instead of integer cast.

R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10774}
2015-11-24 16:45:32 +00:00
Magnus Jedvert
4f2152e328 Android SurfaceViewRenderer: Make sure not to call eglCreateSurface() twice
eglCreateSurface() calls are posted to the render thread from both init() and surfaceCreated(). If the render thread does not process the eglCreateSurface() message from init() before surfaceCreated() is called, eglCreateSurface() will be called twice resulting in a crash.

This CL makes sure eglCreateSurface() is only called once.

BUG=b/25815604
R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10769}
2015-11-24 12:54:36 +00:00
perkj
9237559b16 Add SurfaceTextureHelper.disconnect(Handler handler) method
This method should be used when the SurfaceTextureHelper is created to use a specific handler.
This now guarantee that the looper used by handler is destroyed after a frame has been returned.

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

Cr-Commit-Position: refs/heads/master@{#10767}
2015-11-24 11:03:19 +00:00
Magnus Jedvert
1aa6efe885 Android ThreadUtils: Make the class public for access outside org.webrtc
Also make the class non-final. We shouldn't use non-final classes, because then we can't mock them.

R=henrika@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10757}
2015-11-23 19:13:36 +00:00
Magnus Jedvert
ef453238aa Android: Make classes non-final
The classes are not mockable if they are final.

R=phoglund@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10714}
2015-11-19 16:54:16 +00:00
henrika
b6755ab6df Revert of Adding thread timeout for audio recorer thread in Java (patchset #2 id:20001 of https://codereview.webrtc.org/1444313002/ )
Reason for revert:
Reverting since this fix might hide real issue and the reported root problem seems extremely rare.

Original issue's description:
> Adding thread timeout for audio recorer thread in Java
>
> BUG=NONE
>
> Committed: https://crrev.com/fd614c2149c7985bd83df809df71d0d60e5a8f74
> Cr-Commit-Position: refs/heads/master@{#10671}

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

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

Cr-Commit-Position: refs/heads/master@{#10707}
2015-11-19 10:43:19 +00:00
Per
488e75f11b Patchset 1 yet again relands without modification https://codereview.webrtc.org/1422963003/
It do the following:

The SurfaceTexture.updateTexImage() calls are moved from the video renderers into MediaCodecVideoDecoder, and the destructor of the texture frames will signal MediaCodecVideoDecoder that the frame has returned. This CL also removes the SurfaceTexture from the native handle and only exposes the texture matrix instead, because only the video source should access the SurfaceTexture.
It moves the responsibility of calculating the decode time to Java.

Patchset2 Refactor MediaCodecVideoDecoder to drop frames if a texture is not released.

R=magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10706}
2015-11-19 09:43:46 +00:00
henrika
fd614c2149 Adding thread timeout for audio recorer thread in Java
BUG=NONE

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

Cr-Commit-Position: refs/heads/master@{#10671}
2015-11-17 12:28:33 +00:00
magjed
633a3aa26f ThreadUtils: Add joinUninterruptibly() with timeout
This is similar to com.google.common.util.concurrent.Uninterruptibles.joinUninterruptibly().
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/util/concurrent/Uninterruptibles.html#joinUninterruptibly(java.lang.Thread,%20long,%20java.util.concurrent.TimeUnit)

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

Cr-Commit-Position: refs/heads/master@{#10651}
2015-11-16 13:12:36 +00:00
magjed
3e0f602055 Android EglBase: Add support for creating EGLSurface from Surface, not SurfaceHolder
Review URL: https://codereview.webrtc.org/1438223003

Cr-Commit-Position: refs/heads/master@{#10646}
2015-11-16 10:04:57 +00:00
magjed
4a41361f98 Android SurfaceViewRenderer: Never hold a pending frame indefinitely
The original purpose with keeping one pending frame in SurfaceViewRenderer was to reduce latency for the first rendered frame when we are waiting for the Surface to be created. However, it is very dangerous to hold a pending frame indefinitely when used with a SurfaceTexture, because the SurfaceTexture only has one frame and thus holding a frame in the renderer will freeze everything and typically cause timeout crashes.

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

Cr-Commit-Position: refs/heads/master@{#10638}
2015-11-13 16:48:06 +00:00
Per
c01c25434b Revert of Android MediaCodecVideoDecoder: Manage lifetime of texture frames (patchset #12 id:320001 of https://codereview.webrtc.org/1422963003/ )
Reason for revert:
Causes fallback to SW decoder if a renderer is put in the background.

Original issue's description:
> Patchset 1 is a pure
> revert of "Revert of "Android MediaCodecVideoDecoder: Manage lifetime of texture frames" https://codereview.webrtc.org/1378033003/
>
> Following patchsets move the responsibility of calculating the decode time to Java.
>
> TESTED= Apprtc loopback using H264 and VP8 on N5, N6, N7, S5
>
> Committed: https://crrev.com/9cb8982e64f08d3d630bf7c3d2bcc78c10db88e2
> Cr-Commit-Position: refs/heads/master@{#10597}

TBR=magjed@webrtc.org,glaznev@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true

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

Cr-Commit-Position: refs/heads/master@{#10637}
2015-11-13 15:58:37 +00:00
Patrik Höglund
68876f990e Introduces Android API level linting, fixes all current API lint errors.
This CL attempts to annotate accesses on >16 API levels using as
small scopes as possible. The TargetApi notations mean "yes, I know
I'm accessing a higher API and I take responsibility for gating the
call on Android API level". The Encoder/Decoder classes are annotated
on the whole class, but they're only accessed through JNI; we should
annotate on method level otherwise and preferably on private methods.

This patch also fixes some compiler-level deprecation warnings (i.e.
-Xlint:deprecation), but probably not all of them.

BUG=webrtc:5063
R=henrika@webrtc.org, kjellander@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10624}
2015-11-12 16:37:01 +00:00
magjed
fc6affc60d Android SurfaceViewRenderer: Call glClear() for every frame to avoid bad GL state
BUG=webrtc:5147

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

Cr-Commit-Position: refs/heads/master@{#10617}
2015-11-12 09:08:37 +00:00
perkj
cbfabbf818 Fix potential tearing issue in VideoRendererGui.
This make sure that the texture copy is syncronized.

To reproduce the problem I:
Reverted "Revert of "Android MediaCodecVideoDecoder: Manage lifetime of texture frames" https://codereview.webrtc.org/1378033003/"
commit 543b6ca30a43eeb069c699291460ce6bacc7959d.
Reverted "Enable SurfaceViewRenderer for AppRTCDemo"
commit 7076729c57c27aa813760d2038be02c36f4d7649.
and ran ApprtDemo in loopback and changed the orientation a couple of times.

TBR=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10598}
2015-11-11 11:38:39 +00:00
perkj
9cb8982e64 Patchset 1 is a pure
revert of "Revert of "Android MediaCodecVideoDecoder: Manage lifetime of texture frames" https://codereview.webrtc.org/1378033003/

Following patchsets move the responsibility of calculating the decode time to Java.

TESTED= Apprtc loopback using H264 and VP8 on N5, N6, N7, S5

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

Cr-Commit-Position: refs/heads/master@{#10597}
2015-11-11 11:27:05 +00:00
magjed
b2d1c5026d SurfaceViewRenderer: Add resource name to log outputs and exceptions
Add resource name to log outputs to distinguish local renderer from remote renderer.

This Cl also adds some thread checks and factors out a small helper function makeBlack().

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

Cr-Commit-Position: refs/heads/master@{#10596}
2015-11-11 11:06:49 +00:00
perkj
83dfad6853 VideoCapturerAndroid: Changed camera freeze check to check that all frames are pending before reporting a client error.
BUG=b/25514149

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

Cr-Commit-Position: refs/heads/master@{#10563}
2015-11-09 15:39:55 +00:00
perkj
89ef6cc13e Attempt to open Android camera later if it is already in use.
This change VideoCapturerAndroid to attempt 3 times with a period of 300ms to open the camera if it fails.
This is so that if another application have it already opened, it would have more time to release it.
BUG=b/25190234

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

Cr-Commit-Position: refs/heads/master@{#10559}
2015-11-09 09:35:26 +00:00
magjed
1ebf8ba368 SurfaceViewRenderer: Drop old frames instead of new frames
If SurfaceViewRenderer can't keep up with the stream of incoming frames it has to drop frames. Currently, new frames are dropped until the old pending frame is rendered. This CL drops the old pending frame instead.

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

Cr-Commit-Position: refs/heads/master@{#10558}
2015-11-09 08:41:55 +00:00
perkj
3bfef44a4d Changed timeout to 6s for reporting android camera freeze.
Also distinguish between camera failures and failures due to that buffers has not been returned.
Adds unit tests for making sure CameraEventHandler.onError is triggered if frames are not returned.

BUG=b/25514149

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

Cr-Commit-Position: refs/heads/master@{#10555}
2015-11-08 14:58:22 +00:00
Honghai Zhang
5a846c086b Make ConnectionType public in order to add java NetworkObserver.
BUG=
R=glaznev@webrtc.org, jiayl@google.com

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

Cr-Commit-Position: refs/heads/master@{#10485}
2015-11-02 19:33:30 +00:00
Alex Glaznev
5c3da4b6e9 Call MediaCodec.stop() on separate thread.
MediaCodec.stop() call may hang in some rear cases. To avoid
application hang this call need to be done on separate thread and
possible error reported back to application.
Application may elect to continue executing and use another codec
instance for encoding/decoding or stop the call and exit.

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

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

Cr-Commit-Position: refs/heads/master@{#10467}
2015-10-30 22:31:25 +00:00
magjed
83585c9075 VideoCapturerAndroid: More frequent and verbose logging
BUG=b/24437529

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

Cr-Commit-Position: refs/heads/master@{#10434}
2015-10-28 10:27:30 +00:00
magjed
401fb0648a SurfaceTextureHelper: Remove use of quitSafely() because it's API lvl 18
There is no reason to not just quit() in release().

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

Cr-Commit-Position: refs/heads/master@{#10394}
2015-10-24 01:17:59 +00:00
magjed
238b15d543 SurfaceViewRenderer: Remove use of quitSafely() because it's API lvl 18
I replaced quitSafely() with a CountDownLatch. The reason for not using ThreadUtils.invokeUninterruptibly() is that I want to stop accepting frames asap, and invokeUninterruptibly() would still accept frames during the waiting time.

BUG=webrtc:4742

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

Cr-Commit-Position: refs/heads/master@{#10393}
2015-10-24 01:14:33 +00:00
magjed
c3402fc3ef EGL10.eglCreateWindowSurface(): Replace Surface input with SurfaceHolder
Sending a Surface as input to EGL10.eglCreateWindowSurface() is not supported everywhere. See this code as reference:
ae9610220b/opengl/tools/glgen/stubs/egl/eglCreateWindowSurface.java (42)

Sending a SurfaceHolder as input instead should hopefully be supported everywhere, and this is also what GlSurfaceView does:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/opengl/GLSurfaceView.java#1076

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

Cr-Commit-Position: refs/heads/master@{#10392}
2015-10-24 01:13:20 +00:00
magjed
8c425aa8f6 Android: Replace EGL14 with EGL10
The purpose with this change is to support older API levels by replacing EGL14 (API lvl 17) with EGL10 (API lvl 1). The main purpose is to lower API lvl requirement for SurfaceViewRenderer from API lvl 17 to API lvl 15. Also, camera texture capture will work on API lvl < 17 (and texture encode/decode in MediaCodec, but we don't use MediaCodec below API lvl 18?).

GLSurfaceView/VideoRendererGui is already using EGL10.

EGL 1.1 - 1.4 added new functionality, but won't affect performance. We don't need the functionality, so there should be no reason to not use EGL 1.0.

I have profiled AppRTCDemo with Qualcomm Trepn Profiler on a Nexus 5 and Nexus 6 and couldn't see any difference.

Specifically, this CL:
 * Update EglBase to use EGL10 instead of EGL14.
 * Update imports from EGL14 to EGL10 in a lot of files (plus changing import order in some cases).
 * Update VideoCapturerAndroid to always support texture capture.

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

Cr-Commit-Position: refs/heads/master@{#10378}
2015-10-22 23:52:45 +00:00
honghaiz
023f3ef029 Create network change notifier and pass the event to NetworkManager
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10325}
2015-10-19 16:39:38 +00:00
Alex Glaznev
9781152e04 Add new Android camera events.
Add events to track when camera is requested to open,
when first camera frame is available and when camera is
closed.

BUG=b/24271359
R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10306}
2015-10-16 20:10:24 +00:00
magjed
543b6ca30a Revert of "Android MediaCodecVideoDecoder: Manage lifetime of texture frames" https://codereview.webrtc.org/1378033003/
The code that depends on the reverted CL is disabled but not removed. NativeHandleImpl is reverted to the previous implementation, and the new implementation is renamed to NativeTextureHandleImpl. Texture capture can not be used anymore, because it will crash in peerconnection_jni.cc.

Reason for revert:
Increased HW decoder latency and crashes related to that. Also suspected cause of video tearing.

Original issue's description:
> This CL should be the last one in a series to finally
> unblock camera texture capture.
>
> The SurfaceTexture.updateTexImage() calls are moved from
> the video renderers into MediaCodecVideoDecoder, and the
> destructor of the texture frames will signal
> MediaCodecVideoDecoder that the frame has returned. This
> CL also removes the SurfaceTexture from the native handle
> and only exposes the texture matrix instead, because only
> the video source should access the SurfaceTexture.
>
> BUG=webrtc:4993
> R=glaznev@webrtc.org, perkj@webrtc.org
>
> Committed: https://crrev.com/91b348c7029d843e06868ed12b728a809c53176c
> Cr-Commit-Position: refs/heads/master@{#10203}

TBR=glaznev
BUG=webrtc:4993

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

Cr-Commit-Position: refs/heads/master@{#10288}
2015-10-15 12:45:13 +00:00
perkj
73f44f6481 VideoCapturerAndroid, only you SurfaceViewHelper when capturing to textures.
SurfaceViewHelper requires EGL14 that was added in API level 17. Since the SurfaceViewHelper is only neeed when we capture to textures, this cl change back to not use it when we are capturing to byte buffers.

Also, thread.quitsafely was added in level 18. Instead a new ThreadUtil method has been added for this.

BUG=b/24782220
TEST = run
ninja -C out/Debug libjingle_peerconnection_android_unittest && CHECKOUT_SOURCE_ROOT=`pwd` build/android/adb_install_apk.py --debug out/Debug/apks/libjingle_peerconnection_android_unittest.apk && ./third_party/android_tools/sdk/platform-tools/adb shell am instrument -w -e class org.webrtc.VideoCapturerAndroidTest org.webrtc.test/android.test.InstrumentationTestRunner on a device running Android 4.1 (I tried Nexus 7, the first version)

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

Cr-Commit-Position: refs/heads/master@{#10265}
2015-10-13 15:15:13 +00:00
Alex Glaznev
325d414e8c Add option to print peer connection factory Java stack traces.
Removing static declaration for media codec thread to allow
running multiple HW codec instances.

R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10258}
2015-10-12 21:56:09 +00:00
Alex Glaznev
a5b62d987a Replace API v23 calls.
R=jiayl@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10257}
2015-10-12 20:56:29 +00:00
Magnus Jedvert
747c1bccd9 Android SurfaceTextureHelper: Replace API 21 with API 11 version of setOnFrameAvailableListener()
BUG=b/24809429
R=glaznev@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10247}
2015-10-12 07:27:56 +00:00
Magnus Jedvert
e9e3668759 Android: Add helper function to synchronously execute Callables on Handler
TBR=hbos

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

Cr-Commit-Position: refs/heads/master@{#10246}
2015-10-12 07:15:57 +00:00
Alejandro Luebs
69ddaefbb3 Revert "Add option to print peer connection factory Java stack traces."
This reverts commit b68c5995d1ac84866da45a4ecbb180d8c704ad90.

Reason for reverting: It breaks some Android32 bots.

TBR=glaznev@google.com

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

Cr-Commit-Position: refs/heads/master@{#10239}
2015-10-09 22:46:17 +00:00
Alex Glaznev
b68c5995d1 Add option to print peer connection factory Java stack traces.
Updated version with better handling of media codec release checks.

R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10238}
2015-10-09 20:58:37 +00:00
Alejandro Luebs
fd20bb3e80 Revert "Allow to print Java stack traces in Android camera, renderer and media codec."
Reason for revert: It breaks some Android32 bots.

TBR=glaznev@google.com

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

Cr-Commit-Position: refs/heads/master@{#10231}
2015-10-09 01:13:48 +00:00
Alex Glaznev
f0159a742f Allow to print Java stack traces in Android camera, renderer and media codec.
R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10227}
2015-10-08 19:59:30 +00:00
Magnus Jedvert
e76fb36982 Android SurfaceViewRenderer: Add tests for onMeasure()
BUG=webrtc:4742
R=hbos@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10224}
2015-10-08 17:05:34 +00:00
Magnus Jedvert
bf2004bc37 Android SurfaceViewRenderer: Only clear image in release() if initialized
This CL is a small bug fix for "Android SurfaceViewRenderer: Allow to re-init after release() has been called" https://codereview.webrtc.org/1389203003/. It is only possible to clear the last image in release() if init() has been called beforehand.

TBR=hbos
BUG=webrtc:4742

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

Cr-Commit-Position: refs/heads/master@{#10223}
2015-10-08 16:58:33 +00:00
Magnus Jedvert
4382d800d2 Android SurfaceViewRenderer: Allow to re-init after release() has been called
This CL makes a thorough reset of all variables in release() and clears the last rendered image so that the SurfaceViewRenderer object can be reinitialized with init() and work properly. This CL also removes an implicit assumption that init() is called before surfaceCreated() - now they can be called in any order.

BUG=webrtc:4742
R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10217}
2015-10-08 12:45:42 +00:00
perkj
3d06eca5e3 Add support to Capture to a texture instead of memory.
This adds support for capturing to a texture in the Java part of VideoCapturerAndroid.
After this cl, the C++ also needs modification.

https://codereview.webrtc.org/1375953002/ contains the idea and have a working version where textures can be rendered in local preview.

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

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

Cr-Commit-Position: refs/heads/master@{#10213}
2015-10-08 10:53:46 +00:00
Magnus Jedvert
91b348c702 Android MediaCodecVideoDecoder: Manage lifetime of texture frames
This CL should be the last one in a series to finally unblock camera texture capture.

The SurfaceTexture.updateTexImage() calls are moved from the video renderers into MediaCodecVideoDecoder, and the destructor of the texture frames will signal MediaCodecVideoDecoder that the frame has returned. This CL also removes the SurfaceTexture from the native handle and only exposes the texture matrix instead, because only the video source should access the SurfaceTexture.

BUG=webrtc:4993
R=glaznev@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10203}
2015-10-07 20:57:17 +00:00
Alex Glaznev
09f1350efa Add option to reset Android video renderer first frame flag.
This allows to correctly report first frame event in applications which
use same remote video renderer for multiple calls.

R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10176}
2015-10-05 20:01:41 +00:00
perkj
1b33da1298 SurfaceTextureHelper fixes
Fixed a problem where eglBase.makecurrent() could be called after the context had been released if SurfaceTextureHelper was first created and immedately disconnected.

Add the possibility to inject a thread to use instead of creating a new.

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

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

Cr-Commit-Position: refs/heads/master@{#10174}
2015-10-05 19:06:48 +00:00
perkj
418503275c Add ThreadChecker class to ThreadUtils
This class can be used for checking that method calls are made on the correct thread.

R=magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10173}
2015-10-05 18:49:15 +00:00
perkj
e0bce24065 VideoCapturerAndroid: Add custom nativeCreateVideoCapturer()
This CL shouldn't make any functional changes. It adds a new VideoCapturerAndroid.nativeCreateVideoCapturer() instead of always using VideoCapturer.nativeCreateVideoCapturer(). The purpose is to simplify androidvideocapturer_jni and VideoCapturerAndroid.create(). This way, it is possible to use the ctor instead of VideoCapturerAndroid.init() to initialize variables, and they can be made final etc.

R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10171}
2015-10-05 14:22:06 +00:00