This commit is contained in:
boks1971
2023-07-19 18:10:13 +05:30
parent 5cd32b64e5
commit d4f31d3628
3 changed files with 17 additions and 6 deletions
+2 -2
View File
@@ -61,7 +61,7 @@ type ChannelObserverParams struct {
EstimateDownwardTrendThreshold float64
EstimateCollapseThreshold time.Duration
EstimateValidityWindow time.Duration
NackMinPackets uint32
NackMinPPS uint32
NackWindowMinDuration time.Duration
NackWindowMaxDuration time.Duration
NackRatioThreshold float64
@@ -90,7 +90,7 @@ func NewChannelObserver(params ChannelObserverParams, logger logger.Logger) *Cha
nackTracker: NewNackTracker(NackTrackerParams{
Name: params.Name + "-nack",
Logger: logger,
MinPackets: params.NackMinPackets,
MinPPS: params.NackMinPPS,
WindowMinDuration: params.NackWindowMinDuration,
WindowMaxDuration: params.NackWindowMaxDuration,
RatioThreshold: params.NackRatioThreshold,
+13 -2
View File
@@ -12,7 +12,7 @@ import (
type NackTrackerParams struct {
Name string
Logger logger.Logger
MinPackets uint32
MinPPS uint32
WindowMinDuration time.Duration
WindowMaxDuration time.Duration
RatioThreshold float64
@@ -63,7 +63,18 @@ func (n *NackTracker) Add(packets uint32, repeatedNacks uint32) {
func (n *NackTracker) GetRatio() float64 {
ratio := 0.0
if n.packets != 0 && n.packets >= n.params.MinPackets {
var elapsed time.Duration
if !n.windowStartTime.IsZero() {
elapsed = time.Since(n.windowStartTime)
}
pps := uint32(0)
if elapsed.Seconds() != 0 {
pps = uint32(float64(n.packets) / elapsed.Seconds())
}
if n.packets != 0 && pps > n.params.MinPPS {
ratio = float64(n.repeatedNacks) / float64(n.packets)
if ratio > 1.0 {
ratio = 1.0
+2 -2
View File
@@ -46,7 +46,7 @@ var (
EstimateDownwardTrendThreshold: 0.0,
EstimateCollapseThreshold: 0,
EstimateValidityWindow: 10 * time.Second,
NackMinPackets: 0,
NackMinPPS: 0,
NackWindowMinDuration: 500 * time.Millisecond,
NackWindowMaxDuration: 1 * time.Second,
NackRatioThreshold: 0.04,
@@ -58,7 +58,7 @@ var (
EstimateDownwardTrendThreshold: -0.5,
EstimateCollapseThreshold: 500 * time.Millisecond,
EstimateValidityWindow: 10 * time.Second,
NackMinPackets: 50,
NackMinPPS: 50,
NackWindowMinDuration: 1 * time.Second,
NackWindowMaxDuration: 2 * time.Second,
NackRatioThreshold: 0.08,