From: Arjen Hiemstra Date: Thu, 20 Mar 2025 13:27:41 +0000 (+0100) Subject: [PATCH] Add logging of encoding options if log level is set to info X-Git-Tag: archive/raspbian/6.3.6-1+rpi1^2~7 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=22f121a309675a6d9e67f75e0da9155b2ee1d7f6;p=kpipewire.git [PATCH] Add logging of encoding options if log level is set to info Allows inspecting what's actually sent to FFmpeg. Gbp-Pq: Name upstream_c928ed5c_Add-logging-of-encoding-options-if-log-level-is-set-to-info.patch --- diff --git a/src/encoder.cpp b/src/encoder.cpp index 3361785..f8b3d67 100644 --- a/src/encoder.cpp +++ b/src/encoder.cpp @@ -211,6 +211,16 @@ AVDictionary *Encoder::buildEncodingOptions() return options; } +void Encoder::maybeLogOptions(AVDictionary *options) +{ + if (PIPEWIRERECORD_LOGGING().isInfoEnabled()) { + char *buffer = NULL; + av_dict_get_string(options, &buffer, '=', ','); + qCInfo(PIPEWIRERECORD_LOGGING) << "Using encoding options:" << buffer; + av_freep(&buffer); + } +} + SoftwareEncoder::SoftwareEncoder(PipeWireProduce *produce) : Encoder(produce) { diff --git a/src/encoder_p.h b/src/encoder_p.h index 48d3a9e..e565cc2 100644 --- a/src/encoder_p.h +++ b/src/encoder_p.h @@ -103,6 +103,7 @@ public: protected: virtual int percentageToAbsoluteQuality(const std::optional &quality) = 0; virtual AVDictionary *buildEncodingOptions(); + void maybeLogOptions(AVDictionary *options); PipeWireProduce *m_produce; diff --git a/src/h264vaapiencoder.cpp b/src/h264vaapiencoder.cpp index 26e7fba..0cf251b 100644 --- a/src/h264vaapiencoder.cpp +++ b/src/h264vaapiencoder.cpp @@ -141,6 +141,7 @@ bool H264VAAPIEncoder::initialize(const QSize &size) } AVDictionary *options = buildEncodingOptions(); + maybeLogOptions(options); // Assign the right hardware context for encoding frames. // We rely on FFmpeg for creating the VAAPI hardware context as part of diff --git a/src/libopenh264encoder.cpp b/src/libopenh264encoder.cpp index 7f374d2..db6ed4d 100644 --- a/src/libopenh264encoder.cpp +++ b/src/libopenh264encoder.cpp @@ -75,6 +75,7 @@ bool LibOpenH264Encoder::initialize(const QSize &size) } AVDictionary *options = buildEncodingOptions(); + maybeLogOptions(options); if (int result = avcodec_open2(m_avCodecContext, codec, &options); result < 0) { qCWarning(PIPEWIRERECORD_LOGGING) << "Could not open codec" << av_err2str(result); diff --git a/src/libvpxencoder.cpp b/src/libvpxencoder.cpp index 2d696d6..f81b048 100644 --- a/src/libvpxencoder.cpp +++ b/src/libvpxencoder.cpp @@ -58,6 +58,7 @@ bool LibVpxEncoder::initialize(const QSize &size) } AVDictionary *options = buildEncodingOptions(); + maybeLogOptions(options); if (int result = avcodec_open2(m_avCodecContext, codec, &options); result < 0) { qCWarning(PIPEWIRERECORD_LOGGING) << "Could not open codec" << av_err2str(result); diff --git a/src/libvpxvp9encoder.cpp b/src/libvpxvp9encoder.cpp index 0b63015..d877023 100644 --- a/src/libvpxvp9encoder.cpp +++ b/src/libvpxvp9encoder.cpp @@ -51,6 +51,7 @@ bool LibVpxVp9Encoder::initialize(const QSize &size) m_avCodecContext->time_base = AVRational{1, 1000}; AVDictionary *options = buildEncodingOptions(); + maybeLogOptions(options); const auto area = size.width() * size.height(); // m_avCodecContext->framerate is not set, so we use m_produce->maxFramerate() instead. diff --git a/src/libx264encoder.cpp b/src/libx264encoder.cpp index 7d4f96b..d9fe44f 100644 --- a/src/libx264encoder.cpp +++ b/src/libx264encoder.cpp @@ -79,6 +79,7 @@ bool LibX264Encoder::initialize(const QSize &size) } AVDictionary *options = buildEncodingOptions(); + maybeLogOptions(options); if (int result = avcodec_open2(m_avCodecContext, codec, &options); result < 0) { qCWarning(PIPEWIRERECORD_LOGGING) << "Could not open codec" << av_err2str(result);