Add Version to TrackInfo. (#2324)

* Add Version to TrackInfo.

Set when a track is published.

* update protocol
This commit is contained in:
Raja Subramanian
2023-12-19 11:50:48 +05:30
committed by GitHub
parent 5ee307952e
commit 37539fdf76
7 changed files with 160 additions and 18 deletions
+8
View File
@@ -28,6 +28,7 @@ import (
"github.com/livekit/protocol/livekit"
"github.com/livekit/protocol/logger"
"github.com/livekit/protocol/utils"
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/livekit-server/pkg/rtc/types"
@@ -644,6 +645,13 @@ func (t *MediaTrackReceiver) TrackInfo(generateLayer bool) *livekit.TrackInfo {
return ti
}
func (t *MediaTrackReceiver) Version() utils.TimedVersion {
t.lock.RLock()
defer t.lock.RUnlock()
return utils.TimedVersionFromProto(t.trackInfo.Version)
}
func (t *MediaTrackReceiver) UpdateVideoLayers(layers []*livekit.VideoLayer) {
t.lock.Lock()
for _, layer := range layers {
+1
View File
@@ -1824,6 +1824,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track *webrtc.TrackRemote, rtpRecei
}
ti.MimeType = track.Codec().MimeType
ti.Version = p.params.VersionGenerator.New().ToProto()
mt = p.addMediaTrack(signalCid, track.ID(), ti)
newTrack = true
p.dirty.Store(true)
+1
View File
@@ -445,6 +445,7 @@ type MediaTrack interface {
Stream() string
ToProto() *livekit.TrackInfo
Version() utils.TimedVersion
PublisherID() livekit.ParticipantID
PublisherIdentity() livekit.ParticipantIdentity
@@ -7,6 +7,7 @@ import (
"github.com/livekit/livekit-server/pkg/rtc/types"
"github.com/livekit/livekit-server/pkg/sfu"
"github.com/livekit/protocol/livekit"
"github.com/livekit/protocol/utils"
)
type FakeLocalMediaTrack struct {
@@ -337,6 +338,16 @@ type FakeLocalMediaTrack struct {
updateVideoLayersArgsForCall []struct {
arg1 []*livekit.VideoLayer
}
VersionStub func() utils.TimedVersion
versionMutex sync.RWMutex
versionArgsForCall []struct {
}
versionReturns struct {
result1 utils.TimedVersion
}
versionReturnsOnCall map[int]struct {
result1 utils.TimedVersion
}
invocations map[string][][]interface{}
invocationsMutex sync.RWMutex
}
@@ -2109,6 +2120,59 @@ func (fake *FakeLocalMediaTrack) UpdateVideoLayersArgsForCall(i int) []*livekit.
return argsForCall.arg1
}
func (fake *FakeLocalMediaTrack) Version() utils.TimedVersion {
fake.versionMutex.Lock()
ret, specificReturn := fake.versionReturnsOnCall[len(fake.versionArgsForCall)]
fake.versionArgsForCall = append(fake.versionArgsForCall, struct {
}{})
stub := fake.VersionStub
fakeReturns := fake.versionReturns
fake.recordInvocation("Version", []interface{}{})
fake.versionMutex.Unlock()
if stub != nil {
return stub()
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeLocalMediaTrack) VersionCallCount() int {
fake.versionMutex.RLock()
defer fake.versionMutex.RUnlock()
return len(fake.versionArgsForCall)
}
func (fake *FakeLocalMediaTrack) VersionCalls(stub func() utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = stub
}
func (fake *FakeLocalMediaTrack) VersionReturns(result1 utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = nil
fake.versionReturns = struct {
result1 utils.TimedVersion
}{result1}
}
func (fake *FakeLocalMediaTrack) VersionReturnsOnCall(i int, result1 utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = nil
if fake.versionReturnsOnCall == nil {
fake.versionReturnsOnCall = make(map[int]struct {
result1 utils.TimedVersion
})
}
fake.versionReturnsOnCall[i] = struct {
result1 utils.TimedVersion
}{result1}
}
func (fake *FakeLocalMediaTrack) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock()
@@ -2184,6 +2248,8 @@ func (fake *FakeLocalMediaTrack) Invocations() map[string][][]interface{} {
defer fake.toProtoMutex.RUnlock()
fake.updateVideoLayersMutex.RLock()
defer fake.updateVideoLayersMutex.RUnlock()
fake.versionMutex.RLock()
defer fake.versionMutex.RUnlock()
copiedInvocations := map[string][][]interface{}{}
for key, value := range fake.invocations {
copiedInvocations[key] = value
@@ -7,6 +7,7 @@ import (
"github.com/livekit/livekit-server/pkg/rtc/types"
"github.com/livekit/livekit-server/pkg/sfu"
"github.com/livekit/protocol/livekit"
"github.com/livekit/protocol/utils"
)
type FakeMediaTrack struct {
@@ -273,6 +274,16 @@ type FakeMediaTrack struct {
updateVideoLayersArgsForCall []struct {
arg1 []*livekit.VideoLayer
}
VersionStub func() utils.TimedVersion
versionMutex sync.RWMutex
versionArgsForCall []struct {
}
versionReturns struct {
result1 utils.TimedVersion
}
versionReturnsOnCall map[int]struct {
result1 utils.TimedVersion
}
invocations map[string][][]interface{}
invocationsMutex sync.RWMutex
}
@@ -1695,6 +1706,59 @@ func (fake *FakeMediaTrack) UpdateVideoLayersArgsForCall(i int) []*livekit.Video
return argsForCall.arg1
}
func (fake *FakeMediaTrack) Version() utils.TimedVersion {
fake.versionMutex.Lock()
ret, specificReturn := fake.versionReturnsOnCall[len(fake.versionArgsForCall)]
fake.versionArgsForCall = append(fake.versionArgsForCall, struct {
}{})
stub := fake.VersionStub
fakeReturns := fake.versionReturns
fake.recordInvocation("Version", []interface{}{})
fake.versionMutex.Unlock()
if stub != nil {
return stub()
}
if specificReturn {
return ret.result1
}
return fakeReturns.result1
}
func (fake *FakeMediaTrack) VersionCallCount() int {
fake.versionMutex.RLock()
defer fake.versionMutex.RUnlock()
return len(fake.versionArgsForCall)
}
func (fake *FakeMediaTrack) VersionCalls(stub func() utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = stub
}
func (fake *FakeMediaTrack) VersionReturns(result1 utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = nil
fake.versionReturns = struct {
result1 utils.TimedVersion
}{result1}
}
func (fake *FakeMediaTrack) VersionReturnsOnCall(i int, result1 utils.TimedVersion) {
fake.versionMutex.Lock()
defer fake.versionMutex.Unlock()
fake.VersionStub = nil
if fake.versionReturnsOnCall == nil {
fake.versionReturnsOnCall = make(map[int]struct {
result1 utils.TimedVersion
})
}
fake.versionReturnsOnCall[i] = struct {
result1 utils.TimedVersion
}{result1}
}
func (fake *FakeMediaTrack) Invocations() map[string][][]interface{} {
fake.invocationsMutex.RLock()
defer fake.invocationsMutex.RUnlock()
@@ -1754,6 +1818,8 @@ func (fake *FakeMediaTrack) Invocations() map[string][][]interface{} {
defer fake.toProtoMutex.RUnlock()
fake.updateVideoLayersMutex.RLock()
defer fake.updateVideoLayersMutex.RUnlock()
fake.versionMutex.RLock()
defer fake.versionMutex.RUnlock()
copiedInvocations := map[string][][]interface{}{}
for key, value := range fake.invocations {
copiedInvocations[key] = value