52 Commits

Author SHA1 Message Date
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
Magnus Jedvert
27551c9574 Android RendererCommon: Refactor getSamplingMatrix()
This CL refactors RendererCommon.getSamplingMatrix() so it does not have any dependecy to SurfaceTeture. The purpose is to prepare for a change in how texture frames are represented - only the texture matrix will be exposed, not the SurfaceTexture itself. This CL also adds an extra test for RendererCommon.rotateTextureMatrix().

R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10118}
2015-09-30 16:25:22 +00:00
Magnus Jedvert
24b52f8322 Android GlRectDrawer: Add test for OES texture rendering
BUG=webrtc:4742
R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10109}
2015-09-29 14:40:11 +00:00
magjed
b5815c8013 Revert of Android VideoCapturer: Send ByteBuffer instead of byte[] (patchset #1 id:1 of https://codereview.webrtc.org/1372813002/ )
Reason for revert:
The top row in the video stream from the camera is messed up. The byte[] pointer is not the same as GetDirectBufferAddress() apparently.

Original issue's description:
> Android VideoCapturer: Send ByteBuffer instead of byte[]
>
> The purpose with this CL is to replace GetByteArrayElements() and ReleaseByteArrayElements() with GetDirectBufferAddress().
>
> R=hbos@webrtc.org
>
> Committed: https://crrev.com/cb3649b40b3fd6d5bbb0a92003b717e46ce90924
> Cr-Commit-Position: refs/heads/master@{#10091}

TBR=hbos@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#10103}
2015-09-29 08:13:47 +00:00
Magnus Jedvert
8e9cb09506 Android: Add unittests for SurfaceTextureHelper
BUG=webrtc:4993
R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10099}
2015-09-28 21:15:23 +00:00
Magnus Jedvert
cb3649b40b Android VideoCapturer: Send ByteBuffer instead of byte[]
The purpose with this CL is to replace GetByteArrayElements() and ReleaseByteArrayElements() with GetDirectBufferAddress().

R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10091}
2015-09-28 14:42:12 +00:00
Magnus Jedvert
495d2fdd65 Reland of "Android GlRectDrawer: Add test for RGB rendering"
Reland of https://codereview.webrtc.org/1367923002/.

The bug was that not all platforms support glReadPixels() with GL_RGB. This CL uses GL_RGBA instead.

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

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

Cr-Commit-Position: refs/heads/master@{#10070}
2015-09-25 08:55:42 +00:00
Magnus Jedvert
ea70d77fd5 VideoCapturerAndroid: Add test for making calls on stopped camera
BUG=webrtc:4978
R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10062}
2015-09-24 19:41:08 +00:00
magjed
5e9a1bc790 Revert of Android GlRectDrawer: Add test for RGB rendering (patchset #3 id:40001 of https://codereview.webrtc.org/1367923002/ )
Reason for revert:
The test fails on Nexus 9.

Original issue's description:
> Android GlRectDrawer: Add test for RGB rendering
>
> BUG=webrtc:4742
> R=hbos@webrtc.org
>
> Committed: https://crrev.com/6b20ad99e04f594a9a131bea5d80940698e6e8fd
> Cr-Commit-Position: refs/heads/master@{#10050}

TBR=hbos@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4742

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

Cr-Commit-Position: refs/heads/master@{#10058}
2015-09-24 16:16:20 +00:00
Magnus Jedvert
6b20ad99e0 Android GlRectDrawer: Add test for RGB rendering
BUG=webrtc:4742
R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10050}
2015-09-24 13:05:33 +00:00
Magnus Jedvert
2efe58b189 VideoCapturerAndroidTest: Dispose PeerConnectionFactory with pending frames
Partial revert of change in testReturnBufferLateEndToEnd from https://codereview.webrtc.org/1350863002/. It is ok to dispose PeerConnectionFactory with pending frames after all.

BUG=webrtc:4909
R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10049}
2015-09-24 12:16:40 +00:00
Magnus Jedvert
f706c8ae91 VideoCapturerAndroid: Fix threading issues
This CL makes the following changes:
 * Instead of creating a new thread per startCapture()/stopCapture() cycle, VideoCapturerAndroid has a single thread that is initialized in the constructor and kept during the lifetime of the instance. This is more convenient because then it is always possible to post runnables without if-checks. This way, a lot of synchronize statements can be removed. Also, when the camera thread is preserved after stopCapture() it is possible to post late returnBuffer() calls to the correct thread.
 * FramePool now enforces single thread use and returnBuffer() calls are posted to the camera thread. This is important because the camera should only be used from one thread, and we call camera.addCallbackBuffer() in returnBuffer().
 * switchCamera() no longer returns false on failure, but instead signals the result via the callback.
 * Update the test testCaptureAndAsyncRender() - it's not a valid use case to have outstanding frames when calling PeerConnectionFactory.dispose(). Instead, the renderer implementations should have release() functions that block until all frames are returned. The release() functions need to be called in the correct order with PeerConnectionFactory.dispose() last.

BUG=webrtc:4909
R=hbos@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10025}
2015-09-23 10:01:40 +00:00
Magnus Jedvert
ea06a58f40 Android video capture: Remove duplicated code and fix spelling mistakes
This CL does not contain any functional changes, it is purely nit fixes.

R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9931}
2015-09-14 14:10:53 +00:00
Magnus Jedvert
529528cc36 Android video rendering: Apply SurfaceTexture.getTransformationMatrix()
This CL applies the transformation matrix instead of assuming it is always a vertical flip.

BUG=webrtc:4968,webrtc:4742
R=hbos@webrtc.org, pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9905}
2015-09-09 09:00:14 +00:00
Magnus Jedvert
7764973e1d Add magjed@ as owner for talk/app/webrtc/androidtests/ and talk/app/webrtc/java/jni/
magjed@ has done a lot of work in these folders.

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9896}
2015-09-08 15:13:45 +00:00
Magnus Jedvert
e7a0de773a CameraEnumerationAndroid: Add getSupportedFormats() implementation using android.hardware.camera2
Enumerating using android.hardware.camera2 is 10x faster than enumerating using android.hardware.camera, but they don't list exactly the same formats. android.hardware.camera2 support higher resolutions for some cameras, and also different framerates.

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9861}
2015-09-04 13:13:39 +00:00
Magnus Jedvert
7afc12fe91 VideoRendererGui: Move to async rendering and remove no longer needed code
BUG=webrtc:4742, webrtc:4909
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9847}
2015-09-03 10:40:50 +00:00
Magnus Jedvert
1a591ddc7e Android GlUtil: Add helper functions generateTexture/deleteTexture
The purpose with this CL is to remove some code bloat. A subtle change is that GL_TEXTURE_MIN_FILTER in MediaCodecVideoDecoder is changed from GL_NEAREST to GL_LINEAR. This may lead to slightly worse performance when the decoded video is rendered minified, but with better visual quality. After reading https://crbug.com/351458 and the fix https://codereview.chromium.org/713603002 I think this is the right choice.

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

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

Cr-Commit-Position: refs/heads/master@{#9845}
2015-09-02 12:43:18 +00:00
Alex Glaznev
4d2f4d1c69 - Make shared EGL context used for HW video decoding member
of decoder factory class.
- Add new Peer connection factory method to initialize shared
EGL context.

This provides an option to use single peer connection factory
in the application and create peer connections from the same
factory and reinitialize shared EGL context for video
decoding HW acceleration.

R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9838}
2015-09-01 22:04:21 +00:00
Magnus Jedvert
c252dabbd6 CameraEnumerationAndroid: Make getSupportedFormats() an interface
Enumerating camera capabilities in the deprecated android.hardware.Camera interface is really slow because of the need to open and release the camera. By making getSupportedFormats() an interface, we allow apps the opportunity to inject their own implementation, such as storing the supported formats offline in the device's internal storage. It will also be possible to add an implementation of getSupportedFormats() using the new android.hardware.Camera2 interface in a follow-up CL.

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9819}
2015-08-31 11:19:20 +00:00
Magnus Jedvert
a6cba3ab5c Java VideoRenderer.Callbacks: Make renderFrame() interface asynchronous
This CL makes the Java render interface asynchronous by requiring every call to renderFrame() to be followed by an explicit renderFrameDone() call. In JNI, this is implemented with cricket::VideoFrame::Copy() before calling renderFrame(), and a corresponding call to delete in renderFrameDone(). This CL is primarily done to prepare for a new renderer implementation.

BUG=webrtc:4742, webrtc:4909
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9814}
2015-08-29 13:57:56 +00:00
magjed
6813ec84fb VideoCapturerAndroid: Move to android folder and split out camera enumeration into separate file
Pure code move of:
talk/app/webrtc/java/src/org/webrtc/VideoCapturerAndroid.java
into:
talk/app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java
talk/app/webrtc/java/android/org/webrtc/CameraEnumerationAndroid.java

NOPRESUBMIT=true

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

Cr-Commit-Position: refs/heads/master@{#9809}
2015-08-28 12:22:27 +00:00
Magnus Jedvert
c464b409be Android RendererCommon: Add unittests for getTextureMatrix()
BUG=webrtc:4742
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9783}
2015-08-25 18:05:20 +00:00
Magnus Jedvert
7230a21d66 Android RendererCommon: Add unittests for getDisplaySize()
BUG=webrtc:4742
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9777}
2015-08-25 10:31:30 +00:00
Magnus Jedvert
7ef9d9104d Android: Remove VideoRenderer.Callbacks.canApplyRotation()
The only real implementation of VideoRenderer.Callbacks, VideoRendererGui, can always apply rotation. We don't need this in the interface.

BUG=webrtc:4145
R=glaznev@webrtc.org, guoweis@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9772}
2015-08-25 07:32:16 +00:00
magjed
e2a8be1244 Revert of AppRTCDemo: Render each video in a separate SurfaceView (patchset #4 id:120001 of https://codereview.webrtc.org/1257043004/ )
Reason for revert:
AppRTCDemo often crashes in loopback mode and incorrect layout when connection is established

BUG=webrtc:4909,webrtc:4910

Original issue's description:
> AppRTCDemo: Render each video in a separate SurfaceView
>
> This CL introduces a new org.webrtc.VideoRenderer.Callbacks implementation called SurfaceViewRenderer that renders each video stream in its own SurfaceView. AppRTCDemo is updated to use this new rendering.
>
> This CL also does the following changes:
> * Make the VideoRenderer.Callbacks interface asynchronous and require that renderFrameDone() is called for every renderFrame(). In JNI, this is implemented with cricket::VideoFrame::Copy()/delete.
> * Make public static helper functions: convertScalingTypeToVisibleFraction(), getDisplaySize(), and getTextureMatrix().
> * Introduces new helper functions surfaceWidth()/surfaceHeight() in EGlBase that allows to query the surface size.
> * Introduce PercentFrameLayout that implements the percentage layout that is used by AppRTCDemo.
>
> BUG=webrtc:4742
>
> Committed: https://crrev.com/05bfbe47ef6bcc9ca731c0fa0d5cd15a4f21e93f
> Cr-Commit-Position: refs/heads/master@{#9699}

TBR=glaznev@webrtc.org,wzh@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4742

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

Cr-Commit-Position: refs/heads/master@{#9703}
2015-08-12 06:55:04 +00:00
magjed
05bfbe47ef AppRTCDemo: Render each video in a separate SurfaceView
This CL introduces a new org.webrtc.VideoRenderer.Callbacks implementation called SurfaceViewRenderer that renders each video stream in its own SurfaceView. AppRTCDemo is updated to use this new rendering.

This CL also does the following changes:
* Make the VideoRenderer.Callbacks interface asynchronous and require that renderFrameDone() is called for every renderFrame(). In JNI, this is implemented with cricket::VideoFrame::Copy()/delete.
* Make public static helper functions: convertScalingTypeToVisibleFraction(), getDisplaySize(), and getTextureMatrix().
* Introduces new helper functions surfaceWidth()/surfaceHeight() in EGlBase that allows to query the surface size.
* Introduce PercentFrameLayout that implements the percentage layout that is used by AppRTCDemo.

BUG=webrtc:4742

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

Cr-Commit-Position: refs/heads/master@{#9699}
2015-08-11 13:50:27 +00:00
magjed
b28678ce70 Add unittest to GlRectDrawer
Review URL: https://codereview.webrtc.org/1250093003

Cr-Commit-Position: refs/heads/master@{#9638}
2015-07-26 12:17:25 +00:00
magjed
b69ab79338 VideoCapturerAndroid: Add function to change capture format while camera is running
Review URL: https://codereview.webrtc.org/1178703009

Cr-Commit-Position: refs/heads/master@{#9608}
2015-07-22 09:32:04 +00:00
Åsa Persson
2b679250fb VideoCapturerAndroid: Add possibility to request a new resolution from the video adapter.
BUG=
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9434}
2015-06-15 07:53:16 +00:00
Peter Boström
23c2e55479 Remove remaining .mk files.
These files are not supported, kept up to date or likely to build
anymore.

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

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

Cr-Commit-Position: refs/heads/master@{#9303}
2015-05-28 09:05:11 +00:00
Alex Glaznev
2f5be9ad63 Improve Android camera error handling.
- Set Camera.ErrorCallback callback when opening camera to
receive camera server error notifications.
- Allow user to provide interface for handling camera errors
happening on camera thread.
- Run camera observer on camera thread and monitor camera fps
and amount of callback buffers, print statistics and report error
if camera stops generating frames.
- Query camera formats starting from front camera instead of back
camera to detect camera failures as fast as possible.
- Change all DCHECK to CHECK in androidvideocapturer.cc to detect
camera error on release builds.
- Plus adding some extra logging.

R=hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9221}
2015-05-19 17:56:22 +00:00
Henrik Boström
09a9ea8886 Supporting formats of non-multiple of 16 widths on Android.
This is an updated version of perkj's issue (https://webrtc-codereview.appspot.com/44129004/) which was reverted due to libjingle_peerconnection_android_unittest crashing on Nexus 9. It crashed because there was old test code still assuming the width was multiple of 16 (which was only a problem on devices with non-16 widths).

BUG=4522
R=glaznev@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9029}
2015-04-17 15:31:45 +00:00
Alex Glaznev
e4ae8d8558 Changes in VideoCapturerAndroid.
- Do not handle more than one camera switch request at a time
to avoid blocking camera thread with multiple switch requests.
- Add a callback to notify when camera switch has been done.

R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8978}
2015-04-10 18:19:57 +00:00
Per
3354419a2d Zero copy AndroidVideeCapturer.
This cl uses the YV12 buffers from Java without a copy if no rotation is needed. Buffers are returned to the camera when the encoder and renderers no longer needs them.

This add a new frame type WrappedI420Buffer based in  that allows for wrapping existing memory buffers and getting a notification when it is no longer used.

AndroidVideoCapturer::FrameFactory::CreateAliasedFrame wraps frame received from Java. For each wrapped frame a new reference to AndroidVideoCapturerDelegate is held to ensure that the delegate can not be destroyed until all frames have been returned.

Some overlap exist in webrtcvideoframe.cc and webrtcvideengine.cc with https://webrtc-codereview.appspot.com/47399004/ that is expected to be landed before this cl.

BUG=1128
R=glaznev@webrtc.org, magjed@webrtc.org
TBR=mflodman@webrtc.org // For changes in webrtc/common_video/video_frame_buffer

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

Cr-Commit-Position: refs/heads/master@{#8923}
2015-04-02 10:31:00 +00:00
guoweis@webrtc.org
840da7b755 Implement Rotation in Android Renderer.
Make use of rotation information from the frame and rotate it accordingly when we render the frame.

BUG=4145
R=glaznev@webrtc.org

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

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

Cr-Commit-Position: refs/heads/master@{#8781}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8781 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-18 16:58:49 +00:00
guoweis@webrtc.org
3fffd66dfa Revert "Implement Rotation in Android Renderer."
This reverts commit 835ec63d8a64bbc8a573a5e0b7a09659188122d2.

TBR=guoweis@webrtc.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#8771}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8771 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-18 04:20:47 +00:00
guoweis@webrtc.org
835ec63d8a Implement Rotation in Android Renderer.
Make use of rotation information from the frame and rotate it accordingly when we render the frame.

BUG=4145
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8770}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8770 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-18 02:44:39 +00:00
kjellander@webrtc.org
eed2fcaa76 Roll chromium_revision 00e438c..8d51d96 (320241:320682)
Relevant changes:
* src/third_party/android_tools: fd5a8ec..98a4345
Details: 00e438c..8d51d96/DEPS

This required updating our Android projects to API level 22,
as third_party/android_tools dropped support for API level 21.

Command used:
perl -pi -e "s/android-21/android-22/g" `find . -name project.properties`
Using 'android update project' would also work but that changes the
ANDROID_SDK_ROOT -> ANDROID_HOME, which the Chromium build toolchain
doesn't set properly when build/android/envsetup.sh is sourced.

Clang version was not updated in this roll.

R=henrika@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8728}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8728 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-16 09:00:41 +00:00
guoweis@webrtc.org
00c509ad1c Add concept of whether video renderer supports rotation.
Rotation is best done when rendered in GPU, added the shader code which rotates the frame. For renderers which don't support rotation, the rotation will be done before sending down the frame to render. By default, assume renderer can't do rotation.

Tested with peerconnection_client on windows, AppRTCDemo on Mac.

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

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

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

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

Cr-Commit-Position: refs/heads/master@{#8705}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8705 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-12 21:38:19 +00:00
guoweis@webrtc.org
f9a75d99b9 Revert "Add concept of whether video renderer supports rotation."
This reverts commit 0ad48935fc5b92be6e10924a9ee3b0dc39c79104.

TBR=guoweis@webrtc.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#8663}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8663 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 06:37:41 +00:00
guoweis@webrtc.org
0ad48935fc Add concept of whether video renderer supports rotation.
Rotation is best done when rendered in GPU, added the shader code which rotates the frame. For renderers which don't support rotation, the rotation will be done before sending down the frame to render. By default, assume renderer can't do rotation.

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

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

Cr-Commit-Position: refs/heads/master@{#8660}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8660 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 02:43:40 +00:00
perkj@webrtc.org
41d8fda12d VideoCapturerAndroid allocates direct buffers so that the frame buffers can be used in C++ without a copy. However byte[] array = ByteBuffer.array() seems to point to the beginning of the underlaying buffer and that is what the camera fills. But it turns out that ByteBuffer.arrayOffset() returns an offset and it seems like the pointer returned by jni->GetDirectBufferAddress(j_frame). This cl reverts back to pass the byte[] to c++ and use jni->GetByteArrayElements to get the address of the buffer.
R=glaznev@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8535}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8535 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 18:51:18 +00:00
perkj@webrtc.org
112f127170 Refactor how VideoCapturerAndroid delivers frames and is stopped.
With this cl, video buffers are now allocated using direct buffers.
These buffers are guaranteed to live as long as the capturer is running.
We can now post frames in c++ from the Java thread to the  c++ worker thread and let c++ post the buffers back when it has finished
processing them.

This cl also reverts back to make Stop asynchronouse so that it is guaranteed that the c++ worker thread is not used and no frames are delivered to VideoCapturerAndroid after Stop completes.

BUG=4318
TESTED= On a N5, N6, N9 and Samsung device.
R=glaznev@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8493}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8493 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 09:20:43 +00:00
perkj@webrtc.org
3db042e2f0 Stop AndroidVideoCapturer asynchronously.
The purpose is to avoid a deadlock between the C++ thread calling Stop and the Java thread that provides video frames.

BUG=4318
R=glaznev@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8425}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8425 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-19 08:44:17 +00:00
perkj@webrtc.org
8f605e8911 Add VideoSource::Stop and Restart methods.
The purpose is to make sure that start and stop is called on the correct thread on Android. It also cleans up the Java VideoSource implementation.

BUG=4303
R=glaznev@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8389}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8389 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-17 13:54:42 +00:00
perkj@webrtc.org
83bc721c7e Add Android specific VideoCapturer.
The Java implementation of VideoCapturer is losely based on the the work in webrtc/modules/videocapturer.

The capturer is now started asyncronously.
The capturer supports easy camera switching.

BUG=
R=henrika@webrtc.org, magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8329}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8329 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-11 11:27:22 +00:00
jlmiller@webrtc.org
5f93d0a140 Update libjingle license statements at top of talk files for consistency
BUG=2133
R=juberti@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8105 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-20 21:36:13 +00:00
glaznev@webrtc.org
dea5173edf Add start bitrate and vp8 hw acceleration option to
Android AppRTCDemo.

- Add an option to set VP8 encoder start bitrate
usig x-google-start-bitrate line in remote SDP.
- Allow to enabled/disable VP8 hw decoder and
encoder acceleration using appRTC settings.

BUG=4046
R=jiayl@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7775 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-01 20:02:13 +00:00
perkj@webrtc.org
2faf7eea6f Revert "Revert "This adds an Android apk for running tests on the Java layer of PeerConnection.""
This reverts commit 308e7ff61327d64ba5c7761ce6b58cd1fbc4847e.

Original cl description:

This adds an Android apk for running tests on the Java layer of PeerConnection.

The only testcase is currently the same test we run on Java standalone.
To run the test adb shell am instrument -w org.webrtc.test/android.test.InstrumentationTestRunner

BUG=4031
R=kjellander@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7748 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-26 07:35:37 +00:00