{"id":26511,"url":"https://patchwork.libcamera.org/api/covers/26511/?format=json","web_url":"https://patchwork.libcamera.org/cover/26511/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260408115645.12487-1-johannes.goede@oss.qualcomm.com>","date":"2026-04-08T11:56:42","name":"[RFC,0/3] camss: Add CAMSS pipeline handler","submitter":{"id":242,"url":"https://patchwork.libcamera.org/api/people/242/?format=json","name":"Hans de Goede","email":"johannes.goede@oss.qualcomm.com"},"mbox":"https://patchwork.libcamera.org/cover/26511/mbox/","series":[{"id":5878,"url":"https://patchwork.libcamera.org/api/series/5878/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5878","date":"2026-04-08T11:56:42","name":"camss: Add CAMSS pipeline handler","version":1,"mbox":"https://patchwork.libcamera.org/series/5878/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/26511/comments/","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3F280BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  8 Apr 2026 11:56:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E7B2B62E38;\n\tWed,  8 Apr 2026 13:56:52 +0200 (CEST)","from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n\t[205.220.180.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E0C6362E11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  8 Apr 2026 13:56:50 +0200 (CEST)","from pps.filterd (m0279869.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t6389N2e62412291 for <libcamera-devel@lists.libcamera.org>;\n\tWed, 8 Apr 2026 11:56:49 GMT","from mail-qt1-f197.google.com (mail-qt1-f197.google.com\n\t[209.85.160.197])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd61vbmxv-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Apr 2026 11:56:49 +0000 (GMT)","by mail-qt1-f197.google.com with SMTP id\n\td75a77b69052e-50d6bf346adso103591791cf.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Apr 2026 04:56:49 -0700 (PDT)","from t14s\n\t(2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:7d4:cca3:ec08:7ac7])\n\tby smtp.gmail.com with ESMTPSA id\n\t4fb4d7f45d1cf-66e7b5ffa64sm3158932a12.21.2026.04.08.04.56.46\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 08 Apr 2026 04:56:46 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"b4r9qBMu\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"EQkn+Zvh\"; dkim-atps=neutral","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:date:from:message-id:mime-version\n\t:subject:to; s=qcppdkim1; bh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIY\n\tuq1ni7aI=; b=b4r9qBMuTH0971+phVby0bCSRkr0LJRk/bIOO6VFshCZIvVDlPt\n\thMDS9gBsdPQ3uIY1Em1Gyc/PRKqiGV9osLrsDlZAu/2oKF9V2ePt2VlZmCm2EgAF\n\tp/c54qUQJh5coHWGDKsQqIhFQ3HGSvK2bIgJ980nhbhpFHFmyBBIU1MhypPT63Vp\n\t8gsekvwwCyNvIyhFmkvLGbwVH2x0OL04d9UPB/vUd0apvaakFX69fPAMHpv6Wt5C\n\tN4C/j1KOgk3sT5X7iQNafEtpwi88cZsrzIcLSSFax3ufVRLNpoRJCSC2CjBrHIcF\n\t2wjIwRLofvudzswJXCi+qzASbOSbkkx7I2Q==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1775649408; x=1776254208;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIYuq1ni7aI=;\n\tb=EQkn+ZvhFtbpMjJscMyUZZ4etBP12P/MS1RgOakO9W+R6n/1erXZs+s+j0WjXFIKmH\n\tsD/yCythrG6iiv3CpZzFlm8cxySGpr77qhLVH0yVE9uIma+rJkwv/WkhR+t75m0zL77U\n\t0xdBsFGt3+QSbkwy1utkHpVjIrV4tSLdfvuSgIM5i0qnAGyCiNhZV1gCzjXZGJ8ykQ4c\n\tM1QQp6RNzImqQGxHeqAyVAWVvPSsVZQJiFTEAyTyQqHqh9A83MA/GVNRBtirG+Q7mZK7\n\tnco3fKXqkoR+TcvuT9Bgrj6UO8kq3J1YYXh1ytfDGForCPR9O5epFgjKjEGC6PdbPbfU\n\tLc3g=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1775649408; x=1776254208;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIYuq1ni7aI=;\n\tb=j9RTgrJulcL2EDHcANv7Y656GnMdZi66LYPuFOWTB7frHtj6E67aoxPmOfhbmi9Nne\n\tKn+ajbtuRv4cr967vQFb6UB39tncYM4kmiCCQWadXgyVQTBIiurDjaylweZfcSd2u7YR\n\tQeA4iMiDAYLaDfVTaKSPoFXC0ivTL/LcIYJkgWlJJ/cMVPP2H9O8tO6Y+arKKTg+Mr/j\n\tgGx13Fy4ZIMjGDCaZ65YmUcew3OQGfGdiyTu/t0JGUeWvKXYBzxvYvUNMETxHelu/KTj\n\tDP/Y0WsiKLAOA3llHLsdZSD7XMre1Ted9cO2Fgmc+blyWJ50XyQPb7iimpcRO3gxzGIz\n\t+GCg==","X-Gm-Message-State":"AOJu0YxF9iiHjS/f6BaHWo6HVIgswC36EVt4TUBTrKf1URSKBFLrenTL\n\tWmQL3ex7Wcur5RLuQuAkLtIGGaKbkFMdyvc5nNo82eENJ0EnGx6eYay5wyj9z6w1Ms7Kv1qUN8u\n\tXljLcDjRGX9ULx32pGrEHRSogZjNda18HCsJASnYTiCzGwtyOvXH1eyiOcjYM09rGYdu2K0vfLY\n\tDFavlwUF5I","X-Gm-Gg":"AeBDietglv+197JsZ7lQK4BueHr7ZFhsW76878wR0uVT2xrsRTlneJPiaXz0eYvvG8M\n\tut/Q/Fl9wsUpDEJZ/Ls2KDmkSsyie/UCYknXI0NQm1HBgsp4IPS23lIIxSETd9nCZHpVz4njmZy\n\tzCsJ9JZfl5hC8coUm0/mrnP1r6lSpNorGYhPoFPkyLbAiOUad3SL4jwJhd03eBQaG/lx7ynLBJm\n\tX4abQiFvm22TIQCX7NaxtfGcPUWcpEeoeAcPCq4K447ZXUcarO39CU6mhGW8UE/jtElpIyUnSQc\n\trNdhsa99CMzv3W97z0XersiDvCpf/iQSzHZaMrkEZ5dmvmUgwoiL8jj6KiebYye7oD9qWWwj5pa\n\tX4cbLUAtlhWOT7IWwO08FaMDWG+TfmBVy7JA8cM7p4N2ugqx7S+K3LqVZeS5X77wNajzwABZZC2\n\t4RkYmDQCRfp/vK2ZxNXT94L1ypatjpF3IT","X-Received":["by 2002:a05:622a:148e:b0:509:348f:bc1a with SMTP id\n\td75a77b69052e-50d629beccemr306681141cf.26.1775649407842; \n\tWed, 08 Apr 2026 04:56:47 -0700 (PDT)","by 2002:a05:622a:148e:b0:509:348f:bc1a with SMTP id\n\td75a77b69052e-50d629beccemr306680861cf.26.1775649407467; \n\tWed, 08 Apr 2026 04:56:47 -0700 (PDT)"],"From":"Hans de Goede <johannes.goede@oss.qualcomm.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Loic Poulain <loic.poulain@oss.qualcomm.com>,\n\tHans de Goede <johannes.goede@oss.qualcomm.com>","Subject":"[RFC 0/3] camss: Add CAMSS pipeline handler","Date":"Wed,  8 Apr 2026 13:56:42 +0200","Message-ID":"<20260408115645.12487-1-johannes.goede@oss.qualcomm.com>","X-Mailer":"git-send-email 2.53.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDA4MDExMCBTYWx0ZWRfX22EmvpggWzkl\n\t8hNbE/IuA+F1npz+4HuIN3B4WbxvIt67a8LmTLNuulOf63AIu1IqEPzxf2TMcxh49UpYGZerqaa\n\tC3OVXQyhzKgabyzlkAGNuaKdqcHPbKM994mngYHVZ9A0w4KQpgR04t+P4IgdABHQFYLUmWC6+Qm\n\t2NL1bxRXIZFeU0LUnC6ADzqqgvOY9f53c32wBzR6goQ0obtoKjUBkVnAgr9lYToC8aSWJ93Pb5s\n\teFGi3fCWyXO2Mpzy0Iy7RiWg7uQn2HT/asieLFNbYoYrv1WvPmHhEkwkCzwDubXhxv3aOTQ2Dha\n\t/BCdgdOMBxNN2clG/7rqqb0Mff8BZAf36HHDDGAoaAMReg4WlgQM14O3r1Hjjf17LmaQiciXaVe\n\tXIzjVZEVcSMQ+OBW2ys+XpWvhB6mUDNzjyVFRAcgzNK5Wo8bfc9H9NiDSROf3p3/sqBvsK6jL7y\n\tSsk3yBbbx/+kwnYIXHQ==","X-Authority-Analysis":"v=2.4 cv=FecHAp+6 c=1 sm=1 tr=0 ts=69d64281 cx=c_pps\n\ta=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10\n\ta=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n\ta=_glEPmIy2e8OvE2BGh3C:22 a=Zf9XQ7h-q98dPmF7Kd0A:9\n\ta=a_PwQJl-kcHnX1M80qC6:22","X-Proofpoint-ORIG-GUID":"oGBcFNxNDK-T0ql-AG9zw0sKeME_OfRh","X-Proofpoint-GUID":"oGBcFNxNDK-T0ql-AG9zw0sKeME_OfRh","X-Proofpoint-Virus-Version":"vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.51,\n\tFMLib:17.12.100.49\n\tdefinitions=2026-04-08_03,2026-04-08_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tmalwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501\n\tsuspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 adultscore=0\n\tspamscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n\troute=outbound\n\tadjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000\n\tdefinitions=main-2604080110","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Hi All,\n\nAdd a CAMSS pipeline handler. This initial version basically replaces\nthe simple pipeline handler camss support.\n\nThis has been modelled after the IPU3 pipeline handler since that also\nsupports an offline ISP.\n\nThis uses a CamssIsp virtual base class with the default/fallback\nimplementation of that class using the software ISP.\n\nThe 3th patch in the series adds a second CamssIsp implementation\nfor the RFC OPE M2M kernel driver posted upstream recently. This uses\nthe M2M Convertor class and the moment is purely a convertor without\nany 3A support. The current OPE support will likely be completely\nrewritten to match the next version of the OPE kernel patch which is\nexpected to implement a more typical V4L2 HWISP driver with parameter\nbuffer support.\n\nThis has been tested on A ThinkPad T14s Gen 6 with Snapdragon X1E\nprocessor and on a Arduino UNO Q board with the media-carrier with\n2 imx219 camera modules attached.\n\nSince this will replace the simple pipeline handler support more\ntesting on other platforms with different camera setups, e.g. various\nphones would be appreciated to avoid e.g. postmarketOS camera support\nregressing when this lands.\n\nRegards,\n\nHans\n\n\nHans de Goede (3):\n  camss: Add CAMSS pipeline handler\n  camss: Use finer grained locking / disableLinks()\n  camss: Add Offline Processing Engine ISP support\n\n meson.build                                   |   1 +\n meson_options.txt                             |   1 +\n src/ipa/meson.build                           |   1 +\n .../converter/converter_v4l2_m2m.cpp          |   1 +\n src/libcamera/pipeline/camss/camss.cpp        | 724 ++++++++++++++++++\n src/libcamera/pipeline/camss/camss_csi.cpp    | 553 +++++++++++++\n src/libcamera/pipeline/camss/camss_csi.h      | 128 ++++\n src/libcamera/pipeline/camss/camss_frames.cpp | 106 +++\n src/libcamera/pipeline/camss/camss_frames.h   |  59 ++\n src/libcamera/pipeline/camss/camss_isp.cpp    |  26 +\n src/libcamera/pipeline/camss/camss_isp.h      |  59 ++\n .../pipeline/camss/camss_isp_ope.cpp          | 229 ++++++\n src/libcamera/pipeline/camss/camss_isp_ope.h  |  59 ++\n .../pipeline/camss/camss_isp_soft.cpp         | 203 +++++\n src/libcamera/pipeline/camss/camss_isp_soft.h |  50 ++\n src/libcamera/pipeline/camss/meson.build      |  10 +\n src/libcamera/pipeline/simple/simple.cpp      |   2 +-\n 17 files changed, 2211 insertions(+), 1 deletion(-)\n create mode 100644 src/libcamera/pipeline/camss/camss.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_csi.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_csi.h\n create mode 100644 src/libcamera/pipeline/camss/camss_frames.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_frames.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.h\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.cpp\n create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.h\n create mode 100644 src/libcamera/pipeline/camss/meson.build"}