20 Commits

Author SHA1 Message Date
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
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
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
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
21622a1d19 Add option to print peer connection factory Java stack traces.
R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10204}
2015-10-07 21:50:21 +00:00
deadbeef
4139c0f1c5 Java binding for RtpSender/RtpReceiver.
The Java PeerConnection maintains a cached list of Java RtpSenders
and RtpReceivers so that the same objects are returned every time
getSenders() or getReceivers() is called. They are disposed of when
PeerConnection.dispose() is called, which will also dispose their
referenced MediaStreamTracks.

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

Cr-Commit-Position: refs/heads/master@{#10189}
2015-10-06 19:29:32 +00:00
magjed
44bf6f5f67 Android MediaCodecVideoDecoder: Split DecoderOutputBufferInfo into DecodedByteBuffer and DecodedTextureBuffer
This CL separates the types and code paths for textures vs byte buffers in MediaCodecVideoDecoder.dequeueOutputBuffer() and MediaCodecVideoDecoder::DeliverPendingOutputs(). The purpose is to prepare for lifetime management of textures received from the SurfaceTexture.

This CL is a part of the plan in https://codereview.webrtc.org/1357923002/.

BUG=webrtc:4993

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

Cr-Commit-Position: refs/heads/master@{#10156}
2015-10-03 09:08:06 +00:00
honghaiz
1f429e3418 Passing the new policy from PeerConnection RTCConfiguration to
p2ptransportchannel.  This CL does not use the new policy yet.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10092}
2015-09-28 14:57:39 +00:00
Per
d2413e514a Fix the C++ SurfaceTextureHolder
This cl moves back loading java SurfaceTextureHolder to the ClassReferenceHolder and use FindClass through ClassReferenceHolder. Without this, jni->FindClass returns nullptr in surfacetexturehelper_jni.cc.

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

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

Cr-Commit-Position: refs/heads/master@{#10086}
2015-09-28 09:48:23 +00:00
henrikg
91d6edef35 Add RTC_ prefix to (D)CHECKs and related 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.

Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.

BUG=chromium:468375
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9964}
2015-09-17 07:24:51 +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
glaznev
97579a4e12 Add option to enable ECDSA key for Java API.
Review URL: https://codereview.webrtc.org/1312293003

Cr-Commit-Position: refs/heads/master@{#9835}
2015-09-01 18:31:34 +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
80cf97cddd Android rendering: Move common EGL and GL functions to separate classes
This CL does not make any functional changes. The purpose is to extract some common code that is needed for texture capture and texture encode.

This CL does the following changes:
* Move common EGL functions from org.webrtc.MediaCodecVideoDecoder to org.webrtc.EglBase.
* Move common GL functions from org.webrtc.VideoRendererGui to org.webrtc.GlUtil and org.webrtc.GlShader.
* Remove unused call to surfaceTexture.getTransformMatrix in YuvImageRenderer.
* Add helper functions rotatedWidth()/rotatedHeight() in VideoRenderer.I420Frame.

R=glaznev@webrtc.org, hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9414}
2015-06-11 08:09:15 +00:00
Peter Thatcher
af55ccc054 Add RtcpMuxPolicy support to PeerConnection.
BUG=4611
R=juberti@google.com

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

Cr-Commit-Position: refs/heads/master@{#9251}
2015-05-21 14:48:19 +00:00
Jiayang Liu
cac1b38135 Expose RTCConfiguration to java JNI and add an option to disable TCP
BUG=4585, 4589
R=glaznev@webrtc.org, juberti@google.com, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9125}
2015-04-30 19:35:32 +00:00
glaznev@webrtc.org
b28474c7a0 Add H.264 HW encoder and decoder support for Android.
- Allow to configure MediaCodec Java wrapper to use VP8
and H.264 codec.
- Save H.264 config frames with SPS and PPS NALUs and append them to every key frame.
- Correctly handle the case when one encoded frame may generate several output NALUs.
- Add code to find H.264 start codes.
- Add a flag (non configurable yet) to use H.264 in AppRTCDemo.
- Improve MediaCodec logging.

R=wzh@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8465}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8465 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 17:44:58 +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
96e4db9bea Split peerconnection_jni.cc into separate files.
For now:
java_helpers - JNI convenience functions etc. Can in theory be moved to libjingle / webrtc general one day.
classreferenceholder - app/webrtc specific Java class loader.
androidvideocapturer_jni - the jni part of the video capturer I added.
peerconnection_jni - all the rest.

This also move all jni specifics into ns webrtc_jni to avoid naming collision.

R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8363}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8363 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-13 12:47:21 +00:00