diff --git a/pkg/config/pipeline.go b/pkg/config/pipeline.go index 2903c987..b31a2974 100644 --- a/pkg/config/pipeline.go +++ b/pkg/config/pipeline.go @@ -542,6 +542,33 @@ func ShouldUseSDKSource(req interface { return req.GetAudioOnly() && req.GetLayout() == "" && req.GetCustomBaseUrl() == "" } +func IsSDKSourceRequest(req *rpc.StartEgressRequest) bool { + switch r := req.Request.(type) { + case *rpc.StartEgressRequest_RoomComposite: + return ShouldUseSDKSource(r.RoomComposite) + case *rpc.StartEgressRequest_Web: + return false + case *rpc.StartEgressRequest_Egress: + return isV2SDKSource(r.Egress) + case *rpc.StartEgressRequest_Replay: + return isV2SDKSource(r.Replay) + } + return true +} + +func isV2SDKSource(req egress.EgressRequest) bool { + if req == nil { + return true + } + if req.GetWeb() != nil { + return false + } + if t := req.GetTemplate(); t != nil { + return ShouldUseSDKSource(t) + } + return true +} + // applyV2Source handles the shared Template/Web/Media source switch for the v2 // request shape. Satisfied by both *livekit.StartEgressRequest and *livekit.ExportReplayRequest. func (p *PipelineConfig) applyV2Source(req egress.EgressRequest) (connectionInfoRequired bool, err error) { diff --git a/pkg/server/server_rpc.go b/pkg/server/server_rpc.go index 3910dde2..bb13a3d9 100644 --- a/pkg/server/server_rpc.go +++ b/pkg/server/server_rpc.go @@ -188,8 +188,12 @@ func (s *Server) processEnded(req *rpc.StartEgressRequest, info *livekit.EgressI avgCPU, maxCPU, maxMemory := s.monitor.EgressEnded(req) if maxCPU > 0 { - logger.Debugw("egress metrics", + requestType, outputType := egress.GetTypes(info.Request) + logger.Infow("egress metrics", "egressID", info.EgressId, + "requestType", requestType, + "outputType", outputType, + "sdkSource", config.IsSDKSourceRequest(req), "avgCPU", avgCPU, "maxCPU", maxCPU, "maxMemory", maxMemory,