From a8197fd65c8429a05f2cb43aea691e829aa8bad7 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