Skip to content

Failed to retrieve OpenGL context on Android.

Description

When running on Android devices, no video texture is presented and the logs specify that an OpenGL context was not created. Audio plays in the background, it also works fine on Windows.

I have created a sample repo: https://gitlab.com/KieranDevvs/vlc-unity-issue-sample I might have included more than what is necessary in the git repo as I'm not sure what is necessary for unity (1st time uploading a unity project to git).

Steps to reproduce

  1. Build the VLC-unity plugin manually to get all the binaries.
  2. Create a new VR template project in Unity.
  3. Create a folder under Assets called Plugins
  4. Drop the following assemblies into the root of Plugins
    • libvlc.dll
    • libvlccore.dll
    • LibVLCSharp.dll
    • System.Buffers.dll
    • System.Memory.dll
    • System.Numerics.Vectors.dll
    • System.Runtime.CompilerServices.Unsafe.dll
    • VLCUnityPlugin.dll
  5. Copy the plugins folder from the VLC nightly build into Plugins so it should look like Assets/Plugins/plugins
  6. Copy the arm64-v8a assemblies for Android into Assets/Plugins
  7. Create a folder under Assets named Scripts and create a new script with the following contents: https://code.videolan.org/videolan/vlc-unity/-/blob/master/Assets/VLCUnity/Demos/Scripts/VLCMinimalPlayback.cs
  8. Comment out TextureHelper.FlipTextures(transform); (not necessary for reproducing the issue).
  9. Create a new plane in the unity scene facing the camera and attach the script created in the previous step
  10. Build and run the project on an android device.
    • Disable VR if running on a non-VR device by going to `Project Settings -> XR Plugin Management -> uncheck Inizialize XR on startup and unselect all providers for all platforms

Using catlog you will see the following issue:

04-17 13:20:38.314 12211 12253 D VLC     : [b4000071b2b41760/0] libvlc libvlc: configured with ../configure  '--host=aarch64-linux-android' '--build=x86_64-unknown-linux' '--with-contrib=/builds/KieranDevvs/vlc-unity/vlc-android/vlc/contrib/aarch64-linux-android' '--prefix=/builds/KieranDevvs/vlc-unity/vlc-android/vlc/build-android-aarch64-linux-android/install/' '--with-pic' '--disable-nls' '--enable-live555' '--enable-realrtsp' '--enable-avformat' '--enable-swscale' '--enable-avcodec' '--enable-opus' '--enable-opensles' '--enable-matroska' '--enable-taglib' '--enable-dvbpsi' '--disable-vlc' '--disable-shared' '--disable-update-check' '--disable-vlm' '--disable-dbus' '--enable-lua' '--disable-vcd' '--disable-v4l2' '--enable-dvdread' '--enable-dvdnav' '--enable-bluray' '--disable-linsys' '--disable-decklink' '--disable-libva' '--disable-dv1394' '--enable-mod' '--disable-sid' '--disable-gme' '--disable-tremor' '--disable-mad' '--enable-mpg123' '--disable-dca' '--disable-sdl-image' '--enable-zvbi' '--disable-fluidsynth' '--enable-fluidlite' '--disable-
04-17 13:20:38.314 12211 12253 I Unity   : [VLC] Toggling Play Pause !
04-17 13:20:38.316 12211 12253 I VLCUnity: [VLC-Unity] ENTERED RENDERAPI_ANDROID.CPP -> JNI_ONLOAD
04-17 13:20:38.316 12211 12253 I VLCUnity: [VLC-Unity] (JNI_OnLoad_pf) dlsym(handle, JNI_OnLoad);
04-17 13:20:38.316 12211 12253 I VLCUnity: [VLC-Unity] [Android] initialize jni env 0xb400007215102500
04-17 13:20:38.316 12211 12253 I VLCUnity: [VLC-Unity] Exiting...
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] UnityPluginLoad
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] Initialise Render API
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] s_Graphics->GetRenderer()
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] CreateRenderAPI(s_DeviceType)
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] Entering RenderAPI_OpenGLBase ctor
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] Exiting RenderAPI_OpenGLBase ctor
04-17 13:20:38.317 12211 12253 I VLCUnity: [VLC-Unity] LAUNCH
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Calling... Initialize Render API
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Calling... CreateRenderAPI
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Entering RenderAPI_OpenGLBase ctor
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Exiting RenderAPI_OpenGLBase ctor
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Calling... ProcessDeviceEvent
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] [EGL] Entering ProcessDeviceEvent with kUnityGfxDeviceEventInitialize
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] [EGL] Failed to retrieve OpenGL Context... aborting.
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] Calling... setVlcContext s_CurrentAPI=0xb4000071b2ca5ce0 mp=0xb4000071b2c5c4f0
04-17 13:20:38.318 12211 12253 I VLCUnity: [VLC-Unity] [Android] No OpenGL context retrieved
04-17 13:20:38.335 12211 12253 D Unity   : Sensor :        Accelerometer ( 1) ; 0.001196 / 0.00s ; bmi160 Accelerometer Non-wakeup / BOSCH
04-17 13:20:38.379 12211 12253 D Unity   : Choreographer available: Enabling VSYNC timing
04-17 13:20:38.724 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.740 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.759 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.771 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.788 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.806 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0
04-17 13:20:38.822 12211 12253 I VLCUnity: [VLC-Unity] get Video Frame 0

Screenshot / video

image

Context

App version

Unity 2021.3.0f1 Personal

Android version

Android 11

Device model

Oculus Quest 2

RealMe 7 Pro

Edited by Kieran