From e98fb94fd2563c0740d0bca957aca217ffaaddf3 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Tue, 10 Jun 2025 21:06:49 -0700 Subject: [PATCH] Create client config manager in room manager constructor. (#3718) * Create client config manager in room manager constructor. Remove it from wire to be consistent with cloud which does hot reload. * disable advanced codecs on iOS when using JS SDK --- pkg/clientconfiguration/conf.go | 15 +++++++++++++++ pkg/service/roommanager.go | 3 +-- pkg/service/wire.go | 6 ------ pkg/service/wire_gen.go | 8 +------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/pkg/clientconfiguration/conf.go b/pkg/clientconfiguration/conf.go index 75be59752..c20622264 100644 --- a/pkg/clientconfiguration/conf.go +++ b/pkg/clientconfiguration/conf.go @@ -48,6 +48,21 @@ var StaticConfigurations = []ConfigurationItem{ }, Merge: true, }, + // disable advanced codecs when publishing using JS SDK from iOS, + // seeing publish failures (no DD header extension found) when Chrome Mobile publishes VP9, + // being defensive and disabling advanced codecs + { + Match: &ScriptMatch{Expr: `c.os == "ios" && c.sdk == "js"`}, + Configuration: &livekit.ClientConfiguration{ + DisabledCodecs: &livekit.DisabledCodecs{ + Publish: []*livekit.Codec{ + {Mime: mime.MimeTypeVP9.String()}, + {Mime: mime.MimeTypeAV1.String()}, + }, + }, + }, + Merge: true, + }, { Match: &ScriptMatch{Expr: `(c.device_model == "xiaomi 2201117ti" && c.os == "android") || ((c.browser == "firefox" || c.browser == "firefox mobile") && (c.os == "linux" || c.os == "android"))`}, diff --git a/pkg/service/roommanager.go b/pkg/service/roommanager.go index 0a384dd0c..024c799ce 100644 --- a/pkg/service/roommanager.go +++ b/pkg/service/roommanager.go @@ -103,7 +103,6 @@ func NewLocalRoomManager( router routing.Router, roomAllocator RoomAllocator, telemetry telemetry.TelemetryService, - clientConfManager clientconfiguration.ClientConfigurationManager, agentClient agent.Client, agentStore AgentStore, egressLauncher rtc.EgressLauncher, @@ -125,7 +124,7 @@ func NewLocalRoomManager( roomAllocator: roomAllocator, roomStore: roomStore, telemetry: telemetry, - clientConfManager: clientConfManager, + clientConfManager: clientconfiguration.NewStaticClientConfigurationManager(clientconfiguration.StaticConfigurations), egressLauncher: egressLauncher, agentClient: agentClient, agentStore: agentStore, diff --git a/pkg/service/wire.go b/pkg/service/wire.go index 37a775271..89070203c 100644 --- a/pkg/service/wire.go +++ b/pkg/service/wire.go @@ -28,7 +28,6 @@ import ( "gopkg.in/yaml.v3" "github.com/livekit/livekit-server/pkg/agent" - "github.com/livekit/livekit-server/pkg/clientconfiguration" "github.com/livekit/livekit-server/pkg/config" "github.com/livekit/livekit-server/pkg/routing" "github.com/livekit/livekit-server/pkg/sfu" @@ -51,7 +50,6 @@ func InitializeServer(conf *config.Config, currentNode routing.LocalNode) (*Live wire.Bind(new(ServiceStore), new(ObjectStore)), createKeyProvider, createWebhookNotifier, - createClientConfiguration, createForwardStats, getNodeStatsConfig, routing.CreateRouter, @@ -237,10 +235,6 @@ func getSIPConfig(conf *config.Config) *config.SIPConfig { return &conf.SIP } -func createClientConfiguration() clientconfiguration.ClientConfigurationManager { - return clientconfiguration.NewStaticClientConfigurationManager(clientconfiguration.StaticConfigurations) -} - func getLimitConf(config *config.Config) config.LimitConfig { return config.Limit } diff --git a/pkg/service/wire_gen.go b/pkg/service/wire_gen.go index c2ef8d55b..5a08beb08 100644 --- a/pkg/service/wire_gen.go +++ b/pkg/service/wire_gen.go @@ -9,7 +9,6 @@ package service import ( "fmt" "github.com/livekit/livekit-server/pkg/agent" - "github.com/livekit/livekit-server/pkg/clientconfiguration" "github.com/livekit/livekit-server/pkg/config" "github.com/livekit/livekit-server/pkg/routing" "github.com/livekit/livekit-server/pkg/sfu" @@ -133,7 +132,6 @@ func InitializeServer(conf *config.Config, currentNode routing.LocalNode) (*Live if err != nil { return nil, err } - clientConfigurationManager := createClientConfiguration() client, err := agent.NewAgentClient(messageBus) if err != nil { return nil, err @@ -142,7 +140,7 @@ func InitializeServer(conf *config.Config, currentNode routing.LocalNode) (*Live timedVersionGenerator := utils.NewDefaultTimedVersionGenerator() turnAuthHandler := NewTURNAuthHandler(keyProvider) forwardStats := createForwardStats(conf) - roomManager, err := NewLocalRoomManager(conf, objectStore, currentNode, router, roomAllocator, telemetryService, clientConfigurationManager, client, agentStore, rtcEgressLauncher, timedVersionGenerator, turnAuthHandler, messageBus, forwardStats) + roomManager, err := NewLocalRoomManager(conf, objectStore, currentNode, router, roomAllocator, telemetryService, client, agentStore, rtcEgressLauncher, timedVersionGenerator, turnAuthHandler, messageBus, forwardStats) if err != nil { return nil, err } @@ -303,10 +301,6 @@ func getSIPConfig(conf *config.Config) *config.SIPConfig { return &conf.SIP } -func createClientConfiguration() clientconfiguration.ClientConfigurationManager { - return clientconfiguration.NewStaticClientConfigurationManager(clientconfiguration.StaticConfigurations) -} - func getLimitConf(config2 *config.Config) config.LimitConfig { return config2.Limit }