Support Low Overhead Mode on Oculus Quest device
Summary
I recently bought the vlc for unity (Android) in the unity assets store. I'm trying to run a VR program on my Oculus Quest device. Firstly I only compiled the minimum playback demo and it was working fine with no error on my Android phone. But when it came to Oculus Quest, the video was playing with no video frame and the logcat showed there was a problem with EGL initialization:
E/libEGL: eglGetFrameTimestampSupportedANDROIDImpl:2604 error 300d (EGL_BAD_SURFACE)
E/VLC: [0000007e10462c00/3b03] libvlc video output: video output display creation failed
E/libEGL: eglMakeCurrentImpl:1084 error 3009 (EGL_BAD_MATCH)
I'm pretty new to gles and vlc. What can I do to play my videos on the Quest devices? Do I have to modify the native plugin?
Minimal project and steps to reproduce
-
Import packages from assets store.
- Oculus Integration
- VLC for Android
-
Modify the unity project settings:
- Target Architecture: ARM64
- Script Backend: IL2CPP
- Api Compatibility Level: .NET 4.X
-
Modify the XR Plugin Management Settings:
- Stereo Rendering Mode: Multiview
- Enable Low Overhead Mode (GLES)
-
Add the VLC Minimal Playback Scene to the compile list.
-
Compile, install and run APK on Quest 1.
-
Wear the Quest device and see no image on the screen.
-
Run adb logcat command and get the error.
What is the current bug behavior?
There is no video frame on the screen, but the audio track is still playing.
What is the expected correct behavior?
There should be video frame on the screen while playing.
Does it work on other plaforms? Does it work with the official VLC apps?
Yes, it works fine on my android phone.
Relevant logs and/or screenshots
Please see the response below, sorry.
Environment
-
OS: Android
-
Version: 10 (API 29)
-
Device: Oculus Quest 1
-
LibVLC version and architecture: 4.0.0-dev-20419-g490c04ad03
-
LibVLCSharp version: 4.0.0.0
-
VLC Unity plugin version: 0.1.6
-
Scripting backend used: IL2CPP
-
Target Architecture: arm64-v8a