This app demonstrates immersive video playback with Spectaculum and ExoPlayer 2 on Android. Spectaculum provides a native view widget for picture and video content, in contrast to alternatives building on WebViews.
By default, this app play back the stereoscopic 3D 360° video "House Demo".
To switch to the monoscopic 360° high resolution test video "Orion360 Test Video",
change MainActivity#mSelectedVideoSource
to 0
.
Happens when the effect is activated (mSpectaculumView.selectEffect(0)
) before the OpenGL surface is ready.
This is not really a problem because the effect gets reinitialized later once the surface is ready, and works as expected.
You can get rid of the error by activating the effect at a later time e.g. in onSurfaceCreated
where
the GL surface is guaranteed to be ready, or when the video is loaded.
This error happened in earlier versions of this example app where selectEffect
was called from onCreate
.
The call was moved to onSurfaceCreated
in commit 95705cc to fix this error.
This exception comes from a concurrent modification of the list of parameters that the shader effect manages internally.
This list is modified during initialization of the effect, and when a viewport navigation method (e.g. viewport touch navigation) is attached.
Initialization happens when selecting the effect for the first time (with selectEffect(index)
),
or when it is automatically reinitialized because the surface changes (e.g. surface size change when video rendering starts).
To avoid a collision of these events, it is best to not select the effect until the surface is ready (onSurfaceCreated
).
Copyright (C) 2016 Mario Guggenberger mg@protyposis.net. Released under the Apache 2.0 license.