mirror of
https://github.com/livekit/livekit.git
synced 2026-08-29 07:39:09 +00:00
Add Version to TrackInfo. (#2324)
* Add Version to TrackInfo. Set when a track is published. * update protocol
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user