Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
None
-
5.9, 5.12.5
Description
I'm using a "wrapper" QAbstractVideoSurface to intercept video frames between a QML Camera and VideoOutput items.
When I try to map() the QVideoFrame, I get the following error:
checkAndUpdateEglState: invalid current EGLDisplay
This error bubbles up as a Java exception which is not handled, resulting in a JNI error later on:
JNI DETECTED ERROR IN APPLICATION: JNI NewFloatArray called with pending exception 'java.lang.IllegalStateException' thrown in unknown throw location
F/art (21903): sart/runtime/check_jni.cc:65] in call to NewFloatArray
The problem is caused by the fact that AndroidTextureVideoBuffer::map() results in EGL calls on a thread without an active EGL context.
I've tried using QAbstractVideoFilter instead of this stacking approach, but the results are the same.
Attachments
For Gerrit Dashboard: QTBUG-69333 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
235364,4 | Android: Fix fetching video frame data from the GUI thread | 5.13 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
236608,1 | Android: Fix fetching video frames from the GUI thread | 5.11 | qt/qtmultimedia | Status: ABANDONED | -2 | 0 |
236979,1 | Android: Fix fetching video frame data from the GUI thread | 5.11 | qt/qtmultimedia | Status: ABANDONED | -2 | 0 |