diff --git a/pkg/sip/room.go b/pkg/sip/room.go index a63c15b1..d1bdcc70 100644 --- a/pkg/sip/room.go +++ b/pkg/sip/room.go @@ -16,7 +16,6 @@ package sip import ( "context" - "errors" "io" "math" "sync" @@ -25,6 +24,7 @@ import ( "github.com/frostbyte73/core" "github.com/pion/webrtc/v4" + "github.com/pkg/errors" msdk "github.com/livekit/media-sdk" "github.com/livekit/media-sdk/dtmf" @@ -336,19 +336,19 @@ func (r *Room) Connect(ctx context.Context, conf *config.Config, rconf RoomConfi r.subscribeTo(pub, rp) }, OnTrackSubscribed: func(track *webrtc.TrackRemote, pub *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) { - log := r.roomLog.WithValues("participant", rp.Identity(), "participantID", rp.SID(), "trackID", track.ID(), "trackName", pub.Name()) - if !r.ready.IsBroken() { - log.Warnw("ignoring track, room not ready", nil) - return - } - log.Infow("mixing track") - go func() { + subscribedAt := time.Now().UnixMilli() + log := r.roomLog.WithValues("participant", rp.Identity(), "participantID", rp.SID(), "trackID", track.ID(), "trackName", pub.Name(), "subscribedAt", subscribedAt) + if !r.ready.IsBroken() { + log.Warnw("ignoring track, room not ready", nil) + return + } + defer func() { log.Infow("track closed", "closedAt", time.Now().UnixMilli()) }() + mTrack := r.NewTrack() if mTrack == nil { return // closed } - defer log.Infow("track closed") defer mTrack.Close() var out msdk.PCM16Writer = mTrack