pipewire: fix build with libcamera-0.2

Add a backport patch to fix this issue with libcamera-0.2:
| In file included from ../git/spa/plugins/libcamera/libcamera-source.cpp:188:
| ../git/spa/plugins/libcamera/libcamera-utils.cpp:719:9: error: 'Transform' does not name a type

https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3782

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Markus Volk 2024-01-26 10:37:52 +01:00 committed by Khem Raj
parent 711c6fbce3
commit 10c75cbde1
No known key found for this signature in database
GPG Key ID: BB053355919D3314
2 changed files with 86 additions and 1 deletions

View File

@ -0,0 +1,82 @@
From fd33d2d3bb6333c7d6e74cbaa806bff2d908f589 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= <pobrn@protonmail.com>
Date: Sat, 28 Oct 2023 02:09:06 +0200
Subject: [PATCH] spa: libcamera: use `CameraConfiguration::orientation`
libcamera commit cc65629b68d49d ("libcamera: camera: Introduce Orientation") [0]
introduced to the `CameraConfiguration::orientation` member to describe the
orientation of the image in the received memory buffers.
Then c65e40b8480ffb ("libcamera: Use CameraConfiguration::orientation") [1]
removed `CameraConfiguration::transform`, which broke the libcamera plugin.
Fix that by using the new `orientation` member.
[0]: https://git.linuxtv.org/libcamera.git/commit/?id=cc65629b68d49d5f2a4d61537584c56ba510a335
[1]: https://git.linuxtv.org/libcamera.git/commit/?id=c65e40b8480ffb5f50e01a4e6713164c7194a937
Upstream-Status: Backport [https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/fd33d2d3bb6333c7d6e74cbaa806bff2d908f589]
---
spa/plugins/libcamera/libcamera-utils.cpp | 36 +++++++++++------------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/spa/plugins/libcamera/libcamera-utils.cpp b/spa/plugins/libcamera/libcamera-utils.cpp
index 2b1aea5a76..c197248d30 100644
--- a/spa/plugins/libcamera/libcamera-utils.cpp
+++ b/spa/plugins/libcamera/libcamera-utils.cpp
@@ -716,25 +716,23 @@ static int spa_libcamera_use_buffers(struct impl *impl, struct port *port,
}
static const struct {
- Transform libcamera_transform;
- uint32_t spa_transform_value;
-} transform_map[] = {
- { Transform::Identity, SPA_META_TRANSFORMATION_None },
- { Transform::Rot0, SPA_META_TRANSFORMATION_None },
- { Transform::HFlip, SPA_META_TRANSFORMATION_Flipped },
- { Transform::VFlip, SPA_META_TRANSFORMATION_Flipped180 },
- { Transform::HVFlip, SPA_META_TRANSFORMATION_180 },
- { Transform::Rot180, SPA_META_TRANSFORMATION_180 },
- { Transform::Transpose, SPA_META_TRANSFORMATION_Flipped90 },
- { Transform::Rot90, SPA_META_TRANSFORMATION_90 },
- { Transform::Rot270, SPA_META_TRANSFORMATION_270 },
- { Transform::Rot180Transpose, SPA_META_TRANSFORMATION_Flipped270 },
+ Orientation libcamera_orientation; /* clockwise rotation then horizontal mirroring */
+ uint32_t spa_transform_value; /* horizontal mirroring then counter-clockwise rotation */
+} orientation_map[] = {
+ { Orientation::Rotate0, SPA_META_TRANSFORMATION_None },
+ { Orientation::Rotate0Mirror, SPA_META_TRANSFORMATION_Flipped },
+ { Orientation::Rotate90, SPA_META_TRANSFORMATION_270 },
+ { Orientation::Rotate90Mirror, SPA_META_TRANSFORMATION_Flipped90 },
+ { Orientation::Rotate180, SPA_META_TRANSFORMATION_180 },
+ { Orientation::Rotate180Mirror, SPA_META_TRANSFORMATION_Flipped180 },
+ { Orientation::Rotate270, SPA_META_TRANSFORMATION_90 },
+ { Orientation::Rotate270Mirror, SPA_META_TRANSFORMATION_Flipped270 },
};
-static uint32_t libcamera_transform_to_spa_transform_value(Transform transform)
+static uint32_t libcamera_orientation_to_spa_transform_value(Orientation orientation)
{
- for (const auto& t : transform_map) {
- if (t.libcamera_transform == transform)
+ for (const auto& t : orientation_map) {
+ if (t.libcamera_orientation == orientation)
return t.spa_transform_value;
}
return SPA_META_TRANSFORMATION_None;
@@ -788,9 +786,9 @@ mmap_init(struct impl *impl, struct port *port,
buffers[i], SPA_META_VideoTransform, sizeof(*b->videotransform));
if (b->videotransform) {
b->videotransform->transform =
- libcamera_transform_to_spa_transform_value(impl->config->transform);
- spa_log_debug(impl->log, "Setting videotransform for buffer %d to %u (from %s)",
- i, b->videotransform->transform, transformToString(impl->config->transform));
+ libcamera_orientation_to_spa_transform_value(impl->config->orientation);
+ spa_log_debug(impl->log, "Setting videotransform for buffer %u to %u",
+ i, b->videotransform->transform);
}
--
GitLab

View File

@ -13,7 +13,10 @@ LIC_FILES_CHKSUM = " \
DEPENDS = "dbus ncurses"
SRCREV = "79b98884af80329f59596906231da5597bcdb7b6"
SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https"
SRC_URI = " \
git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https \
file://fd33d2d3bb6333c7d6e74cbaa806bff2d908f589.patch \
"
S = "${WORKDIR}/git"