feat: WIP s6-overlay and friends

This commit is contained in:
DatCaptainHorse
2026-02-19 18:02:10 +02:00
parent b743dab332
commit 34afd371ad
96 changed files with 2340 additions and 1063 deletions

View File

@@ -3,6 +3,7 @@ package shared
import (
"errors"
"fmt"
"github.com/pion/rtp"
"io"
"log/slog"
"relay/internal/common"
@@ -104,6 +105,17 @@ func (p *Participant) Close() {
}
func (p *Participant) packetWriter() {
flags := common.GetFlags()
playoutExt := &rtp.PlayoutDelayExtension{
MinDelay: uint16(flags.PlayoutDelayMin),
MaxDelay: uint16(flags.PlayoutDelayMax),
}
playoutPayload, err := playoutExt.Marshal()
if err != nil {
slog.Error("Failed to marshal PlayoutDelayExtension for participant", "participant", p.ID, "err", err)
return
}
for pkt := range p.packetQueue {
var track *webrtc.TrackLocalStaticRTP
@@ -114,6 +126,14 @@ func (p *Participant) packetWriter() {
track = p.VideoTrack
}
// Use PlayoutDelayExtension for low latency, if set for this track kind
if extID, ok := common.GetExtension(track.Kind(), common.ExtensionPlayoutDelay); ok {
if err = pkt.packet.SetExtension(extID, playoutPayload); err != nil {
slog.Error("Failed to set PlayoutDelayExtension for participant", "participant", p.ID, "err", err)
continue
}
}
if track != nil {
if err := track.WriteRTP(pkt.packet); err != nil && !errors.Is(err, io.ErrClosedPipe) {
slog.Error("WriteRTP failed", "participant", p.ID, "kind", pkt.kind, "err", err)