From 4b04b26a73f56a9198fef1fd551fe851cea00c35 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Thu, 20 Feb 2025 10:40:25 +0800 Subject: [PATCH] fix data channel slow reader test (#3453) --- pkg/sfu/datachannel/bitrate.go | 14 +++++++++++++- test/client/datachannel_reader.go | 7 +------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/pkg/sfu/datachannel/bitrate.go b/pkg/sfu/datachannel/bitrate.go index ac538033d..b95198aa8 100644 --- a/pkg/sfu/datachannel/bitrate.go +++ b/pkg/sfu/datachannel/bitrate.go @@ -81,11 +81,23 @@ func (c *BitrateCalculator) AddBytes(bytes int, bufferedAmout int, ts time.Time) } func (c *BitrateCalculator) Bitrate(ts time.Time) (int, bool) { + return c.bitrate(ts, false) +} + +func (c *BitrateCalculator) ForceBitrate(ts time.Time) (int, bool) { + return c.bitrate(ts, true) +} + +func (c *BitrateCalculator) bitrate(ts time.Time, force bool) (int, bool) { c.lock.Lock() defer c.lock.Unlock() duration := ts.Sub(c.start) if duration < c.windowDuration { - return 0, false + if force { + duration = c.windowDuration + } else { + return 0, false + } } return c.bytes * 8 * 1000 / int(duration.Milliseconds()), true diff --git a/test/client/datachannel_reader.go b/test/client/datachannel_reader.go index f13d6234f..eb3b64200 100644 --- a/test/client/datachannel_reader.go +++ b/test/client/datachannel_reader.go @@ -20,7 +20,7 @@ func NewDataChannelReader(bitrate int) *DataChannelReader { func (d *DataChannelReader) Read(p []byte, sid string) { for { - if bitrate, ok := d.bitrate.Bitrate(time.Now()); ok && bitrate > 0 && bitrate > d.target { + if bitrate, ok := d.bitrate.ForceBitrate(time.Now()); ok && bitrate > 0 && bitrate > d.target { time.Sleep(10 * time.Millisecond) d.bitrate.AddBytes(0, 0, time.Now()) continue @@ -29,8 +29,3 @@ func (d *DataChannelReader) Read(p []byte, sid string) { } d.bitrate.AddBytes(len(p), 0, time.Now()) } - -func (d *DataChannelReader) Bitrate() int { - b, _ := d.bitrate.Bitrate(time.Now()) - return b -}