From ad1aa146709e931f12b30c6f61cac33e2fa2994c Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Tue, 8 Oct 2024 14:20:55 +0200 Subject: [PATCH] [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 --- src/pipewirebaseencodedstream.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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(); -- 2.30.2