Skip to content

Commit 6d79b26

Browse files
authored
Add more media stats. (#384)
1 parent 06d7a70 commit 6d79b26

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

pkg/mixer/mixer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ func (m *Mixer) mixUpdate() {
175175
if dt := now.Sub(m.lastMixEndTs); dt > 0 {
176176
n = int(dt / m.tickerDur)
177177
m.lastMixEndTs = m.lastMixEndTs.Add(time.Duration(n) * m.tickerDur)
178-
m.stats.JumpMixes.Add(uint64(n))
178+
if n == 1 {
179+
m.stats.TimedMixes.Add(1)
180+
} else if n != 0 {
181+
m.stats.JumpMixes.Add(uint64(n))
182+
}
179183
}
180184
}
181185
if n == 0 {

pkg/sip/media.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type StatsSnapshot struct {
4343
}
4444

4545
type PortStatsSnapshot struct {
46+
Streams uint64 `json:"streams"`
4647
Packets uint64 `json:"packets"`
4748
IgnoredPackets uint64 `json:"packets_ignored"`
4849
InputPackets uint64 `json:"packets_input"`
@@ -52,6 +53,9 @@ type PortStatsSnapshot struct {
5253

5354
AudioPackets uint64 `json:"audio_packets"`
5455
AudioBytes uint64 `json:"audio_bytes"`
56+
57+
DTMFPackets uint64 `json:"dtmf_packets"`
58+
DTMFBytes uint64 `json:"dtmf_bytes"`
5559
}
5660

5761
type RoomStatsSnapshot struct {
@@ -91,13 +95,16 @@ func (s *Stats) Load() StatsSnapshot {
9195
m := &r.Mixer
9296
return StatsSnapshot{
9397
Port: PortStatsSnapshot{
98+
Streams: p.Streams.Load(),
9499
Packets: p.Packets.Load(),
95100
IgnoredPackets: p.IgnoredPackets.Load(),
96101
InputPackets: p.InputPackets.Load(),
97102
MuxPackets: p.MuxPackets.Load(),
98103
MuxBytes: p.MuxBytes.Load(),
99104
AudioPackets: p.AudioPackets.Load(),
100105
AudioBytes: p.AudioBytes.Load(),
106+
DTMFPackets: p.DTMFPackets.Load(),
107+
DTMFBytes: p.DTMFBytes.Load(),
101108
},
102109
Room: RoomStatsSnapshot{
103110
InputPackets: r.InputPackets.Load(),
@@ -237,7 +244,7 @@ func (r *rtpReaderCount) ReadRTP() (*prtp.Packet, interceptor.Attributes, error)
237244
p, in, err := r.r.ReadRTP()
238245
if p != nil {
239246
r.packets.Add(1)
240-
r.packets.Add(uint64(len(p.Payload)))
247+
r.bytes.Add(uint64(len(p.Payload)))
241248
}
242249
return p, in, err
243250
}

pkg/sip/media_port.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040
)
4141

4242
type PortStats struct {
43+
Streams atomic.Uint64
4344
Packets atomic.Uint64
4445
IgnoredPackets atomic.Uint64
4546
InputPackets atomic.Uint64
@@ -49,6 +50,9 @@ type PortStats struct {
4950

5051
AudioPackets atomic.Uint64
5152
AudioBytes atomic.Uint64
53+
54+
DTMFPackets atomic.Uint64
55+
DTMFBytes atomic.Uint64
5256
}
5357

5458
type UDPConn interface {
@@ -405,6 +409,7 @@ func (p *MediaPort) rtpLoop(sess rtp.Session) {
405409
}
406410
return
407411
}
412+
p.stats.Streams.Add(1)
408413
p.mediaReceived.Break()
409414
log := p.log.WithValues("ssrc", ssrc)
410415
log.Infow("accepting RTP stream")
@@ -521,20 +526,26 @@ func (p *MediaPort) setupInput() {
521526
mux.Register(
522527
p.conf.Audio.Type, newRTPHandlerCount(
523528
newRTPStatsHandler(p.mon, p.conf.Audio.Codec.Info().SDPName, audioHandler),
524-
&p.stats.AudioPackets, &p.stats.AudioBytes),
529+
&p.stats.AudioPackets, &p.stats.AudioBytes,
530+
),
525531
)
526532
if p.conf.Audio.DTMFType != 0 {
527-
mux.Register(p.conf.Audio.DTMFType, newRTPStatsHandler(p.mon, dtmf.SDPName, rtp.HandlerFunc(func(h *rtp.Header, payload []byte) error {
528-
ptr := p.dtmfIn.Load()
529-
if ptr == nil {
530-
return nil
531-
}
532-
fnc := *ptr
533-
if ev, ok := dtmf.DecodeRTP(h, payload); ok && fnc != nil {
534-
fnc(ev)
535-
}
536-
return nil
537-
})))
533+
mux.Register(
534+
p.conf.Audio.DTMFType, newRTPHandlerCount(
535+
newRTPStatsHandler(p.mon, dtmf.SDPName, rtp.HandlerFunc(func(h *rtp.Header, payload []byte) error {
536+
ptr := p.dtmfIn.Load()
537+
if ptr == nil {
538+
return nil
539+
}
540+
fnc := *ptr
541+
if ev, ok := dtmf.DecodeRTP(h, payload); ok && fnc != nil {
542+
fnc(ev)
543+
}
544+
return nil
545+
})),
546+
&p.stats.DTMFPackets, &p.stats.DTMFBytes,
547+
),
548+
)
538549
}
539550
var hnd rtp.Handler = newRTPHandlerCount(mux, &p.stats.MuxPackets, &p.stats.MuxBytes)
540551
if p.jitterEnabled {

0 commit comments

Comments
 (0)