Proto clone VideoLayer (#756)

Otherwise, there are warnings about copying locks.
This commit is contained in:
Raja Subramanian
2022-06-09 09:32:57 +05:30
committed by GitHub
parent 15e91344be
commit 4701119885
3 changed files with 10 additions and 12 deletions
+2 -5
View File
@@ -30,7 +30,7 @@ type ConnectionStatsParams struct {
GetQualityParams func() *buffer.ConnectionQualityParams
GetIsReducedQuality func() bool
GetLayerDimension func(int32) (uint32, uint32)
GetMaxExpectedLayer func() livekit.VideoLayer
GetMaxExpectedLayer func() *livekit.VideoLayer
Logger logger.Logger
}
@@ -111,7 +111,7 @@ func (cs *ConnectionStats) updateScore(streams []*livekit.AnalyticsStream, itera
} else {
// get tracks expected max layer and dimensions
expectedLayer := cs.params.GetMaxExpectedLayer()
if utils.SpatialLayerForQuality(expectedLayer.Quality) == buffer.InvalidLayerSpatial {
if expectedLayer == nil || utils.SpatialLayerForQuality(expectedLayer.Quality) == buffer.InvalidLayerSpatial {
return cs.score
}
@@ -129,9 +129,6 @@ func (cs *ConnectionStats) updateScore(streams []*livekit.AnalyticsStream, itera
cs.score = VideoConnectionScore(interval, int64(totalBytes), int64(totalFrames), &qualityParam, cs.params.CodecName,
int32(expectedLayer.Height), int32(expectedLayer.Width), int32(actualHeight), int32(actualWidth))
//logger.Infow("VideoScoreScore", "score", cs.score, "expectedLayer", expectedLayer.Quality, "maxLayer", maxLayer,
// "expectedWidth", expectedLayer.Width, "actualWidth", actualWidth, "expectedHeight", expectedLayer.Height, "actualHeight", actualHeight)
}
return cs.score
+2 -2
View File
@@ -234,10 +234,10 @@ func NewDownTrack(
}
return 0, 0
},
GetMaxExpectedLayer: func() livekit.VideoLayer {
GetMaxExpectedLayer: func() *livekit.VideoLayer {
quality := d.forwarder.MaxLayers().Spatial
width, height := d.receiver.GetLayerDimension(quality)
return livekit.VideoLayer{Quality: livekit.VideoQuality(quality), Width: width, Height: height}
return &livekit.VideoLayer{Quality: livekit.VideoQuality(quality), Width: width, Height: height}
},
Logger: d.logger,
CodecName: getCodecNameFromMime(codecs[0].MimeType),
+6 -5
View File
@@ -11,6 +11,7 @@ import (
"github.com/pion/rtcp"
"github.com/pion/webrtc/v3"
"go.uber.org/atomic"
"google.golang.org/protobuf/proto"
"github.com/livekit/livekit-server/pkg/utils"
"github.com/livekit/protocol/livekit"
@@ -208,9 +209,9 @@ func NewWebRTCReceiver(
GetLayerDimension: func(quality int32) (uint32, uint32) {
return w.GetLayerDimension(quality)
},
GetMaxExpectedLayer: func() livekit.VideoLayer {
var expectedLayer livekit.VideoLayer
var maxPublishedLayer livekit.VideoLayer
GetMaxExpectedLayer: func() *livekit.VideoLayer {
var expectedLayer *livekit.VideoLayer
var maxPublishedLayer *livekit.VideoLayer
// find min of <expected, published> layer
expectedQuality := w.streamTrackerManager.GetMaxExpectedLayer()
maxPublishedQuality := InvalidLayerSpatial
@@ -220,11 +221,11 @@ func NewWebRTCReceiver(
continue
}
if expectedQuality == utils.SpatialLayerForQuality(layer.Quality) {
expectedLayer = *layer
expectedLayer = proto.Clone(layer).(*livekit.VideoLayer)
}
if utils.SpatialLayerForQuality(layer.Quality) > maxPublishedQuality {
maxPublishedQuality = int32(layer.Quality)
maxPublishedLayer = *layer
maxPublishedLayer = proto.Clone(layer).(*livekit.VideoLayer)
}
}
}