Skip to content

Commit cf11554

Browse files
authored
Making use of new channel functionality in mixer (#547)
1 parent f40d7bb commit cf11554

File tree

8 files changed

+25
-16
lines changed

8 files changed

+25
-16
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/icholy/digest v1.1.0
1212
github.com/jfreymuth/oggvorbis v1.0.5
1313
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731
14-
github.com/livekit/media-sdk v0.0.0-20251210135237-a9b09a0c179b
14+
github.com/livekit/media-sdk v0.0.0-20251216004231-7e52af0477a3
1515
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded
1616
github.com/livekit/protocol v1.43.3-0.20251202235353-eec8df247cf9
1717
github.com/livekit/psrpc v0.7.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ github.com/lithammer/shortuuid/v4 v4.2.0 h1:LMFOzVB3996a7b8aBuEXxqOBflbfPQAiVzkI
123123
github.com/lithammer/shortuuid/v4 v4.2.0/go.mod h1:D5noHZ2oFw/YaKCfGy0YxyE7M0wMbezmMjPdhyEFe6Y=
124124
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 h1:9x+U2HGLrSw5ATTo469PQPkqzdoU7be46ryiCDO3boc=
125125
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
126-
github.com/livekit/media-sdk v0.0.0-20251210135237-a9b09a0c179b h1:VHmNcENcsgcqZOQ+Hq51NbIzJtdQpForQP01UMhgY4U=
127-
github.com/livekit/media-sdk v0.0.0-20251210135237-a9b09a0c179b/go.mod h1:7ssWiG+U4xnbvLih9WiZbhQP6zIKMjgXdUtIE1bm/E8=
126+
github.com/livekit/media-sdk v0.0.0-20251216004231-7e52af0477a3 h1:XqT1HN2TLUGXZmYp2qYW9DYUtV1p1LniRCn43/wJTPM=
127+
github.com/livekit/media-sdk v0.0.0-20251216004231-7e52af0477a3/go.mod h1:7ssWiG+U4xnbvLih9WiZbhQP6zIKMjgXdUtIE1bm/E8=
128128
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded h1:ylZPdnlX1RW9Z15SD4mp87vT2D2shsk0hpLJwSPcq3g=
129129
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded/go.mod h1:mSNtYzSf6iY9xM3UX42VEI+STHvMgHmrYzEHPcdhB8A=
130130
github.com/livekit/protocol v1.43.3-0.20251202235353-eec8df247cf9 h1:WO2HEG3b6KQZpc+n7p6i5kRd2ldNFud7Nvne/EDEwME=

pkg/sip/media.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,16 @@ type StatsSnapshot struct {
4848
}
4949

5050
type MixerStatsSnapshot struct {
51-
Tracks int64 `json:"tracks"`
52-
TracksTotal uint64 `json:"tracks_total"`
53-
Restarts uint64 `json:"restarts"`
51+
Tracks int64 `json:"tracks"`
52+
TracksTotal uint64 `json:"tracks_total"`
53+
Restarts uint64 `json:"restarts"`
54+
TimingResets uint64 `json:"timing_resets"`
5455

55-
Mixes uint64 `json:"mixes"`
56-
TimedMixes uint64 `json:"mixes_timed"`
57-
JumpMixes uint64 `json:"mixes_jump"`
58-
ZeroMixes uint64 `json:"mixes_zero"`
56+
Mixes uint64 `json:"mixes"`
57+
TimedMixes uint64 `json:"mixes_timed"`
58+
JumpMixes uint64 `json:"mixes_jump"`
59+
ZeroMixes uint64 `json:"mixes_zero"`
60+
NegativeMixes uint64 `json:"mixes_negative"`
5961

6062
InputSamples uint64 `json:"input_samples"`
6163
InputFrames uint64 `json:"input_frames"`
@@ -65,6 +67,9 @@ type MixerStatsSnapshot struct {
6567

6668
OutputSamples uint64 `json:"output_samples"`
6769
OutputFrames uint64 `json:"output_frames"`
70+
71+
WriteErrors uint64 `json:"write_errors"`
72+
BlockedMixes uint64 `json:"blocked_mixes"`
6873
}
6974

7075
func (s *Stats) Update() {
@@ -86,16 +91,20 @@ func (s *Stats) Load() StatsSnapshot {
8691
Tracks: m.Tracks.Load(),
8792
TracksTotal: m.TracksTotal.Load(),
8893
Restarts: m.Restarts.Load(),
94+
TimingResets: m.TimingResets.Load(),
8995
Mixes: m.Mixes.Load(),
9096
TimedMixes: m.TimedMixes.Load(),
9197
JumpMixes: m.JumpMixes.Load(),
9298
ZeroMixes: m.ZeroMixes.Load(),
99+
NegativeMixes: m.NegativeMixes.Load(),
93100
InputSamples: m.InputSamples.Load(),
94101
InputFrames: m.InputFrames.Load(),
95102
MixedSamples: m.MixedSamples.Load(),
96103
MixedFrames: m.MixedFrames.Load(),
97104
OutputSamples: m.OutputSamples.Load(),
98105
OutputFrames: m.OutputFrames.Load(),
106+
WriteErrors: m.WriteErrors.Load(),
107+
BlockedMixes: m.BlockedMixes.Load(),
99108
},
100109
Closed: s.Closed.Load(),
101110
}

pkg/sip/media_port.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ func (p *MediaPort) setupOutput(tid traceid.ID) error {
712712
if p.dtmfAudioEnabled {
713713
// Add separate mixer for DTMF audio.
714714
// TODO: optimize, if we'll ever need this code path
715-
mix, err := mixer.NewMixer(audioOut, rtp.DefFrameDur, nil, 1, mixer.DefaultInputBufferFrames)
715+
mix, err := mixer.NewMixer(audioOut, rtp.DefFrameDur, 1, mixer.WithOutputChannel())
716716
if err != nil {
717717
return err
718718
}

pkg/sip/outbound_utilities_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func newTestRoom(log logger.Logger, st *RoomStats) RoomInterface {
120120
// Create mixer
121121
var err error
122122
out := newMediaWriterCount(room.out, &st.OutputFrames, &st.OutputSamples)
123-
room.mix, err = mixer.NewMixer(out, rtp.DefFrameDur, &st.Mixer, 1, mixer.DefaultInputBufferFrames)
123+
room.mix, err = mixer.NewMixer(out, rtp.DefFrameDur, 1, mixer.WithStats(&st.Mixer), mixer.WithOutputChannel())
124124
if err != nil {
125125
panic(err)
126126
}

pkg/sip/room.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func NewRoom(log logger.Logger, st *RoomStats) *Room {
196196
out := newMediaWriterCount(r.out, &st.OutputFrames, &st.OutputSamples)
197197

198198
var err error
199-
r.mix, err = mixer.NewMixer(out, rtp.DefFrameDur, &st.Mixer, 1, mixer.DefaultInputBufferFrames)
199+
r.mix, err = mixer.NewMixer(out, rtp.DefFrameDur, 1, mixer.WithStats(&st.Mixer), mixer.WithOutputChannel())
200200
if err != nil {
201201
panic(err)
202202
}

pkg/siptest/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func NewClient(id string, conf ClientConfig) (*Client, error) {
114114
cli.media = rtp.NewSeqWriter(cli.mediaConn)
115115
cli.mediaAudio = cli.media.NewStream(cli.audioType, codec.Info().RTPClockRate)
116116
cli.mediaDTMF = cli.media.NewStream(101, dtmf.SampleRate)
117-
cli.audioOut, err = mixer.NewMixer(cli.audioCodec.EncodeRTP(cli.mediaAudio), rtp.DefFrameDur, nil, 1, mixer.DefaultInputBufferFrames)
117+
cli.audioOut, err = mixer.NewMixer(cli.audioCodec.EncodeRTP(cli.mediaAudio), rtp.DefFrameDur, 1, mixer.WithOutputChannel())
118118
if err != nil {
119119
cli.Close()
120120
return nil, err

test/lktest/livekit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (lk *LiveKit) ConnectParticipant(t TB, room, identity string, cb *RoomParti
181181
p.AudioIn = pr
182182

183183
var err error
184-
p.mixIn, err = mixer.NewMixer(pw, rtp.DefFrameDur, nil, 1, mixer.DefaultInputBufferFrames)
184+
p.mixIn, err = mixer.NewMixer(pw, rtp.DefFrameDur, 1, mixer.WithOutputChannel())
185185
if err != nil {
186186
t.Fatal(err)
187187
}
@@ -263,7 +263,7 @@ func (lk *LiveKit) ConnectParticipant(t TB, room, identity string, cb *RoomParti
263263
t.Fatal(err)
264264
}
265265
// This allows us to send silence when there's no audio generated from the test.
266-
p.mixOut, err = mixer.NewMixer(track, rtp.DefFrameDur, nil, 1, mixer.DefaultInputBufferFrames)
266+
p.mixOut, err = mixer.NewMixer(track, rtp.DefFrameDur, 1, mixer.WithOutputChannel())
267267
if err != nil {
268268
t.Fatal(err)
269269
}

0 commit comments

Comments
 (0)