From c367c36d8fec3ae8fdd7820038907910601b45e5 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Tue, 28 Feb 2023 10:44:47 +0800 Subject: [PATCH] Add config for active red encoding (#1476) --- config-sample.yaml | 2 ++ pkg/config/config.go | 2 ++ pkg/rtc/mediatrack.go | 1 + pkg/rtc/mediatrackreceiver.go | 4 +++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/config-sample.yaml b/config-sample.yaml index c8340341c..8cc964656 100644 --- a/config-sample.yaml +++ b/config-sample.yaml @@ -176,6 +176,8 @@ keys: # update_interval: 500 # # to prevent speaker updates from too jumpy, smooth out values over N samples # smooth_intervals: 4 +# # enable red encoding downtrack for opus only audio up track +# active_red_encoding: true # turn server # turn: diff --git a/pkg/config/config.go b/pkg/config/config.go index 09587d1c6..729baa5e9 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -150,6 +150,8 @@ type AudioConfig struct { // smoothing for audioLevel values sent to the client. // audioLevel will be an average of `smooth_intervals`, 0 to disable SmoothIntervals uint32 `yaml:"smooth_intervals"` + // enable red encoding downtrack for opus only audio up track + ActiveREDEncoding bool `yaml:"active_red_encoding"` } type StreamTrackerPacketConfig struct { diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index e7a248d01..7cf5780d4 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -70,6 +70,7 @@ func NewMediaTrack(params MediaTrackParams) *MediaTrack { ParticipantVersion: params.ParticipantVersion, ReceiverConfig: params.ReceiverConfig, SubscriberConfig: params.SubscriberConfig, + AudioConfig: params.AudioConfig, Telemetry: params.Telemetry, Logger: params.Logger, }) diff --git a/pkg/rtc/mediatrackreceiver.go b/pkg/rtc/mediatrackreceiver.go index d42012e1e..d06924e25 100644 --- a/pkg/rtc/mediatrackreceiver.go +++ b/pkg/rtc/mediatrackreceiver.go @@ -15,6 +15,7 @@ import ( "github.com/livekit/protocol/livekit" "github.com/livekit/protocol/logger" + "github.com/livekit/livekit-server/pkg/config" "github.com/livekit/livekit-server/pkg/rtc/types" "github.com/livekit/livekit-server/pkg/sfu" "github.com/livekit/livekit-server/pkg/sfu/buffer" @@ -74,6 +75,7 @@ type MediaTrackReceiverParams struct { ParticipantVersion uint32 ReceiverConfig ReceiverConfig SubscriberConfig DirectionConfig + AudioConfig config.AudioConfig Telemetry telemetry.TelemetryService Logger logger.Logger } @@ -474,7 +476,7 @@ func (t *MediaTrackReceiver) AddSubscriber(sub types.LocalParticipant) (types.Su StreamId: streamId, UpstreamCodecs: potentialCodecs, Logger: tLogger, - DisableRed: t.trackInfo.GetDisableRed(), + DisableRed: t.trackInfo.GetDisableRed() || !t.params.AudioConfig.ActiveREDEncoding, }) return t.MediaTrackSubscriptions.AddSubscriber(sub, wr) }