mirror of
https://github.com/livekit/livekit.git
synced 2026-08-28 22:48:20 +00:00
Store buffer after creating it. (#4186)
* Refactor receiver and buffer into Base and higher layer. To be able to share code/functionality with relay. * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * clean up * deps * fix test * fix test * Store buffer after creating it. Also changing signature of creator function as it could call TrackInfo() and get into a deadlock. * fix double unlock * add some more debug logging
This commit is contained in:
@@ -1411,7 +1411,7 @@ func (b *BufferBase) seedKeyFrame(keyFrameSeederGeneration int32) {
|
||||
//
|
||||
// send gratuitous PLIs for some time or until a key frame is seen to
|
||||
// get the engine rolling
|
||||
b.logger.Debugw("starting key frame seeder")
|
||||
b.logger.Debugw("starting key frame seeder", "generattion", keyFrameSeederGeneration)
|
||||
timer := time.NewTimer(30 * time.Second)
|
||||
defer timer.Stop()
|
||||
|
||||
@@ -1423,20 +1423,24 @@ func (b *BufferBase) seedKeyFrame(keyFrameSeederGeneration int32) {
|
||||
rtpStats := b.rtpStats
|
||||
b.RUnlock()
|
||||
if rtpStats == nil {
|
||||
b.logger.Debugw("cannot do key frame seeding without stats")
|
||||
b.logger.Debugw("cannot do key frame seeding without stats", "generation", keyFrameSeederGeneration)
|
||||
return
|
||||
}
|
||||
initialCount, _ = rtpStats.KeyFrame()
|
||||
|
||||
for {
|
||||
if b.isClosed.Load() || b.keyFrameSeederGeneration.Load() != keyFrameSeederGeneration {
|
||||
b.logger.Debugw("stopping key frame seeder: stopped")
|
||||
b.logger.Debugw(
|
||||
"stopping key frame seeder: stopped",
|
||||
"generation", keyFrameSeederGeneration,
|
||||
"currentGeneration", b.keyFrameSeederGeneration.Load(),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
select {
|
||||
case <-timer.C:
|
||||
b.logger.Debugw("stopping key frame seeder: timeout")
|
||||
b.logger.Debugw("stopping key frame seeder: timeout", "generation", keyFrameSeederGeneration)
|
||||
return
|
||||
|
||||
case <-ticker.C:
|
||||
@@ -1444,6 +1448,7 @@ func (b *BufferBase) seedKeyFrame(keyFrameSeederGeneration int32) {
|
||||
if cnt > initialCount {
|
||||
b.logger.Debugw(
|
||||
"stopping key frame seeder: received key frame",
|
||||
"generation", keyFrameSeederGeneration,
|
||||
"keyFrameCountInitial", initialCount,
|
||||
"keyFrameCount", cnt,
|
||||
"lastKeyFrame", last,
|
||||
|
||||
Reference in New Issue
Block a user