From 33f07186d7c62592da4be061cd739cc6a62d4b4d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Fri, 19 Jun 2026 17:30:17 +0100 Subject: [PATCH] Honor Muninn RUDP latency budget in OBS bridge --- native/obs_stem_source/mimir_obs_muninn_source.cpp | 2 +- native/obs_stem_source/muninn_rudp_url.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/native/obs_stem_source/mimir_obs_muninn_source.cpp b/native/obs_stem_source/mimir_obs_muninn_source.cpp index db4103d..ccd4769 100644 --- a/native/obs_stem_source/mimir_obs_muninn_source.cpp +++ b/native/obs_stem_source/mimir_obs_muninn_source.cpp @@ -62,7 +62,7 @@ constexpr uint32_t MuninnCatalogDiscoveryConnectionId = 0x6d750003; constexpr uint32_t MuninnCommandRudpConnectionId = 0x6d750002; constexpr uint32_t MuninnDefaultMediaPacketBytes = 860; constexpr uint32_t MuninnDefaultRudpVideoBitrateKbps = 16000; -constexpr uint32_t MuninnDefaultRudpLatencyBudgetMs = 800; +constexpr uint32_t MuninnDefaultRudpLatencyBudgetMs = 1200; constexpr uint32_t MuninnMaxRudpVideoBitrateKbps = 100000; constexpr uint32_t MuninnMaxRudpLatencyBudgetMs = 2000; diff --git a/native/obs_stem_source/muninn_rudp_url.h b/native/obs_stem_source/muninn_rudp_url.h index 14c1d43..24bb821 100644 --- a/native/obs_stem_source/muninn_rudp_url.h +++ b/native/obs_stem_source/muninn_rudp_url.h @@ -13,6 +13,7 @@ inline constexpr uint32_t DefaultReliableExpireAfterMs = 75; inline constexpr uint32_t DefaultVideoAssemblyDeadlineMs = 75; inline constexpr uint32_t DefaultGapWaitMs = 8; inline constexpr uint32_t DefaultSenderResendDelayMs = 5; +inline constexpr uint32_t MaxLatencyBudgetMs = 2000; struct RudpUrlParts { uint16_t port = 0; @@ -86,7 +87,7 @@ inline std::optional parse(const std::string &url) parts.audio_local_port = static_cast(std::stoul(value)); } else if (key == "reliable_expire_after_ms") { if (const auto parsed = parse_u32_hex_or_decimal(value)) { - parts.reliable_expire_after_ms = std::clamp(*parsed, 1u, 1000u); + parts.reliable_expire_after_ms = std::clamp(*parsed, 1u, MaxLatencyBudgetMs); } } else if (key == "sender_resend_delay_ms") { if (const auto parsed = parse_u32_hex_or_decimal(value)) { @@ -94,7 +95,7 @@ inline std::optional parse(const std::string &url) } } else if (key == "assembly_deadline_ms") { if (const auto parsed = parse_u32_hex_or_decimal(value)) { - parts.video_assembly_deadline_ms = std::clamp(*parsed, 1u, 1000u); + parts.video_assembly_deadline_ms = std::clamp(*parsed, 1u, MaxLatencyBudgetMs); } } else if (key == "gap_wait_ms") { if (const auto parsed = parse_u32_hex_or_decimal(value)) {