VideoOutput memory leak
Unsolved
Mobile and Embedded
-
Hi,
The Android project I'm working on has been recently upgraded to QT6.4.3, also changing the build system to CMake. I'm experiencing a memory leak occurring after starting the camera, when the output is used by the VideoOutput QML element.
When using a simple setup with CaptureSession, I'm getting the following warnings after calling camera.start():I Gralloc4: mapper 4.x is not supported W Gralloc3: mapper 3.x is not supported [SurfaceTexture-33-26350-1] bindTextureImage: clearing GL error: 0x500 [SurfaceTexture-33-26350-1] bindTextureImage: clearing GL error: 0x500
The following errors appear when unloading the QML page:
E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned E BufferQueueProducer: [SurfaceTexture-51-26350-2](id:66ee00000002,api:4,p:9863,c:26350) cancelBuffer: BufferQueue has been abandoned
The QML code I'm using to reproduce this:
import QtQuick import QtMultimedia import QtQuick.Controls 2.5 Item { width: 640 height: 360 CaptureSession { imageCapture: ImageCapture{ id: cap } camera: Camera { id: camera focusMode: Camera.FocusModeAutoNear customFocusPoint: Qt.point(0.2, 0.2) // Focus relative to top-left corner } videoOutput: videoOutput } VideoOutput { id: videoOutput anchors.fill: parent } Button{ onClicked:{ if(cap.readyForCapture){ cap.capture() } } } Image{ id: imgPreview source: cap.preview } Component.onCompleted: { camera.start() } }