diff --git a/src/gstreamer/gstlibcamerapool.cpp b/src/gstreamer/gstlibcamerapool.cpp
index 62db184f..1fde4213 100644
--- a/src/gstreamer/gstlibcamerapool.cpp
+++ b/src/gstreamer/gstlibcamerapool.cpp
@@ -40,8 +40,10 @@ gst_libcamera_pool_acquire_buffer(GstBufferPool *pool, GstBuffer **buffer,
 	if (!buf)
 		return GST_FLOW_ERROR;
 
-	if (!gst_libcamera_allocator_prepare_buffer(self->allocator, self->stream, buf))
+	if (!gst_libcamera_allocator_prepare_buffer(self->allocator, self->stream, buf)) {
+		gst_atomic_queue_push(self->queue, buf);
 		return GST_FLOW_ERROR;
+	}
 
 	*buffer = buf;
 	return GST_FLOW_OK;
