RenderHeads / UnityPlugin-AVProMovieCapture

AVPro Movie Capture is a Unity Plugin for advanced video capture to AVI/MP4/MOV files
https://renderheads.com/products/avpro-movie-capture/
48 stars 8 forks source link

[Bug] Shader compilation failure on OpenGLES 3.0 capable hardware #370

Closed artoonie closed 6 months ago

artoonie commented 7 months ago

Unity Version

2022.3.18f1

AVPro Movie Capture Version

5.1.8

Which platform(s) are you using?

Android

Which OS version(s) are you using?

Android 9

Which rendering API(s) are you using?

No response

Hardware

Galaxy J4 Plus

Which capture component are you using?

Capture From Texture, From Camera, and from WebCam demos all tested

Capture mode

Realtime

Which output mode are you using?

Video file

Video codecs

H264

Audio source

Microphone

Audio codecs

AAC

Any other component configuration

This only happens on my Galaxy J4 Plus, but I have no other Android 9.0 devices, so I'm not sure if it's an Android 9 issue or if it's device-specific

The issue

Captured files are black. The audio is correct. Tested on the demo scene. Does not happen with any other test device.

Log output

02-20 17:40:31.595 20021 20151 I Unity   : [AVProMovieCapture] Start File Capture: 1024x1024 @ 30.00fps [RGBA32] vcodec:'H264' audio source:'Unity' 48000hz 2 channels acodec:'AAC' to file: '/storage/emulated/0/A
ndroid/data/xxx/files/Captures/TextureCapture_2024-02-20_17-40-31_1024x1024.mp4'  
02-20 17:40:31.595 20021 20151 I Unity   : UnityEngine.Logger:Log(LogType, Object)                                                                                                                                 
02-20 17:40:31.595 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:PrepareCapture()
02-20 17:40:31.595 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StartCapture()                                                                                                          
02-20 17:40:31.595 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32) 
02-20 17:40:31.595 20021 20151 I Unity   : UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)                                                              
02-20 17:40:31.595 20021 20151 I Unity   :                                                               
02-20 17:40:31.595 20021 20151 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:1082) VideoRecorder::createMuxer - creating file at: /storage/emulated/0/Android/data/xxx/files/Captures/TextureCa
...
OPENGL NATIVE PLUG-IN ERROR: GL_INVALID_OPERATION: Operation illegal in current state
^^^^^^ seems to be repeated every frame written?
...

02-20 17:41:51.698 20021 20151 I Unity   : [AVProMovieCapture] Stopping capture 13712
02-20 17:41:51.698 20021 20151 I Unity   : UnityEngine.Logger:Log(LogType, Object) 
02-20 17:41:51.698 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StopCapture(Boolean, Boolean, Boolean)
02-20 17:41:51.698 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:StopCapture()
02-20 17:41:51.698 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:DrawPauseResumeButtons()
02-20 17:41:51.698 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:GUI_RecordingStatus() 
02-20 17:41:51.698 20021 20151 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32) 
02-20 17:41:51.698 20021 20151 I Unity   : UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle) 
02-20 17:41:51.698 20021 20151 I Unity   :                                                               
02-20 17:41:52.116  1250  1524 D WifiTrafficPoller: TrafficStats TxPkts=277828 RxPkts=1110086 TxBytes=23940208 RxBytes=1438112105 , Foreground uid=10172 pkgName=xxx TxPackets=3495 RxPackets=3174 TxBytes=568745 RxBytes=2777201
02-20 17:41:53.086 20021 20875 I MPEG4Writer: Received total/0-length (56/1) buffers and encoded 56 frames. - Video       
02-20 17:41:53.089 20021 20872 I MPEG4Writer: Normal stop process                               
02-20 17:41:53.089 20021 20872 D MPEG4Writer: Video track stopping. Stop source
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Video track source stopping
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Video track source stopped   
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Video track stopped. Stop source   
02-20 17:41:53.090 20021 20876 I MPEG4Writer: Received total/0-length (87/0) buffers and encoded 87 frames. - Audio         
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Audio track stopping. Stop source
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Audio track source stopping 
02-20 17:41:53.090 20021 20876 I MPEG4Writer: Audio track drift time: 0 us    
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Audio track source stopped
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Audio track stopped. Stop source
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Duration from tracks range is [1855999, 1866666] us
02-20 17:41:53.090 20021 20872 D MPEG4Writer: Stopping writer thread        
02-20 17:41:53.092 20021 20874 D MPEG4Writer: 0 chunks are written in the last batch     
02-20 17:41:53.092 20021 20872 D MPEG4Writer: Writer thread stopped    
02-20 17:41:53.094 20021 20872 I MPEG4Writer: Ajust the moov start time from 0 us -> 0 us 
02-20 17:41:53.099 20021 20872 I MPEG4Writer: The mp4 file will not be streamable.  
02-20 17:41:53.099 20021 20872 D MPEG4Writer: Video track stopping. Stop source
02-20 17:41:53.099 20021 20872 D MPEG4Writer: Audio track stopping. Stop source
02-20 17:41:54.454 20021 20888 I Unity   : [AVProMovieCapture] File processing complete   
02-20 17:41:54.454 20021 20888 I Unity   : UnityEngine.Logger:Log(LogType, Object)              
02-20 17:41:54.454 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.MP4FileProcessing:Process(Stream, Stream) 
02-20 17:41:54.454 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.MP4FileProcessing:ProcessFile(String, String, Options)
02-20 17:41:54.454 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.MP4FileProcessing:ProcessFile(String, Boolean, Options)  
02-20 17:41:54.454 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.<>c__DisplayClass32_0:<ProcessFileAsync>b__0()
02-20 17:41:54.454 20021 20888 I Unity   : System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)  
02-20 17:41:54.454 20021 20888 I Unity   : System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
02-20 17:41:54.454 20021 20888 I Unity   : System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object) 
02-20 17:41:54.454 20021 20888 I Unity   :                                                               
02-20 17:41:54.460 20021 20888 I Unity   : [AVProMovieCapture] - Moving file from: '/storage/emulated/0/Android/data/xxx/files/Captures/TextureCapture_2024-02-20_17-40-31_1024x1024.mp4', to: '/storage/emulated/0/Android/data/xxx/files/Captures/TextureCapture_2024-02-20_17-40-31_1024x1024.mp4'
02-20 17:41:54.460 20021 20888 I Unity   : UnityEngine.Logger:LogFormat(LogType, String, Object[]) 
02-20 17:41:54.460 20021 20888 I Unity   : UnityEngine.Debug:LogFormat(String, Object[])
02-20 17:41:54.460 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.MP4FileProcessing:ProcessFile(String, Boolean, Options) 
02-20 17:41:54.460 20021 20888 I Unity   : RenderHeads.Media.AVProMovieCapture.<>c__DisplayClass32_0:<ProcessFileAsync>b__0()
02-20 17:41:54.460 20021 20888 I Unity   : System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
02-20 17:41:54.460 20021 20888 I Unity   : System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
02-20 17:41:54.460 20021 20888 I Unity   : System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object)
artoonie commented 7 months ago

https://github.com/RenderHeads/UnityPlugin-AVProMovieCapture/assets/537316/d6123a72-2733-4314-8864-a6f505da007b

Attached is an example capture.

Chris-RH commented 7 months ago

Hi @artoonie,

We did some testing using an android 9 device last week and it worked fine, so its most likely to be device-specific. Are you able to provide a more extensive log of when the plugin loads, as it provides some useful information, please.

artoonie commented 7 months ago

More logs of when the plugin loads. It seems like AVProMovieCapture thinks device doesn't suppert GLES 3, which some googling shows the same issue happened to flutter some time ago. This is in the cpps so I can't read what it's doing.

With GLES 3 enabled:

02-22 10:31:39.366  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:79) VideoCaptureOpenGLES::compileShader - failed to compile shader 'Triangle', info:
02-22 10:31:39.366  5216  5242 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
02-22 10:31:39.366  5216  5242 I AVProMovieCapture: 
02-22 10:31:39.366  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "Triangle", error: (VideoCaptureOpenGLESShaders.cpp:81) failed to create shader module for shader: Triangle
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:79) VideoCaptureOpenGLES::compileShader - failed to compile shader 'RGBA', info:
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: 
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "RGBA", error: (VideoCaptureOpenGLESShaders.cpp:81) failed to create shader module for shader: RGBA
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:79) VideoCaptureOpenGLES::compileShader - failed to compile shader 'Y', info:
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: 
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "Y", error: (VideoCaptureOpenGLESShaders.cpp:81) failed to create shader module for shader: Y
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:79) VideoCaptureOpenGLES::compileShader - failed to compile shader 'UV', info:
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
02-22 10:31:39.367  5216  5242 I AVProMovieCapture: 
02-22 10:31:39.368  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "UV", error: (VideoCaptureOpenGLESShaders.cpp:81) failed to create shader module for shader: UV
02-22 10:31:39.368  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:79) VideoCaptureOpenGLES::compileShader - failed to compile shader 'UVInterleaved', info:
02-22 10:31:39.368  5216  5242 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
02-22 10:31:39.368  5216  5242 I AVProMovieCapture: 
02-22 10:31:39.368  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "UVInterleaved", error: (VideoCaptureOpenGLESShaders.cpp:81) failed to create shader module for shader: UVInterleaved
02-22 10:31:39.369  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:367) parsePrograms - failed to parse program, error: VideoCaptureOpenGLESShaders::addProgram - failed to find shader
02-22 10:31:39.369  5216  5242 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:367) parsePrograms - failed to parse program, error: VideoCaptureOpenGLESShaders::addProgram - failed to find shader
02-22 10:31:39.374  5216  5242 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::H264)
02-22 10:31:39.494  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported bitrates: 1-20,000,000
02-22 10:31:39.495  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported widths: 96-1,920
02-22 10:31:39.495  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported heights: 96-1,920
02-22 10:31:39.496  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported framerates: 0-960
02-22 10:31:39.496  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   width alignment: 2
02-22 10:31:39.497  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   height alignment: 2
02-22 10:31:39.497  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   complexity range: 0-0
02-22 10:31:39.497  5216  5242 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   quality range: 0-0
02-22 10:31:39.497  5216  5242 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::HEVC)
02-22 10:31:39.498  5216  5242 I AVProMovieCapture: 💬️ (PluginState.cpp:169) PluginState::TryAddVideoCodec - HEVC codec is unavailable
02-22 10:31:39.498  5216  5242 I AVProMovieCapture: 💬️ (PluginState.cpp:236) PluginState::TryAddAudioCodec(AudioCodec::AAC)
02-22 10:31:39.505  5216  5242 I Unity   : [AVProMovieCapture] Init version: 5.1.8 (plugin v5.1.8-full) with GPU Adreno (TM) 308 OpenGL ES 3.0 V@331.0 (GIT@e6de3b7, I22091d40c2) (Date:08/07/19) OS: Android OS 9 / API-28 (PPR1.180610.011/J415GUBS6BVK1)

When I remove OpenGLES 3 from the Player Settings, I get:

02-22 10:42:27.865  7228  7326 I AVProMovieCapture: 📜 (UnityPlugin.cpp:43) UnityPluginLoad - AVPro Movie Capture version 5.1.8-full build 2309071603
02-22 10:42:27.865  7228  7326 I AVProMovieCapture: ⚠️ (UnityPlugin.cpp:83) OpenGLES2 is not supported
02-22 10:42:27.868  7228  7326 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::H264)
02-22 10:42:28.100  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported bitrates: 1-20,000,000
02-22 10:42:28.101  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported widths: 96-1,920
02-22 10:42:28.102  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported heights: 96-1,920
02-22 10:42:28.102  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported framerates: 0-960
02-22 10:42:28.103  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   width alignment: 2
02-22 10:42:28.104  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   height alignment: 2
02-22 10:42:28.104  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   complexity range: 0-0
02-22 10:42:28.106  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   quality range: 0-0
02-22 10:42:28.106  7228  7326 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::HEVC)
02-22 10:42:28.107  7228  7326 I AVProMovieCapture: 💬️ (PluginState.cpp:169) PluginState::TryAddVideoCodec - HEVC codec is unavailable
02-22 10:42:28.107  7228  7326 I AVProMovieCapture: 💬️ (PluginState.cpp:236) PluginState::TryAddAudioCodec(AudioCodec::AAC)
02-22 10:42:28.115  7228  7326 I Unity   : [AVProMovieCapture] Init version: 5.1.8 (plugin v5.1.8-full) with GPU Adreno (TM) 308 OpenGL ES 3.0 V@331.0 (GIT@e6de3b7, I22091d40c2) (Date:08/07/19) OS: Android OS 9 / API-28 (PPR1.180610.011/J415GUBS6BVK1)
02-22 10:42:28.115  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:Awake()
02-22 10:42:29.378  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.WebcamCaptureDemo:StartWebcam(Instance)
02-22 10:42:29.378  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.<Start>d__8:MoveNext()
02-22 10:42:29.816  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.WebcamCaptureDemo:StartWebcam(Instance)
02-22 10:42:29.816  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.<Start>d__8:MoveNext()
02-22 10:42:37.248  7228  7326 W Unity   : [AVProMovieCapture] 'OutputPath.RelativeToProject' is not supported on Android, defaulting to 'OutputPath.RelativeToPeristentData'
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:GetFolder(OutputPath, String)
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:GenerateFilePath(OutputPath, String, String)
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:GenerateFilename()
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureFromTexture:PrepareCapture()
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StartCapture()
02-22 10:42:37.248  7228  7326 W Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32)
02-22 10:42:37.250  7228  7326 I Unity   : [AVProMovieCapture]: finalDirectory = /storage/emulated/0/Android/data/xxx/files/Captures
02-22 10:42:37.250  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:GenerateFilename()
02-22 10:42:37.250  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureFromTexture:PrepareCapture()
02-22 10:42:37.250  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StartCapture()
02-22 10:42:37.250  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32)
02-22 10:42:37.253  7228  7326 I Unity   : [AVProMovieCapture] Start File Capture: 640x480 @ 30.00fps [RGBA32] vcodec:'H264' to file: '/storage/emulated/0/Android/data/xxx/files/Captures/Demo4Webcam-0_2024-02-22_10-42-37_640x480.mp4'
02-22 10:42:37.253  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:PrepareCapture()
02-22 10:42:37.253  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StartCapture()
02-22 10:42:37.253  7228  7326 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32)
02-22 10:42:37.257  7228  7326 I AVProMovieCapture: 💬️ (PluginInterface.cpp:70) AVPMC_CreateRecorderVideo - 5.1.8-full
02-22 10:42:37.259  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:49) IVideoRecorder::newVideoRecorder - android api level is 28
02-22 10:42:37.259  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:56) IVideoRecorder::newVideoRecorder - creating video recorder for API 28
02-22 10:42:37.284  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:1082) VideoRecorder::createMuxer - creating file at: /storage/emulated/0/Android/data/xxx/files/Captures/Demo4Webcam-0_2024-02-22_10-42-37_640x480.mp4
02-22 10:42:37.293  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - media codec name: OMX.qcom.video.encoder.avc
02-22 10:42:37.294  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - supported bitrates: [1-20,000,000]
02-22 10:42:37.294  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - supported widths: [96-1,920]
02-22 10:42:37.295  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - supported heights: [96-1,920]
02-22 10:42:37.295  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - width alignment: 2
02-22 10:42:37.295  7228  7326 I AVProMovieCapture: 💬️ Manager.GetFormatAdjustmentForEncode - height alignment: 2
02-22 10:42:37.649  7228  7326 I AVProMovieCapture: 💬️ Manager.GetVideoCodecImageCapabilities - Colour format is YUV8_420_Biplanar
02-22 10:42:37.649  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:503) VideoRecorder::createVideoCodec - Media format:
02-22 10:42:37.649  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:504) VideoRecorder::createVideoCodec   - MIME type:        video/avc
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:505) VideoRecorder::createVideoCodec   - Width:            640
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:506) VideoRecorder::createVideoCodec   - Height:           480
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:507) VideoRecorder::createVideoCodec   - Frame rate:       30.000000
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:508) VideoRecorder::createVideoCodec   - Bitrate:          2500000
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:509) VideoRecorder::createVideoCodec   - I-Frame interval: 1.000000
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:510) VideoRecorder::createVideoCodec   - Stride:           640
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:511) VideoRecorder::createVideoCodec   - Slice height:     480
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:512) VideoRecorder::createVideoCodec   - Colour range:     Limited
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:513) VideoRecorder::createVideoCodec   - Profile:          8
02-22 10:42:37.650  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:514) VideoRecorder::createVideoCodec   - Level:            100
02-22 10:42:37.704  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorderAPI28.cpp:228) VideoRecorderAPI28::createVideoCodecPostConfigure - codec name is: OMX.qcom.video.encoder.avc
02-22 10:42:37.729  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:602) VideoRecorder::createVideoCodec - plane 0 row stride: 640
02-22 10:42:37.729  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:603) VideoRecorder::createVideoCodec - plane 1 row stride: 640
02-22 10:42:37.729  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:604) VideoRecorder::createVideoCodec - slice height:       480
02-22 10:42:37.729  7228  7326 I AVProMovieCapture: 💬️ (VideoRecorder.cpp:605) VideoRecorder::createVideoCodec - pixel format:       YUV8_420_BiPlanar
02-22 10:42:37.729  7228  7326 I AVProMovieCapture: ❌ (VideoCaptureNull.cpp:114) VideoCaptureFactoryNull::newVideoCapture - failed to create video capture component due to unsupported graphics API
02-22 10:42:37.757  7228  7326 E Unity   : [AVProMovieCapture] Failed to create recorder
02-22 10:42:37.757  7228  7326 E Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:PrepareCapture()
02-22 10:42:37.757  7228  7326 E Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:StartCapture()
02-22 10:42:37.757  7228  7326 E Unity   : RenderHeads.Media.AVProMovieCapture.CaptureGUI:MyWindow(Int32)

Confusingly, the init version line still says GLES 3, even though my settings show:

image

I also tried upgrading to 5.2.1 and now I see the following. I don't know if this existed prior to the upgrade, I can check if needed:

02-22 10:57:53.575  8808  8940 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.WebcamCaptureDemo:StartWebcam(Instance)                                                                                       
02-22 10:57:53.575  8808  8940 I Unity   : RenderHeads.Media.AVProMovieCapture.Demos.<Start>d__8:MoveNext()                                                                                                        
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::H264)                                                                                       
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:169) PluginState::TryAddVideoCodec - H264 codec is unavailable                                                                             
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:159) PluginState::TryAddVideoCodec(VideoCodec::HEVC)                                                                                       
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:169) PluginState::TryAddVideoCodec - HEVC codec is unavailable                                                                             
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:236) PluginState::TryAddAudioCodec(AudioCodec::AAC)                                                                                        
02-22 10:57:53.579  8808  8940 I AVProMovieCapture: 💬️ (PluginState.cpp:244) PluginState::TryAddVideoCodec - AAC codec is unavailable                                                                              
02-22 11:25:32.184 10370 10498 E Unity   : AndroidJavaException: java.lang.ClassNotFoundException: com.renderheads.AVPro.MovieCapture.Manager                                                                      
02-22 11:25:32.184 10370 10498 E Unity   : java.lang.ClassNotFoundException: com.renderheads.AVPro.MovieCapture.Manager                                                                                            
02-22 11:25:32.184 10370 10498 E Unity   : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.renderheads.AVPro.MovieCapture.Manager" on path: DexPathList[[zip file "/data/app/xxx-TN3454h0VhjCPwZ8aUKJoQ==/base.apk"],nativeLibraryDirectories=[/data/app/xxx-TN3454h0VhjCPwZ8aUKJoQ==/lib/arm, /data/app/xxx-TN3454h0VhjCPwZ8aUKJoQ==/base.ap
k!/lib/armeabi-v7a, /sys                                                                                                                                                                                           
02-22 11:25:33.622 10370 10498 E Unity   : AndroidJavaException: java.lang.ClassNotFoundException: com.renderheads.AVPro.MovieCapture.Manager                                                                      
02-22 11:25:33.622 10370 10498 E Unity   : java.lang.ClassNotFoundException: com.renderheads.AVPro.MovieCapture.Manager                                                                                            

which I solved using a custom ProGuard file as described here: https://github.com/RenderHeads/UnityPlugin-AVProMovieCapture/issues/368#issuecomment-1929987812

artoonie commented 7 months ago

I believe the issue is the same as this: https://github.com/flutter/flutter/issues/36130

And the fix can be found by pinning the GLSL version to be the same as the GL version: https://skia-review.googlesource.com/c/skia/+/237898/2/src/gpu/gl/GrGLGLSL.cpp

MorrisRH commented 7 months ago

Yes, just arrived at that same conclusion. First device we've come across that doesn't support the OpenGLES 3.1 feature set (and we have some old Android 8.0 hardware for testing that supports it).

Not as simple a fix as changing the number sadly as the shaders are common to both OpenGLES 3 and Vulkan. Will look into getting this sorted for the next release.

artoonie commented 7 months ago

Thank you! Any workaround ideas in the meantime? Happy to put in legwork on my end to try to work around this.

MorrisRH commented 7 months ago

I have a fix in place for this which will make it into the next release. @artoonie I have no devices that behave this way so will need you to confirm.

Chris-RH commented 7 months ago

The latest version of AVPro Movie Capture has been released. Please let us know if this has not fixed your issue.

artoonie commented 7 months ago

I see the same behavior after upgrading:

03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 📜 (UnityPlugin.cpp:50) UnityPluginLoad - AVPro Movie Capture version 5.2.2-full build 2403040957
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCapture.cpp:45) Creating OpenGLES video capture factory instance                                  
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:130) VideoCaptureFactoryOpenGLES::setup - eglVersion: 1.4 Android META-EGL
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:133) VideoCaptureFactoryOpenGLES::setup - eglVendor: Android             
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:135) VideoCaptureFactoryOpenGLES::setup - eglExtensions:
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_get_all_proc_addresses
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_presentation_time   
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_swap_buffers_with_damage  
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_get_native_client_buffer
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_front_buffer_auto_refresh
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_get_frame_timestamps
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_surface_SMPTE2086_metadata  
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_surface_CTA861_3_metadata    
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_image    
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_image_base       
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_image_gl_colorspace
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_lock_surface   
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_gl_colorspace      
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_gl_texture_2D_image
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_gl_texture_3D_image
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_gl_texture_cubemap_image
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_gl_renderbuffer_image
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_reusable_sync     
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_fence_sync
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_create_context
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_surfaceless_context    
03-05 13:00:49.844 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_create_context_robustness
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_image_native_buffer         
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_wait_sync
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_ANDROID_recordable
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_partial_update                                                                 
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_pixel_format_float
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_create_context_no_error     
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_mutable_render_buffer
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_EXT_yuv_surface
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_IMG_context_priority                                                               
03-05 13:00:49.845 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:143) VideoCaptureFactoryOpenGLES::setup   - EGL_KHR_no_config_context
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:259) VideoCaptureFactoryOpenGLES::setup - glVersion: OpenGL ES 3.0 V@331.0 (GIT@e6de3b7, I22091d40c2) (Date:08/07/19)
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:261) VideoCaptureFactoryOpenGLES::setup - glVendor: Qualcomm
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:263) VideoCaptureFactoryOpenGLES::setup - glRenderer: Adreno (TM) 308
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:265) VideoCaptureFactoryOpenGLES::setup - glShadingLanguageVersion: OpenGL ES GLSL ES 3.10
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:296) VideoCaptureFactoryOpenGLES::setup - glExtensions:
03-05 13:00:49.852 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_EGL_image                  
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_EGL_image_external
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_EGL_sync
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_vertex_half_float                                                               
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_framebuffer_object
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_rgb8_rgba8                            
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_compressed_ETC1_RGB8_texture
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_AMD_compressed_ATC_texture
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_texture_npot                                                                    
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_texture_filter_anisotropic
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_texture_format_BGRA8888                                              
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_texture_3D                                                           
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_color_buffer_float
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_color_buffer_half_float
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_QCOM_alpha_test
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_depth24
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_packed_depth_stencil
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_depth_texture
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_depth_texture_cube_map
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_sRGB
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_texture_half_float
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_texture_half_float_linear
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_texture_type_2_10_10_10_REV
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_texture_sRGB_decode
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_element_index_uint
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_QCOM_user_clip_planes
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_EGL_image_external_wrap_modes
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_multisampled_render_to_texture
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_robustness
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_get_program_binary
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_debug_label
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_QCOM_tiled_rendering
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_standard_derivatives
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_vertex_array_object
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_YUV_target
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_sRGB_write_control
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_discard_framebuffer
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_surfaceless_context
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_KHR_no_error
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_debug_marker
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_OES_EGL_image_external_essl3
03-05 13:00:49.853 29418 29444 I AVProMovieCapture: 💬️ (VideoCaptureFactoryOpenGLES.cpp:302) VideoCaptureFactoryOpenGLES::setup   - GL_EXT_EGL_image_storage
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:96) VideoCaptureOpenGLES::compileShader - failed to compile shader 'Triangle', info:
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: 
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "Triangle", error: (VideoCaptureOpenGLESShaders.cpp:98) failed to create shader module 
for shader: Triangle
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:96) VideoCaptureOpenGLES::compileShader - failed to compile shader 'RGBA', info:
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: 
03-05 13:00:50.267 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "RGBA", error: (VideoCaptureOpenGLESShaders.cpp:98) failed to create shader module for 
shader: RGBA
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:96) VideoCaptureOpenGLES::compileShader - failed to compile shader 'Y', info:
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: 
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "Y", error: (VideoCaptureOpenGLESShaders.cpp:98) failed to create shader module for sha
der: Y
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:96) VideoCaptureOpenGLES::compileShader - failed to compile shader 'UV', info:
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: 
03-05 13:00:50.268 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "UV", error: (VideoCaptureOpenGLESShaders.cpp:98) failed to create shader module for sh
ader: UV
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureOpenGLESShaders.cpp:96) VideoCaptureOpenGLES::compileShader - failed to compile shader 'UVInterleaved', info:
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: ERROR: The GPU does not support this version of OpenGL ES, try an older version
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: 
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:242) parseShader - failed to add shader "UVInterleaved", error: (VideoCaptureOpenGLESShaders.cpp:98) failed to create shader mo
dule for shader: UVInterleaved
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:367) parsePrograms - failed to parse program, error: VideoCaptureOpenGLESShaders::addProgram - failed to find shader
03-05 13:00:50.269 29418 29444 I AVProMovieCapture: ❌ (VideoCaptureShaderLibraryParser.cpp:367) parsePrograms - failed to parse program, error: VideoCaptureOpenGLESShaders::addProgram - failed to find shader
03-05 13:00:50.733 29418 29444 I AVProMovieCapture: 💬️ (PluginState.cpp:177) PluginState::TryAddVideoCodec(VideoCodec::H264)
03-05 13:00:50.855 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported bitrates: 1-20,000,000
03-05 13:00:50.856 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported widths: 96-1,920
03-05 13:00:50.857 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported heights: 96-1,920
03-05 13:00:50.857 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported framerates: 0-960
03-05 13:00:50.858 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   width alignment: 2
03-05 13:00:50.858 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   height alignment: 2
03-05 13:00:50.859 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   complexity range: 0-0
03-05 13:00:50.859 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   quality range: 0-0
03-05 13:00:50.860 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported profiles: 589,835
03-05 13:00:50.860 29418 29444 I AVProMovieCapture: 💬️ Manager.GetVideoCodecCapabilities -   supported levels: 2,048
03-05 13:00:50.861 29418 29444 I AVProMovieCapture: 💬️ (PluginState.cpp:177) PluginState::TryAddVideoCodec(VideoCodec::HEVC)
03-05 13:00:50.861 29418 29444 I AVProMovieCapture: 💬️ (PluginState.cpp:187) PluginState::TryAddVideoCodec - HEVC codec is unavailable
03-05 13:00:50.861 29418 29444 I AVProMovieCapture: 💬️ (PluginState.cpp:254) PluginState::TryAddAudioCodec(AudioCodec::AAC)
03-05 13:00:50.868 29418 29444 I Unity   : [AVProMovieCapture] Init version: 5.2.2 (plugin v5.2.2-full) with GPU Adreno (TM) 308 OpenGL ES 3.0 V@331.0 (GIT@e6de3b7, I22091d40c2) (Date:08/07/19) OS: Android OS 9 / API-28
 (PPR1.180610.011/J415GUBS6BVK1)
03-05 13:00:50.868 29418 29444 I Unity   : RenderHeads.Media.AVProMovieCapture.CaptureBase:Awake()
MorrisRH commented 7 months ago

There's something more going on here... the log you posted shows the following:

glShadingLanguageVersion: OpenGL ES GLSL ES 3.10

and all our shaders are written against GLSL ES 3.10.

Unfortunately the check I added was to see if the GLSL version was less than 3.10 so clearly won't have failed as the device says it's capable of GLSL 3.10.

Will think on how best to work around this...

Just went back over the history and saw about pinning the GLSL version to the GL version... think I'll match the behaviour but slightly reluctant to make it an across the board change in case some other hardware out there complains.

MorrisRH commented 7 months ago

Second attempt at a fix, I've added special case handling for devices running Android 9 with a Adreno 308 GPU.

artoonie commented 7 months ago

Thank you. I believe that is the correct solution, according to flutter. This device does not correctly report what version of GLES it supports.

(Apologies for closing this Issue just now — my finger slipped.)

Chris-RH commented 6 months ago

AVPro Movie Capture version 5.2.3 has been released. Please let us know if it has not fixed this issue.