Commit 8180d9bf authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Document jitter concurrency guarantees.

parent 461c78b0
// package jitter implements a jitter estimator
package jitter package jitter
import ( import (
...@@ -14,6 +15,7 @@ type Estimator struct { ...@@ -14,6 +15,7 @@ type Estimator struct {
jitter uint32 // atomic jitter uint32 // atomic
} }
// New returns a new jitter estimator that uses units of 1/hz seconds.
func New(hz uint32) *Estimator { func New(hz uint32) *Estimator {
return &Estimator{hz: hz} return &Estimator{hz: hz}
} }
...@@ -36,10 +38,13 @@ func (e *Estimator) accumulate(timestamp, now uint32) { ...@@ -36,10 +38,13 @@ func (e *Estimator) accumulate(timestamp, now uint32) {
e.time = now e.time = now
} }
// Accumulate accumulates a new sample for the jitter estimator.
func (e *Estimator) Accumulate(timestamp uint32) { func (e *Estimator) Accumulate(timestamp uint32) {
e.accumulate(timestamp, uint32(rtptime.Now(e.hz))) e.accumulate(timestamp, uint32(rtptime.Now(e.hz)))
} }
// Jitter returns the estimated jitter, in units of 1/hz seconds.
// This function is safe to call concurrently.
func (e *Estimator) Jitter() uint32 { func (e *Estimator) Jitter() uint32 {
return atomic.LoadUint32(&e.jitter) return atomic.LoadUint32(&e.jitter)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment