commit 47dc7725c350a212129e340c46b4f9ad117b13e8cecd7813d032e11a59fd2735 Author: Christophe Marin Date: Wed Nov 27 00:22:16 2024 +0000 Plasma 6.2.4, untested OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks/kpipewire6?expand=0&rev=38 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0001-Simpler-yet-more-useful-handling-of-KPIPEWIRE_FORCE_.patch b/0001-Simpler-yet-more-useful-handling-of-KPIPEWIRE_FORCE_.patch new file mode 100644 index 0000000..5f15b08 --- /dev/null +++ b/0001-Simpler-yet-more-useful-handling-of-KPIPEWIRE_FORCE_.patch @@ -0,0 +1,107 @@ +From a50c28da704fbf8b9e71ec92054f325a33b9765f Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Sat, 6 Jul 2024 16:27:28 +0200 +Subject: [PATCH 1/2] Simpler yet more useful handling of + KPIPEWIRE_FORCE_ENCODER + +Previously, it always overrode the encoder type and profile. + +Now just force a specific encoder by inlining the encoder selection +in the switch cases. + +This means it's no longer possible to force a different encoder type +than the application requested, but it's arguably not that useful to +e.g. force VP9 if the application expects H.264 packets. + +(cherry picked from commit 0c3f8b4f9de7d4dcd24d952184dabdbda74b4c35) +--- + src/pipewireproduce.cpp | 45 +++++++++-------------------------------- + 1 file changed, 9 insertions(+), 36 deletions(-) + +diff --git a/src/pipewireproduce.cpp b/src/pipewireproduce.cpp +index 3452ce9..416bcd3 100644 +--- a/src/pipewireproduce.cpp ++++ b/src/pipewireproduce.cpp +@@ -266,46 +266,19 @@ void PipeWireProduce::stateChanged(pw_stream_state state) + + std::unique_ptr PipeWireProduce::makeEncoder() + { +- auto encoderType = m_encoderType; +- bool forceSoftware = false; +- bool forceHardware = false; +- +- if (qEnvironmentVariableIsSet("KPIPEWIRE_FORCE_ENCODER")) { +- auto forcedEncoder = qEnvironmentVariable("KPIPEWIRE_FORCE_ENCODER"); +- if (forcedEncoder == u"libvpx") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing VP8 Software encoding"; +- encoderType = PipeWireBaseEncodedStream::VP8; +- forceSoftware = true; +- } else if (forcedEncoder == u"libvpx-vp9") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing VP9 Software encoding"; +- encoderType = PipeWireBaseEncodedStream::VP9; +- forceSoftware = true; +- } else if (forcedEncoder == u"libx264") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing H264 Software encoding, main profile"; +- encoderType = PipeWireBaseEncodedStream::H264Main; +- forceSoftware = true; +- } else if (forcedEncoder == u"h264_vaapi") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing H264 Hardware encoding, main profile"; +- encoderType = PipeWireBaseEncodedStream::H264Main; +- forceHardware = true; +- } else if (forcedEncoder == u"libx264_baseline") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing H264 Software encoding, baseline profile"; +- encoderType = PipeWireBaseEncodedStream::H264Baseline; +- forceSoftware = true; +- } else if (forcedEncoder == u"h264_vaapi_baseline") { +- qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing H264 Hardware encoding, baseline profile"; +- encoderType = PipeWireBaseEncodedStream::H264Baseline; +- forceHardware = true; +- } ++ auto forcedEncoder = qEnvironmentVariable("KPIPEWIRE_FORCE_ENCODER"); ++ if (!forcedEncoder.isNull()) { ++ qCWarning(PIPEWIRERECORD_LOGGING) << "Forcing encoder to" << forcedEncoder; + } + + auto size = m_stream->size(); + +- switch (encoderType) { ++ switch (m_encoderType) { + case PipeWireBaseEncodedStream::H264Baseline: + case PipeWireBaseEncodedStream::H264Main: { + auto profile = m_encoderType == PipeWireBaseEncodedStream::H264Baseline ? Encoder::H264Profile::Baseline : Encoder::H264Profile::Main; +- if (!forceSoftware) { ++ ++ if (forcedEncoder.isNull() || forcedEncoder == u"h264_vaapi") { + auto hardwareEncoder = std::make_unique(profile, this); + hardwareEncoder->setQuality(m_quality); + hardwareEncoder->setEncodingPreference(m_encodingPreference); +@@ -314,7 +287,7 @@ std::unique_ptr PipeWireProduce::makeEncoder() + } + } + +- if (!forceHardware) { ++ if (forcedEncoder.isNull() || forcedEncoder == u"libx264") { + auto softwareEncoder = std::make_unique(profile, this); + softwareEncoder->setQuality(m_quality); + softwareEncoder->setEncodingPreference(m_encodingPreference); +@@ -325,7 +298,7 @@ std::unique_ptr PipeWireProduce::makeEncoder() + break; + } + case PipeWireBaseEncodedStream::VP8: { +- if (!forceHardware) { ++ if (forcedEncoder.isNull() || forcedEncoder == u"libvpx") { + auto encoder = std::make_unique(this); + encoder->setQuality(m_quality); + if (encoder->initialize(size)) { +@@ -335,7 +308,7 @@ std::unique_ptr PipeWireProduce::makeEncoder() + break; + } + case PipeWireBaseEncodedStream::VP9: { +- if (!forceHardware) { ++ if (forcedEncoder.isNull() || forcedEncoder == u"libvpx-vp9") { + auto encoder = std::make_unique(this); + encoder->setQuality(m_quality); + if (encoder->initialize(size)) { +-- +2.45.2 + diff --git a/0002-Add-encoder-using-libopenh264.patch b/0002-Add-encoder-using-libopenh264.patch new file mode 100644 index 0000000..f7ca058 --- /dev/null +++ b/0002-Add-encoder-using-libopenh264.patch @@ -0,0 +1,223 @@ +From 43ab595c28e031f38bc92bea4cf475de64021958 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Sat, 6 Jul 2024 16:40:42 +0200 +Subject: [PATCH 2/2] Add encoder using libopenh264 + +On some distributions, libopenh264 is the only encoder available OOTB. +Add support for it and use it as fallback. + +BUG: 476187 +(cherry picked from commit e17793a3b023f26411001093bb2d5934adf715c7) +--- + src/CMakeLists.txt | 1 + + src/libopenh264encoder.cpp | 106 ++++++++++++++++++++++++++++++ + src/libopenh264encoder_p.h | 28 ++++++++ + src/pipewirebaseencodedstream.cpp | 2 +- + src/pipewireproduce.cpp | 11 ++++ + 5 files changed, 147 insertions(+), 1 deletion(-) + create mode 100644 src/libopenh264encoder.cpp + create mode 100644 src/libopenh264encoder_p.h + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index e96f52b..3126528 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -135,6 +135,7 @@ add_library(KPipeWireRecord ${kpipewirerecord_SRCS} + encoder.cpp + h264vaapiencoder.cpp + libx264encoder.cpp ++ libopenh264encoder.cpp + libvpxencoder.cpp + libvpxvp9encoder.cpp + ) +diff --git a/src/libopenh264encoder.cpp b/src/libopenh264encoder.cpp +new file mode 100644 +index 0000000..6d4c6a1 +--- /dev/null ++++ b/src/libopenh264encoder.cpp +@@ -0,0 +1,106 @@ ++/* ++ SPDX-FileCopyrightText: 2023 Aleix Pol Gonzalez ++ SPDX-FileCopyrightText: 2023 Marco Martin ++ SPDX-FileCopyrightText: 2023 Arjen Hiemstra ++ SPDX-FileCopyrightText: 2024 Fabian Vogt ++ ++ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL ++*/ ++ ++#include "libopenh264encoder_p.h" ++ ++#include ++#include ++ ++extern "C" { ++#include ++#include ++#include ++#include ++} ++ ++#include "logging_record.h" ++ ++LibOpenH264Encoder::LibOpenH264Encoder(H264Profile profile, PipeWireProduce *produce) ++ : SoftwareEncoder(produce) ++ , m_profile(profile) ++{ ++} ++ ++bool LibOpenH264Encoder::initialize(const QSize &size) ++{ ++ createFilterGraph(size); ++ ++ auto codec = avcodec_find_encoder_by_name("libopenh264"); ++ if (!codec) { ++ qCWarning(PIPEWIRERECORD_LOGGING) << "libopenh264 codec not found"; ++ return false; ++ } ++ ++ m_avCodecContext = avcodec_alloc_context3(codec); ++ if (!m_avCodecContext) { ++ qCWarning(PIPEWIRERECORD_LOGGING) << "Could not allocate video codec context"; ++ return false; ++ } ++ ++ Q_ASSERT(!size.isEmpty()); ++ m_avCodecContext->width = size.width(); ++ m_avCodecContext->height = size.height(); ++ m_avCodecContext->max_b_frames = 0; ++ m_avCodecContext->gop_size = 100; ++ m_avCodecContext->pix_fmt = AV_PIX_FMT_YUV420P; ++ m_avCodecContext->time_base = AVRational{1, 1000}; ++ ++ if (m_quality) { ++ // "q" here stands for "quantization", but that effectively impacts quality. ++ m_avCodecContext->qmin = m_avCodecContext->qmax = percentageToAbsoluteQuality(m_quality); ++ } ++ ++ switch (m_profile) { ++ case H264Profile::Baseline: ++ // libopenh264 only does constrained baseline. ++ // There's a bug in the ffmpeg -> openh264 interface though: ++ // ffmpeg expects CONSTRAINED_BASELINE from the application and ++ // passes that through, but libopenh264 only allows BASELINE. ++ // Until that bug is fixed there'll always be a warning that the ++ // profile is not supported (https://github.com/cisco/openh264/issues/3613) ++ m_avCodecContext->profile = FF_PROFILE_H264_CONSTRAINED_BASELINE; ++ break; ++ case H264Profile::Main: ++ m_avCodecContext->profile = FF_PROFILE_H264_MAIN; ++ break; ++ case H264Profile::High: ++ m_avCodecContext->profile = FF_PROFILE_H264_HIGH; ++ break; ++ } ++ ++ AVDictionary *options = nullptr; ++ av_dict_set_int(&options, "threads", qMin(16, QThread::idealThreadCount()), 0); ++ applyEncodingPreference(options); ++ ++ if (int result = avcodec_open2(m_avCodecContext, codec, &options); result < 0) { ++ qCWarning(PIPEWIRERECORD_LOGGING) << "Could not open codec" << av_err2str(result); ++ return false; ++ } ++ ++ return true; ++} ++ ++int LibOpenH264Encoder::percentageToAbsoluteQuality(const std::optional &quality) ++{ ++ if (!quality) { ++ return -1; ++ } ++ ++ // 1-51 (incl.), lower is better ++ return 51 - (m_quality.value() / 100.0) * 50; ++} ++ ++void LibOpenH264Encoder::applyEncodingPreference(AVDictionary *options) ++{ ++ SoftwareEncoder::applyEncodingPreference(options); ++ // Disable motion estimation, not great while dragging windows but speeds up encoding by an order of magnitude ++ av_dict_set(&options, "flags", "+mv4", 0); ++ // Disable in-loop filtering ++ av_dict_set_int(&options, "loopfilter", 0, 0); ++} +diff --git a/src/libopenh264encoder_p.h b/src/libopenh264encoder_p.h +new file mode 100644 +index 0000000..fdacf14 +--- /dev/null ++++ b/src/libopenh264encoder_p.h +@@ -0,0 +1,28 @@ ++/* ++ SPDX-FileCopyrightText: 2023 Aleix Pol Gonzalez ++ SPDX-FileCopyrightText: 2023 Marco Martin ++ SPDX-FileCopyrightText: 2023 Arjen Hiemstra ++ SPDX-FileCopyrightText: 2024 Fabian Vogt ++ ++ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL ++*/ ++ ++#include "encoder_p.h" ++ ++/** ++ * A software encoder that uses ffmpeg + libopenh264 to encode to H.264. ++ */ ++class LibOpenH264Encoder : public SoftwareEncoder ++{ ++public: ++ LibOpenH264Encoder(H264Profile profile, PipeWireProduce *produce); ++ ++ bool initialize(const QSize &size) override; ++ ++protected: ++ int percentageToAbsoluteQuality(const std::optional &quality) override; ++ void applyEncodingPreference(AVDictionary *options) override; ++ ++private: ++ H264Profile m_profile = H264Profile::Main; ++}; +diff --git a/src/pipewirebaseencodedstream.cpp b/src/pipewirebaseencodedstream.cpp +index 553c334..814d8d9 100644 +--- a/src/pipewirebaseencodedstream.cpp ++++ b/src/pipewirebaseencodedstream.cpp +@@ -225,7 +225,7 @@ QList PipeWireBaseEncodedStream::suggestedEn + && avcodec_find_encoder_by_name("h264_vaapi")) { + return false; + } else { +- return !avcodec_find_encoder_by_name("libx264"); ++ return !(avcodec_find_encoder_by_name("libx264") || avcodec_find_encoder_by_name("libopenh264")); + } + default: + return true; +diff --git a/src/pipewireproduce.cpp b/src/pipewireproduce.cpp +index 416bcd3..52594e6 100644 +--- a/src/pipewireproduce.cpp ++++ b/src/pipewireproduce.cpp +@@ -16,6 +16,7 @@ + #include + + #include "h264vaapiencoder_p.h" ++#include "libopenh264encoder_p.h" + #include "libvpxencoder_p.h" + #include "libvpxvp9encoder_p.h" + #include "libx264encoder_p.h" +@@ -295,6 +296,16 @@ std::unique_ptr PipeWireProduce::makeEncoder() + return softwareEncoder; + } + } ++ ++ // Try libopenh264 last, it's slower and has less features. ++ if (forcedEncoder.isNull() || forcedEncoder == u"libopenh264") { ++ auto softwareEncoder = std::make_unique(profile, this); ++ softwareEncoder->setQuality(m_quality); ++ softwareEncoder->setEncodingPreference(m_encodingPreference); ++ if (softwareEncoder->initialize(size)) { ++ return softwareEncoder; ++ } ++ } + break; + } + case PipeWireBaseEncodedStream::VP8: { +-- +2.45.2 + diff --git a/kpipewire-6.1.3.tar.xz b/kpipewire-6.1.3.tar.xz new file mode 100644 index 0000000..aeaa567 --- /dev/null +++ b/kpipewire-6.1.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb2217024e3bf3a4777548b9a0bda88ca0b97912d20336b03f5942b28b1baef9 +size 148504 diff --git a/kpipewire-6.1.3.tar.xz.sig b/kpipewire-6.1.3.tar.xz.sig new file mode 100644 index 0000000..d49c963 --- /dev/null +++ b/kpipewire-6.1.3.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmaWVKcACgkQ11dEg7tX +sY0bnA/9FAl4Ym/986mF3V5rW/z7SACdBUSd/PivMDigDVRedzYuAe2oR87e2paO +UO51vAEGjXZEeNk9X2jUd/nYXda/EtwjWHMxxHsnzgb5kpIvA7vZ+9tE5FCNUbRy +9EWMf2OId/INCsSh6RH6iLmiuoUa7jtdJ2cAvx5AxSGfYxjHj3YAoWk77zDAxhy4 +bZzY0+5fgYCcT8xbSUeGiRscXIw/G6Q8boOOqACyeJCD7mESOB4BtziF6RL4r05i +EBMeuutUDTK1//bu6Y4MaEKx1bPrawR6RQeFocW4Pgp2hKiPTRuWMy8e+7OjTvb1 +cfQlEqOEVtyWKAD5uSCCif+yCqdFkSXXpo9vNXpKjBnMlyXASFLM7jN8TIm7HcQo +FqPaHstaOaOOQ33om5PjLsSNEzV/MSv2SQ6aA0CbglJxBm5okfLuYb/Vuaid4iPD +LV5eySGagfmI+LS/SGUTbNC499+cFCnWB0XziYbbW0mxQWfBe25Yxk4LXMzSYFIH +WZE3MUgKbPRrRL4/VGdrD2eBGCt7p2xlLEdmTSVJ0AIHfKoaIC8hmDoy3N8L8S7Q +IS9Qf95EASBc0/aDbY7o1JQuKjR8VnDvE8ooBtBnW9sObnDSJhWYpi8fOr1ZhWvW +RKDnX/B6rWkIVqG7rZLUcpXwrnQjAdnO5B3NAwn7Eo7/vt0OFdY= +=9kTE +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.1.4.tar.xz b/kpipewire-6.1.4.tar.xz new file mode 100644 index 0000000..44855e5 --- /dev/null +++ b/kpipewire-6.1.4.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab116d56fd8a6b36da6b595f597cf4383d8ed171f8e625dca67b7a4645337134 +size 148980 diff --git a/kpipewire-6.1.4.tar.xz.sig b/kpipewire-6.1.4.tar.xz.sig new file mode 100644 index 0000000..2efcbc5 --- /dev/null +++ b/kpipewire-6.1.4.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmayGCUACgkQ11dEg7tX +sY1swQ/8CARXuUAQxMDLs5tkDTk9RZudSLocHQKgAi8JIIWh6uGHcn9fcVfM5nsA +ml/esuTG3eWz3ezqGQqzWLWinSPDvsWnpS6fiBE2aBWIHaFLI5RObtpjYtY0Dfpc +YruJx6WbnHWIzdUN4bls5dPwL0Josg0Uu/gAL46bAHY6+PprHEJnOZkmJAs9GOJE +PAnoWotE+2wrACd0BP+LzXzn/EcfGVx0SmLSiL581zbFWRYyb7H/nFNnkq1HZDMy +V+x2Gg8va6Ft3LKDoLZlil3oEfr76pDv+NQKesaOrGtu4YWcjSBUWmyMErLDjk9k +gd7gQfxAJQ1he6z4ueJc3Zx/aAir8VxXAb1xIluHLlclLqZSIsHZA4Izg7SNqeju +G4eO9h6ap9Ttvz0z8mB0XfvZLpGlXteAkBEZ4iG5skj/r3G97cSu9onLNznMKA7A +P0vT1Px+qye45wz3AZkQMsUkZ332MPTdnazxP7dyK5hHw8p1TtRaP9BwDp/QZisP +DYEJtjGpMDjOlV/bSG5otDcJ/ykvDF1AVSw1iBNKJY1Mcrl1bmmrVl89A+duR2sS +PAGw9ye1euFubA4pUo5hz9DrDKaAOCeWQB2eSZvkHfbVbPbFx/hhsbLRmv8rOvVp +hxeSooNYuCWQNp3CUD6DzBIreIbsiBvmdY+aRvFaUe/o80cEx9g= +=03/q +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.1.5.tar.xz b/kpipewire-6.1.5.tar.xz new file mode 100644 index 0000000..d4850e0 --- /dev/null +++ b/kpipewire-6.1.5.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25b32cfcaff352f0c4acda5746adffd2e3b28b5ff0648521bde8628ca7145a49 +size 149096 diff --git a/kpipewire-6.1.5.tar.xz.sig b/kpipewire-6.1.5.tar.xz.sig new file mode 100644 index 0000000..9b927a0 --- /dev/null +++ b/kpipewire-6.1.5.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmbgCFcACgkQ11dEg7tX +sY1ypg/+LX5uzdfEqBbZQNtyl7selXiGGlWlwqgB0zbVhLI4KawapP0zU1YTgQtQ +eVjHBF9TdRyN3JgEKeDhAeKxchIau0n7/VNugvLLlyB93vC4Qmg6Dy7szIuiLoIa +tWycxAaPaaF+LLx+WHwYG4ymgWvzkh0+7dYoWn4EBwfrqhqB8ijJexWYawgqEiVh +FdkFiOGPLZ8nbwCkvYFFkxv9cfHmCO4nZpHrfekp8vvSsGY9sngvvjhHc+Uf0eU8 +Q7Onyro768isRP+pPsifZwjLS1JvdMIKHt3+gC9/MTLXsc2kyBSNnlVGFT+JAV6A +fdMt3AuuBeVVJPJ11TiawefjR1KCSh8jdeHNsBmszBvpXTuAcC2pbEF22KOwau7W +qBU15RYl1g9DRL/0h0XzTDHjOdi+IQOmui1ZrO1vNrw+uxA+Zo7dPBSbf7ex4E33 +AEgzQrDiZgk+DBPC3opIl1W4IB1kf+FTu1azqCT5DFR3S5QEA7vLbidaV8T2VGH9 +EE0eZEiGBeKrzj7O8KpclRL2IDuBsBfEQoSiDQU34Pk2Q9Vw9HvL2Au/j/tBzc67 +OT//ng3QXjK/rl2iw9Bj6WZfLODiRGE1edQ79nxfJHZpIl+HTubQxDtlDOQ3bYOd +lqQiy0KgupZ19xbH9BnLrgeEzQM0rp4xgr78rEEcJOQIPOc6WAo= +=t2v3 +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.2.0.tar.xz b/kpipewire-6.2.0.tar.xz new file mode 100644 index 0000000..eb92b50 --- /dev/null +++ b/kpipewire-6.2.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72c07e6c6608b6c5eaa2460d975bf9047489651fb05de5e5b540876529f425b0 +size 149360 diff --git a/kpipewire-6.2.0.tar.xz.sig b/kpipewire-6.2.0.tar.xz.sig new file mode 100644 index 0000000..4b0407c --- /dev/null +++ b/kpipewire-6.2.0.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmb+j+4ACgkQ11dEg7tX +sY3vvA//eoAg4EYFceZSCoUa7Bi96Rl/cy3HQCDWqOakoBMFxTNH6f+Q1jleBPVh +0TXzqGQpMgx9MQsRJrpeJnoTXKsVUD+TpFDNh5C+eSf4e12G7BJZZoMTPmkWNwLY +itopMgfLtMvYfUIfPMb41lNfNSbPTQy6H7Y+yrQe4QoujPRACDtvLO18tuhdtuwa +zhWV7y+aTbbbOi45STBbMbpYddx7Qo9Lx9PYfZQU4VkAzQHHPHrbbkBKoMMkN6G4 +7VvR5QPrVokd4H0t5X795Zu2V30/zofHTiA8EUu+wchD8helHwUzlxriZcXis1rt +VRtKsuaXV44SsrB+JCjtE4QQXiRNnHEnJbSLnHLUrr23nybSjDYFNBQsaCMBWLWu +6aRNaThm7Sui4MN7rKKs/7YwlrF20si+xPG7gnr8V2ckQhCsBo/OXM41Z2+GXEPu +eP01jW2txlGE9oZBMSH/pa9odzeu11FUUrBx/EOHR94wozLu+EEDKevvLdmurvcK +X8kUHmY30SVCJAv1w9EOOOPofodbx0/UocVHwWuKtDLKry+GfFlOatQDN3B+RqcX +qC/X8AhDaY9C/r+YPZlvlQ99pFfnXyrxELjVZRi/F349/4qxpu5oLnQ2bdq9FYXj +ePkaP11gwnWdYj/n+guxIDgpRuuAN9jjGudEIx5JEoVPgc60Gyw= +=MvNW +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.2.1.tar.xz b/kpipewire-6.2.1.tar.xz new file mode 100644 index 0000000..eecddb8 --- /dev/null +++ b/kpipewire-6.2.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1675e2f06e20661a5d77400533d552a32a2d6dcc2d9eda02bca8e5adbbc243c8 +size 149552 diff --git a/kpipewire-6.2.1.tar.xz.sig b/kpipewire-6.2.1.tar.xz.sig new file mode 100644 index 0000000..8daa537 --- /dev/null +++ b/kpipewire-6.2.1.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcOaoEACgkQ11dEg7tX +sY3H/g//TY8CCTvRzYhzKvkub7YUcN4Zxg92SPGMN0aeFVQfNaz/SOSnHETNyM1H +QNedFAo2Dw449qcctPLggJFhZ3c24syUUNV3YQ9UOIRliuV9YDQVw5MFEmxunm4y +XO75MQdgo9FrE2k8mBWdomYzqGBwERjc0OqaSveBxVNSC0zcv9heZGLtkqHgYBhb +5bI0dcadbQ56JoSnZGCUX1qmA7WsfEosLmtM5X4N+wH/aK1O12LpRqVtraaWhvVC ++2SWYyP5MIHytFL4e7eZMYmHQwAnEOsV2pFFK2n/xpWV7bhkQSUS8rIGDT1ixITw +66skfNf9W/JzTmDrgG5ni60Z+GlEC/g6XiwqreZweQyoIBpHvpcFa+44St9GW3MT +BjKe/bv74exD8mAdgsKbJbpR9oi703k4xFwfeI6cVVRPjJvH0M+Qgg482AfqTgtv +4/l+MMStQY0wS0c/nz2i44B26wE2jYrORGdFSXLIUKGt7zNQ2icRrlabihKys9zo +qRZMFmSULtRbmYhNz50+5/LSRET5b48hwLgNVOQS+qkhgK7J/xhJZI753mIF5QCK +6ZLJQnxga4v/F6kqNkmls1T49YPMTY2WPbdeQd+ktTdXiDxN2DEOmzfaZJTIFNZ5 +1HX7PTMz//u6zrEttX/9+N23N4QvCiFvnYwrAxKbKno9utouWVA= +=E28Z +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.2.3.tar.xz b/kpipewire-6.2.3.tar.xz new file mode 100644 index 0000000..73f0108 --- /dev/null +++ b/kpipewire-6.2.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb473f15b4d4f59479cbbaba6ef781d9bc48813b97c35edfb3982d0ac8f030f7 +size 149944 diff --git a/kpipewire-6.2.3.tar.xz.sig b/kpipewire-6.2.3.tar.xz.sig new file mode 100644 index 0000000..b4b86e7 --- /dev/null +++ b/kpipewire-6.2.3.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcqEQUACgkQ11dEg7tX +sY0Tjg/5AcHocA1HocrGDctrKjdu726H9WqfXKTP72cd2lFPdOda47MMKq4z0Ye+ +qbfJ+eL6B8BCd7dvqjEU2FEYajV1WilzaD0ic3a+EuHJLIcdurDRmWmspgfMlWu7 +2/kiWKkZR/DTsxbBosan9Df+v1vj2mkTYe8C43uBYUVdK5zZv/R2nSoYW9hH0meN +J0yEoo8RZgyMdjJNChLomP7cypNOSVCJDf1RASK+U5ajzFC7Z8dyueeeQ8JUYXAw +KzXTTtLDxm9g6hSyLo1VwjLf4PUzbLki67Lh9RlwQhoWh7IaemPA/B2WcQh5f+7K +esoNHM1m1MGhdSt7vkGDGJf3dmtfMTsj3Hku365GJUuRk1l9oKjY9EPHxPpMUS/b +6CtGTux4eZO1Yb5MqQOneGAELrYflDtbxH77UYySPs4nnUKNFF877gvJvkO0RlP5 +yAJPtnCp3fAyse+oXNJ9N0vBkeSb/VPs0N5+7bPGmC7/hHruCOtecKesApxxM6ZF +YmS9lnoGmb4DgM34QBMaT/ETl276pryI3W0yqssjzBTUWv3wbU0YQVy5RUa3QlhU +CRXeGyfz/kdSO2r875MEPeSZ2MUWXNWBZ+e2ph7+850WbDBioX+NJqMZ807cBu9r +g/6rVpcHL/pHP5QIx/5A6sgkOnjGHIz/H4/3oHZ9e3cXPt2FyGo= +=MpOM +-----END PGP SIGNATURE----- diff --git a/kpipewire-6.2.4.tar.xz b/kpipewire-6.2.4.tar.xz new file mode 100644 index 0000000..b54c441 --- /dev/null +++ b/kpipewire-6.2.4.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76e456206a9f6e922cb10614476a19682f8c27957c5c8998f1d1a0dadb94ca6b +size 149944 diff --git a/kpipewire-6.2.4.tar.xz.sig b/kpipewire-6.2.4.tar.xz.sig new file mode 100644 index 0000000..c1dae03 --- /dev/null +++ b/kpipewire-6.2.4.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdFndoACgkQ11dEg7tX +sY2i2Q/7B9VQW4QuVOnU5iRj8jSyXaTir14eqIuwb1ZycNJclrgeYAfkUM7XEQXA +YstoEa48t+h93cxiAiiNltYG1LzZRrsVe+x4+WHI8u14Wfk41Gp7882Qvgp+XVTd +i3GNV+TzmD0zKN+f8yeGqy4tEBJOpL1uLEjr0ORIslwz1lhq0CjBJX1DYz1r8aS/ +zcuqrGaZjAYk8QqTasq7Z0vTwDtSaLvkIcyN5guqdqlb0/b83oBXXQ5IFfjOh+ve +1D9zeMaQ/RZxHG97MllKCi5B6Pue3SEjV9RRsjJd9DzlHmr7xVqYN1FqTgmLsfJK +Affe4f6l6B+EmgkUHBM4h3vznPNLk3gK0eSOv1kr9OAl/Fo7mZlqOLA/5otH6t20 +2PgK9gXYswscs57+u1vYHN4HfMUSDNuDFcNjbSWLRir6mFCysFN52cQBZnBeiSCH +P8JEMPODpMj0wJY8H73X0uAhBOHcNbdFHaLOPJ58Pquh8if0DS6ri3P4SnYzVPXh +RaZbc2yo+U1nN/lJjkyLprKd9vmXaPdLltmfwkM5/LCDiEmU6h0PjwjXfuMRB/iO +gikyvU39lDda65QK/mHuIGQE7v5491iE8u+WfEtqLbS6+Jsg/OZuyz3hXdM9KHXo +BhlEqT+oTOMUCjYdVVnZq1j+8bGtKOeO3lZIL/+OE9mzVZg0vUo= +=y0hI +-----END PGP SIGNATURE----- diff --git a/kpipewire6.changes b/kpipewire6.changes new file mode 100644 index 0000000..d7e2d59 --- /dev/null +++ b/kpipewire6.changes @@ -0,0 +1,292 @@ +------------------------------------------------------------------- +Tue Nov 26 15:46:00 UTC 2024 - Fabian Vogt + +- Update to 6.2.4: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.2.4 +- Changes since 6.2.3: + * update version for new release + +------------------------------------------------------------------- +Tue Nov 5 13:30:18 UTC 2024 - Fabian Vogt + +- Update to 6.2.3: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.2.3 +- Changes since 6.2.2: + * update version for new release + * libx264encoder: Ensure stream size is always a multiple of 2 (kde#485733) + * encoder: Make it possble to override the filter graph used for software encode + +------------------------------------------------------------------- +Tue Oct 22 14:07:26 UTC 2024 - Fabian Vogt + +- Update to 6.2.2: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.2.2 +- Changes since 6.2.1: + * update version for new release + +------------------------------------------------------------------- +Tue Oct 15 16:53:25 UTC 2024 - Fabian Vogt + +- Update to 6.2.1: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.2.1 +- Changes since 6.2.0: + * PipeWireSourceStream: work around crashes for pipewire < 0.3.49 (kde#492400) + * produce: Flush remaining frames when we are deactivating (kde#471159) + * update version for new release + +------------------------------------------------------------------- +Sat Oct 5 10:44:17 UTC 2024 - Fabian Vogt + +- Update to 6.2.0: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.2.0 +- Changes since 6.1.90: + * update version for new release + * h264vaapi: Use the proper getter for getting the hardware context + +------------------------------------------------------------------- +Thu Oct 3 14:12:07 UTC 2024 - Christophe Marin + +- Drop patch, no longer needed: + * 0001-h264vaapi-Use-the-proper-getter-for-getting-the-hard.patch + +------------------------------------------------------------------- +Thu Oct 3 14:08:29 UTC 2024 - Christophe Marin + +- Add ffmpeg 7.1 compatibility patch: + * 0001-h264vaapi-Use-the-proper-getter-for-getting-the-hard.patch + +------------------------------------------------------------------- +Tue Sep 17 14:53:30 UTC 2024 - Fabian Vogt + +- Update to 6.1.90: + * New feature release + * For more details see https://kde.org/announcements/plasma/6/6.1.90 +- Changes since 6.1.5: + * update version for new release + * sourcestream: Do not process null streams + * Add missing "pipewireencodedstream.h" include + * Generate wayland code with PRIVATE_CODE + * produce: Use a separate condition_variable for passthrough/output thread + * Guard m_stream in setMaxFramerate + * pipewireproduce.cpp: Add guard to m_stream + * sourcestream: make resilient against pipewire restarts + * Fix some copy-and-paste issues in h264vaapi and libx264 encoders + * Add encoder using libopenh264 (kde#476187) + * Simpler yet more useful handling of KPIPEWIRE_FORCE_ENCODER + * produce: Properly cleanup on deactivate in all cases (kde#488687) + * produce: Destroy PipeWireSourceStream on the right thread (kde#489434) + * gitignore: add VS Code dir + * mediamonitortest: start media session and create dummy output to test playback state + * Use only non external only format modifiers + * Drop implicit modifier shortcut + * Use reserve to reserve space in list + * update version for new release + +------------------------------------------------------------------- +Tue Sep 10 14:53:47 UTC 2024 - Fabian Vogt + +- Update to 6.1.5: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.5 +- Changes since 6.1.4: + * sourcestream: Do not process null streams + * pipewireproduce.cpp: Add guard to m_stream + * update version for new release + +------------------------------------------------------------------- +Tue Aug 6 13:26:49 UTC 2024 - Fabian Vogt + +- Update to 6.1.4: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.4 +- Changes since 6.1.3: + * update version for new release + * sourcestream: make resilient against pipewire restarts + * Add encoder using libopenh264 (kde#476187) +- Drop patches, now upstream: + * 0001-Simpler-yet-more-useful-handling-of-KPIPEWIRE_FORCE_.patch + * 0002-Add-encoder-using-libopenh264.patch + +------------------------------------------------------------------- +Tue Jul 16 13:35:56 UTC 2024 - Fabian Vogt + +- Add patches to support libopenh264 for encoding + (boo#1227461, kde#476187): + * 0001-Simpler-yet-more-useful-handling-of-KPIPEWIRE_FORCE_.patch + * 0002-Add-encoder-using-libopenh264.patch + +------------------------------------------------------------------- +Tue Jul 16 13:23:41 UTC 2024 - Fabian Vogt + +- Update to 6.1.3: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.3 +- Changes since 6.1.2: + * produce: Properly cleanup on deactivate in all cases (kde#488687) + * produce: Destroy PipeWireSourceStream on the right thread (kde#489434) + * update version for new release + +------------------------------------------------------------------- +Tue Jul 2 17:34:03 UTC 2024 - Fabian Vogt + +- Update to 6.1.2: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.2 +- Changes since 6.1.1: + * update version for new release + +------------------------------------------------------------------- +Tue Jun 25 17:13:11 UTC 2024 - Fabian Vogt + +- Update to 6.1.1: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.1 +- Changes since 6.1.0: + * update version for new release + +------------------------------------------------------------------- +Thu Jun 13 10:58:29 UTC 2024 - Fabian Vogt + +- Update to 6.1.0: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.1.0 +- Changes since 6.0.90: + * update version for new release + * Use only non external only format modifiers + * Drop implicit modifier shortcut + * Use reserve to reserve space in list + +------------------------------------------------------------------- +Sat May 25 11:18:12 UTC 2024 - Fabian Vogt + +- Update to 6.0.90: + * New feature release + * For more details see https://kde.org/announcements/plasma/6/6.0.90 +- Too many changes to list here + +------------------------------------------------------------------- +Wed May 22 07:43:04 UTC 2024 - Fabian Vogt + +- Update to 6.0.5: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.0.5 +- Changes since 6.0.4: + * update version for new release + +------------------------------------------------------------------- +Wed Apr 17 08:12:31 UTC 2024 - Fabian Vogt + +- Update to 6.0.4: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.0.4 +- Changes since 6.0.3: + * fix version + * update version for new release + * encode: Only increase filtered frame count if frame was actually submitted + * Fix nullptr check (kde#484620) + * Generate presentation timestamps from std::chrono::steady_clock if SPA_META_Header is missing + * Fix a minor coding style issue + * Ignore buffers with SPA_META_HEADER_FLAG_CORRUPTED + * Ignore chunk size of SPA_DATA_DmaBuf + * typo + * update version for new release + * fix typo + * update version for new release + +------------------------------------------------------------------- +Tue Mar 26 18:05:35 UTC 2024 - Fabian Vogt + +- Update to 6.0.3: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.0.3 +- Changes since 6.0.2: + * fix typo + * update version for new release + * Don't set PipeWireSourceItem::enabled to true when the item becomes visible + * Drop redundant isComponentComplete() checks + * Remove redundant code + * Mark PipeWireSourceItem as enabled after receiving a frame + +------------------------------------------------------------------- +Wed Mar 13 09:09:42 UTC 2024 - Fabian Vogt + +- Update to 6.0.2: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.0.2 +- Changes since 6.0.1: + * fix version + * update version for new release + * bump version ahead of new release + * cmake: Add missing " to unbreak the build +- Drop patches, now upstream: + * 0001-cmake-Add-missing-to-unbreak-the-build.patch + +------------------------------------------------------------------- +Wed Mar 6 08:40:27 UTC 2024 - Fabian Vogt + +- Update to 6.0.1: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.0.1 +- Changes since 6.0.0: + * update version for new release +- Add patch to fix build (wtf): + * 0001-cmake-Add-missing-to-unbreak-the-build.patch +- Drop patch, no longer necessary: + * 0001-Set-SOVERSION-to-6.patch + +------------------------------------------------------------------- +Wed Feb 21 18:36:12 UTC 2024 - Fabian Vogt + +- Update to 6.0.0: + * New bugfix release + * Release announcement not available yet +- Changes since 5.93.0: + * add back quotes + * update version for new release + * Drop defined but undeclared property + * record: Make sure we also finalise streams that didn't even start + * revert to version 6.0.0 + * set major version for soname + * revert version number for bugfix release + * Set the framework version in the project() call + * bugfix release + * Install kpipewire_version.h + +------------------------------------------------------------------- +Tue Feb 6 18:22:58 UTC 2024 - Fabian Vogt + +- Update to 5.93.1: + * New bugfix release + * See https://kde.org/announcements/megarelease/6/rc2/ for details +- Changes since 5.93.0: + * Set the framework version in the project() call + * Install kpipewire_version.h +- Add patch to set the SOVERSION correctly: + * 0001-Set-SOVERSION-to-6.patch + +------------------------------------------------------------------- +Wed Jan 31 17:37:04 UTC 2024 - Fabian Vogt + +- Update to 5.93.0 (6.0 RC 2): + * New bugfix release + * See https://kde.org/announcements/megarelease/6/rc2/ for details +- Changes since 5.92.0: + * source: Increase logging, drop redundant condition + * Add missing cases to convertQImageFormatToAVPixelFormat + +------------------------------------------------------------------- +Mon Jan 15 21:08:49 UTC 2024 - Fabian Vogt + +- Update to 5.92.0 (6.0 RC 1) + * For more details please see: + https://kde.org/announcements/megarelease/6/rc1/ + +------------------------------------------------------------------- +Sat Jul 1 15:46:53 UTC 2023 - Christophe Marin + +- Init kpipewire6 diff --git a/kpipewire6.spec b/kpipewire6.spec new file mode 100644 index 0000000..0fb7b23 --- /dev/null +++ b/kpipewire6.spec @@ -0,0 +1,162 @@ +# +# spec file for package kpipewire6 +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global kf6_version 6.0.0 +%define qt6_version 6.7.0 + +%define _sover 6 +%define rname kpipewire +# Full Plasma 6 version (e.g. 6.0.0) +%{!?_plasma6_bugfix: %global _plasma6_bugfix %{version}} +# Latest ABI-stable Plasma (e.g. 6.0 in KF6, but 6.0.80 in KUF) +%{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk -F. '{print $1"."$2}')} +%bcond_without released +Name: kpipewire6 +Version: 6.2.4 +Release: 0 +Summary: PipeWire integration for KDE Plasma +License: LGPL-2.0-only AND LGPL-3.0-only +URL: https://www.kde.org +Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz +%if %{with released} +Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig +Source2: plasma.keyring +%endif +BuildRequires: kf6-extra-cmake-modules +BuildRequires: pkgconfig +BuildRequires: qt6-gui-private-devel >= %{qt6_version} +BuildRequires: cmake(KF6CoreAddons) >= %{kf6_version} +BuildRequires: cmake(KF6I18n) >= %{kf6_version} +BuildRequires: cmake(KWayland) >= %{_plasma6_version} +BuildRequires: cmake(PlasmaWaylandProtocols) +BuildRequires: cmake(Qt6DBus) >= %{qt6_version} +BuildRequires: cmake(Qt6Quick) >= %{qt6_version} +BuildRequires: cmake(Qt6QuickTest) >= %{qt6_version} +BuildRequires: cmake(Qt6Test) >= %{qt6_version} +BuildRequires: cmake(Qt6WaylandClient) >= %{qt6_version} +BuildRequires: pkgconfig(egl) +BuildRequires: pkgconfig(epoxy) +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavfilter) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libpipewire-0.3) +BuildRequires: pkgconfig(libswscale) +BuildRequires: pkgconfig(libva) +BuildRequires: pkgconfig(libva-drm) + +%description +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. + +%package -n libKPipeWire%{_sover} +Summary: PipeWire integration for KDE Plasma - main library + +%description -n libKPipeWire%{_sover} +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. +This package contains the main KPipeWire library. + +%package -n libKPipeWireRecord%{_sover} +Summary: PipeWire integration for KDE Plasma - recording support + +%description -n libKPipeWireRecord%{_sover} +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. +This package contains the library needed for video and audio capture. + +%package -n libKPipeWireDmaBuf%{_sover} +Summary: PipeWire integration for KDE Plasma - DMA-BUF support + +%description -n libKPipeWireDmaBuf%{_sover} +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. +This package provides a helper for downloading DMA-BUF textures for CPU processing. + +%package imports +Summary: QtQuick bindings for kpipewire6 +Requires: libKPipeWire%{_sover} = %{version} +Requires: libKPipeWireDmaBuf%{_sover} = %{version} +Requires: libKPipeWireRecord%{_sover} = %{version} + +%description imports +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. +This package provides QtQuick bindings for the main KPipeWire libraries. + +%package devel +Summary: Development files for kpipewire6 +Requires: kpipewire6-imports = %{version} +Requires: libKPipeWire%{_sover} = %{version} +Requires: libKPipeWireDmaBuf%{_sover} = %{version} +Requires: libKPipeWireRecord%{_sover} = %{version} +Requires: pkgconfig(epoxy) +Requires: pkgconfig(libpipewire-0.3) +Conflicts: kpipewire-devel + +%description devel +KPipeWire provides PipeWire integration for the Plasma desktop and mobile shells. +This package provides the development files needed to build applications +which use KPipeWire. + +%lang_package -n libKPipeWire%{_sover} + +%prep +%autosetup -p1 -n %{rname}-%{version} + +%build +%cmake_kf6 + +%kf6_build + +%install +%kf6_install + +%find_lang kpipewire6 + +%check +# Test fails since 03201bb6. A running pipewire is required +# %%ctest + +%ldconfig_scriptlets -n libKPipeWire%{_sover} +%ldconfig_scriptlets -n libKPipeWireRecord%{_sover} +%ldconfig_scriptlets -n libKPipeWireDmaBuf%{_sover} + +%files -n libKPipeWire%{_sover} +%license LICENSES/* +%doc README.md +%{_kf6_libdir}/libKPipeWire.so.* +%{_kf6_debugdir}/kpipewire.categories + +%files -n libKPipeWireRecord%{_sover} +%{_kf6_libdir}/libKPipeWireRecord.so.* +%{_kf6_debugdir}/kpipewirerecord.categories + +%files -n libKPipeWireDmaBuf%{_sover} +%{_kf6_libdir}/libKPipeWireDmaBuf.so.* + +%files imports +%{_kf6_qmldir}/org/kde/pipewire/ + +%files devel +%{_includedir}/KPipeWire/ +%{_kf6_cmakedir}/KPipeWire/ +%{_kf6_libdir}/libKPipeWire.so +%{_kf6_libdir}/libKPipeWireRecord.so +%{_kf6_libdir}/libKPipeWireDmaBuf.so + +%files -n libKPipeWire%{_sover}-lang -f kpipewire6.lang + +%changelog diff --git a/plasma.keyring b/plasma.keyring new file mode 100644 index 0000000..df40fb7 Binary files /dev/null and b/plasma.keyring differ