diff --git a/go.mod b/go.mod index 1cb7c844..020f0cab 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index d2e67699..cad281db 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/pkg/media/pcmlocaltrack.go b/pkg/media/pcmlocaltrack.go index 6a9b578f..552963f1 100644 --- a/pkg/media/pcmlocaltrack.go +++ b/pkg/media/pcmlocaltrack.go @@ -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] @@ -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) diff --git a/pkg/media/pcmremotetrack.go b/pkg/media/pcmremotetrack.go index e277ff30..db0c8bee 100644 --- a/pkg/media/pcmremotetrack.go +++ b/pkg/media/pcmremotetrack.go @@ -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 @@ -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