Spectaculum Sample App: Immersive 360° video playback with ExoPlayer
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",
Logcat error "E/ShaderProgram: Error linking program"
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
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
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
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 (
Copyright (C) 2016 Mario Guggenberger firstname.lastname@example.org. Released under the Apache 2.0 license.