Honor Muninn RUDP latency budget in OBS bridge

This commit is contained in:
Meta Vens 2026-06-19 17:30:17 +01:00
commit 33f07186d7
2 changed files with 4 additions and 3 deletions

View file

@ -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;

View file

@ -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<RudpUrlParts> parse(const std::string &url)
parts.audio_local_port = static_cast<uint16_t>(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<RudpUrlParts> 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)) {