libcamera/src
Nicolas Dufresne 04f1f20337 gstreamer: pool: Replace GstAtomicQueue with deque and mutex
The GstAtomicQueue only supports 2 threads, one pushing, and one
popping. We pop and push on error cases and we may have multiple threads
downstream returning buffer (using tee), which breaks this assumption.

On top of which, the release function, that notifies when the queue goes
from empty to not-empty relies on a racy empty check. The downstream
thread that does this check is effectively concurrent with our thread
calling acquire().

Fix this by replacing the GstAtomicQueue with a std::deque, and protect
access to that using the object lock.

Bug: https://bugs.libcamera.org/show_bug.cgi?id=201
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Acked-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2024-07-25 09:54:56 +01:00
..
android android: camera_capabilities: Fix GCC 14 warning 2024-05-27 23:53:59 +03:00
apps apps: qcam: Port to Qt 6 2024-07-24 14:25:38 +01:00
gstreamer gstreamer: pool: Replace GstAtomicQueue with deque and mutex 2024-07-25 09:54:56 +01:00
ipa ipa: rkisp1: ccm: Ensure metadata contains valid ccm 2024-07-24 15:37:04 +01:00
libcamera libcamera: pipeline: simple: Enable Soft ISP for TI CSI-RX 2024-07-22 03:22:22 +03:00
py py: libcamera: Move function declarations to common header 2024-06-26 12:07:11 +03:00
v4l2 v4l2: v4l2_compat: Selectively disable -Wmissing-declarations 2024-06-26 12:07:11 +03:00
meson.build v4l2: Move the v4l2 compat layer to libexec/libcamera 2023-05-04 20:05:02 +01:00