From: Arjen Hiemstra Date: Tue, 8 Oct 2024 12:20:55 +0000 (+0200) Subject: [PATCH] encodedstream: Don't query VAAPI in the constructor X-Git-Tag: archive/raspbian/6.3.6-1+rpi1^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ad1aa146709e931f12b30c6f61cac33e2fa2994c;p=kpipewire.git [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. Gbp-Pq: Name upstream_8793ae86_encodedstream-Don-t-query-VAAPI-in-the-constructor.patch --- diff --git a/src/pipewirebaseencodedstream.cpp b/src/pipewirebaseencodedstream.cpp index 27ef198..de51a90 100644 --- a/src/pipewirebaseencodedstream.cpp +++ b/src/pipewirebaseencodedstream.cpp @@ -28,7 +28,7 @@ struct PipeWireEncodedStreamPrivate { Fraction m_maxFramerate; int m_maxPendingFrames = 50; bool m_active = false; - PipeWireBaseEncodedStream::Encoder m_encoder; + PipeWireBaseEncodedStream::Encoder m_encoder = PipeWireBaseEncodedStream::NoEncoder; std::optional m_quality; PipeWireBaseEncodedStream::EncodingPreference m_encodingPreference; PipeWireBaseEncodedStream::State m_state = PipeWireBaseEncodedStream::Idle; @@ -46,8 +46,6 @@ PipeWireBaseEncodedStream::PipeWireBaseEncodedStream(QObject *parent) : QObject(parent) , d(new PipeWireEncodedStreamPrivate) { - d->m_encoder = suggestedEncoders().value(0, NoEncoder); - const auto &category = PIPEWIRELIBAV_LOGGING(); if (category.isDebugEnabled()) { av_log_set_level(AV_LOG_DEBUG); @@ -158,6 +156,10 @@ void PipeWireBaseEncodedStream::start() return; } + if (d->m_encoder == PipeWireBaseEncodedStream::NoEncoder) { + d->m_encoder = suggestedEncoders().value(0, NoEncoder); + } + d->m_produceThread = std::make_unique(); d->m_produceThread->setObjectName("PipeWireProduce::input"); d->m_produce = makeProduce();