diff --git a/packages/webrtc-client/src/tracks/transceivers.ts b/packages/webrtc-client/src/tracks/transceivers.ts index 7d5af7ea..d8267bc8 100644 --- a/packages/webrtc-client/src/tracks/transceivers.ts +++ b/packages/webrtc-client/src/tracks/transceivers.ts @@ -99,6 +99,7 @@ const createSimulcastTransceiverConfig = ( // in other case lower resolution encoding can get // higher max_bitrate sendEncodings: calculateSimulcastEncodings(encodings, maxBandwidth), + streams: trackContext.stream ? [trackContext.stream] : [], }; }; diff --git a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts index 5e7da6dc..d204cf5f 100644 --- a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts +++ b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts @@ -1,7 +1,10 @@ +import { FakeMediaStreamTrack } from 'fake-mediastreamtrack'; import { expect, it } from 'vitest'; -import { WebRTCEndpoint } from '../../src'; +import { Variant, WebRTCEndpoint } from '../../src'; +import { TrackContextImpl } from '../../src/internal'; import { deserializePeerMediaEvent, serializeServerMediaEvent } from '../../src/mediaEvent'; +import { createTransceiverConfig } from '../../src/tracks/transceivers'; import { createConnectedEventWithOneEndpoint, mockTrack } from '../fixtures'; import { mockMediaStream, mockRTCPeerConnection } from '../mocks'; @@ -51,6 +54,29 @@ it('Adding track updates internal state', () => { expect(localEndpoint.tracks.size).toBe(1); }); +it('Simulcast transceiver config includes the stream', () => { + const stream = { id: 'test-stream-id' } as MediaStream; + const videoTrack = new FakeMediaStreamTrack({ kind: 'video' }); + + const trackContext = new TrackContextImpl( + { id: 'endpoint-1', type: 'webrtc', metadata: undefined, tracks: new Map() }, + 'track-1', + undefined, + { + enabled: true, + enabledVariants: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH], + disabledVariants: [], + }, + ); + trackContext.track = videoTrack; + trackContext.stream = stream; + trackContext.maxBandwidth = 0; + + const config = createTransceiverConfig(trackContext); + + expect(config.streams).toEqual([stream]); +}); + it('Adding track before being accepted by the server throws error', async () => { // Given mockRTCPeerConnection();