From patchwork Thu Feb 25 16:11:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dafna Hirschfeld X-Patchwork-Id: 11379 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id F23DFBD808 for ; Thu, 25 Feb 2021 16:11:15 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 68CED68A49; Thu, 25 Feb 2021 17:11:15 +0100 (CET) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1134D602EE for ; Thu, 25 Feb 2021 17:11:13 +0100 (CET) Received: from guri.fritz.box (p200300c7cf1cce00c495f7eb403f1d15.dip0.t-ipconnect.de [IPv6:2003:c7:cf1c:ce00:c495:f7eb:403f:1d15]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dafna) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 73F2E1F462C6; Thu, 25 Feb 2021 16:11:13 +0000 (GMT) From: Dafna Hirschfeld To: libcamera-devel@lists.libcamera.org Date: Thu, 25 Feb 2021 17:11:06 +0100 Message-Id: <20210225161106.15954-1-dafna.hirschfeld@collabora.com> X-Mailer: git-send-email 2.17.1 Subject: [libcamera-devel] [PATCH v2] gst: use the streams of CameraConfiguration when allocating buffers X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kernel@collabora.com, nicolas.dufresne@collabora.com MIME-Version: 1.0 Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Currently, when allocating buffers, the streams of the Camera object are used. Instead the streams of the CameraConfiguration object should be used. This is because the Camera object holds all available streams while the CameraConfiguration holds only the streams associated with the current configuration. Signed-off-by: Dafna Hirschfeld Reviewed-by: Nicolas Dufresne Reviewed-by: Laurent Pinchart --- Changes from v1: change the prefix to 'gst:' and extend the commit log. src/gstreamer/gstlibcameraallocator.cpp | 6 ++++-- src/gstreamer/gstlibcameraallocator.h | 4 +++- src/gstreamer/gstlibcamerasrc.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gstreamer/gstlibcameraallocator.cpp b/src/gstreamer/gstlibcameraallocator.cpp index 13c6b493..7bd8ba2d 100644 --- a/src/gstreamer/gstlibcameraallocator.cpp +++ b/src/gstreamer/gstlibcameraallocator.cpp @@ -183,13 +183,15 @@ gst_libcamera_allocator_class_init(GstLibcameraAllocatorClass *klass) } GstLibcameraAllocator * -gst_libcamera_allocator_new(std::shared_ptr camera) +gst_libcamera_allocator_new(std::shared_ptr camera, + CameraConfiguration *config_) { auto *self = GST_LIBCAMERA_ALLOCATOR(g_object_new(GST_TYPE_LIBCAMERA_ALLOCATOR, nullptr)); self->fb_allocator = new FrameBufferAllocator(camera); - for (Stream *stream : camera->streams()) { + for (StreamConfiguration &streamCfg : *config_) { + Stream *stream = streamCfg.stream(); gint ret; ret = self->fb_allocator->allocate(stream); diff --git a/src/gstreamer/gstlibcameraallocator.h b/src/gstreamer/gstlibcameraallocator.h index befdcad6..f7fa6acd 100644 --- a/src/gstreamer/gstlibcameraallocator.h +++ b/src/gstreamer/gstlibcameraallocator.h @@ -13,12 +13,14 @@ #include #include +#include #define GST_TYPE_LIBCAMERA_ALLOCATOR gst_libcamera_allocator_get_type() G_DECLARE_FINAL_TYPE(GstLibcameraAllocator, gst_libcamera_allocator, GST_LIBCAMERA, ALLOCATOR, GstDmaBufAllocator) -GstLibcameraAllocator *gst_libcamera_allocator_new(std::shared_ptr camera); +GstLibcameraAllocator *gst_libcamera_allocator_new(std::shared_ptr camera, + libcamera::CameraConfiguration *config_); bool gst_libcamera_allocator_prepare_buffer(GstLibcameraAllocator *self, libcamera::Stream *stream, diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp index 636c14df..7b13667b 100644 --- a/src/gstreamer/gstlibcamerasrc.cpp +++ b/src/gstreamer/gstlibcamerasrc.cpp @@ -429,7 +429,7 @@ gst_libcamera_src_task_enter(GstTask *task, [[maybe_unused]] GThread *thread, return; } - self->allocator = gst_libcamera_allocator_new(state->cam_); + self->allocator = gst_libcamera_allocator_new(state->cam_, state->config_.get()); if (!self->allocator) { GST_ELEMENT_ERROR(self, RESOURCE, NO_SPACE_LEFT, ("Failed to allocate memory"),