From patchwork Tue Apr 22 14:10:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaslo Ziska X-Patchwork-Id: 23207 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 A9AE0C331E for ; Tue, 22 Apr 2025 14:21:01 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id CCC2A68ACD; Tue, 22 Apr 2025 16:21:00 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ziska.de header.i=@ziska.de header.b="FJRvclsX"; dkim=permerror (0-bit key) header.d=ziska.de header.i=@ziska.de header.b="7kr5YD5C"; dkim-atps=neutral Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [81.169.146.218]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DBE7368ACE for ; Tue, 22 Apr 2025 16:20:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; t=1745331658; cv=none; d=strato.com; s=strato-dkim-0002; b=Gu2U6yR3wEQdELocVBnlduwFxjsMPuQ0xxr+MGgTnSqOLIDHf4A4qUndA+4iOgSrkr lQN630xEYSQZbjkre/hm87rl/TS/NP/TTd/nyiy4aT9B4f79QZG2gI6Svxs5siqEgV+l +nYyAjDlhLYXm+GgBX3XRxjEEGKiXqHRjGsa8+7kxOaix87mfyoJCVW3BQh3KB8uTuaN 9WslXl6vNIoSXlfRZ5BsJC1wNVHyTQ9DkOvkL7xE8TIJwHakBX2TfM1Nn+V2fpM+E03b x7SkB8AbDHClP1X9M4JIgqTc2RzBzLJFMxHzL7fkdHoWf0kBAZES03Z37VjWN3A4Cobh uZag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1745331658; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=FTJWKLMamVcNrvryPvG+sPyvytk+8sPDvTre7cAhE4w=; b=lVS6at3nm8QQqKK7E0xxigstEKz6qW4Mr3VGhdjf1tOjblNN51lwPaLOinC5kBX+VQ 619jLmeKZScDIJOFy9+Gmb0Ij6exF6nBT7JVC0+3CdDdgYWUWYYBxDjg+crII0DO6RYw 8UUQfaffX5jNhkSs3HqG7+sLb5+QJIW7ufxtKoXZSkTCkI3ycG8tRVqYiPCgLRmXiqbV agq6SOHXP83pyTU39ZDJW9cedvjcN/y0BGssa2GLJsUUNF2zqP3+zrXj2Bw8nvmAD2Sv zL1OnL2n0CMPT8pODd19c5Yd2g6tTvMRi4HJFQl/fvxZj1didMsYEOiFRXzd1ZQFNjSz Mswg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1745331658; s=strato-dkim-0002; d=ziska.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=FTJWKLMamVcNrvryPvG+sPyvytk+8sPDvTre7cAhE4w=; b=FJRvclsXFpe4aPdDNwhO+LwjYVDBt+GynN2jANbZhkB3/UYfEl5Gvc7Qq8rIITnH6f wWumAPZGo6LhVodU5bCgNh5sCE6UBNA8STaZhdwxiMWvNSec9F313kOpKDHqRRicm5Qg 6pe1Avn+HPQYsS3iD355DniIWk4gRA77izIROjNaKd3a+z88X9cmUCM9zg86gl11EZ0f ngpXX7mUqj/4WFIXEArwdyJZHePZj1AMhh6IIIvQHM19Wrv8Z6dzQW2wBHaLi++f4GSw dZ8PfxsmK7OCLGuZPmOlUJxUrblhN03WKIV79Lsgd8WbTPs6fhKiejWfeA7cuadUtf18 DIcQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1745331658; s=strato-dkim-0003; d=ziska.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=FTJWKLMamVcNrvryPvG+sPyvytk+8sPDvTre7cAhE4w=; b=7kr5YD5CWvv2GAmWF0t6EqTg5z3MMI7VY1u2Uj+MyZ7OWXLfALemPEeBYYpmjN9aF5 Y8HJAJ2BYzR0TuC7b6Dg== X-RZG-AUTH: ":Jm0XeU+IYfb0x77LHmrjN5Wlb7TBwusDqIM6Hizy8VdfzvKi4yoFC9cCgYrrBvJaIR9ymoISrfhsHWODCRPggeTRCTeK" Received: from archlinux.fritz.box by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id z34f8113MEKwRI2 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Tue, 22 Apr 2025 16:20:58 +0200 (CEST) From: Jaslo Ziska To: libcamera-devel@lists.libcamera.org Cc: Jaslo Ziska Subject: [PATCH 2/4] gstreamer: Log and check adjusted camera configuration Date: Tue, 22 Apr 2025 16:10:59 +0200 Message-ID: <20250422142010.13064-3-jaslo@ziska.de> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250422142010.13064-1-jaslo@ziska.de> References: <20250422142010.13064-1-jaslo@ziska.de> MIME-Version: 1.0 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" As CameraConfiguration::validate() might alter the configuration previously negotiated with downstream, log an info when this happens as GStreamer source elements are not supposed to do that. Also check if downstream can accept this new stream configuration and if not, return a not-negotiated error. Signed-off-by: Jaslo Ziska Reviewed-by: Nicolas Dufresne --- src/gstreamer/gstlibcamerasrc.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp index 12bf8de0..2d9db342 100644 --- a/src/gstreamer/gstlibcamerasrc.cpp +++ b/src/gstreamer/gstlibcamerasrc.cpp @@ -455,8 +455,13 @@ gst_libcamera_src_negotiate(GstLibcameraSrc *self) } /* Validate the configuration. */ - if (state->config_->validate() == CameraConfiguration::Invalid) + CameraConfiguration::Status status = state->config_->validate(); + if (status == CameraConfiguration::Invalid) return false; + else if (status == CameraConfiguration::Adjusted) + GST_ELEMENT_INFO(self, RESOURCE, SETTINGS, + ("Configuration was adjusted"), + ("CameraConfiguration::validate() returned CameraConfiguration::Adjusted")); int ret = state->cam_->configure(state->config_.get()); if (ret) { @@ -481,6 +486,10 @@ gst_libcamera_src_negotiate(GstLibcameraSrc *self) g_autoptr(GstCaps) caps = gst_libcamera_stream_configuration_to_caps(stream_cfg, transfer[i]); gst_libcamera_framerate_to_caps(caps, element_caps); + if (status == CameraConfiguration::Adjusted && + !gst_pad_peer_query_accept_caps(srcpad, caps)) + return false; + if (!gst_pad_push_event(srcpad, gst_event_new_caps(caps))) return false; }