From b71785fa5ac422e4f956c8cb04263d33f4d62a67 Mon Sep 17 00:00:00 2001 From: El Date: Fri, 20 Feb 2026 11:03:18 +0000 Subject: [PATCH] VNC-151 Refactor codec parsing to skip unsupported codecs with a log message --- unix/xserver/hw/vnc/vncExtInit.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc index 189a7c7..a2fdbe4 100644 --- a/unix/xserver/hw/vnc/vncExtInit.cc +++ b/unix/xserver/hw/vnc/vncExtInit.cc @@ -47,7 +47,6 @@ #include "XserverDesktop.h" #include "vncBlockHandler.h" #include "vncExtInit.h" -#include #include "vncHooks.h" #include "vncSelection.h" #include "xorg-version.h" @@ -311,11 +310,14 @@ void vncExtensionInit(void) const char *codec_cli_arg = Server::videoCodec; if (codec_cli_arg[0]) { parsed_codecs = SupportedVideoEncoders::parse(codec_cli_arg); - for (auto codec: parsed_codecs) { - vlog.debug("CODEC: %s" , std::string(codec).c_str()) ; - if (!SupportedVideoEncoders::is_supported(codec)) - throw std::invalid_argument(fmt::format("Unknown video codec: {}", codec)); - } + std::erase_if(parsed_codecs, [](const auto &codec) { + const auto supported = SupportedVideoEncoders::is_supported(codec); + if (!supported) { + std::string str{codec}; + vlog.info("Unknown codec %s skipped", str.c_str()); + } + return supported; + }); } const auto &probe = video_encoders::EncoderProbe::get(FFmpeg::get(), parsed_codecs, Server::driNode.getData());