From patchwork Thu Oct 15 19:43:17 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Strode X-Patchwork-Id: 28459 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 C131EBDCB6 for ; Thu, 15 Oct 2026 19:49:43 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 82D3168E15; Thu, 15 Oct 2026 21:49:42 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HoWNT4Bf"; dkim-atps=neutral Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D98A368E03 for ; Thu, 15 Oct 2026 21:43:27 +0200 (CEST) Received: by mail-qv1-xf33.google.com with SMTP id 6a1803df08f44-9196d8543cbso16859946d6.1 for ; Thu, 15 Oct 2026 12:43:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792093406; x=1792698206; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=rmLQKXoec4WEhDukwRw12vFojaEkl/eMx5vgq66S14k=; b=HoWNT4BfGwrOKHhjRSFRJMMiHOYiC0UXOMsUiU9L/6LsaWu6mgWuHHlC2k0KEAUGbK 6wPWzumuoFmpLRBkHej5lB2XvoRbA/K1JAlwbg71g3WB+tdDLkhhGww5V8HSKezGYvv1 hQKbCKBouyps8ewWwKsupzqPmYOoiY+57bbh7SqEXNuPPEttA8SIHGXyOtaNRR03r9Xo fOls55bcBtYTXcvR29rHp3IDURqGImvMKUxzeWbqmn2w+q7xwDjBw4ophkO7b33E4HdD tFQtHAzlIRCcu3uWSqpED3dkYdxKPgWnjETVS6R0Mjjx8SjASOdl2vPVGMqzDw1AHC8G epzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792093406; x=1792698206; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=rmLQKXoec4WEhDukwRw12vFojaEkl/eMx5vgq66S14k=; b=iezPQSZcT9cUXbbyg2LIsgd4PjB9ABuDk8GFPx6XuM8RnRc722uErqQrfO8hb4RRRo GYK5ZjA2DPWelIXBXCCRDATgBhw0YwOLwb01zdGc1gq8roTqHWiiL58d8hhMlqtk+DwE O27SIRTtYscIPPNQ1QNLoS9Sm+mEG5u/2Gi3554ZzjPw8PHtTbumtL41rD//GUqF1fLB K2rXAlYWWqT7Ba0/QNC3l+NrdOiA7V8uzSz7TWjYdD4tZowDSx/o6x7IWip1Y/pk8TwB zyKag9b+LwlPqXHSCaKABczSdu8Rlc7nfqPQ0nQ5gSCmPUHCwsrNu2vr00dHjE/T+WL0 I/zQ== X-Gm-Message-State: AFq9FYKy4+YJhCJWjkV/ytvgtM9ADYrSps0Ak1R5uUXC5/U31WHmYLQ0 x0K3gik3a6E426K7Cq28fUidv0dEvhqc0N5J1f2321sYvv9IFUyS7oi08s7pUDGYKN4= X-Gm-Gg: AYBFou1ExoOA92G40EvIv26ENMMVjxUK1DsJK+gEM78ZecVs9KTtCNDC+p3r51uv31w N32DQ8QyqlF4VHqpgYfydcMYKA6K0tuTPrpEYLwUbeA7fHVXmwGYRBlPrqF8QvCs5rI94w9eh2l U8MGbiJ0pMh63TH+ezvZ/6+EUd9cD28+VfA64epJ2r3ZtaNq07SCCF9BHYZEtqScFP3aYew8WI2 vsP22v9LGPA1NmOlpz6DZKzM0bRhdAy4FggDbMxODCA/wR0gFoEk4aI7zm54beavP3fF97o6NSn YOMzhlqcIjJMHv24WxmwFU+O1HMXvGvxr/fz1GimzuLmFLmLz4TydkdBU/DLfo+wqWykRVT5WCW vXGDhWwPGqYEoPU0sycl1o1R/Y0OWbxEL2QpyDot08BN2USKGkacDRM33zzPXhoS9F5J/479SW1 bT7y6A4ZTds3WGbCtqzaYtLZgS7vWGuQzemxY7Y2t7dOBSM9jNQAyisDozRYUBq4vUrViORBLO4 lieTY0EwbOTqhpIGKt/x+D/Yw== X-Received: by 2002:a05:620a:460d:b0:93c:b766:2bfc with SMTP id af79cd13be357-93ebd22539fmr3512784085a.17.1792093406104; Thu, 15 Oct 2026 12:43:26 -0700 (PDT) Received: from localhost ([144.121.52.163]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-91bcbb756fcsm3572196d6.42.2026.10.15.12.43.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Oct 2026 12:43:25 -0700 (PDT) From: Ray Strode To: libcamera-devel@lists.libcamera.org Subject: [PATCH] gstreamer: Map 10-bit monochrome frames Date: Thu, 15 Oct 2026 15:43:17 -0400 Message-ID: <20261015194317.287913-1-halfline@gmail.com> X-Mailer: git-send-email 2.56.0 MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 15 Oct 2026 21:49:41 +0200 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" From: Ray Strode The GStreamer format map covers 8-bit and 16-bit monochrome frames, while libcamera also represents 10-bit monochrome as R10. GStreamer pipelines cannot negotiate that 10-bit format through the camera source. This commit maps the GStreamer 10-bit little-endian monochrome format to R10 when the installed GStreamer version provides it. Signed-off-by: Ray Strode --- src/gstreamer/gstlibcamera-utils.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp index 7dd8b550..d7c842f5 100644 --- a/src/gstreamer/gstlibcamera-utils.cpp +++ b/src/gstreamer/gstlibcamera-utils.cpp @@ -19,60 +19,63 @@ static const struct { GstVideoFormat gst_format; PixelFormat format; } format_map[] = { /* Compressed */ { GST_VIDEO_FORMAT_ENCODED, formats::MJPEG }, /* Bayer formats */ { GST_VIDEO_FORMAT_ENCODED, formats::SBGGR8 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGBRG8 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGRBG8 }, { GST_VIDEO_FORMAT_ENCODED, formats::SRGGB8 }, { GST_VIDEO_FORMAT_ENCODED, formats::SBGGR10 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGBRG10 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGRBG10 }, { GST_VIDEO_FORMAT_ENCODED, formats::SRGGB10 }, { GST_VIDEO_FORMAT_ENCODED, formats::SBGGR12 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGBRG12 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGRBG12 }, { GST_VIDEO_FORMAT_ENCODED, formats::SRGGB12 }, { GST_VIDEO_FORMAT_ENCODED, formats::SBGGR14 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGBRG14 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGRBG14 }, { GST_VIDEO_FORMAT_ENCODED, formats::SRGGB14 }, { GST_VIDEO_FORMAT_ENCODED, formats::SBGGR16 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGBRG16 }, { GST_VIDEO_FORMAT_ENCODED, formats::SGRBG16 }, { GST_VIDEO_FORMAT_ENCODED, formats::SRGGB16 }, /* Monochrome */ { GST_VIDEO_FORMAT_GRAY8, formats::R8 }, +#if GST_CHECK_VERSION(1, 26, 0) + { GST_VIDEO_FORMAT_GRAY10_LE16, formats::R10 }, +#endif { GST_VIDEO_FORMAT_GRAY16_LE, formats::R16 }, /* RGB16 */ { GST_VIDEO_FORMAT_RGB16, formats::RGB565 }, /* RGB24 */ { GST_VIDEO_FORMAT_RGB, formats::BGR888 }, { GST_VIDEO_FORMAT_BGR, formats::RGB888 }, /* RGB32 */ { GST_VIDEO_FORMAT_BGRx, formats::XRGB8888 }, { GST_VIDEO_FORMAT_RGBx, formats::XBGR8888 }, { GST_VIDEO_FORMAT_xBGR, formats::RGBX8888 }, { GST_VIDEO_FORMAT_xRGB, formats::BGRX8888 }, { GST_VIDEO_FORMAT_BGRA, formats::ARGB8888 }, { GST_VIDEO_FORMAT_RGBA, formats::ABGR8888 }, { GST_VIDEO_FORMAT_ABGR, formats::RGBA8888 }, { GST_VIDEO_FORMAT_ARGB, formats::BGRA8888 }, /* YUV Semiplanar */ { GST_VIDEO_FORMAT_NV12, formats::NV12 }, { GST_VIDEO_FORMAT_NV21, formats::NV21 }, { GST_VIDEO_FORMAT_NV16, formats::NV16 }, { GST_VIDEO_FORMAT_NV61, formats::NV61 }, { GST_VIDEO_FORMAT_NV24, formats::NV24 }, /* YUV Planar */ { GST_VIDEO_FORMAT_I420, formats::YUV420 }, { GST_VIDEO_FORMAT_YV12, formats::YVU420 }, { GST_VIDEO_FORMAT_Y42B, formats::YUV422 },