1
0
forked from ports/contrib

pipewire: added patches for libcamera 0.2

This commit is contained in:
Tim Biermann 2024-01-11 17:27:38 +01:00
parent 5c5546e152
commit 4d2ec114ae
Signed by: tb
GPG Key ID: 42F8B4E30B673606
4 changed files with 135 additions and 3 deletions

View File

@ -1,5 +1,7 @@
untrusted comment: verify with /etc/ports/contrib.pub
RWSagIOpLGJF36O84ihZkyBeBvygTmEBsub8OqcdNoOxy1+FnmKOX/U0F2mfrLxuzQLtNSul//6ZYRvdTAVVoXauONUbBQVZgAI=
SHA256 (Pkgfile) = 1ee6dd09aed06eed108cb6e3d0af8ffa3175447b4257d8afbd0b6330cadcc3ee
RWSagIOpLGJF32U8LDONWzUK4Tcgha1ilBVzJqEIvtKpNiR6jw6dbjkjPQh6OoEtXtj+z3KO36OogzIf0QH643TGRt1QfjEK4QI=
SHA256 (Pkgfile) = ce14e3b00c25029c055e3ae05d20b3972000651f6ce1c9491c993e41b26383a9
SHA256 (.footprint) = 592141c75bd95e67c9f254eada2fc57e08458e893d7517a016bbf5b7817d2344
SHA256 (pipewire-1.0.1.tar.gz) = 23f7a3c1227e0dbc6c859d2ae56e0f3866749e4bc2e6193e3b6cadf5a037bd8e
SHA256 (268f4856f852d72a749932630223f928acd1a704.patch) = c09896683d666543e129506bdf84d85672e4ae8051e0a622694404982993af95
SHA256 (4b145ad444b8fc70b6cb375b6447e9c9793e2238.patch) = d5f6c88235c5fae4ec6c03b755b1136d19654d77ae82f4329793c327224b263a

View File

@ -0,0 +1,80 @@
From 268f4856f852d72a749932630223f928acd1a704 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
---
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

@ -0,0 +1,45 @@
From 4b145ad444b8fc70b6cb375b6447e9c9793e2238 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= <pobrn@protonmail.com>
Date: Tue, 9 Jan 2024 19:22:07 +0100
Subject: [PATCH] spa: libcamera: bump minimum supported version to 0.2.0
---
spa/meson.build | 3 +--
spa/plugins/libcamera/libcamera-device.cpp | 2 --
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/spa/meson.build b/spa/meson.build
index 841d27b409..ac20844ce3 100644
--- a/spa/meson.build
+++ b/spa/meson.build
@@ -96,9 +96,8 @@ if get_option('spa-plugins').allowed()
endif
summary({'Vulkan': have_vulkan}, bool_yn: true, section: 'Misc dependencies')
- libcamera_dep = dependency('libcamera', required: get_option('libcamera'))
+ libcamera_dep = dependency('libcamera', version: '>= 0.2.0', required: get_option('libcamera'))
summary({'libcamera': libcamera_dep.found()}, bool_yn: true, section: 'Backend')
- cdata.set('HAVE_LIBCAMERA_SYSTEM_DEVICES', libcamera_dep.version().version_compare('>= 0.1.0'))
compress_offload_option = get_option('compress-offload')
summary({'Compress-Offload': compress_offload_option.allowed()}, bool_yn: true, section: 'Backend')
diff --git a/spa/plugins/libcamera/libcamera-device.cpp b/spa/plugins/libcamera/libcamera-device.cpp
index 0abf2f6195..b25a4eb728 100644
--- a/spa/plugins/libcamera/libcamera-device.cpp
+++ b/spa/plugins/libcamera/libcamera-device.cpp
@@ -61,12 +61,10 @@ struct impl {
static const libcamera::Span<const int64_t> cameraDevice(
const Camera *camera)
{
-#ifdef HAVE_LIBCAMERA_SYSTEM_DEVICES
const ControlList &props = camera->properties();
if (auto devices = props.get(properties::SystemDevices))
return devices.value();
-#endif
return {};
}
--
GitLab

View File

@ -7,7 +7,9 @@
name=pipewire
version=1.0.1
release=1
source=(https://github.com/PipeWire/pipewire/archive/$version/$name-$version.tar.gz)
source=(https://github.com/PipeWire/pipewire/archive/$version/$name-$version.tar.gz
268f4856f852d72a749932630223f928acd1a704.patch
4b145ad444b8fc70b6cb375b6447e9c9793e2238.patch)
build() {
prt-get isinst avahi || PKGMK_PW+=' -Davahi=disabled'
@ -19,6 +21,9 @@ build() {
prt-get isinst v4l-utils || PKGMK_PW+=' -Dv4l2=disabled'
prt-get isinst vulkan-loader || PKGMK_PW+=' -Dvulkan=disabled -Dvulkan=disabled'
patch -Np1 -d $name-$version -i $SRC/268f4856f852d72a749932630223f928acd1a704.patch
patch -Np1 -d $name-$version -i $SRC/4b145ad444b8fc70b6cb375b6447e9c9793e2238.patch
meson setup $name-$version build $PKGMK_PW \
-D prefix=/usr \
--buildtype=plain \