From 7faeb1727f7aabddcd3dcdff3cad57d64873c3042c90b4b68c3940456a93d6b3 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Mon, 22 Jan 2024 11:46:33 +0000 Subject: [PATCH] Accepting request 1140583 from home:alarrosa:branches:openSUSE:Factory:Staging:F - Add patches from upstream to fix building the package in Factory with libcamera 0.2.0: * 0001-spa-libcamera-use-CameraConfigurationorientation.patch * 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch OBS-URL: https://build.opensuse.org/request/show/1140583 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=176 --- ...a-use-CameraConfigurationorientation.patch | 80 +++++++++++++++++++ ...p-minimum-supported-version-to-0.2.0.patch | 45 +++++++++++ pipewire.changes | 8 ++ pipewire.spec | 11 +++ 4 files changed, 144 insertions(+) create mode 100644 0001-spa-libcamera-use-CameraConfigurationorientation.patch create mode 100644 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch diff --git a/0001-spa-libcamera-use-CameraConfigurationorientation.patch b/0001-spa-libcamera-use-CameraConfigurationorientation.patch new file mode 100644 index 0000000..5bce851 --- /dev/null +++ b/0001-spa-libcamera-use-CameraConfigurationorientation.patch @@ -0,0 +1,80 @@ +From 268f4856f852d72a749932630223f928acd1a704 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= +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 + diff --git a/0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch b/0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch new file mode 100644 index 0000000..7ea7040 --- /dev/null +++ b/0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch @@ -0,0 +1,45 @@ +From 4b145ad444b8fc70b6cb375b6447e9c9793e2238 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= +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 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 + diff --git a/pipewire.changes b/pipewire.changes index 4d37311..580eee1 100644 --- a/pipewire.changes +++ b/pipewire.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon Jan 22 11:34:04 UTC 2024 - Antonio Larrosa + +- Add patches from upstream to fix building the package in Factory + with libcamera 0.2.0: + * 0001-spa-libcamera-use-CameraConfigurationorientation.patch + * 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch + ------------------------------------------------------------------- Thu Jan 11 11:09:02 UTC 2024 - Antonio Larrosa diff --git a/pipewire.spec b/pipewire.spec index 82b520a..8b60fde 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -72,6 +72,10 @@ Source0: %{name}-%{version}.tar.xz Source99: baselibs.conf # PATCH-FIX-OPENSUSE reduce-meson-dependency.patch Patch0: reduce-meson-dependency.patch +# PATCH-FIX-UPSTREAM 0001-spa-libcamera-use-CameraConfigurationorientation.patch +Patch1: 0001-spa-libcamera-use-CameraConfigurationorientation.patch +# PATCH-FIX-UPSTREAM 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch +Patch2: 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch BuildRequires: docutils BuildRequires: doxygen @@ -388,6 +392,13 @@ sed -ie "s/version : '0.3.72'/version : '%{version}'/" %{P:0} %patch0 -p1 %endif +%if %{with libcamera} +%if %{?pkg_vcmp:%{pkg_vcmp libcamera-devel >= 0.2.0}} +%patch1 -p1 +%patch2 -p1 +%endif +%endif + %build %if %{pkg_vcmp gcc < 8} export CC=gcc-11