34 Commits

Author SHA1 Message Date
Ranveer Aggarwal
8175444111 Remove instances of j.u.Optional from EGLRenderer
j.u.Optional isn't available for sdk version <24 and our minsdk is 21.

Bug: webrtc:351858995
Change-Id: Iadf50a96fc5462d16b53857116fab271cecc8c3c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/374061
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Auto-Submit: Ranveer Aggarwal‎ <ranvr@webrtc.org>
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43935}
2025-02-20 01:28:35 -08:00
Raman Budny
de6225b2e2 Don't crash on failed EGL makeCurrent attempts
EglRenderer.renderFrameOnRenderThread:
suppress GLException thrown by failed EglBase14Impl::makeCurrent invocation.

Bug: webrtc:365957543
Change-Id: I947ad7d39ce01e3bbe9bc767d6427e4271f0c0cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361020
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43027}
2024-09-17 08:21:38 +00:00
Ranveer Aggarwal
c7e2568457 Optionally overwrite instead of queueing render updates.
Here, we overwrite the pending frames per renderer.

Bug: webrtc:351858995
Change-Id: I070219aec4e7be5f2b0c9f2371fe2c99af3e3920
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/358760
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Fabian Bergmark <fabianbergmark@google.com>
Commit-Queue: Zoé Lepaul <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42741}
2024-08-07 13:36:39 +00:00
Ranveer Aggarwal
17b06515df Add a render callback to EGLRenderer
Change-Id: I72f68ebf5f2e032403701ec6fb1fc3c5580ddf4c
Bug: webrtc:340303238
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350520
Reviewed-by: Linus Nilsson <lnilsson@webrtc.org>
Commit-Queue: Ranveer Aggarwal‎ <ranvr@webrtc.org>
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42358}
2024-05-21 09:44:37 +00:00
Magnus Jedvert
783f1d850e Remove excessive logging in EglRenderer
Bug: None
Change-Id: I26f842395fc36c41de0b791f93a61120f07c9ac9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/325380
Reviewed-by: Fabian Bergmark <fabianbergmark@google.com>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41044}
2023-10-31 09:08:40 +00:00
Linus Nilsson
40ce7674c4 Adopt RenderSynchronizer in EglThread and EglRenderer
This gives the option to synchronize rendering updates with
the display refresh cycle and limit effective updates to a certain frame
rate.
go/meet-android-synchronized-rendering

Bug: b/217863437
Change-Id: I4938a10f4e80d98a17e28f2e397fbb95117a3e4c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/325061
Reviewed-by: Ranveer Aggarwal‎ <ranvr@webrtc.org>
Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41012}
2023-10-26 08:59:24 +00:00
Linus Nilsson
dd15070b45 Adopt EglThread in EglRenderer once again.
The regression obseverved on Samung devices the last time was caused
by the not detaching the context/surface prior to releasing an
EGLSurface or EGLContext. This was fine on most devices but obviously
not all.

Bug: b/225229697
Change-Id: I1849c772f3ed3e8819c748d997e5261289c4b2bc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/321842
Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40844}
2023-09-29 13:37:21 +00:00
Linus Nilsson
46c57c6686 Revert "Adopt EglThread in EglRenderer"
This reverts commit ad3f1bcc1b4428c2c7d793656338212c1875dfbe.

Reason for revert: Causing crashes: b/286664896

Original change's description:
> Adopt EglThread in EglRenderer
>
> This allows EglRenderer to be able to share render thread and EGLContext
> with others.
> go/meet-android-eglcontext-reduction
>
> Bug: b/225229697
> Change-Id: I896c8082ef8b64f5b544fa2eda7303fbca3985d1
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/316881
> Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
> Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#40574}

Bug: b/225229697
Change-Id: Ib6f1d787445ca7d679fb114478716526e51a6057
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/319541
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Owners-Override: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#40734}
2023-09-12 06:56:26 +00:00
Linus Nilsson
ad3f1bcc1b Adopt EglThread in EglRenderer
This allows EglRenderer to be able to share render thread and EGLContext
with others.
go/meet-android-eglcontext-reduction

Bug: b/225229697
Change-Id: I896c8082ef8b64f5b544fa2eda7303fbca3985d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/316881
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40574}
2023-08-18 21:05:57 +00:00
Linus Nilsson
febf55853b Revert "Adopt EglThread in EglRenderer"
This reverts commit f4d0a493b49eef7e55c66e4d03d329e3e655b182.

Reason for revert: Potentially causing crash in eglSurfaceCreationRunnable (b/286664896)

Original change's description:
> Adopt EglThread in EglRenderer
>
> This allows EglRenderer to share render thread EGLContext with other renderers.
> go/meet-android-eglcontext-reduction
>
> Bug: b/225229697
> Change-Id: I8aa41e61ada195fbbe3338c05815b26f3238dd78
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306281
> Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
> Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#40141}

Bug: b/225229697
Change-Id: I4c57ea88047bde6e9782f0ce76bdaacd1bad4af3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308580
Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40266}
2023-06-13 11:27:27 +00:00
Linus Nilsson
f4d0a493b4 Adopt EglThread in EglRenderer
This allows EglRenderer to share render thread EGLContext with other renderers.
go/meet-android-eglcontext-reduction

Bug: b/225229697
Change-Id: I8aa41e61ada195fbbe3338c05815b26f3238dd78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306281
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Commit-Queue: Linus Nilsson <lnilsson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40141}
2023-05-25 11:03:53 +00:00
Byoungchan Lee
02334e07c5 Replace the android support annotation library with androidx's one.
This change does not affect downstream dependencies as androidx.annotation
is fully compatible with android.support.annotation.

Bug: webrtc:11962
Change-Id: I714b473df8d0fee8000ddf3a9beca7c5613db5ff
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226881
Commit-Queue: Xavier Lepaul‎ <xalep@webrtc.org>
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34839}
2021-08-24 16:02:17 +00:00
Artem Titov
d7ac581045 Use backticks not vertical bars to denote variables in comments for /sdk
Bug: webrtc:12338
Change-Id: Ifaad29ccb63b0f2f3aeefb77dae061ebc7f87e6c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227024
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34561}
2021-07-27 14:39:06 +00:00
Magnus Jedvert
f355e1a0f6 Add glUseProgram to the list of GL functions requiring synchronization
We have observed an internal deadlock in libGLESv2_adreno where one
thread is in eglCreateContext and another thread in glUseProgram. We
have observed similar deadlocks before and started to synchronize all
access to the offending GL functions. Calls to eglCreateContext are
already synchronized, and this CL synchronizes calls to glUseProgram as
well.

Bug: b/153513005
Change-Id: I576e564aab44c9e429f2b1407105ed72942c309e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173742
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31118}
2020-04-22 07:09:15 +00:00
Byoungchan Lee
02235d574d Fix typo in Android API.
Bug: None
Change-Id: Id29f6cd4dea33044fb3ea9545210126bf9f83ce7
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168380
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30487}
2020-02-10 08:55:27 +00:00
Sami Kalliomäki
9b66114878 Disable rendering statistics while video is paused.
Bug: b/142685093
Change-Id: Ie350335f139a82ae247271c3a5a7a9b78a236084
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157887
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29652}
2019-10-30 10:04:21 +00:00
Magnus Jedvert
ecae9cd1a7 Android: Add error callback for GL_OUT_OF_MEMORY in EglRenderer
Encountering GL_OUT_OF_MEMORY is relatively common and we should give
clients a chance to deal with it in a non-fatal way.

Bug: webrtc:8154
Change-Id: Ifa9ca74392f21083692b02a5144dc5632a88d34d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144561
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28495}
2019-07-05 13:04:17 +00:00
Åsa Persson
f2889bbaf4 Add option to inject YuvConverter to SurfaceTextureHelper.
Add option to inject VideoFrameDrawer to YuvConverter and EglRenderer.

Bug: none
Change-Id: I0aab0026c30b41d72f70fb00b251aed5e4a4a774
Reviewed-on: https://webrtc-review.googlesource.com/c/123443
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26848}
2019-02-26 07:47:52 +00:00
Magnus Jedvert
3ff71de9da Android: Add option to mirror vertically in EglRenderer
Bug: None
Change-Id: I4f46f9f0e1fa3805880335ebb6a767b8cb33f8c6
Reviewed-on: https://webrtc-review.googlesource.com/c/114540
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26028}
2018-12-17 14:23:55 +00:00
Magnus Jedvert
94c0f2645e Android: One weird trick for avoiding graphics deadlocks
eglDestroyContext has been observed to deadlock with other GL threads
unless the GL program is detached beforehand.

TBR=sakal
NO_TRY=TRUE

Bug: b/120481228
Change-Id: Ie256e745828997b6fee0d62e681f5ef953aa0fe7
Reviewed-on: https://webrtc-review.googlesource.com/c/114164
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25999}
2018-12-13 09:31:41 +00:00
Artem Titarenko
69540f4419 Use android Nullable instead of javax Nullable
This is a propagation of upstream chromium change needed to
resume DEPS autorolls into WebRTC.

Original comment from upstream change:

> This change is made in preparation for an ErrorProne
> check to catch this at compile time. See bug for details.

Bug: chromium:771683
Change-Id: I56aed15f73a633dcadae7ece6c645cd3596f9257
Reviewed-on: https://webrtc-review.googlesource.com/c/113505
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25951}
2018-12-10 15:03:58 +00:00
Magnus Jedvert
0cc11b4b94 Android: Bump stack trace logging severity from debug to warning
Stack traces usually get printed when an error occur and we want this
to be included in release versions.

Bug: None
Change-Id: I17fdbc58393f5b4d597b14e95240bdb04473b4ad
Reviewed-on: https://webrtc-review.googlesource.com/c/112133
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25821}
2018-11-28 13:11:42 +00:00
Magnus Jedvert
3bc696fe48 Android EglRenderer: Replace unicoce character with ascii character
We are currently trying to print a nice "μs" to the log, but this often
ends up as a weird character. This CL replaces the unicode 'μ' to a
simple ascii 'u'.

TBR=sakal

Bug: None
Change-Id: Ibe90e0d2f12004676fc531aec0a2b33d59a8cb3f
Reviewed-on: https://webrtc-review.googlesource.com/c/110608
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25636}
2018-11-14 13:32:06 +00:00
Magnus Jedvert
361dbc1973 Android: Add option to set presentation timestamp in EglRenderer
Bug: b/119004693
Change-Id: I78b676a4417ac313e7fbbea009c8dd586707b1af
Reviewed-on: https://webrtc-review.googlesource.com/c/109503
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25517}
2018-11-06 12:11:20 +00:00
Sami Kalliomäki
0d26c9944c Set renderThreadHandler to null on uncaught exception in EglRenderer.
This should prevent us from posting and deadlocking if EglRenderer
thread crashes.

Bug: b/117400268
Change-Id: I978738249917cb5194917b0b2b12f67bb2a8642e
Reviewed-on: https://webrtc-review.googlesource.com/c/107043
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25271}
2018-10-19 13:16:41 +00:00
Magnus Jedvert
431f14ef69 Android: Remove deprecated VideoRenderer and I420Frame
Bug: webrtc:9181
Change-Id: I9a38a35ae33ed385a9a5add0a5f51ec035019d91
Reviewed-on: https://webrtc-review.googlesource.com/71661
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23849}
2018-07-05 10:37:59 +00:00
Sami Kalliomäki
1659e97767 Use DecimalFormat instead of String.format.
Speculative fix to a problem where String.format crashes with
"java.lang.NullPointerException at Formatter$FormatSpecifier.addZeros :
Attempt to get length of null array" on some devices.

Bug: b/80240768
Change-Id: I8e67b7107a37ad7d6f978b9de368f14d37efecb2
Reviewed-on: https://webrtc-review.googlesource.com/80883
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23523}
2018-06-05 14:28:04 +00:00
Magnus Jedvert
2ed62b3c9b Android: Allow construction of GlTextureFrameBuffer from non-OpenGL thread
This CL makes it possible to create a GlTextureFrameBuffer from any
thread. The actual GL resources will be allocated the first time
setSize() is called. The purpose is to be able to use 'final' variables
more often for this class and avoid @Nullable annotations.

Bug: None
Change-Id: I350304bcd33fd674990254df37a615995972f322
Reviewed-on: https://webrtc-review.googlesource.com/69241
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22835}
2018-04-12 07:19:46 +00:00
Sami Kalliomäki
e7592d8d5f Annotate libjingle_peerconnection_java with @Nullable.
Bug: webrtc:8881
Change-Id: Ida2ef6c003567d19529c21629c916ed40e8de3a6
Reviewed-on: https://webrtc-review.googlesource.com/63380
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22563}
2018-03-22 13:13:44 +00:00
Sami Kalliomäki
8ebac24511 Fix a crash in EglRenderer.removeFrameListener.
The crash occured if removeFrameListener was called after releasing
the EglRenderer.

Bug: b/69040588
Change-Id: I90acc3b280d2009e5f13bb8836a288eb20c7d1d0
Reviewed-on: https://webrtc-review.googlesource.com/21380
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20620}
2017-11-09 13:13:42 +00:00
Mirko Bonadei
ed929f3679 Removing unused private constant in EglRenderer
Bug: None
Change-Id: I79e14abda9a09a4e153d038751ca0c24f6a3a67e
Reviewed-on: https://webrtc-review.googlesource.com/20762
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20579}
2017-11-07 08:56:16 +00:00
Mirko Bonadei
12251b6386 Adding @SuppressWarnings(NoSynchronizedMethodCheck).
In https://chromium-review.googlesource.com/c/chromium/src/+/750645
Chromium started to use an ErrorProne plugin to discourage synchronized
public methods (an encourage the usage of synchronized blocks).

In order to unblock the Chromium Roll we can suppress these warnings
and decide if we want to align with Chromium on this check or ask
them to make it optional.

More details in the bug.

TBR=magjed@webrtc.org

Bug: webrtc:8491
Change-Id: Ie77a324e54aab44a4f59853959549f1d21f884a0
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/20060
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20569}
2017-11-06 17:48:38 +00:00
Xiaolei Yu
149533abd4 Move rendering code in SurfaceViewRenderer to a separate class.
The new SurfaceEglRenderer helper class extends EglRenderer and
implements rendering on a SurfaceView.

Bug: webrtc:8242
Change-Id: Ic532fe487755d3b54c6bd03f239d714e1ecb10ad
Reviewed-on: https://webrtc-review.googlesource.com/2940
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20562}
2017-11-06 13:52:26 +00:00
Mirko Bonadei
bb547203bf Moving src/webrtc into src/.
In order to eliminate the WebRTC Subtree mirror in Chromium, 
WebRTC is moving the content of the src/webrtc directory up
to the src/ directory.

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

Bug: chromium:611808
Change-Id: Iac59c5b51b950f174119565bac87955a7994bc38
Reviewed-on: https://webrtc-review.googlesource.com/1560
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19845}
2017-09-15 04:25:06 +00:00