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}
NDEBUG is a standard macro with the semantic "Not Debug" for C89, C99, C++98,
C++2003, C++2011, C++2014 standards. There are no _DEBUG macros in the
standards.
_DEBUG is a macro Visual Studio defines when you specify the /MTd or /MDd
option.
http://stackoverflow.com/a/29253284/5237416
This should help fix the TODO in third_party/libjingle/libjingle.gyp
BUG=None
R=sergeyu@chromium.org
Review URL: https://codereview.webrtc.org/1419733004
Cr-Commit-Position: refs/heads/master@{#10377}
By default, we'll now offer to receive if already receiving
(meaning that the last remote description contained a track).
Also, m-lines that are neither receiving nor sending are now correctly
marked "inactive".
Also moved some logic relating to default tracks out of webrtcsdp.cc,
such that now the direction seen by upper layers will always be
consistent with the consumed/produced SDP.
BUG=528089
Review URL: https://codereview.webrtc.org/1406803004
Cr-Commit-Position: refs/heads/master@{#10376}
The function to stop recording an AEC dump was missing from the PeerConnectionFactory interface (only a start function was provided). This CL adds the missing stop function.
BUG=webrtc:4741
Review URL: https://codereview.webrtc.org/1415733005
Cr-Commit-Position: refs/heads/master@{#10372}
Default implementation added that invokes the other RequestIdentity method, adding default parameters or dropping the parameters.
This CL is in preparation for removing the RequestIdentity that takes rtc::KeyType, necessary as to not break Chromium.
BUG=webrtc:4927, 528250
Review URL: https://codereview.webrtc.org/1414243003
Cr-Commit-Position: refs/heads/master@{#10351}
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}
This reverts commit 90754174d98d6b71fd4aaed897bd54980f7e59c4.
Revert "Fix use of scaler in MediaCodecVideoEncoder"
This reverts commit ec93628e75fdb81f23635b39b5f3da846bcefd21.
R=magjed@webrtc.orgTBR=glaznev@webrtc.org
BUG=webrtc:4993 b/24984012
Review URL: https://codereview.webrtc.org/1407263002 .
Cr-Commit-Position: refs/heads/master@{#10300}
Merging the PeerConnectionTestClientBase and JsepTestClient classes,
since there's no real logical distinction. This should make it slightly
less painful to write new PeerConnection tests.
Review URL: https://codereview.webrtc.org/1393223005
Cr-Commit-Position: refs/heads/master@{#10292}
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}
After the TransportController CL, BaseSession does little more than
hold a state and an error, and act as an intermediary for the
TransportController. So it doesn't make sense for it to be its own
class.
Review URL: https://codereview.webrtc.org/1397973002
Cr-Commit-Position: refs/heads/master@{#10281}
Reason for reland:
The original CL actually didn't break browser_tests; it was
just a coincidence that it started failing.
Original issue's description:
> Revert of Moving MediaStreamSignaling logic into PeerConnection. (patchset #10 id:180001 of https://codereview.webrtc.org/1393563002/ )
>
> Reason for revert:
> Broke browser_tests on Mac. Still need to investigate the cause.
>
> Original issue's description:
> > Moving MediaStreamSignaling logic into PeerConnection.
> >
> > This needs to happen because in the future, m-lines will be offered
> > based on the set of RtpSenders/RtpReceivers, rather than the set of
> > tracks that MediaStreamSignaling knows about.
> >
> > Besides that, MediaStreamSignaling was a "glue class" without
> > a clearly defined role, so it going away is good for other
> > reasons as well.
> >
> > Committed: https://crrev.com/97c392935411398b506861601c82e31d95c591f0
> > Cr-Commit-Position: refs/heads/master@{#10268}
>
> TBR=pthatcher@webrtc.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://crrev.com/fc648b6d934e936f4d9a32c813364b331536ec3b
> Cr-Commit-Position: refs/heads/master@{#10269}
TBR=pthatcher@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.webrtc.org/1404473005
Cr-Commit-Position: refs/heads/master@{#10277}
This CL should reduce the number of timeouts for dequeueInputBuffer() which results in the log "MediaCodecVideo: dequeueInputBuffer error" followed by software fallback for VP8/VP9 and codec restart for H264.
A timeout always happen for dequeueInputBuffer() when frames_received_ > frames_decoded_ + num_input_buffers. The following code tries to drain the decoder before enqueuing more input buffers:
// Try to drain the decoder and wait until output is not too
// much behind the input.
if (frames_received_ > frames_decoded_ + max_pending_frames_) {
ALOGV("Received: %d. Decoded: %d. Wait for output...",
frames_received_, frames_decoded_);
if (!DeliverPendingOutputs(jni, kMediaCodecTimeoutMs,
true /* dropFrames */)) {
ALOGE << "DeliverPendingOutputs error";
return ProcessHWErrorOnCodecThread();
}
if (frames_received_ > frames_decoded_ + max_pending_frames_) {
ALOGE << "Output buffer dequeue timeout";
return ProcessHWErrorOnCodecThread();
}
...
}
However, for H264, |max_pending_frames_| can currently be larger than the number of input buffers so that the code above is never executed. This CL limits |max_pending_frames_| to the number of input buffers.
TBR=glaznev
BUG=b/24867188,b/24864151
Review URL: https://codereview.webrtc.org/1394303005
Cr-Commit-Position: refs/heads/master@{#10273}
Reason for revert:
Broke browser_tests on Mac. Still need to investigate the cause.
Original issue's description:
> Moving MediaStreamSignaling logic into PeerConnection.
>
> This needs to happen because in the future, m-lines will be offered
> based on the set of RtpSenders/RtpReceivers, rather than the set of
> tracks that MediaStreamSignaling knows about.
>
> Besides that, MediaStreamSignaling was a "glue class" without
> a clearly defined role, so it going away is good for other
> reasons as well.
>
> Committed: https://crrev.com/97c392935411398b506861601c82e31d95c591f0
> Cr-Commit-Position: refs/heads/master@{#10268}
TBR=pthatcher@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.webrtc.org/1403633005
Cr-Commit-Position: refs/heads/master@{#10269}
This needs to happen because in the future, m-lines will be offered
based on the set of RtpSenders/RtpReceivers, rather than the set of
tracks that MediaStreamSignaling knows about.
Besides that, MediaStreamSignaling was a "glue class" without
a clearly defined role, so it going away is good for other
reasons as well.
Review URL: https://codereview.webrtc.org/1393563002
Cr-Commit-Position: refs/heads/master@{#10268}
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}
This CL makes AddRef() and Release() const member methods and the refcount integer mutable. This is reasonable, because they only manage the lifetime of the object, and this is also how it's done in Chromium.
The purpose is to be able to capture a const pointer in a scoped_refptr, which is currenty impossible. The practial problem this CL solves is this:
void Foo::Bar() const {}
rtc::Callback0<void> Foo::MakeClosure() const {
return rtc::Bind(&Foo::Bar, this);
}
We currently capture |this| as const Foo*. With this CL, |this| will be captured as scoped_refptr<const Foo>.
A test is also added in bind_unittest to check this behaviour.
BUG=webrtc:5065
R=perkj@webrtc.org, tommi@webrtc.org
Review URL: https://codereview.webrtc.org/1403683004 .
Cr-Commit-Position: refs/heads/master@{#10253}
This make small refactorings to MediaVideoEncoder to prepare for adding support to encode from textures. The C++ layer does not have any functional changes.
- Moves ResetEncoder to always work on the codec thread
- Adds use of ThreadChecker.
- Change Java MediaEncoder.Init to return true or false and introduce method getInputBuffers.
- Add simple unit test for Java MediaCodecVideoEncoder.
BUG=webrtc:4993
Review URL: https://codereview.webrtc.org/1396073003
Cr-Commit-Position: refs/heads/master@{#10250}