Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Issue 1308223002: Android: Add new renderer SurfaceViewRenderer (Closed)

Created:
5 years, 4 months ago by magjed_webrtc
Modified:
5 years, 3 months ago
Reviewers:
AlexG
CC:
webrtc-reviews_webrtc.org, tterriberry_mozilla.com, qiang.lu, niklas.enbom, yujie_mao (webrtc), Andrew MacDonald
Base URL:
https://chromium.googlesource.com/external/webrtc.git@master
Target Ref:
refs/pending/heads/master
Project:
webrtc
Visibility:
Public.

Description

Android: Add new renderer SurfaceViewRenderer BUG=webrtc:4742, webrtc:4910 R=glaznev@webrtc.org Committed: https://crrev.com/c06a716d5941e8c60229afdd8720cd9c45178374 Cr-Commit-Position: refs/heads/master@{#9922}

Patch Set 1 : Reland from https://codereview.webrtc.org/1257043004 #

Patch Set 2 : Rebase canApplyRotation and GlRectDrawer.uploadYuvData() #

Patch Set 3 : Add RendererEvents support #

Patch Set 4 : Fix issue webrtc:4910 #

Total comments: 18

Patch Set 5 : Addressing comments and rebasing against RendererCommon.getSamplingMatrix() #

Patch Set 6 : add TODO to investigate how to release() safely #

Unified diffs Side-by-side diffs Delta from patch set Stats (+482 lines, -0 lines) Patch
A talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java View 1 2 3 4 5 1 chunk +481 lines, -0 lines 0 comments Download
M talk/libjingle.gyp View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 11 (3 generated)
magjed_webrtc
Alex - Please take a look. This is a rebased reland of SurfaceViewRenderer, but without ...
5 years, 3 months ago (2015-09-03 14:47:59 UTC) #2
magjed_webrtc
Ping
5 years, 3 months ago (2015-09-09 12:19:59 UTC) #3
AlexG
https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java File talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java (right): https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java#newcode57 talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java:57: // Dedicated render thread. Synchronized on |this|. I would ...
5 years, 3 months ago (2015-09-10 00:09:08 UTC) #4
magjed_webrtc
https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java File talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java (right): https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java#newcode57 talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java:57: // Dedicated render thread. Synchronized on |this|. On 2015/09/10 ...
5 years, 3 months ago (2015-09-10 13:38:28 UTC) #7
AlexG
lgtm https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java File talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java (right): https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java#newcode158 talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java:158: if (yuvTextures != null) { On 2015/09/10 13:38:28, ...
5 years, 3 months ago (2015-09-10 23:31:50 UTC) #8
magjed_webrtc
Committed patchset #6 (id:140001) manually as c06a716d5941e8c60229afdd8720cd9c45178374 (presubmit successful).
5 years, 3 months ago (2015-09-11 07:52:05 UTC) #9
commit-bot: I haz the power
Patchset 6 (id:??) landed as https://crrev.com/c06a716d5941e8c60229afdd8720cd9c45178374 Cr-Commit-Position: refs/heads/master@{#9922}
5 years, 3 months ago (2015-09-11 07:52:08 UTC) #10
magjed_webrtc
5 years, 3 months ago (2015-09-11 07:53:00 UTC) #11
Message was sent while issue was closed.
https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/andr...
File talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java (right):

https://codereview.webrtc.org/1308223002/diff/60001/talk/app/webrtc/java/andr...
talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java:158: if
(yuvTextures != null) {
On 2015/09/10 23:31:50, AlexG wrote:
> On 2015/09/10 13:38:28, magjed_webrtc wrote:
> > On 2015/09/10 00:09:08, AlexG wrote:
> > > I think this is not necessary - Android should handle it by itself
> > >
> >
>
http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer....
> > > - "When the EGL context is lost, all OpenGL resources (such as textures)
> that
> > > are associated with that context will be automatically deleted"
> > > 
> > > When you called GlRectDrawer.release() and deleted shaders in current
> renderer
> > > it sometime caused GL crash and distorted Activity on KK devices in some
> rear
> > > cases.
> > 
> > Thanks, I didn't know this. I'm still worried that the automatic cleanup may
> > happen too late because |EGLContext sharedContext| is outside this class,
and
> is
> > e.g. only lost in Activity.onDestroy() for AppRTCDemo. I think it might be a
> > valid use case to init() and release() multiple renderers during the
lifetime
> of
> > |sharedContext|.
> > 
> > I looked at https://codereview.webrtc.org/1322703004/. I think that issue is
> > caused by calling VideoRendererGui.dispose() after calling
super.onDestroy().
> > The current code looks like this:
> > public class CallActivity extends Activity
> > …
> >   @Override
> >   protected void onDestroy() {
> >     …
> >     super.onDestroy();
> >     …
> >     VideoRendererGui.dispose();
> >   }
> > I think we need to release the resources in the reverse order they were
> created,
> > i.e.:
> >   @Override
> >   public void onCreate(Bundle savedInstanceState) {
> >     super.onCreate(savedInstanceState);
> >     VideoRendererGui.setView(...);
> >   }
> >   @Override
> >   public void onDestroy() {
> >     VideoRendererGui.dispose();
> >     super.onDestroy();
> >   }
> 
> I think I tried both - calling dispose() before super.onDestroy() made things
> better. I may be wrong, but seems like when onDestroy() is executing Activity
> and its controls are still alive -  GL rendering may still happen even during
> onDestroy() execution.

I added a TODO - I will try to investigate this.

Powered by Google App Engine
This is Rietveld 408576698