Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ require (
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731
github.com/livekit/media-sdk v0.0.0-20251106223430-dd8f5e0de2cf
github.com/livekit/media-sdk v0.0.0-20260401192012-ea94ab340a57
github.com/livekit/mediatransportutil v0.0.0-20251128105421-19c7a7b81c22
github.com/livekit/protocol v1.45.1
github.com/magefile/mage v1.15.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@ github.com/lithammer/shortuuid/v4 v4.2.0 h1:LMFOzVB3996a7b8aBuEXxqOBflbfPQAiVzkI
github.com/lithammer/shortuuid/v4 v4.2.0/go.mod h1:D5noHZ2oFw/YaKCfGy0YxyE7M0wMbezmMjPdhyEFe6Y=
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 h1:9x+U2HGLrSw5ATTo469PQPkqzdoU7be46ryiCDO3boc=
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
github.com/livekit/media-sdk v0.0.0-20251106223430-dd8f5e0de2cf h1:gvun6axx2Mrh8+NvuQBLQUoiG5MBubI435XoX68VGL8=
github.com/livekit/media-sdk v0.0.0-20251106223430-dd8f5e0de2cf/go.mod h1:7ssWiG+U4xnbvLih9WiZbhQP6zIKMjgXdUtIE1bm/E8=
github.com/livekit/media-sdk v0.0.0-20260401192012-ea94ab340a57 h1:Y0dZHH9gY70h+jPYEonvWUrPXxrp8YC+LWDaUUM/1mA=
github.com/livekit/media-sdk v0.0.0-20260401192012-ea94ab340a57/go.mod h1:7ssWiG+U4xnbvLih9WiZbhQP6zIKMjgXdUtIE1bm/E8=
github.com/livekit/mediatransportutil v0.0.0-20251128105421-19c7a7b81c22 h1:dzCBxOGLLWVtQhL7OYK2EGN+5Q+23Mq/jfz4vQisirA=
github.com/livekit/mediatransportutil v0.0.0-20251128105421-19c7a7b81c22/go.mod h1:mSNtYzSf6iY9xM3UX42VEI+STHvMgHmrYzEHPcdhB8A=
github.com/livekit/protocol v1.45.1 h1:4cbynsPZW32gS2z6nUWfAfr4YaTUwZSKUiLpSpjX+lQ=
Expand Down
10 changes: 5 additions & 5 deletions pkg/media/pcmlocaltrack.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func WithEncryptor(encryptor Encryptor) PCMLocalTrackOption {
type PCMLocalTrack struct {
*webrtc.TrackLocalStaticSample

opusWriter media.WriteCloser[opus.Sample]
opusWriter media.WriteCloser[[]byte]
pcmWriter media.WriteCloser[media.PCM16Sample]
resampledPCMWriter media.WriteCloser[media.PCM16Sample]

Expand Down Expand Up @@ -82,13 +82,13 @@ func NewPCMLocalTrack(
return nil, err
}

// opusWriter writes opus samples to the track
var opusWriter media.WriteCloser[opus.Sample]
// opusWriter writes opus payloads to the track
var opusWriter media.WriteCloser[[]byte]
if params.Encryptor != nil {
encryptionHandler := newEncryptionHandler(track, params.Encryptor, sourceSampleRate)
opusWriter = media.FromSampleWriter[opus.Sample](encryptionHandler, sourceSampleRate, defaultPCMFrameDuration)
opusWriter = media.FromSampleWriter[[]byte](encryptionHandler, sourceSampleRate, defaultPCMFrameDuration)
} else {
opusWriter = media.FromSampleWriter[opus.Sample](track, DefaultOpusSampleRate, defaultPCMFrameDuration)
opusWriter = media.FromSampleWriter[[]byte](track, DefaultOpusSampleRate, defaultPCMFrameDuration)
}
// pcmWriter encodes opus samples from PCM16 samples and writes them to opusWriter
pcmWriter, err := opus.Encode(opusWriter, sourceChannels, logger)
Expand Down
4 changes: 2 additions & 2 deletions pkg/media/pcmremotetrack.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ type PCMRemoteTrack struct {
sampleRate int
isResampled bool

opusWriter media.WriteCloser[opus.Sample]
opusWriter media.WriteCloser[[]byte]
pcmMWriter media.WriteCloser[media.PCM16Sample]
resampledPCMWriter media.WriteCloser[media.PCM16Sample]
logger protoLogger.Logger
Expand Down Expand Up @@ -148,7 +148,7 @@ func NewPCMRemoteTrack(track *webrtc.TrackRemote, writer PCMRemoteTrackWriter, o

func (t *PCMRemoteTrack) processSamples(handleJitter bool) {
// Handler takes RTP packets and writes the payload to opusWriter
var h rtp.Handler = rtp.NewMediaStreamIn[opus.Sample](t.opusWriter)
var h rtp.Handler = rtp.NewMediaStreamIn(t.opusWriter)

if t.decryptor != nil {
// Ideally, we should check if the track is encrypted with the
Expand Down
Loading