[{"id":28456,"web_url":"https://patchwork.libcamera.org/comment/28456/","msgid":"<cc150fe9-7ee9-4039-9361-188b4db9effe@redhat.com>","date":"2024-01-13T14:35:51","subject":"Re: [libcamera-devel] [PATCH v2 00/18] libcamera: introduce\n\tSoftware ISP and Software IPA","submitter":{"id":102,"url":"https://patchwork.libcamera.org/api/people/102/","name":"Hans de Goede","email":"hdegoede@redhat.com"},"content":"Hi All,\n\nUgh I forgot to fill in the subject part of the cover-letter, sorry.\n\nI've fixed the subject in this reply, for any replies\nto the cover-letter please use this subject.\n\nRegards,\n\nHans\n\n\n\nOn 1/13/24 15:22, Hans de Goede wrote:\n> Hi All,\n> \n> Here is v2 of the patch-set to add Software ISP support\n> to libcamera / to the simple pipeline-handler.\n> \n> Changes in v2 vs v1:\n> - Integrated Dennis, Martti and Toon's auto-exposure algorithm\n>   based on the paper which they found which gives us a nice\n>   relatively simple AEC + AGC algorithm\n>   TODO: Add link to paper to source + commit-message\n> - Integrated Dennis' doxygen comments for all new classes, no more warnings!\n> - Move AWB gain calculations to the IPA (Andrey)\n> - Added 8 bpp and 10 bpp unpacked raw bayer input support (Hans)\n> - Use dma-buf for the output FrameBuffer-s (Andrey)\n> - Memcpy data from input FrameBuffers to a heap buffer on a line by line\n>   basis to speedup debayering from uncached mem (Hans)\n> - This addresses all \"open issues\" from the v1 posting\n> \n> Changes in v1 vs RFC-v2:\n> - Add and use SwStats[Cpu] and Debayer[Cpu] classes\n> - Rename linaro soft-IPA and soft-ISP implementations to simple following\n>   the simple pipeline hander\n> - Integrate Pavel's swstats and debayer improvements\n> \n> This has been tested on:\n> - Qualcomm RB5 board with a mezzanine board equipped with RPi camera v2 (Andrey)\n> - Lenovo x13s, sc8280xp (Bryan)\n> - Pinephone (Pavel)\n> - Debix Model A (Milan)\n> - Lenovo Thinkpad Yoga X1 yoga gen7/8, Alder Lake/Raptor Lake IPU6EP +\n>   ov2740 10bpp packed + unpacked (Dennis / Hans)\n> - Dell Latitude 9420, Tiger Lake IPU6 + ov01a1s (RGBI) sensor\n>   (Martti, requires IGIG_GBGR_IGIG_GRGB patches on top)\n> \n> git branch for this v2 patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v05\n> \n> git branch for v1 of the patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v04\n> \n> Old RFC-v2 cover-letter with small updates:\n> \n> Here is an implementation of Software ISP and Software IPA\n> which provide debayering and implementation of image processing\n> algorithms for systems without a hardware ISP, or in cases when\n> there are no public drivers for the hardware ISP present in the\n> system.\n> \n> The implementation of the Software ISP is a reference one.\n> A naive AWB alorithm is implemented as part of a function which\n> does debayering and statistics calculations - the algorithm part\n> is to be moved to the IPA in the next version of the patch set.\n> And for debayering itself there is already a more efficient\n> implementation by Hans de Goede. This patch set is currently using\n> the earlier debayering implementation as it is less lines of code\n> and is OK for the initial discussion.\n> Only RAW10P format from the sensor is currently supported, but\n> other debayering functions can be easily added (which of them to\n> call is decided based on the input format).\n> \n> The Software IPA has only auto exposure and AGC. For the AGC\n> the analogue gain control of the camera sensor is used (if\n> available). The algorithm is very much simplified, and is\n> mostly included as a reference code.\n> \n> The 6th patch renames some variables in the simple pipeline\n> handler for the Software ISP to use the same buffer handling\n> code as the Converter currently does. This lets one to\n> avoid adding extra code to the pipeline handler, but also\n> makes the Software ISP and the Converter mutually exclusive.\n> \n> The Software ISP / IPA are intended to be used with the simple\n> pipeline handler. The pipeline handler doesn't interact with\n> the Software IPA directly - the Software IPA is hidden behind\n> the Software ISP interface. To use the Software ISP the build\n> must be configured with\n>   -Dpipelines=simple/simple -Dipas=simple/simple\n> and the Converter must not be used (the latter is hardcoded\n> in the simple pipeline handler).\n> If the build is configured with just\n>   -Dpipelines=simple\n> the Software ISP / IPA are not used, and the simple pipeline\n> handler works in the same way as without this patchset.\n> \n> \"simple\" in the\n>   -Dpipelines=simple/simple -Dipas=simple/simple\n> is the name of the Software ISP / IPA implementation.\n>   -Dpipelines=simple/<something else> -Dipas=simple/<something else>\n> should work too if another implementation were added. What\n> implementation to use is the build time choice, only one\n> implementation is included into the build.\n> \n> This patch set uses SharedMemObject class used by the RPi pipeline\n> handler - the second patch in the series moves the header file\n> to a common directory.\n> \n> This patch set has been tested on Qualcomm RB5 board with\n> a mezzanine board equipped with RPi camera v2 (not the\n> standard RB5 camera mezzanine).\n> \n> git branch for the RFC-v2 patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v03\n> \n> RFC-v1 of the patch set:\n> https://patchwork.libcamera.org/cover/19262/\n> \n> Changes in RFC v2 vs RFC v1:\n> - patches are restructured and reordered\n> - the Software IPA is hidden behind the Software ISP interface. The\n>   pipeline handler doesn't interact with the Software IPA directly\n> - instantiation of the Software ISP / IPA is configurable (at build\n>   time)\n> - comment explaining the implementation limitations is added to\n>   SwIspLinaro::IspWorker::debayerRaw10P()\n> \n> Regards,\n> \n> Hans\n> \n> \n> \n> Andrey Konovalov (10):\n>   libcamera: pipeline: simple: fix size adjustment in validate()\n>   libcamera: internal: Move dma_heaps.[h,cpp] to common directories\n>   libcamera: dma_heaps: extend DmaHeap class to support system heap\n>   libcamera: internal: Move SharedMemObject class to a common directory\n>   libcamera: introduce SoftwareIsp class\n>   libcamera: ipa: add Soft IPA common files\n>   libcamera: ipa: Soft IPA: add a Simple Soft IPA implementation\n>   libcamera: software_isp: add Simple SoftwareIsp implementation\n>   libcamera: pipeline: simple: rename converterBuffers_ and related vars\n>   libcamera: pipeline: simple: enable use of Soft ISP and Soft IPA\n> \n> Dennis Bonke (1):\n>   libcamera: internal: Document the SharedMemObject class\n> \n> Hans de Goede (7):\n>   libcamera: software_isp: Add SwStats base class\n>   libcamera: software_isp: Add SwStatsCpu class\n>   libcamera: software_isp: Add Debayer base class\n>   libcamera: software_isp: Add DebayerCpu class\n>   libcamera: swstats_cpu: Add support for 8 and 10 bpp unpacked bayer\n>     input\n>   libcamera: debayer_cpu: Add support for 8 and 10 bpp unpacked bayer\n>     input\n>   libcamera: debayer_cpu: Add BGR888 output support\n> \n>  Documentation/Doxyfile.in                     |   1 +\n>  .../libcamera/internal}/dma_heaps.h           |  14 +-\n>  include/libcamera/internal/meson.build        |   4 +\n>  .../libcamera/internal}/shared_mem_object.h   |  57 +-\n>  include/libcamera/internal/software_isp.h     | 231 ++++++\n>  .../libcamera/internal/software_isp/debayer.h | 132 ++++\n>  .../internal/software_isp/debayer_cpu.h       | 141 ++++\n>  .../internal/software_isp/debayer_params.h    |  43 ++\n>  .../internal/software_isp/meson.build         |  11 +\n>  .../internal/software_isp/swisp_simple.h      | 163 +++++\n>  .../internal/software_isp/swisp_stats.h       |  34 +\n>  .../libcamera/internal/software_isp/swstats.h | 215 ++++++\n>  .../internal/software_isp/swstats_cpu.h       |  51 ++\n>  include/libcamera/ipa/meson.build             |   1 +\n>  include/libcamera/ipa/soft.mojom              |  29 +\n>  meson_options.txt                             |   3 +-\n>  src/ipa/simple/common/meson.build             |  17 +\n>  src/ipa/simple/common/soft_base.cpp           |  73 ++\n>  src/ipa/simple/common/soft_base.h             |  50 ++\n>  src/ipa/simple/meson.build                    |  12 +\n>  src/ipa/simple/simple/data/meson.build        |   9 +\n>  src/ipa/simple/simple/data/soft.conf          |   3 +\n>  src/ipa/simple/simple/meson.build             |  26 +\n>  src/ipa/simple/simple/soft_simple.cpp         | 273 ++++++++\n>  .../{pipeline/rpi/vc4 => }/dma_heaps.cpp      |  55 +-\n>  src/libcamera/meson.build                     |   3 +\n>  src/libcamera/pipeline/rpi/vc4/meson.build    |   1 -\n>  src/libcamera/pipeline/rpi/vc4/vc4.cpp        |   5 +-\n>  src/libcamera/pipeline/simple/simple.cpp      | 177 +++--\n>  src/libcamera/software_isp.cpp                |  62 ++\n>  src/libcamera/software_isp/debayer.cpp        |  22 +\n>  src/libcamera/software_isp/debayer_cpu.cpp    | 661 ++++++++++++++++++\n>  src/libcamera/software_isp/meson.build        |  27 +\n>  src/libcamera/software_isp/swisp_simple.cpp   | 238 +++++++\n>  src/libcamera/software_isp/swstats.cpp        |  22 +\n>  src/libcamera/software_isp/swstats_cpu.cpp    | 261 +++++++\n>  36 files changed, 3035 insertions(+), 92 deletions(-)\n>  rename {src/libcamera/pipeline/rpi/vc4 => include/libcamera/internal}/dma_heaps.h (65%)\n>  rename {src/libcamera/pipeline/rpi/common => include/libcamera/internal}/shared_mem_object.h (62%)\n>  create mode 100644 include/libcamera/internal/software_isp.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer_cpu.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer_params.h\n>  create mode 100644 include/libcamera/internal/software_isp/meson.build\n>  create mode 100644 include/libcamera/internal/software_isp/swisp_simple.h\n>  create mode 100644 include/libcamera/internal/software_isp/swisp_stats.h\n>  create mode 100644 include/libcamera/internal/software_isp/swstats.h\n>  create mode 100644 include/libcamera/internal/software_isp/swstats_cpu.h\n>  create mode 100644 include/libcamera/ipa/soft.mojom\n>  create mode 100644 src/ipa/simple/common/meson.build\n>  create mode 100644 src/ipa/simple/common/soft_base.cpp\n>  create mode 100644 src/ipa/simple/common/soft_base.h\n>  create mode 100644 src/ipa/simple/meson.build\n>  create mode 100644 src/ipa/simple/simple/data/meson.build\n>  create mode 100644 src/ipa/simple/simple/data/soft.conf\n>  create mode 100644 src/ipa/simple/simple/meson.build\n>  create mode 100644 src/ipa/simple/simple/soft_simple.cpp\n>  rename src/libcamera/{pipeline/rpi/vc4 => }/dma_heaps.cpp (54%)\n>  create mode 100644 src/libcamera/software_isp.cpp\n>  create mode 100644 src/libcamera/software_isp/debayer.cpp\n>  create mode 100644 src/libcamera/software_isp/debayer_cpu.cpp\n>  create mode 100644 src/libcamera/software_isp/meson.build\n>  create mode 100644 src/libcamera/software_isp/swisp_simple.cpp\n>  create mode 100644 src/libcamera/software_isp/swstats.cpp\n>  create mode 100644 src/libcamera/software_isp/swstats_cpu.cpp\n>","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 40C85C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 13 Jan 2024 14:35:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 86EC2628B7;\n\tSat, 13 Jan 2024 15:35:58 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 46A4361D57\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Jan 2024 15:35:57 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-435-3NxA75M4NSmYYad-7IK1hw-1; Sat, 13 Jan 2024 09:35:54 -0500","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-40e530b7596so37670735e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Jan 2024 06:35:54 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\th6-20020a170906584600b00a2aef1e0731sm2917860ejs.77.2024.01.13.06.35.51\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSat, 13 Jan 2024 06:35:52 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1705156558;\n\tbh=sCfRFBkCB7IPuZR+3OhmYAUJO7jlrRrO0P+pVENIpsM=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=1wzVLZVwqNz6qtI+sPwnX/wFgpeqnlkyzFGJ7qfJXTrwA4n7SgI1j9kIrRGB+YMQH\n\t7uCFVMyzjEkpb61c3OnsRO9HEv6iNSE0RyktfAtYvhAfN+/dKWr9IV5CrXoWXYVNi2\n\tNdW3SmAmvTreXHW7jhx/5ilSPYHQMxHUt+rygSARVwwnF1wlFD2fzjC5M4S1wI0h6N\n\tsTKbjroUq3h3PHzJf1qWLKbM0fZxV7EoVsUX3O05zWaWkNQbX8/FZ8YsMjFXgwFMXL\n\tquKvtwxxS0B5srgZPbhdSsrMpB5ctt3jwMF1OX3Jo1pMMGgHKe2nfQ7CWaw67LmHbp\n\tJM1zpcdSnwXKg==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1705156556;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=y7uRYbuXlfoTUB4972FhHjeVgpMphtP4YXAiFncWHt0=;\n\tb=cVa0XbmVc/1o2bNXAiiTKZtQiP4D2YJLJ1toVBB47wel4Ry5+Xak2fpwTEfB3nXKZLRD7S\n\tIAkDwHkMwm4Wzik4Mc+1Q5sx9W9FzQXnWFyoYMIXo9NqaEcnjnTd+KRGaEOc0L5FN2OV07\n\t9/C8XuE6GaXQepwyE9RAz/A1x7J0PFk="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=redhat.com\n\theader.i=@redhat.com header.b=\"cVa0XbmV\"; \n\tdkim-atps=neutral","X-MC-Unique":"3NxA75M4NSmYYad-7IK1hw-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705156553; x=1705761353;\n\th=content-transfer-encoding:in-reply-to:from:references:cc:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=y7uRYbuXlfoTUB4972FhHjeVgpMphtP4YXAiFncWHt0=;\n\tb=Snl3/w+TuuPAcQn1Kv0G3kiALUf0nmjj768hJjmr/0wca2EoA1EAdfpjRb22O7rct8\n\tOaxKmEl1DLZlYUTk21jL+MglaFFXsDIVRXvdMq4Zr9BylxI9YOPcHEw4BF1szct3AUfj\n\t182bd9dPC09cnQFPE3CdPEqyD2Xy8E9X7eiE6gTIo12l65WGD/vPmDFj4y+pb4vP54zm\n\tRnEP3Vk0Vjiqs+Kb8YM1pilk21whHy6h2G4zW7RN7shtZDOLUDYE1ghMb76GH1CKyBeY\n\tE6IZ+2pNkuOOJ0jcxdG1nFvIhsQeMVh9dYkVZdODLMk8+MspYP6z1Ld3YR+SejfTbnf4\n\t5jDA==","X-Gm-Message-State":"AOJu0YyGhgtTpGVUOX4QVOcIGitO5CZDipv4PYw5V36JNV73WyTlP8X3\n\ttyn9vMcINbCMp6r0VQSua7YrA0i+ucOZvHp1pMtxyUvy+KI3NVql73t6EWfA+hAAFi4xZkBfK6r\n\tb2wkwSI+pCbomMF/o7GSMRVtxKuTreq7XJtLBhd+NUDVIeU5GlExG/H36m94etqe0dMg8f4usb/\n\tQaQzY7sKARinFxe7KtkThfXrFQUQ==","X-Received":["by 2002:a05:600c:19d2:b0:40d:5f62:757a with SMTP id\n\tu18-20020a05600c19d200b0040d5f62757amr1745626wmq.176.1705156553025; \n\tSat, 13 Jan 2024 06:35:53 -0800 (PST)","by 2002:a05:600c:19d2:b0:40d:5f62:757a with SMTP id\n\tu18-20020a05600c19d200b0040d5f62757amr1745613wmq.176.1705156552614; \n\tSat, 13 Jan 2024 06:35:52 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IFrH+syqh2LU4gWqgmgftxKO+cAV/NpMGI1vpZ6iFBF/k7fGH5WS9x6fvYBG9x7HE272xKS4w==","Message-ID":"<cc150fe9-7ee9-4039-9361-188b4db9effe@redhat.com>","Date":"Sat, 13 Jan 2024 15:35:51 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","To":"libcamera-devel@lists.libcamera.org,\n\tAndrey Konovalov <andrey.konovalov.ynk@gmail.com>","References":"<20240113142218.28063-1-hdegoede@redhat.com>","In-Reply-To":"<20240113142218.28063-1-hdegoede@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US, nl","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 00/18] libcamera: introduce\n\tSoftware ISP and Software IPA","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>","From":"Hans de Goede via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Hans de Goede <hdegoede@redhat.com>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, srinivas.kandagatla@linaro.org,\n\tPavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28463,"web_url":"https://patchwork.libcamera.org/comment/28463/","msgid":"<3c43f20d-2311-4e48-afec-6e2f17babe7c@redhat.com>","date":"2024-01-14T16:19:45","subject":"Re: [libcamera-devel] [PATCH v2 00/18] libcamera: introduce\n\tSoftware ISP and Software IPA","submitter":{"id":102,"url":"https://patchwork.libcamera.org/api/people/102/","name":"Hans de Goede","email":"hdegoede@redhat.com"},"content":"Hi,\n\nOn 1/13/24 15:22, Hans de Goede wrote:\n> Hi All,\n> \n> Here is v2 of the patch-set to add Software ISP support\n> to libcamera / to the simple pipeline-handler.\n> \n> Changes in v2 vs v1:\n> - Integrated Dennis, Martti and Toon's auto-exposure algorithm\n>   based on the paper which they found which gives us a nice\n>   relatively simple AEC + AGC algorithm\n>   TODO: Add link to paper to source + commit-message\n\nFor those interested the paper is here:\nhttps://www.araa.asn.au/acra/acra2007/papers/paper84final.pdf\n\nRegards,\n\nHans","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 61161C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 14 Jan 2024 16:19:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B5C1D628B7;\n\tSun, 14 Jan 2024 17:19:52 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 34E9C628AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 14 Jan 2024 17:19:51 +0100 (CET)","from mail-ej1-f70.google.com (mail-ej1-f70.google.com\n\t[209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-581-uaxoJgwSOeuydldycmnPWQ-1; Sun, 14 Jan 2024 11:19:48 -0500","by mail-ej1-f70.google.com with SMTP id\n\ta640c23a62f3a-a26f2da3c7bso330711066b.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 14 Jan 2024 08:19:48 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\ty25-20020a170906471900b00a2d7de7641fsm1137058ejq.41.2024.01.14.08.19.45\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tSun, 14 Jan 2024 08:19:46 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1705249192;\n\tbh=Je/1Y9VCZOdKB5ZWazdJU3dfvRbo3FRfr4YShzgY6q0=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=wxzR/6mzbCCaZaduTrIA4e9/cJ1LTMy3SCjJLnQ8f/LW4W09svZyK+lp8BvEujLBA\n\tKef5slj4AJMtGpCIgsN2H/FxZTnl4gdqLWtXOYZyws71ExCB9cpOIBG1LchF1yi9c0\n\tJtCNzYlSwi7AVXO9XVj6TspjYB3BbjcW/KK0zA3RlwGCRBXmEu7QfwasiCGX44Fzlf\n\thEhh4PLCnNgXu/4Fj/vjvNiVxaUsSXpZd/HVv0aL6FGj7rnrL+aTlZ0xMLY5CVtg4S\n\trr5pHaXz89UQDYCG9jlXmQi8KPFCPdIukgCbxxbGutNbn+fRjMTfU16D1ea9Ze78CI\n\t5a3oLXA3Di+iQ==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1705249189;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=htdEHydG3mrbIc1CNMoI3L7bHJYXWZzaHtjbB2nowMQ=;\n\tb=a1iGkr5qv47og3ZDItOKq99gXVELfAyiGKHWFS+xhbZ++43e8DSS/00fXEVtOSZUeIdc6X\n\tcesTFKNAeTBwBc2GtU4gKledqWgcQuO18tQQTLpTRz+dXVtk271OFBM2cAIZshVWQYCSGe\n\trM82xkcpJpGONJ9MKrKAQ1QU5Bzw7cI="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=redhat.com\n\theader.i=@redhat.com header.b=\"a1iGkr5q\"; \n\tdkim-atps=neutral","X-MC-Unique":"uaxoJgwSOeuydldycmnPWQ-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705249187; x=1705853987;\n\th=content-transfer-encoding:in-reply-to:from:references:cc:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=htdEHydG3mrbIc1CNMoI3L7bHJYXWZzaHtjbB2nowMQ=;\n\tb=IdaaEE3urnOceWvO3Exf4UyDcad4RgU6x8oHFy7S0fCxjp8XNQjQuCQrT5Cd8Wr+7o\n\tNDfiziYO3abvWHy7GbwyqLypVCpEC+81SPGU1TJ2183SigQKfMiDIpYMewtRZ0tN5Lc2\n\t7Z4Q2lmaEBKG3gddwnE1rJWcUU12abu/Ks9pQbiK4QCyZLXu9HFE5jxjPXmt5z9Ts8re\n\th+IhGwI4TeQJ+nUNqj9o9P1PCStgNvRVoFTJiJUH1/CuOGSF4qZGtBM37zBC54AtGfHc\n\t8/5WTGfDpDG6V+VDY12WbrhQxIL6ren4f4HcwDIiyQ5No7GhHfQPPbDdRi+Sr2CdkZr/\n\tXW0Q==","X-Gm-Message-State":"AOJu0YwaLYG+aLFrvwTD6JR7A+V4EM7b9auv+qIylQjOxzwyihfYYpqd\n\tIoaYny7L1RmdfBaOu3ivatG2Xyu18SHd+hCMoLIt+v1AI319lXYVs32My05QoENGMg4VCXI97Jh\n\trxc7lQPNiTO5KmCg4tAguAxH/Kfd7eMWtvd5uxXfFI0EPClOPYfxvEg3VU8S7hUhjzxb3l7Z0xU\n\tWW63uARTEAWoX95cagtPR1nBUDVw==","X-Received":["by 2002:a17:906:35cf:b0:a2d:5a09:299c with SMTP id\n\tp15-20020a17090635cf00b00a2d5a09299cmr761334ejb.121.1705249187047; \n\tSun, 14 Jan 2024 08:19:47 -0800 (PST)","by 2002:a17:906:35cf:b0:a2d:5a09:299c with SMTP id\n\tp15-20020a17090635cf00b00a2d5a09299cmr761319ejb.121.1705249186676; \n\tSun, 14 Jan 2024 08:19:46 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IHiZQCCFgf5TThj6VZ/D3hvPo/Prycva4hdCBi5ESujnnp4kjioQ9UIHoHTKQ/v5/SrCLYUYw==","Message-ID":"<3c43f20d-2311-4e48-afec-6e2f17babe7c@redhat.com>","Date":"Sun, 14 Jan 2024 17:19:45 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","To":"libcamera-devel@lists.libcamera.org,\n\tAndrey Konovalov <andrey.konovalov.ynk@gmail.com>","References":"<20240113142218.28063-1-hdegoede@redhat.com>","In-Reply-To":"<20240113142218.28063-1-hdegoede@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US, nl","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 00/18] libcamera: introduce\n\tSoftware ISP and Software IPA","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>","From":"Hans de Goede via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Hans de Goede <hdegoede@redhat.com>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, srinivas.kandagatla@linaro.org,\n\tPavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28469,"web_url":"https://patchwork.libcamera.org/comment/28469/","msgid":"<ZaQXrwUsT++iQSiE@duo.ucw.cz>","date":"2024-01-14T17:19:43","subject":"Re: [libcamera-devel] [PATCH v2 00/18]","submitter":{"id":49,"url":"https://patchwork.libcamera.org/api/people/49/","name":"Pavel Machek","email":"pavel@ucw.cz"},"content":"Hi!\n\n> Here is v2 of the patch-set to add Software ISP support\n> to libcamera / to the simple pipeline-handler.\n\nThanks for the series. I had some minor comments; stuff I did not\ncomment on was okay, so you can add Reviewed-by: Pavel Machek\n<pavel@ucw.cz>.\n\nBest regards,\n\t\t\t\t\t\t\tPavel","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 4C7E0BEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 14 Jan 2024 17:19:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F0444628B8;\n\tSun, 14 Jan 2024 18:19:44 +0100 (CET)","from jabberwock.ucw.cz (jabberwock.ucw.cz [46.255.230.98])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 33792628AE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 14 Jan 2024 18:19:44 +0100 (CET)","by jabberwock.ucw.cz (Postfix, from userid 1017)\n\tid EE8EC1C0077; Sun, 14 Jan 2024 18:19:43 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1705252785;\n\tbh=Uau29BBYqqjnI3sR5pFrn+NI1lqGiMJQBCSav2r/WWU=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=HxPNoYb+TEg4SK/Nv3lT9lJ9yNh70kMZw+F0fy6mue63cIKeeId22J9XfgpHXoQJP\n\tKWBkaCFF6QaaUWpNAYKmXppUL8Akd5PTlgb2gJcKKsO6mC/DuhEfPEWvE5VV8PQt0y\n\tvrZYdANlE4ZV7mM+agvdFxbif72A5H9PdM0ZeE5VjoHwfQ3/M/6/VEz1L2xqm4RfHO\n\tDVbJwV3lcSazf8mV1X8ecnYkZ/UlLXVd2Vbr4+MOFdIoF78GnZx04eKq0R8IXTCXrM\n\tUAICnbjT2ef5hrtJDiAEUY3iOqe7RAilIQVOR1XmrX2/amBhpUDYNCH9WrTkJY9ky4\n\t3o4LQ1IW+6gZg==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=ucw.cz; s=gen1;\n\tt=1705252783;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=o3C4TyDd4+hv3iI708pAmu5N9hn3PFnyq9u59NlBbpM=;\n\tb=gkhzumC6agGvE9S1SBtU17NFbZX1nEL5sF9FKyCHFoK7k2akcC9NNZ5v1GNJKWetMkSThM\n\tdicRMpTRmYArwhnDxPIk6ewTCskw8hqF5wRWtoIJME2CPYa8cxbO0+wFj/lddKw8zAUe1W\n\tJ8IW4R58OK1QhGo5vr5xmzqzST52DG0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ucw.cz header.i=@ucw.cz\n\theader.b=\"gkhzumC6\"; dkim-atps=neutral","Date":"Sun, 14 Jan 2024 18:19:43 +0100","To":"Hans de Goede <hdegoede@redhat.com>","Message-ID":"<ZaQXrwUsT++iQSiE@duo.ucw.cz>","References":"<20240113142218.28063-1-hdegoede@redhat.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tprotocol=\"application/pgp-signature\"; boundary=\"KCO9xwblzDMKNZih\"","Content-Disposition":"inline","In-Reply-To":"<20240113142218.28063-1-hdegoede@redhat.com>","Subject":"Re: [libcamera-devel] [PATCH v2 00/18]","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>","From":"Pavel Machek via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Pavel Machek <pavel@ucw.cz>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, libcamera-devel@lists.libcamera.org,\n\tsrinivas.kandagatla@linaro.org,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28544,"web_url":"https://patchwork.libcamera.org/comment/28544/","msgid":"<e0b939f3-03c6-4474-919a-b4b1b173d8bc@redhat.com>","date":"2024-01-22T16:32:16","subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","submitter":{"id":102,"url":"https://patchwork.libcamera.org/api/people/102/","name":"Hans de Goede","email":"hdegoede@redhat.com"},"content":"Hi All,\n\nSo during our last video conference about the Software ISP Laurent\nrequested some docs on how the performance of the Software ISP has\nbeen measured so far.\n\nI have written the following patch (to be included in v3) for this:\nhttps://github.com/jwrdegoede/libcamera/commit/94377ed500d8bb031d312c0f88cfa5d0905fd222\n\nAnd since reading documentation in patch format sucks I have also\njust put the full restructured-text below.\n\nIf you have time please take a look and provide feedback before\nv3 eventually gets posted with this included.\n\nRegards,\n\nHans\n\n\n.. SPDX-License-Identifier: CC-BY-SA-4.0\n\n.. _software-isp-benchmarking:\n\nSoftware ISP benchmarking\n=========================\n\nThe Software ISP is paricular sensitive to performance regressions\ntherefor it is a good idea to always benchmark the Software ISP\nbefore and after making changes to it and ensure that there are\nno performance regressions.\n\nDebayerCpu class builtin benchmark\n----------------------------------\n\nThe DebayerCpu class has a builtin benchmark. This benchmark\nmeasures the time spend on processing (collecting statistics\nand debayering) only, it does not measure the time spend on\ncapturing or outputting the frames.\n\nThe builtin benchmark always runs. So this can be used by simply\nrunning \"cam\" or \"qcam\" with a pipeline using the Software ISP.\n\nWhen it runs it will skip measuring the first 30 frames to\nallow the caches and the CPU temperature (turbo-ing) to warm-up\nand then it measures 30 fps and shows the total and per frame\nprocessing time using an info level log message:\n\n.. code-block::\n\n   INFO Debayer debayer_cpu.cpp:907 Processed 30 frames in 244317us, 8143 us/frame\n\nTo get stable measurements it is advised to disable any other processes which\nmay cause significant CPU usage (e.g. disable wifi, bluetooth and browsers).\nWhen possible it is also advisable to disable CPU turbo-ing and\nfrequency-scaling.\n\nFor example when benchmarking on a Lenovo ThinkPad X1 Yoga Gen 8, with\nthe charger plugged in, the CPU can be fixed to run at 2 GHz using:\n\n.. code-block::\n\n   sudo x86_energy_perf_policy --turbo-enable 0\n   sudo cpupower frequency-set -d 2GHz -u 2GHz\n\nwith these settings the builtin bench reports a processing time of ~7.8ms/frame\non this laptop for FHD SGRBG10 (unpacked) bayer data.\n\nMeasuring power consumption\n---------------------------\n\nSince the Software ISP is often used on mobile devices it is also\nimportant to measure power consumption and ensure that that does\nnot regress.\n\nFor example to measure power consumption on a Lenovo ThinkPad X1 Yoga Gen 8\nit needs to be running on battery and it should be configured with its\nplatform-profile (/sys/firmware/acpi/platform_profile) set to balanced and\nwith its default turbo and frequency-scaling behavior to match real world usage.\n\nThen start qcam to capture a FHD picture at 30 fps and position the qcam window\nso that it is fully visible. After this run the following command to monitor\nthe power consumption:\n\n.. code-block::\n\n   watch -n 10 cat /sys/class/power_supply/BAT0/power_now /sys/class/hwmon/hwmon6/fan?_input\n\nNote this not only measures the power consumption in ųW it also monitors\nthe speed of this laptop's 2 fans. This is important because depending on\nthe ambient temperature the 2 fans may spin up while testing and this\nwill cause an additional power consumption of approx. 0.5W messing up\nthe measurement.\n\nAfter starting qcam + the watch command let the laptop sit without using\nit for 2 minutes for the readings to stabilize. Then check that the fans\nhave not turned on and manually take a couple of consecutive power readings\nand avarage these.\n\nOn the example Lenovo ThinkPad X1 Yoga Gen 8 laptop this results in\na measured power consumption of approx. 13W while running qcam versus\napprox. 4-5W while setting idle with its OLED panel on.","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 511FBC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jan 2024 16:32:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EB55A62936;\n\tMon, 22 Jan 2024 17:32:22 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A6157628B7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 17:32:21 +0100 (CET)","from mail-ej1-f71.google.com (mail-ej1-f71.google.com\n\t[209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-511-zLwAYkUeOoqnl_buLMVx5g-1; Mon, 22 Jan 2024 11:32:19 -0500","by mail-ej1-f71.google.com with SMTP id\n\ta640c23a62f3a-a2f71c83b7eso214636466b.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 08:32:19 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\ta1-20020a170906190100b00a2689e28445sm13507389eje.106.2024.01.22.08.32.16\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tMon, 22 Jan 2024 08:32:17 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"bpSLnRTY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1705941140;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=NzQBJAcksvANsEWBoLPufTnE0E6EVwHm/sSlmhEXABI=;\n\tb=bpSLnRTYRWiNN1CsfBa4Jv0mmi+vojRS3A+EJaekPRtijQ4jS4CJAmWqknPhnG0QWszlER\n\tj5OSjkU4+oE8KkTHYoumoKAIUpqSUHrUz76oAY7KhiOY11oVXTP9e+ziyxb43mRBt68lEx\n\t9zx+fmDc90E3aJLxoZo/HkPrfo5thbc=","X-MC-Unique":"zLwAYkUeOoqnl_buLMVx5g-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705941138; x=1706545938;\n\th=content-transfer-encoding:in-reply-to:from:references:cc:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=NzQBJAcksvANsEWBoLPufTnE0E6EVwHm/sSlmhEXABI=;\n\tb=KrwyY8TYOnt/U9vqWVjxEqhkwyr7UeFvWigBz9iT/oKX9ZVnVW3IKIa4wsgtGZWfgr\n\t4shuPTcGaQ9/6EuGhq0rwfxd+WMfisiDkOtQaGa22Ew9CXcZx870OJsKCSWJyJwuH8VP\n\t+YsBIgEEsmwV9ELVBLamEfF8AkumdMHe+C6/ikBjezya4UKjKtYFeykVdgiydyO/zOoo\n\tAuzfIWz8WrhT+bG3F6gCZFuNn92Sq6yG0yV9bwO1c2D4mPwc05GtPEyNeBH/G90dkJ7A\n\t0FzLxifBg98/+LGwuSB156qWX8w2WF4Y6U3fLk0FtnQVEygB8QKLaHaFZZY59zLIlXUe\n\tHyQQ==","X-Gm-Message-State":"AOJu0Yy5z9sGkIJu4Ul0KCJL1wotoW2edXiv6+ywb/FONgE2Pqgvh6z0\n\tUUIh/9LldUngCDTpkBkaIT/EfCMHoC1mwpHF1nK51ye570LzQ48w4RZD4MfeFlU+tQHlnMkJ06H\n\tewr1GzDuvhiBu8ieyjIMY5MLO9+BchgOBiItOxhfuhLjie8fQBxvUTVIxIbc4XguJo4sGO1srqG\n\tqF1iwZPsRPRTgblVcslaV/N/GEF0JkdvBh7mm/37Uc53b/PaZrrpM+FW8=","X-Received":["by 2002:a17:906:68c9:b0:a30:8471:1767 with SMTP id\n\ty9-20020a17090668c900b00a3084711767mr350412ejr.21.1705941137952; \n\tMon, 22 Jan 2024 08:32:17 -0800 (PST)","by 2002:a17:906:68c9:b0:a30:8471:1767 with SMTP id\n\ty9-20020a17090668c900b00a3084711767mr350395ejr.21.1705941137565; \n\tMon, 22 Jan 2024 08:32:17 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IHs4c4BJ0cMO89agWSGjxLLhV6gVQUfHj2Hh83ybp9KJASCtHufpOhpupgNvoSAIKsALCqrAg==","Message-ID":"<e0b939f3-03c6-4474-919a-b4b1b173d8bc@redhat.com>","Date":"Mon, 22 Jan 2024 17:32:16 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","To":"libcamera-devel@lists.libcamera.org,\n\tAndrey Konovalov <andrey.konovalov.ynk@gmail.com>","References":"<20240113142218.28063-1-hdegoede@redhat.com>","From":"Hans de Goede <hdegoede@redhat.com>","In-Reply-To":"<20240113142218.28063-1-hdegoede@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US, nl","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","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>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, srinivas.kandagatla@linaro.org,\n\tPavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28588,"web_url":"https://patchwork.libcamera.org/comment/28588/","msgid":"<87wms09q10.fsf@redhat.com>","date":"2024-01-23T12:45:47","subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hans de Goede <hdegoede@redhat.com> writes:\n\n> Hi All,\n>\n> So during our last video conference about the Software ISP Laurent\n> requested some docs on how the performance of the Software ISP has\n> been measured so far.\n>\n> I have written the following patch (to be included in v3) for this:\n> https://github.com/jwrdegoede/libcamera/commit/94377ed500d8bb031d312c0f88cfa5d0905fd222\n>\n> And since reading documentation in patch format sucks I have also\n> just put the full restructured-text below.\n>\n> If you have time please take a look and provide feedback before\n> v3 eventually gets posted with this included.\n\nThank you for writing it down, a couple of comments below.\n\n> Regards,\n>\n> Hans\n>\n>\n> .. SPDX-License-Identifier: CC-BY-SA-4.0\n>\n> .. _software-isp-benchmarking:\n>\n> Software ISP benchmarking\n> =========================\n>\n> The Software ISP is paricular sensitive to performance regressions\n                      ^^^^^^^^^\n> therefor it is a good idea to always benchmark the Software ISP\n  ^^^^^^^^\n\nIt would be useful to run a spell checker on the document.\n\n> before and after making changes to it and ensure that there are\n> no performance regressions.\n>\n> DebayerCpu class builtin benchmark\n> ----------------------------------\n>\n> The DebayerCpu class has a builtin benchmark. This benchmark\n> measures the time spend on processing (collecting statistics\n> and debayering) only, it does not measure the time spend on\n                                                     ^^^^^\n\nspent\n\n> capturing or outputting the frames.\n>\n> The builtin benchmark always runs. So this can be used by simply\n> running \"cam\" or \"qcam\" with a pipeline using the Software ISP.\n>\n> When it runs it will skip measuring the first 30 frames to\n> allow the caches and the CPU temperature (turbo-ing) to warm-up\n> and then it measures 30 fps and shows the total and per frame\n> processing time using an info level log message:\n>\n> .. code-block::\n>\n>    INFO Debayer debayer_cpu.cpp:907 Processed 30 frames in 244317us, 8143 us/frame\n>\n> To get stable measurements it is advised to disable any other processes which\n> may cause significant CPU usage (e.g. disable wifi, bluetooth and browsers).\n> When possible it is also advisable to disable CPU turbo-ing and\n> frequency-scaling.\n>\n> For example when benchmarking on a Lenovo ThinkPad X1 Yoga Gen 8, with\n> the charger plugged in, the CPU can be fixed to run at 2 GHz using:\n>\n> .. code-block::\n>\n>    sudo x86_energy_perf_policy --turbo-enable 0\n>    sudo cpupower frequency-set -d 2GHz -u 2GHz\n>\n> with these settings the builtin bench reports a processing time of ~7.8ms/frame\n> on this laptop for FHD SGRBG10 (unpacked) bayer data.\n>\n> Measuring power consumption\n> ---------------------------\n>\n> Since the Software ISP is often used on mobile devices it is also\n> important to measure power consumption and ensure that that does\n> not regress.\n>\n> For example to measure power consumption on a Lenovo ThinkPad X1 Yoga Gen 8\n> it needs to be running on battery and it should be configured with its\n> platform-profile (/sys/firmware/acpi/platform_profile) set to balanced and\n> with its default turbo and frequency-scaling behavior to match real world usage.\n>\n> Then start qcam to capture a FHD picture at 30 fps and position the qcam window\n> so that it is fully visible. After this run the following command to monitor\n> the power consumption:\n>\n> .. code-block::\n>\n>    watch -n 10 cat /sys/class/power_supply/BAT0/power_now /sys/class/hwmon/hwmon6/fan?_input\n>\n> Note this not only measures the power consumption in ųW it also monitors\n> the speed of this laptop's 2 fans. This is important because depending on\n> the ambient temperature the 2 fans may spin up while testing and this\n> will cause an additional power consumption of approx. 0.5W messing up\n> the measurement.\n>\n> After starting qcam + the watch command let the laptop sit without using\n> it for 2 minutes for the readings to stabilize. Then check that the fans\n> have not turned on and manually take a couple of consecutive power readings\n> and avarage these.\n\nI think this kind of test can be influenced by many circumstances (besides those\nalready mentioned the current battery state and its interpretation by the\nbattery firmware).  Which means it's important to measure before and after\nchanges alternately several times and to see whether the measurements are\nstable.  Maybe it was meant to be done this way but it's not clear from the\ntext.\n\nIs using a watt meter an option or another measurable external source?  At least\nsuch high values as those cited below should be reasonably measurable and it\nwould allow to make measurements on devices without battery (if it is any useful\nthere).  Of course, the same constraints and advice apply and it may not be\nmeasurable automatically this way.\n\nAnd doesn't modern hardware provide means to get such values?\n\n(IIRC it has been discussed at one of the meetings but I don't remember what has\nbeen said there; I'm sure others can provide better informed comments.)\n\n> On the example Lenovo ThinkPad X1 Yoga Gen 8 laptop this results in\n> a measured power consumption of approx. 13W while running qcam versus\n> approx. 4-5W while setting idle with its OLED panel on.","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 4AA18BDC71\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 23 Jan 2024 12:45:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C497262944;\n\tTue, 23 Jan 2024 13:45:53 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CE802628E9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Jan 2024 13:45:52 +0100 (CET)","from mail-wm1-f71.google.com (mail-wm1-f71.google.com\n\t[209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-322-ywcaK7J4M9GBWhoq0vCSSg-1; Tue, 23 Jan 2024 07:45:50 -0500","by mail-wm1-f71.google.com with SMTP id\n\t5b1f17b1804b1-40e74771019so41192165e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Jan 2024 04:45:50 -0800 (PST)","from nuthatch (nat-pool-brq-t.redhat.com. [213.175.37.10])\n\tby smtp.gmail.com with ESMTPSA id\n\tf18-20020a05600c155200b0040d87100733sm42608289wmg.39.2024.01.23.04.45.47\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 23 Jan 2024 04:45:47 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"c+Q4KKVk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1706013951;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=/ZMZ7Ma2l0Qw61C2daLakWCn/n4n3SfMu2dEyNpAias=;\n\tb=c+Q4KKVkEKAAIBM5R7LpgdWaEkWgq4XqLg5wtbbxjTY4DmSr3V6mNh/NlKLeO1WuDVOVxn\n\tNq8nwMdBMNcta0YDR6cxNYdrpY4XXzX7fQNklxQN8UTHLJkmQGUH/QdOxmKkGTs4ytU0aN\n\tv6SDLZtr0JbVAEsAFal9gyPNgCeFDKg=","X-MC-Unique":"ywcaK7J4M9GBWhoq0vCSSg-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1706013949; x=1706618749;\n\th=content-transfer-encoding:mime-version:user-agent:message-id:date\n\t:references:in-reply-to:subject:cc:to:from:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=0vTOdScHRjYUnFuaTDxtxvwsqEEqt+W9GX5jfA6zDx0=;\n\tb=MvNmhGaH7HHUW18HZuldRFRLY8lH1rzOhJhjMjEY0RrMzS6rpuevScfGGqCkYvqm2R\n\tGMXYlGjqbvidL3RI5FpS6CeAsA1KhT4RAdlw1BmwQjDkY7K2rRVmmAj/zsTkWJNrXd6r\n\t/xDcU431I7rbZw5AXO5TLJM1EHBhDFwGQhCcVrZ9EohuYyCzSnD9fF+xf+nem1wCPLZA\n\tt7lczZoXlBbvD2DWvzlOS/tU13T6+7B4jGy5KAip6OqJ6ns2TX0LvoNvdS79Lx73x3uy\n\teohx2PYw4ueI3PNPaRifsb/TtKMf5NfNucZApJbt/kDMq1wWBPU2VoRuX5aDM0fOhdFp\n\tayRQ==","X-Gm-Message-State":"AOJu0YxAmGEujSATKQ9PzwgSPYlH+ebQSF1tRrL+xVHB1mMYktQDRTqK\n\tu2HQ15d7uUjlbe2TLaPCOOjJ71bYAiKHLj4nQaxZBbRIN01I+q7lSBZRMrwey9RdAS2RboJKv/N\n\twCA67aGM28Rd6+R5FSyM9Gk0IpfY2WMgRpbNIhXqLsHfMT5EJJ/TpEmQJdOFaXIG19RBBakc=","X-Received":["by 2002:a05:600c:3504:b0:40e:aaa2:5c18 with SMTP id\n\th4-20020a05600c350400b0040eaaa25c18mr287558wmq.89.1706013949062; \n\tTue, 23 Jan 2024 04:45:49 -0800 (PST)","by 2002:a05:600c:3504:b0:40e:aaa2:5c18 with SMTP id\n\th4-20020a05600c350400b0040eaaa25c18mr287548wmq.89.1706013948701; \n\tTue, 23 Jan 2024 04:45:48 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IGJSL3WALzdbbj/0FJvoDTLBLdQhCc6lDWsQw3BrFvWqwE3xXtQFhlmtQtNl+03McBkmIJLuA==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Hans de Goede <hdegoede@redhat.com>","Subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","In-Reply-To":"<e0b939f3-03c6-4474-919a-b4b1b173d8bc@redhat.com> (Hans de\n\tGoede's message of \"Mon, 22 Jan 2024 17:32:16 +0100\")","References":"<20240113142218.28063-1-hdegoede@redhat.com>\n\t<e0b939f3-03c6-4474-919a-b4b1b173d8bc@redhat.com>","Date":"Tue, 23 Jan 2024 13:45:47 +0100","Message-ID":"<87wms09q10.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","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>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, libcamera-devel@lists.libcamera.org,\n\tsrinivas.kandagatla@linaro.org, Pavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28642,"web_url":"https://patchwork.libcamera.org/comment/28642/","msgid":"<6a68ae8c-dcf1-46b2-b270-0b0f9f414b61@redhat.com>","date":"2024-02-08T16:26:47","subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","submitter":{"id":102,"url":"https://patchwork.libcamera.org/api/people/102/","name":"Hans de Goede","email":"hdegoede@redhat.com"},"content":"Hi All,\n\nJust a quick headsup. Unfortunately I have not been able to make\nmuch time to work on preparing v3 of this series today, so I won't\nbe able to post a v3 today.\n\nI plan to continue working on preparing v3 on Monday and I'll\nhopefully post a v3 series upstream on Tuesday.\n\nRegards,\n\nHans\n\n\n\n\n\nOn 1/13/24 15:22, Hans de Goede wrote:\n> Hi All,\n> \n> Here is v2 of the patch-set to add Software ISP support\n> to libcamera / to the simple pipeline-handler.\n> \n> Changes in v2 vs v1:\n> - Integrated Dennis, Martti and Toon's auto-exposure algorithm\n>   based on the paper which they found which gives us a nice\n>   relatively simple AEC + AGC algorithm\n>   TODO: Add link to paper to source + commit-message\n> - Integrated Dennis' doxygen comments for all new classes, no more warnings!\n> - Move AWB gain calculations to the IPA (Andrey)\n> - Added 8 bpp and 10 bpp unpacked raw bayer input support (Hans)\n> - Use dma-buf for the output FrameBuffer-s (Andrey)\n> - Memcpy data from input FrameBuffers to a heap buffer on a line by line\n>   basis to speedup debayering from uncached mem (Hans)\n> - This addresses all \"open issues\" from the v1 posting\n> \n> Changes in v1 vs RFC-v2:\n> - Add and use SwStats[Cpu] and Debayer[Cpu] classes\n> - Rename linaro soft-IPA and soft-ISP implementations to simple following\n>   the simple pipeline hander\n> - Integrate Pavel's swstats and debayer improvements\n> \n> This has been tested on:\n> - Qualcomm RB5 board with a mezzanine board equipped with RPi camera v2 (Andrey)\n> - Lenovo x13s, sc8280xp (Bryan)\n> - Pinephone (Pavel)\n> - Debix Model A (Milan)\n> - Lenovo Thinkpad Yoga X1 yoga gen7/8, Alder Lake/Raptor Lake IPU6EP +\n>   ov2740 10bpp packed + unpacked (Dennis / Hans)\n> - Dell Latitude 9420, Tiger Lake IPU6 + ov01a1s (RGBI) sensor\n>   (Martti, requires IGIG_GBGR_IGIG_GRGB patches on top)\n> \n> git branch for this v2 patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v05\n> \n> git branch for v1 of the patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v04\n> \n> Old RFC-v2 cover-letter with small updates:\n> \n> Here is an implementation of Software ISP and Software IPA\n> which provide debayering and implementation of image processing\n> algorithms for systems without a hardware ISP, or in cases when\n> there are no public drivers for the hardware ISP present in the\n> system.\n> \n> The implementation of the Software ISP is a reference one.\n> A naive AWB alorithm is implemented as part of a function which\n> does debayering and statistics calculations - the algorithm part\n> is to be moved to the IPA in the next version of the patch set.\n> And for debayering itself there is already a more efficient\n> implementation by Hans de Goede. This patch set is currently using\n> the earlier debayering implementation as it is less lines of code\n> and is OK for the initial discussion.\n> Only RAW10P format from the sensor is currently supported, but\n> other debayering functions can be easily added (which of them to\n> call is decided based on the input format).\n> \n> The Software IPA has only auto exposure and AGC. For the AGC\n> the analogue gain control of the camera sensor is used (if\n> available). The algorithm is very much simplified, and is\n> mostly included as a reference code.\n> \n> The 6th patch renames some variables in the simple pipeline\n> handler for the Software ISP to use the same buffer handling\n> code as the Converter currently does. This lets one to\n> avoid adding extra code to the pipeline handler, but also\n> makes the Software ISP and the Converter mutually exclusive.\n> \n> The Software ISP / IPA are intended to be used with the simple\n> pipeline handler. The pipeline handler doesn't interact with\n> the Software IPA directly - the Software IPA is hidden behind\n> the Software ISP interface. To use the Software ISP the build\n> must be configured with\n>   -Dpipelines=simple/simple -Dipas=simple/simple\n> and the Converter must not be used (the latter is hardcoded\n> in the simple pipeline handler).\n> If the build is configured with just\n>   -Dpipelines=simple\n> the Software ISP / IPA are not used, and the simple pipeline\n> handler works in the same way as without this patchset.\n> \n> \"simple\" in the\n>   -Dpipelines=simple/simple -Dipas=simple/simple\n> is the name of the Software ISP / IPA implementation.\n>   -Dpipelines=simple/<something else> -Dipas=simple/<something else>\n> should work too if another implementation were added. What\n> implementation to use is the build time choice, only one\n> implementation is included into the build.\n> \n> This patch set uses SharedMemObject class used by the RPi pipeline\n> handler - the second patch in the series moves the header file\n> to a common directory.\n> \n> This patch set has been tested on Qualcomm RB5 board with\n> a mezzanine board equipped with RPi camera v2 (not the\n> standard RB5 camera mezzanine).\n> \n> git branch for the RFC-v2 patch set:\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v03\n> \n> RFC-v1 of the patch set:\n> https://patchwork.libcamera.org/cover/19262/\n> \n> Changes in RFC v2 vs RFC v1:\n> - patches are restructured and reordered\n> - the Software IPA is hidden behind the Software ISP interface. The\n>   pipeline handler doesn't interact with the Software IPA directly\n> - instantiation of the Software ISP / IPA is configurable (at build\n>   time)\n> - comment explaining the implementation limitations is added to\n>   SwIspLinaro::IspWorker::debayerRaw10P()\n> \n> Regards,\n> \n> Hans\n> \n> \n> \n> Andrey Konovalov (10):\n>   libcamera: pipeline: simple: fix size adjustment in validate()\n>   libcamera: internal: Move dma_heaps.[h,cpp] to common directories\n>   libcamera: dma_heaps: extend DmaHeap class to support system heap\n>   libcamera: internal: Move SharedMemObject class to a common directory\n>   libcamera: introduce SoftwareIsp class\n>   libcamera: ipa: add Soft IPA common files\n>   libcamera: ipa: Soft IPA: add a Simple Soft IPA implementation\n>   libcamera: software_isp: add Simple SoftwareIsp implementation\n>   libcamera: pipeline: simple: rename converterBuffers_ and related vars\n>   libcamera: pipeline: simple: enable use of Soft ISP and Soft IPA\n> \n> Dennis Bonke (1):\n>   libcamera: internal: Document the SharedMemObject class\n> \n> Hans de Goede (7):\n>   libcamera: software_isp: Add SwStats base class\n>   libcamera: software_isp: Add SwStatsCpu class\n>   libcamera: software_isp: Add Debayer base class\n>   libcamera: software_isp: Add DebayerCpu class\n>   libcamera: swstats_cpu: Add support for 8 and 10 bpp unpacked bayer\n>     input\n>   libcamera: debayer_cpu: Add support for 8 and 10 bpp unpacked bayer\n>     input\n>   libcamera: debayer_cpu: Add BGR888 output support\n> \n>  Documentation/Doxyfile.in                     |   1 +\n>  .../libcamera/internal}/dma_heaps.h           |  14 +-\n>  include/libcamera/internal/meson.build        |   4 +\n>  .../libcamera/internal}/shared_mem_object.h   |  57 +-\n>  include/libcamera/internal/software_isp.h     | 231 ++++++\n>  .../libcamera/internal/software_isp/debayer.h | 132 ++++\n>  .../internal/software_isp/debayer_cpu.h       | 141 ++++\n>  .../internal/software_isp/debayer_params.h    |  43 ++\n>  .../internal/software_isp/meson.build         |  11 +\n>  .../internal/software_isp/swisp_simple.h      | 163 +++++\n>  .../internal/software_isp/swisp_stats.h       |  34 +\n>  .../libcamera/internal/software_isp/swstats.h | 215 ++++++\n>  .../internal/software_isp/swstats_cpu.h       |  51 ++\n>  include/libcamera/ipa/meson.build             |   1 +\n>  include/libcamera/ipa/soft.mojom              |  29 +\n>  meson_options.txt                             |   3 +-\n>  src/ipa/simple/common/meson.build             |  17 +\n>  src/ipa/simple/common/soft_base.cpp           |  73 ++\n>  src/ipa/simple/common/soft_base.h             |  50 ++\n>  src/ipa/simple/meson.build                    |  12 +\n>  src/ipa/simple/simple/data/meson.build        |   9 +\n>  src/ipa/simple/simple/data/soft.conf          |   3 +\n>  src/ipa/simple/simple/meson.build             |  26 +\n>  src/ipa/simple/simple/soft_simple.cpp         | 273 ++++++++\n>  .../{pipeline/rpi/vc4 => }/dma_heaps.cpp      |  55 +-\n>  src/libcamera/meson.build                     |   3 +\n>  src/libcamera/pipeline/rpi/vc4/meson.build    |   1 -\n>  src/libcamera/pipeline/rpi/vc4/vc4.cpp        |   5 +-\n>  src/libcamera/pipeline/simple/simple.cpp      | 177 +++--\n>  src/libcamera/software_isp.cpp                |  62 ++\n>  src/libcamera/software_isp/debayer.cpp        |  22 +\n>  src/libcamera/software_isp/debayer_cpu.cpp    | 661 ++++++++++++++++++\n>  src/libcamera/software_isp/meson.build        |  27 +\n>  src/libcamera/software_isp/swisp_simple.cpp   | 238 +++++++\n>  src/libcamera/software_isp/swstats.cpp        |  22 +\n>  src/libcamera/software_isp/swstats_cpu.cpp    | 261 +++++++\n>  36 files changed, 3035 insertions(+), 92 deletions(-)\n>  rename {src/libcamera/pipeline/rpi/vc4 => include/libcamera/internal}/dma_heaps.h (65%)\n>  rename {src/libcamera/pipeline/rpi/common => include/libcamera/internal}/shared_mem_object.h (62%)\n>  create mode 100644 include/libcamera/internal/software_isp.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer_cpu.h\n>  create mode 100644 include/libcamera/internal/software_isp/debayer_params.h\n>  create mode 100644 include/libcamera/internal/software_isp/meson.build\n>  create mode 100644 include/libcamera/internal/software_isp/swisp_simple.h\n>  create mode 100644 include/libcamera/internal/software_isp/swisp_stats.h\n>  create mode 100644 include/libcamera/internal/software_isp/swstats.h\n>  create mode 100644 include/libcamera/internal/software_isp/swstats_cpu.h\n>  create mode 100644 include/libcamera/ipa/soft.mojom\n>  create mode 100644 src/ipa/simple/common/meson.build\n>  create mode 100644 src/ipa/simple/common/soft_base.cpp\n>  create mode 100644 src/ipa/simple/common/soft_base.h\n>  create mode 100644 src/ipa/simple/meson.build\n>  create mode 100644 src/ipa/simple/simple/data/meson.build\n>  create mode 100644 src/ipa/simple/simple/data/soft.conf\n>  create mode 100644 src/ipa/simple/simple/meson.build\n>  create mode 100644 src/ipa/simple/simple/soft_simple.cpp\n>  rename src/libcamera/{pipeline/rpi/vc4 => }/dma_heaps.cpp (54%)\n>  create mode 100644 src/libcamera/software_isp.cpp\n>  create mode 100644 src/libcamera/software_isp/debayer.cpp\n>  create mode 100644 src/libcamera/software_isp/debayer_cpu.cpp\n>  create mode 100644 src/libcamera/software_isp/meson.build\n>  create mode 100644 src/libcamera/software_isp/swisp_simple.cpp\n>  create mode 100644 src/libcamera/software_isp/swstats.cpp\n>  create mode 100644 src/libcamera/software_isp/swstats_cpu.cpp\n>","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 10A5CBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  8 Feb 2024 16:26:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 60BD162801;\n\tThu,  8 Feb 2024 17:26:56 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E53B362800\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Feb 2024 17:26:54 +0100 (CET)","from mail-ej1-f72.google.com (mail-ej1-f72.google.com\n\t[209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-621-B3YKShRdPKm2KVn8HN4J3Q-1; Thu, 08 Feb 2024 11:26:50 -0500","by mail-ej1-f72.google.com with SMTP id\n\ta640c23a62f3a-a35ef7abe08so111557966b.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 08 Feb 2024 08:26:49 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\tgh20-20020a170906e09400b00a388e24f533sm204496ejb.148.2024.02.08.08.26.47\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tThu, 08 Feb 2024 08:26:47 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"f5MBh1rE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1707409613;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=Qcu86/Hi8Vr6pfFw6GKdWaXBuSmN+RS+f8PRZEWiC3Y=;\n\tb=f5MBh1rEJ/vX47M2TDiXGmQ8ZMFTAcVJbZifN3HKev2JswU715kotXfcLOROhvMX8GY3Aw\n\tvMINLqJOrGu4znR60BEVrrlueiVblmDxZ3IWMdDdETkYCI3vzo/RIKGxs64wtHfF64/crv\n\t3Qa9lXPpgy3rqbMzrni/QgruKKVpoZ4=","X-MC-Unique":"B3YKShRdPKm2KVn8HN4J3Q-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1707409609; x=1708014409;\n\th=content-transfer-encoding:in-reply-to:from:references:cc:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Qcu86/Hi8Vr6pfFw6GKdWaXBuSmN+RS+f8PRZEWiC3Y=;\n\tb=jxG7a+f+MiS5ILIGiCFfGChfxEj3JTRyTMVigFn/cjUc9+NiGTFaxmJTD856paFsK6\n\tjhN4q+8ggnCc1auvF3s/M2lMuommtouNKH+lsO+y/lOfk1N8vnjn5H6yQxBMsod5xhuM\n\tXXAK6LhaVPTbgAAfYNnClWIP0y4Kpk05z3UYCA9l8VVpeEboUE4zYo6hn90X7Vla4NpN\n\tycBiTv2x2xCHHFUFfQuaKqIsSQyynsV75hG/Fzm+DVqcUt8aVVD0HkWB0lKSbqhhJU+h\n\t/nqhFns6mhWJ2w5wO5vhzagltMzPdoXWWvWCgSGXPcRF2mFrhUx8bo5ugsLzLw0EyX5J\n\ty3xw==","X-Gm-Message-State":"AOJu0YzotWw0SNB56B5uYtAp2MqHdKu8/upupzf0KZ8JnXun9NRFupww\n\tT9AUMh2FN8rtK6OWNP9SJqZZxznyGZ+mkvnVR2/FrY0roCiiHcq0nJhyuZV7/WukdPHq8anM4E2\n\tVo7pqPbr6i/LKnrvtNGTxRqMp2AyW3uz/q722Px0fWq7h3OaZfJT/vU3XsIyNU87G7tnN6fVQ7x\n\t+Kb4J8E293xQZh8eJEStORr7QxdtNAKdqi0hK6059auU3rdSr+rrW0aoY=","X-Received":["by 2002:a17:907:9197:b0:a37:2738:1eab with SMTP id\n\tbp23-20020a170907919700b00a3727381eabmr5641148ejb.55.1707409608732; \n\tThu, 08 Feb 2024 08:26:48 -0800 (PST)","by 2002:a17:907:9197:b0:a37:2738:1eab with SMTP id\n\tbp23-20020a170907919700b00a3727381eabmr5641121ejb.55.1707409608339; \n\tThu, 08 Feb 2024 08:26:48 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IFTFtAtuQx1hEbyEp0pbrnhstSFAo+sWR/tKtuA3ZpN9yRg3sh539aUCwVWQ8/IYRCMarXlNA==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCUCvCtd7NN1XRGnVoG+r06BWynj+v4G5ausjtsfJ3M4jjRiMktaKpzVVVmGxikh/ai7uKtOm76UgBe68RoFQgHhlesZ2OfHkUoz+myoPeG7s5HEIKvSe7mCeuRrBWkKkK+mS3DJMRyNrHMy/J3KJYVVkXcZWftX4L9IicF8728sFVVohHcOk6xZjOvofxaIDCiiJNzSm9l/Yn6hRGZmtvy5+VaAtKSmKSdoCB4XACxSJkKzimxAvyXtmeKbkzQDAjXri0hwB2iiheOWw8x5gdJmk0AfTtH43iNlSi1ho14GVfHY2keIvuCb4FeUBBBHW+ZAV0hTEQ==","Message-ID":"<6a68ae8c-dcf1-46b2-b270-0b0f9f414b61@redhat.com>","Date":"Thu, 8 Feb 2024 17:26:47 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 00/18] libcamera: introduce Software ISP and Software\n\tIPA","To":"libcamera-devel@lists.libcamera.org,\n\tAndrey Konovalov <andrey.konovalov.ynk@gmail.com>","References":"<20240113142218.28063-1-hdegoede@redhat.com>","From":"Hans de Goede <hdegoede@redhat.com>","In-Reply-To":"<20240113142218.28063-1-hdegoede@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US, nl","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","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>","Cc":"Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, srinivas.kandagatla@linaro.org,\n\tPavel Machek <pavel@ucw.cz>,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]