temp/libcamera: upgrade to 0.7.0

https://gitlab.freedesktop.org/camera/libcamera/-/releases/v0.7.0

This release notably comes with the long awaited GPU-ISP, improving
performance and quality in various ways.

Also:
1. Drop upstreamed or superseded patches.
2. Update entries in tuning files.
3. Sync dependencies to alpine package.
4. Enable the virtual pipeline for easier testing on devices without
   working cameras (see /usr/share/libcamera/pipeline/virtual/virtual.yaml.example).

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7867>
This commit is contained in:
Robert Mader 2025-10-30 12:18:27 +01:00 committed by The Friendly Merge Bot
parent 49ef561fcb
commit cc9831c0a9
No known key found for this signature in database
14 changed files with 254 additions and 114 deletions

View file

@ -1,7 +1,7 @@
From 8e43d2a54de04dff85816fdcc1723b6abcd2fef8 Mon Sep 17 00:00:00 2001
From 91b13b6c3b596775a80cdb661259fbd90b4189b2 Mon Sep 17 00:00:00 2001
From: Robert Mader <robert.mader@collabora.com>
Date: Wed, 1 May 2024 18:12:02 +0200
Subject: [PATCH 03/12] libcamera: simple: Enable softISP for the Pinephone
Subject: [PATCH 1/3] libcamera: simple: Enable softISP for the Pinephone
In theory the PP should be able to use the actual HW ISP, however in
practice this does not work well yet - especially as the driver for the
@ -10,15 +10,17 @@ front camera in Megi differs heavily from the upstream one.
Thus enable the swISP to make both cameras work reliably for now. This
is essentially what Megapixels does as well. If the HW ISP situation
improves, this can be dropped again.
Signed-off-by: Robert Mader <robert.mader@collabora.com>
---
src/libcamera/pipeline/simple/simple.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index a0aad052f..cc3bdc84b 100644
index 4a0b9f58d..8a3bc14fa 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -262,7 +262,7 @@ static const SimplePipelineInfo supportedDevices[] = {
@@ -264,7 +264,7 @@ static const SimplePipelineInfo supportedDevices[] = {
{ "mtk-seninf", { { "mtk-mdp", 3 } }, false },
{ "mxc-isi", {}, false },
{ "qcom-camss", {}, true },
@ -26,7 +28,7 @@ index a0aad052f..cc3bdc84b 100644
+ { "sun6i-csi", {}, true },
};
} /* namespace */
bool isRaw(const StreamConfiguration &cfg)
--
2.52.0

View file

@ -1,26 +0,0 @@
From 0667741f5e4769a9918cc94f5d2a699d7bdaf9b3 Mon Sep 17 00:00:00 2001
From: Robert Mader <robert.mader@collabora.com>
Date: Mon, 22 Apr 2024 23:30:31 +0200
Subject: [PATCH 01/12] libcamera: simple: Enable softwareISP for the librem5
And - in theory - on similar devices.
---
src/libcamera/pipeline/simple/simple.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index a06a52926..a62fa7b8c 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -254,7 +254,7 @@ namespace {
static const SimplePipelineInfo supportedDevices[] = {
{ "dcmipp", {}, false },
- { "imx7-csi", { { "pxp", 1 } }, false },
+ { "imx7-csi", { { "pxp", 1 } }, true },
{ "intel-ipu6", {}, true },
{ "intel-ipu7", {}, true },
{ "j721e-csi2rx", {}, true },
--
2.52.0

View file

@ -1,43 +0,0 @@
From 125ab037a4395c1e9fffb0bd68fb2c3eeae95078 Mon Sep 17 00:00:00 2001
From: Robert Mader <robert.mader@collabora.com>
Date: Thu, 9 May 2024 21:07:07 +0200
Subject: [PATCH 02/12] libcamera: simple: Force-disable softwareISP for
millipixels
As the later uses libcamera and requires raw-streams to get passed
through. In the future, libcamera will likely support both - raw and
swIsp - at the same time.
---
src/libcamera/pipeline/simple/simple.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index a62fa7b8c..a0aad052f 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -7,6 +7,7 @@
*/
#include <algorithm>
+#include <fstream>
#include <iterator>
#include <list>
#include <map>
@@ -1773,6 +1774,14 @@ bool SimplePipelineHandler::matchDevice(std::shared_ptr<MediaDevice> media,
}
}
+ std::string comm_string;
+ std::ifstream("/proc/self/comm") >> comm_string;
+ if (comm_string == "millipixels") {
+ LOG(SimplePipeline, Warning)
+ << "Detected millipixels, disabling swIsp";
+ swIspEnabled_ = false;
+ }
+
/* Locate the sensors. */
std::vector<MediaEntity *> sensors = locateSensors(media.get());
if (sensors.empty()) {
--
2.52.0

View file

@ -1,23 +1,24 @@
From 5e94fb4563b44ba1fd9c4d3109ddc5a0f35cfa2c Mon Sep 17 00:00:00 2001
From b7695ae18562170ea2e8955f72844cc287724a06 Mon Sep 17 00:00:00 2001
From: Robert Mader <robert.mader@collabora.com>
Date: Mon, 6 May 2024 21:21:57 +0200
Subject: [PATCH 04/12] libcamera: simple: Skip hwISP formats if swISP is
active
Subject: [PATCH 2/3] libcamera: simple: Skip hwISP formats if swISP is active
On devices like the Pinephone libcamera will advertise support for
formats provided by the HW ISP and the SW ISP at the same time. The
reason why we enable the SW ISP in the first place is, however, that the
HW ISP does not work reliable atm. Thus filter out formats from the HW
ISP when the SW ISP is enabled, to ensure we use the later.
Signed-off-by: Robert Mader <robert.mader@collabora.com>
---
src/libcamera/pipeline/simple/simple.cpp | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index cc3bdc84b..f44c2aa8e 100644
index 8a3bc14fa..5dec1bd11 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -736,9 +736,7 @@ void SimpleCameraData::tryPipeline(unsigned int code, const Size &size)
@@ -745,9 +745,7 @@ void SimpleCameraData::tryPipeline(unsigned int code, const Size &size)
config.outputFormats = swIsp_->formats(pixelFormat);
config.outputSizes = swIsp_->sizes(pixelFormat, format.size);
if (config.outputFormats.empty()) {

View file

@ -0,0 +1,214 @@
From d8405610c1830f71ffd0ca09a3c18509fc4a8892 Mon Sep 17 00:00:00 2001
From: Robert Mader <robert.mader@collabora.com>
Date: Fri, 19 Dec 2025 20:31:16 +0100
Subject: [PATCH 3/3] RFC: egl: Implement DMABuf import for input buffers
In many cases we can import the GPU-ISP input buffer, a dmabuf from v4l2,
directly into EGL instead of mapping and uploading - i.e. copying - it.
This reduces memory bandwith usage and can even slightly improve
latency.
This main reason this doesn't work in many cases is the stride
alignment, as GPUs often have stricter requirements (often 128 or even
256 bytes) than hardware ISPs.
Thus try to import buffer directly and - if that fails - fall back to
the previous upload path. To do so, adjust some function parameters and
turn down error messages. Failing imports should come at low cost as
drivers know the limitations and can bail out early, without causing
additional IO or context switches.
In the future we might be able to request buffers with a matching stride
from v4l2 drivers in many cases, making direct import the norm instead
of a hit-or-miss. An optional kernel API for that exists, but doesn't
seem to be implemented by any driver tested so far.
Signed-off-by: Robert Mader <robert.mader@collabora.com>
---
include/libcamera/internal/egl.h | 4 +--
src/libcamera/egl.cpp | 37 +++++++++++++++++-----
src/libcamera/software_isp/debayer_egl.cpp | 21 ++++++------
src/libcamera/software_isp/debayer_egl.h | 2 +-
4 files changed, 44 insertions(+), 20 deletions(-)
diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h
index 8a2d96d7a..32e9cecdd 100644
--- a/include/libcamera/internal/egl.h
+++ b/include/libcamera/internal/egl.h
@@ -102,7 +102,7 @@ public:
int initEGLContext();
- int createInputDMABufTexture2D(eGLImage &eglImage, int fd);
+ int createInputDMABufTexture2D(eGLImage &eglImage, int fd, GLint format, uint32_t width, uint32_t height);
int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);
void destroyDMABufTexture(eGLImage &eglImage);
void createTexture2D(eGLImage &eglImage, GLint format, uint32_t width, uint32_t height, void *data);
@@ -135,7 +135,7 @@ private:
unsigned int shaderDataLen,
Span<const std::string> shaderEnv);
- int createDMABufTexture2D(eGLImage &eglImage, int fd, bool output);
+ int createDMABufTexture2D(eGLImage &eglImage, int fd, uint32_t drm_format, uint32_t width, uint32_t height, bool output);
PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES;
PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp
index 5b9bbf410..3a90cf54b 100644
--- a/src/libcamera/egl.cpp
+++ b/src/libcamera/egl.cpp
@@ -19,6 +19,7 @@
#include <libcamera/base/thread.h>
+#include <GLES3/gl32.h>
#include <libdrm/drm_fourcc.h>
namespace libcamera {
@@ -102,6 +103,9 @@ void eGL::syncOutput()
* \brief Create a DMA-BUF backed 2D texture
* \param[in,out] eglImage EGL image to associate with the DMA-BUF
* \param[in] fd DMA-BUF file descriptor
+ * \param[in] drm_format the DRM fourcc
+ * \param[in] width the buffer width
+ * \param[in] height the buffer height
* \param[in] output If true, create framebuffer for render target
*
* Internal implementation for creating DMA-BUF textures. Creates an EGL
@@ -110,7 +114,7 @@ void eGL::syncOutput()
*
* \return 0 on success, or -ENODEV on failure
*/
-int eGL::createDMABufTexture2D(eGLImage &eglImage, int fd, bool output)
+int eGL::createDMABufTexture2D(eGLImage &eglImage, int fd, uint32_t drm_format, uint32_t width, uint32_t height, bool output)
{
int ret = 0;
@@ -118,9 +122,9 @@ int eGL::createDMABufTexture2D(eGLImage &eglImage, int fd, bool output)
// clang-format off
EGLint image_attrs[] = {
- EGL_WIDTH, (EGLint)eglImage.width_,
- EGL_HEIGHT, (EGLint)eglImage.height_,
- EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_ARGB8888,
+ EGL_WIDTH, (EGLint)width,
+ EGL_HEIGHT, (EGLint)height,
+ EGL_LINUX_DRM_FOURCC_EXT, (EGLint)drm_format,
EGL_DMA_BUF_PLANE0_FD_EXT, fd,
EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
EGL_DMA_BUF_PLANE0_PITCH_EXT, (EGLint)eglImage.stride_,
@@ -135,7 +139,7 @@ int eGL::createDMABufTexture2D(eGLImage &eglImage, int fd, bool output)
NULL, image_attrs);
if (eglImage.image_ == EGL_NO_IMAGE_KHR) {
- LOG(eGL, Error) << "eglCreateImageKHR fail";
+ LOG(eGL, Debug) << "eglCreateImageKHR fail";
ret = -ENODEV;
goto done;
}
@@ -176,6 +180,9 @@ done:
* \brief Create an input DMA-BUF backed texture
* \param[in,out] eglImage EGL image to associate with the DMA-BUF
* \param[in] fd DMA-BUF file descriptor
+ * \param[in] format the GL format
+ * \param[in] width the buffer width
+ * \param[in] height the buffer height
*
* Creates an EGL image from a DMA-BUF file descriptor and binds it to
* a 2D texture for use as an input texture in shaders. The texture is
@@ -183,11 +190,25 @@ done:
*
* \return 0 on success, or -ENODEV on failure
*/
-int eGL::createInputDMABufTexture2D(eGLImage &eglImage, int fd)
+int eGL::createInputDMABufTexture2D(eGLImage &eglImage, int fd, GLint format, uint32_t width, uint32_t height)
{
+ EGLint drm_format;
+
ASSERT(tid_ == Thread::currentId());
- return createDMABufTexture2D(eglImage, fd, false);
+ switch (format) {
+ case GL_LUMINANCE:
+ drm_format = DRM_FORMAT_R8;
+ break;
+ case GL_RG:
+ drm_format = DRM_FORMAT_RG88;
+ break;
+ default:
+ LOG(eGL, Error) << "unhandled GL format";
+ return -ENODEV;
+ }
+
+ return createDMABufTexture2D(eglImage, fd, drm_format, width, height, false);
}
/**
@@ -206,7 +227,7 @@ int eGL::createOutputDMABufTexture2D(eGLImage &eglImage, int fd)
{
ASSERT(tid_ == Thread::currentId());
- return createDMABufTexture2D(eglImage, fd, true);
+ return createDMABufTexture2D(eglImage, fd, DRM_FORMAT_ARGB8888, eglImage.width_, eglImage.height_, true);
}
/**
diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp
index 4d0caa6ef..5e7812a13 100644
--- a/src/libcamera/software_isp/debayer_egl.cpp
+++ b/src/libcamera/software_isp/debayer_egl.cpp
@@ -506,13 +506,22 @@ void DebayerEGL::setShaderVariableValues(DebayerParams &params)
return;
}
-int DebayerEGL::debayerGPU(MappedFrameBuffer &in, int out_fd, DebayerParams &params)
+int DebayerEGL::debayerGPU(FrameBuffer *input, int out_fd, DebayerParams &params)
{
/* eGL context switch */
egl_.makeCurrent();
/* Create a standard texture input */
- egl_.createTexture2D(*eglImageBayerIn_, glFormat_, inputConfig_.stride / bytesPerPixel_, height_, in.planes()[0].data());
+ if (egl_.createInputDMABufTexture2D(*eglImageBayerIn_, input->planes()[0].fd.get(), glFormat_, inputConfig_.stride / bytesPerPixel_, height_) != 0) {
+ MappedFrameBuffer in(input, MappedFrameBuffer::MapFlag::Read);
+ if (!in.isValid()) {
+ LOG(Debayer, Error) << "mmap-ing buffer(s) failed";
+ return -ENODEV;
+ }
+
+ LOG(Debayer, Debug) << "Importing input buffer with DMABuf import failed, falling back to upload";
+ egl_.createTexture2D(*eglImageBayerIn_, glFormat_, inputConfig_.stride / bytesPerPixel_, height_, in.planes()[0].data());
+ }
/* Generate the output render framebuffer as render to texture */
egl_.createOutputDMABufTexture2D(*eglImageBayerOut_, out_fd);
@@ -547,13 +556,7 @@ void DebayerEGL::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output
metadata.sequence = input->metadata().sequence;
metadata.timestamp = input->metadata().timestamp;
- MappedFrameBuffer in(input, MappedFrameBuffer::MapFlag::Read);
- if (!in.isValid()) {
- LOG(Debayer, Error) << "mmap-ing buffer(s) failed";
- goto error;
- }
-
- if (debayerGPU(in, output->planes()[0].fd.get(), params)) {
+ if (debayerGPU(input, output->planes()[0].fd.get(), params)) {
LOG(Debayer, Error) << "debayerGPU failed";
goto error;
}
diff --git a/src/libcamera/software_isp/debayer_egl.h b/src/libcamera/software_isp/debayer_egl.h
index cfbaf8e9d..19aa7d0ea 100644
--- a/src/libcamera/software_isp/debayer_egl.h
+++ b/src/libcamera/software_isp/debayer_egl.h
@@ -74,7 +74,7 @@ private:
int getShaderVariableLocations();
void setShaderVariableValues(DebayerParams &params);
void configureTexture(GLuint &texture);
- int debayerGPU(MappedFrameBuffer &in, int out_fd, DebayerParams &params);
+ int debayerGPU(FrameBuffer *input, int out_fd, DebayerParams &params);
/* Shader program identifiers */
GLuint vertexShaderId_ = 0;
--
2.52.0

View file

@ -1,22 +1,15 @@
# Forked from Alpine for temporary downstream patches
maintainer="Robert Mader <robert.mader@collabora.com>"
pkgname=libcamera
_pkgver=0.6.0
_pkgver=0.7.0
pkgver=9999$_pkgver
pkgrel=1
pkgrel=0
pkgdesc="Linux camera framework"
url="https://libcamera.org/"
arch="all"
license="LGPL-2.1-or-later AND GPL-2.0-or-later"
depends_dev="
eudev-dev
glib-dev
gnutls-dev
gst-plugins-bad-dev
qt6-qtbase-dev
"
# upstream calls 'date' with a non-POSIX option so we pull in coreutils
makedepends="$depends_dev
makedepends="
coreutils
doxygen
eudev-dev
@ -62,10 +55,9 @@ _tuning_files="
s5kjn1.yaml
"
source="https://gitlab.freedesktop.org/camera/libcamera/-/archive/v$_pkgver/libcamera-v$_pkgver.tar.gz
0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch
0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch
0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch
0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch
0001-libcamera-simple-Enable-softISP-for-the-Pinephone.patch
0002-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch
0003-RFC-egl-Implement-DMABuf-import-for-input-buffers.patch
qcam.desktop
$_tuning_files
"
@ -92,6 +84,7 @@ esac
build() {
abuild-meson \
-Dpipelines=auto,virtual \
-Dv4l2=true \
-Dwerror=false \
-Ddocumentation=disabled \
@ -177,18 +170,17 @@ py3() {
}
sha512sums="
901debb8fe864ab5b7b9a9011c760165e0a94f9c14bb6654e297161aaadb6ed1929f1cf4fe20357c188bf24bd00db3953ddd257a0ac726973ad3ceeea07d959f libcamera-v0.6.0.tar.gz
b6e4d79bb3e206bec84804100033bec80d0c3a2408d5d0643c5c52c658b2a3ff2eb4bf4df0d1c21b91b510eecdeb59af826d324c64fcc481790952836cca2ea8 0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch
82b1e5278f571ff734bce80ded4395ac18191ea2ba94c7cb4f3d0bf5b1ff96e142a419ee6edec395e1af50fc131959b7c3bb963734bd0e573e3c197d00e99493 0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch
7b9e97b1cc866cd0ad6e52c7980ebe5561d3e9a092912602cc85ff502cee5d69b6487ef16419a248a720617be3f1817aa92f8f15992869b87af5c02859fa6aa6 0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch
48de0e1e1acefb0a901dcfc4c266d633e73463f3ce2a89d7b83eed4833f6459abdc98528afe96d88c7bac78e75035a491f9228ed937e251849e9926e7d80216d 0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch
3d34792d3fd6a75a84150921b66875e4f8c5b8771e1218618fb58bee32d76b9e2b23226ef7ec850cdcd41b5bdd08ab41f61d4d69fca619a488c5ac0f1dcb283b libcamera-v0.7.0.tar.gz
e94ba31d69cad9ca9f9d895a253e849ac79b73bafea58987c078f9144049896138f61f3ea63a4c00de44e5a480622aed0bebe1b062d6c52757ce5f62f3a642f3 0001-libcamera-simple-Enable-softISP-for-the-Pinephone.patch
1850f847a5a8597b78c5bf2cd88e9012531634ac7141925edf52f49fbca8c3b432a1e8d4270971741adbca150ed9928a86f86cdcb6f4ed04f5488ab21002074d 0002-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch
4ba352092bc5ed0b982efe854a7a079c363497b54b5ef5693975bd2c4d1ca0c134fb3278b60d9d77f5a87039ba2b165b5786497b7e1d74343580f2ecdc0a7049 0003-RFC-egl-Implement-DMABuf-import-for-input-buffers.patch
22167a4eceb6d1b40b0b7c45fdf116c71684f5340de7f767535cb8e160ad9d2ae0f00cb3d461f73a344520a48a4641cf46226841d78bee06bfbfd2a91337f754 qcam.desktop
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a hi846.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a imx355.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a imx363.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a imx371.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a imx376.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a imx858.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a s5k3l6xx.yaml
fa9e4736c7651d4f97d97b58eef2d1d7ddd4616b1de67c840c4804585c62c78bb5ce80cb14669ae462414faa1c6af10c60cad0c416d69f685bc96434ad73e08a s5kjn1.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f hi846.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f imx355.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f imx363.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f imx371.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f imx376.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f imx858.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f s5k3l6xx.yaml
2ee566653b17d565d2c0de67cbe6ebad25df5aac6051cad78e6bae52016fa2ca0247e964d735ac776b3e0bd447ead9c4fcb26cd7629228cdba3ceb91b46f378f s5kjn1.yaml
"

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...

View file

@ -6,6 +6,6 @@ algorithms:
- BlackLevel:
blackLevel: 4096
- Awb:
- Lut:
- Adjust:
- Agc:
...