Package: kpipewire / 6.3.6-1

Metadata

Package Version Patches format
kpipewire 6.3.6-1 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
upstream_686df1e3_Tweak compiler warning flags to reduce unneeded output.patch | (download)

src/CMakeLists.txt | 2 1 + 1 - 0 !
src/libwebpencoder.cpp | 7 0 + 7 - 0 !
2 files changed, 1 insertion(+), 8 deletions(-)

 [patch] tweak compiler warning flags to reduce unneeded output

-Wno-gnu-statement-expression-from-macro-expansion and
-Wno-c99-extensions are non-existent options that add more noise than
they fix. Additionally, -Wpedantic is enabled by default which causes a
lot of noise, so disable that. Finally, add
-Wno-missing-field-initializers to quiet down the final bits of PipeWire
API.

upstream_52911b70_Change Encoder applyEncodingPreference to buildEncodingOptions .patch | (download)

src/encoder.cpp | 6 5 + 1 - 0 !
src/encoder_p.h | 2 1 + 1 - 0 !
src/gifencoder.cpp | 7 0 + 7 - 0 !
src/gifencoder_p.h | 1 0 + 1 - 0 !
src/h264vaapiencoder.cpp | 10 5 + 5 - 0 !
src/h264vaapiencoder_p.h | 2 1 + 1 - 0 !
src/libopenh264encoder.cpp | 10 5 + 5 - 0 !
src/libopenh264encoder_p.h | 2 1 + 1 - 0 !
src/libvpxencoder.cpp | 10 6 + 4 - 0 !
src/libvpxencoder_p.h | 2 1 + 1 - 0 !
src/libvpxvp9encoder.cpp | 10 6 + 4 - 0 !
src/libvpxvp9encoder_p.h | 2 1 + 1 - 0 !
src/libwebpencoder_p.h | 1 0 + 1 - 0 !
src/libx264encoder.cpp | 11 6 + 5 - 0 !
src/libx264encoder_p.h | 2 1 + 1 - 0 !
15 files changed, 39 insertions(+), 39 deletions(-)

 [patch] change encoder::applyencodingpreference() to
 buildEncodingOptions()

As it turns out, FFmpeg does something to the pointers here that causes
the dictionary to never be properly used. This means we were never
applying the encoding options, as avcodec_open() was passed a nullptr
for options.

Fix this by changing the function to return an AVDictionary* instead of
trying to modify a passed-in pointer. This results in a proper dict
being returned, that can then be passed to avcodec_open().

The main result of this is that we now properly apply the encoding
options for VP9 encoding, which means we can now encode VP9 at realtime
speeds instead of it massively lagging behind.

BUG: 488896

upstream_c928ed5c_Add logging of encoding options if log level is set to info.patch | (download)

src/encoder.cpp | 10 10 + 0 - 0 !
src/encoder_p.h | 1 1 + 0 - 0 !
src/h264vaapiencoder.cpp | 1 1 + 0 - 0 !
src/libopenh264encoder.cpp | 1 1 + 0 - 0 !
src/libvpxencoder.cpp | 1 1 + 0 - 0 !
src/libvpxvp9encoder.cpp | 1 1 + 0 - 0 !
src/libx264encoder.cpp | 1 1 + 0 - 0 !
7 files changed, 16 insertions(+)

 [patch] add logging of encoding options if log level is set to info

Allows inspecting what's actually sent to FFmpeg.

upstream_f127a2cc_Set threads option by default in Encoder.patch | (download)

src/encoder.cpp | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 [patch] set "threads" option by default in encoder

So we don't have to repeat this in other encoders.

upstream_5a223fe4_Port Encoder away from deprecated avcodec close.patch | (download)

src/encoder.cpp | 3 1 + 2 - 0 !
1 file changed, 1 insertion(+), 2 deletions(-)

 [patch] port encoder away from deprecated avcodec_close


upstream_123ae0d2_Tweak encoding options for VP9.patch | (download)

src/libvpxvp9encoder.cpp | 18 4 + 14 - 0 !
1 file changed, 4 insertions(+), 14 deletions(-)

 [patch] tweak encoding options for vp9

Don't set both bitrate and CRF, as they are conflicting settings.
Instead only set CRF. Also enable row-mt and avoid modifying the codec
context in a function that is about options.

upstream_0ac4aa41_encodedstream Deprecate setActive and replace with an explicit API.patch | (download)

src/pipewirebaseencodedstream.cpp | 111 70 + 41 - 0 !
src/pipewirebaseencodedstream.h | 40 37 + 3 - 0 !
src/pipewireproduce.cpp | 2 2 + 0 - 0 !
src/pipewireproduce_p.h | 2 2 + 0 - 0 !
src/pipewirerecord.cpp | 1 0 + 1 - 0 !
tests/HeadlessTest.cpp | 20 16 + 4 - 0 !
6 files changed, 127 insertions(+), 49 deletions(-)

 [patch] encodedstream: deprecate setactive() and replace with an
 explicit API

setActive() currently implies starting/stopping the recording process.
However, this is somewhat awkward as everything is rather asynchronous
with multiple threads involved, which means calling setActive() may mean
things are not actually active or may still be active.

To avoid this awkwardness, deprecate setActive() and replace it with an
explicit start() and stop() method that are clearly documented to be
purely requests, with the real active/inactive state matching the stream
state.

This also makes the "Rendering" state more explicit, when "Stop" is
called we immediately switch to the "Rendering" state to indicate we may
still be processing frames but are no longer receiving new frames.

upstream_8793ae86_encodedstream Don t query VAAPI in the constructor.patch | (download)

src/pipewirebaseencodedstream.cpp | 8 5 + 3 - 0 !
1 file changed, 5 insertions(+), 3 deletions(-)

 [patch] encodedstream: don't query vaapi in the constructor

Querying VAAPI is expensive, so we should only do that when necessary.
So rather than querying what encoder to use on construction, query it on
start and only if we don't already have an encoder set. This also avoids
duplicate lookups if the user already set the encoder.

upstream_9fe7a568_Adjust timers from the correct thread.patch | (download)

src/pipewirebaseencodedstream.cpp | 10 7 + 3 - 0 !
1 file changed, 7 insertions(+), 3 deletions(-)

 [patch] adjust timers from the correct thread

PipeWireBaseEncodedStream moves the PipeWireProduce into another thread. It is
therefore it's responsiblity to ensure that any calls into PipeWireProduce are
run in the correct thread.

This addresses a warning about timers.