@tribe-nest/media-client 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,9 @@ export type ProducerEntry = {
16
16
  identity: string;
17
17
  kind: "audio" | "video";
18
18
  paused: boolean;
19
+ /** The publisher's declared label ("camera", "screen", "rtmp", "program"),
20
+ * when the node relayed one. For rendering only. */
21
+ source?: string;
19
22
  };
20
23
  export type RoomState = {
21
24
  phase: "idle" | "joined" | "closed";
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAEf,KAAK,IAAI,EACT,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,gEAAgE;IAChE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,gEAAgE;IAChE,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAW9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CA6H9E;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAE7F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE5F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAExF;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,aAAa,EAAE,CAO1E;AAYD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,aAAa,EAAE,CAE3E"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAEf,KAAK,IAAI,EACT,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB;wDACoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,gEAAgE;IAChE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,gEAAgE;IAChE,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,uDAAuD;IACvD,QAAQ,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAW9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAmI9E;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAE7F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE5F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAExF;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,aAAa,EAAE,CAO1E;AAYD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,aAAa,EAAE,CAE3E"}
@@ -82,7 +82,13 @@ function reduceRoomState(state, frame) {
82
82
  ...state,
83
83
  producers: [
84
84
  ...state.producers,
85
- { producerId: frame.producerId, identity: frame.identity, kind: frame.kind, paused: false },
85
+ {
86
+ producerId: frame.producerId,
87
+ identity: frame.identity,
88
+ kind: frame.kind,
89
+ paused: false,
90
+ ...(frame.source ? { source: frame.source } : {}),
91
+ },
86
92
  ],
87
93
  };
88
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -105,11 +105,21 @@ export declare function useRecording(): boolean;
105
105
  * renders one only after the track arrives, and every remote `<video>` is
106
106
  * `muted`, so a call had picture and no sound in either direction.
107
107
  *
108
- * Depending on `track` is what makes React re-run it: the identity changes when
109
- * the track appears, React calls the old callback with `null` and the new one
110
- * with the element. `MediaTrack` objects are created once per consumer and the
111
- * room's snapshot array is rebuilt only when a track changes, so this settles
112
- * rather than churning.
108
+ * ## Why the callback is STABLE, and an effect does the re-attaching
109
+ *
110
+ * The callback used to be memoised on `[track]`, so a new track identity made
111
+ * React run the OLD callback with `null` (which pauses the element and clears
112
+ * `srcObject`) and then the new one with the element. That is a black frame and
113
+ * a stall on the viewer's screen, and it fires for reasons that have nothing to
114
+ * do with the picture: the room's snapshot is rebuilt on every change, and a
115
+ * consumer that is closed and re-created (`syncSubscriptions` following the
116
+ * active set) produces a fresh `MediaTrack` for the SAME underlying
117
+ * `MediaStreamTrack`.
118
+ *
119
+ * So the ref callback is now stable - it mounts and unmounts, nothing else -
120
+ * and an effect assigns `srcObject` whenever the underlying track actually
121
+ * changes. `applied` is what makes that idempotent: assigning the same track
122
+ * again is not free, it restarts the element's load and shows as a flicker.
113
123
  */
114
124
  export declare function useRemoteTrack(producerId: string): {
115
125
  track: MediaTrack | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
@@ -170,20 +170,73 @@ function useRecording() {
170
170
  * renders one only after the track arrives, and every remote `<video>` is
171
171
  * `muted`, so a call had picture and no sound in either direction.
172
172
  *
173
- * Depending on `track` is what makes React re-run it: the identity changes when
174
- * the track appears, React calls the old callback with `null` and the new one
175
- * with the element. `MediaTrack` objects are created once per consumer and the
176
- * room's snapshot array is rebuilt only when a track changes, so this settles
177
- * rather than churning.
173
+ * ## Why the callback is STABLE, and an effect does the re-attaching
174
+ *
175
+ * The callback used to be memoised on `[track]`, so a new track identity made
176
+ * React run the OLD callback with `null` (which pauses the element and clears
177
+ * `srcObject`) and then the new one with the element. That is a black frame and
178
+ * a stall on the viewer's screen, and it fires for reasons that have nothing to
179
+ * do with the picture: the room's snapshot is rebuilt on every change, and a
180
+ * consumer that is closed and re-created (`syncSubscriptions` following the
181
+ * active set) produces a fresh `MediaTrack` for the SAME underlying
182
+ * `MediaStreamTrack`.
183
+ *
184
+ * So the ref callback is now stable - it mounts and unmounts, nothing else -
185
+ * and an effect assigns `srcObject` whenever the underlying track actually
186
+ * changes. `applied` is what makes that idempotent: assigning the same track
187
+ * again is not free, it restarts the element's load and shows as a flicker.
178
188
  */
179
189
  function useRemoteTrack(producerId) {
180
190
  const tracks = useRoomSnapshot(selectTracks, EMPTY_TRACKS);
181
191
  const track = tracks.find((t) => t.producerId === producerId);
192
+ const mediaTrack = track?.track ?? null;
193
+ // The element this callback last attached to, so DETACHING can undo it.
194
+ const attached = (0, react_1.useRef)(null);
195
+ // The `MediaStreamTrack` currently on that element. Compared by identity, so
196
+ // the same track arriving inside a new `MediaTrack` record is a no-op.
197
+ const applied = (0, react_1.useRef)(null);
198
+ // Read by the ref callback, which must not depend on the track (see above).
199
+ const latest = (0, react_1.useRef)(mediaTrack);
200
+ latest.current = mediaTrack;
182
201
  const attach = (0, react_1.useCallback)((element) => {
202
+ // React calls a ref callback with null when the element goes away, and
203
+ // ignoring that leaves a detached element holding the stream and still
204
+ // PLAYING it. Nothing on screen shows the orphan; you only hear it,
205
+ // as the same audio a second time, slightly out of step with itself.
206
+ // A remount is enough to cause it, and StrictMode remounts everything
207
+ // once in development, so this reproduced on every dev page load.
208
+ if (!element) {
209
+ const previous = attached.current;
210
+ attached.current = null;
211
+ applied.current = null;
212
+ if (previous) {
213
+ previous.pause();
214
+ previous.srcObject = null;
215
+ }
216
+ return;
217
+ }
218
+ // A newly mounted element is always written to, even with no track yet: an
219
+ // explicit `null` is what says "this element holds nothing", and skipping
220
+ // it would leave whatever a reused element was carrying.
221
+ const previousElement = attached.current;
222
+ attached.current = element;
223
+ if (previousElement === element && applied.current === latest.current)
224
+ return;
225
+ applied.current = latest.current;
226
+ element.srcObject = latest.current ? new MediaStream([latest.current]) : null;
227
+ }, []);
228
+ // The track almost never exists when the element mounts: the consume round
229
+ // trip lands milliseconds later. This is what puts it on the element then,
230
+ // and what swaps it if the consumer is ever rebuilt.
231
+ (0, react_1.useEffect)(() => {
232
+ const element = attached.current;
183
233
  if (!element)
184
234
  return;
185
- element.srcObject = track ? new MediaStream([track.track]) : null;
186
- }, [track]);
235
+ if (applied.current === mediaTrack)
236
+ return;
237
+ applied.current = mediaTrack;
238
+ element.srcObject = mediaTrack ? new MediaStream([mediaTrack]) : null;
239
+ }, [mediaTrack]);
187
240
  return { track, attach };
188
241
  }
189
242
  const NOTHING_PENDING = { camera: false, microphone: false, screen: false };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"browserDevice.d.ts","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,WAAW,EAOZ,MAAM,UAAU,CAAC;AAsClB,wBAAgB,mBAAmB,IAAI,WAAW,CA8DjD"}
1
+ {"version":3,"file":"browserDevice.d.ts","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,WAAW,EAOZ,MAAM,UAAU,CAAC;AAgDlB,wBAAgB,mBAAmB,IAAI,WAAW,CA8DjD"}
@@ -15,13 +15,22 @@ const mediasoup_client_1 = require("mediasoup-client");
15
15
  * This file is deliberately dull. If it grows logic, that logic is in the wrong
16
16
  * place.
17
17
  */
18
- const adapt = (transport) => ({
18
+ const CODEC_MIME = { h264: "video/h264", vp8: "video/vp8" };
19
+ const adapt = (transport, device) => ({
19
20
  id: transport.id,
20
- async produce({ track, appData, encodings }) {
21
+ async produce({ track, appData, encodings, codec }) {
22
+ // The router's own entry for the codec, which is what mediasoup-client
23
+ // wants rather than a name. Missing means the router does not offer it
24
+ // and the default applies, which the caller can see from the producer.
25
+ const wanted = codec ? CODEC_MIME[codec] : undefined;
26
+ const capability = wanted
27
+ ? device.rtpCapabilities.codecs?.find((c) => c.mimeType.toLowerCase() === wanted)
28
+ : undefined;
21
29
  const producer = await transport.produce({
22
30
  track,
23
31
  ...(encodings ? { encodings: encodings } : {}),
24
32
  ...(appData ? { appData } : {}),
33
+ ...(capability ? { codec: capability } : {}),
25
34
  });
26
35
  return producer;
27
36
  },
@@ -82,12 +91,12 @@ function createBrowserDevice() {
82
91
  createSendTransport({ description, iceServers, handlers }) {
83
92
  const transport = device.createSendTransport(common(description, iceServers));
84
93
  wire(transport, handlers);
85
- return adapt(transport);
94
+ return adapt(transport, device);
86
95
  },
87
96
  createRecvTransport({ description, iceServers, handlers }) {
88
97
  const transport = device.createRecvTransport(common(description, iceServers));
89
98
  wire(transport, handlers);
90
- return adapt(transport);
99
+ return adapt(transport, device);
91
100
  },
92
101
  };
93
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browserDevice.js","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserDevice.js","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,8 @@ export interface MediaTransport {
60
60
  track: MediaStreamTrack;
61
61
  appData?: Record<string, unknown>;
62
62
  encodings?: unknown[];
63
+ /** Prefer this codec from the loaded capabilities; ignored when absent. */
64
+ codec?: "h264" | "vp8";
63
65
  }): Promise<MediaProducerHandle>;
64
66
  consume(input: {
65
67
  id: string;
@@ -75,7 +77,18 @@ export type MediaProducerHandle = {
75
77
  pause(): void;
76
78
  resume(): void;
77
79
  close(): void;
80
+ /** Swap the capture feeding this producer. The node sees nothing. */
81
+ replaceTrack(track: MediaStreamTrack): Promise<void>;
78
82
  readonly closed: boolean;
83
+ /**
84
+ * The underlying sender, when the implementation has one.
85
+ *
86
+ * Exposed for `degradationPreference`, which is a SENDER-level setting with
87
+ * no per-encoding equivalent, so there is no way to ask for it through
88
+ * `produce()`. Optional because a non-browser implementation has no such
89
+ * object, and every caller has to cope with its absence anyway.
90
+ */
91
+ readonly rtpSender?: RTCRtpSender | null;
79
92
  };
80
93
  export type MediaConsumerHandle = {
81
94
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/room/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/room/device.ts"],"names":[],"mappings":"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"}
@@ -55,13 +55,63 @@ export type MediaTrack = {
55
55
  track: MediaStreamTrack;
56
56
  /** Paused at the SOURCE, as the publisher left it. */
57
57
  paused: boolean;
58
+ /** The publisher's declared label, when the node relayed one. Rendering only. */
59
+ source?: string;
58
60
  };
59
61
  /** What a local track is, in the vocabulary the node checks against `publishKinds`. */
60
62
  export type LocalPublicationSource = "camera" | "microphone" | "screen";
63
+ /**
64
+ * Every label this SDK publishes under.
65
+ *
66
+ * `program` is a COMPOSED feed rather than a device: a broadcast studio's
67
+ * rendered output, published so a server-side egress can restream it. It is
68
+ * not a capture, so it is never a "lost source" to re-offer a person after a
69
+ * drop, and `useLocalMedia`'s device controls never touch it. The node treats
70
+ * it as its track's kind (`requiredPublishKind`), so a token needs only
71
+ * `publishKinds: ["audio", "video"]`.
72
+ */
73
+ export type PublishSourceLabel = LocalPublicationSource | "program";
74
+ /**
75
+ * How to encode one publication, where the default is wrong.
76
+ *
77
+ * A camera takes the browser's defaults. A composed program feed does not:
78
+ * an RTMP restream needs H.264 (RTMP carries nothing else, and the egress
79
+ * copies rather than transcodes), and a 1080p canvas at the default bitrate
80
+ * is a smear. Both are per-publication facts, not per-room ones.
81
+ */
82
+ export type PublishOptions = {
83
+ /** Pick this codec from the router's list. Ignored when the router lacks it. */
84
+ codec?: "h264" | "vp8";
85
+ /** Cap for the encoder, in kbit/s. Read as the TOP layer under simulcast. */
86
+ maxBitrateKbps?: number;
87
+ /**
88
+ * Send three spatial layers instead of one, so each consumer can be served
89
+ * the one its connection can carry.
90
+ *
91
+ * The choosing is not ours and does not need to be: mediasoup picks a layer
92
+ * per consumer from that transport's own bandwidth estimate, so a viewer on
93
+ * a poor line gets 360p rather than a stall, with nothing to implement on
94
+ * either end. What we decide is only whether the layers exist to choose
95
+ * from.
96
+ *
97
+ * Use it for a feed with an AUDIENCE. It is wrong for a camera in a small
98
+ * call, where everyone can carry the one encoding and the extra layers are
99
+ * encoder time spent on nobody.
100
+ *
101
+ * ## Why VP8 and not H.264
102
+ *
103
+ * Browser simulcast is reliable on VP8 and is not on H.264, where it depends
104
+ * on the hardware encoder and quietly degrades to one layer. A caller that
105
+ * needs H.264 downstream (an RTMP restream copies rather than transcodes)
106
+ * should publish one encoding and leave this off. The two are exclusive by
107
+ * design rather than by accident.
108
+ */
109
+ simulcast?: boolean;
110
+ };
61
111
  export type LocalPublication = {
62
112
  producerId: string;
63
113
  kind: "audio" | "video";
64
- source: LocalPublicationSource;
114
+ source: PublishSourceLabel;
65
115
  track: MediaStreamTrack;
66
116
  handle: MediaProducerHandle;
67
117
  /**
@@ -206,7 +256,18 @@ export declare class MediaRoom {
206
256
  * `publishKinds`: a token granting audio only must not be able to publish a
207
257
  * screen share by relabelling it, and the node is where that is decided.
208
258
  */
209
- publish(track: MediaStreamTrack, source: LocalPublicationSource): Promise<LocalPublication>;
259
+ publish(track: MediaStreamTrack, source: PublishSourceLabel, options?: PublishOptions): Promise<LocalPublication>;
260
+ /**
261
+ * Swap the capture behind a publication, keeping the producer.
262
+ *
263
+ * A device change (another camera, another microphone) is this, and it is
264
+ * deliberately NOT unpublish plus publish: that changes the producer id,
265
+ * which is the key every consumer's tile and every studio's scene holds, so
266
+ * a switched camera vanished from the stage until somebody re-added it.
267
+ * The old capture is stopped here; the new one is watched for ending the
268
+ * same way the first was.
269
+ */
270
+ replaceTrack(producerId: string, track: MediaStreamTrack): Promise<void>;
210
271
  unpublish(producerId: string): Promise<void>;
211
272
  /**
212
273
  * Mute or unmute at the source, keeping the capture and the producer.
@@ -1 +1 @@
1
- {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/room/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/room/room.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MediaRoom = void 0;
4
4
  exports.connectToRoom = connectToRoom;
5
5
  const core_1 = require("../core");
6
+ /**
7
+ * The three layers, quarter / half / full.
8
+ *
9
+ * `scaleResolutionDownBy` rather than three bitrates, so the shape holds
10
+ * whatever resolution the caller is publishing. The rids are the conventional
11
+ * one-letter names every SFU and every browser log uses, which is worth more
12
+ * than a more descriptive name nobody would recognise in a WebRTC dump.
13
+ */
14
+ const SIMULCAST_LAYERS = [
15
+ { rid: "q", scaleResolutionDownBy: 4, scalabilityMode: "L1T1" },
16
+ { rid: "h", scaleResolutionDownBy: 2, scalabilityMode: "L1T1" },
17
+ { rid: "f", scaleResolutionDownBy: 1, scalabilityMode: "L1T1" },
18
+ ];
19
+ /**
20
+ * What each layer may spend, given the caller's cap for the top one.
21
+ *
22
+ * Quarter resolution is a sixteenth of the pixels, but not a sixteenth of the
23
+ * bits: an encoder needs proportionally more per pixel at small sizes, and a
24
+ * layer starved below what its resolution costs is a layer that looks worse
25
+ * than it should while still being sent. A quarter and a tenth are the
26
+ * conventional split and are what mediasoup's own examples use.
27
+ */
28
+ function simulcastEncodings(maxBitrateKbps) {
29
+ const top = (maxBitrateKbps ?? 0) * 1000;
30
+ const share = [0.1, 0.25, 1];
31
+ return SIMULCAST_LAYERS.map((layer, index) => ({
32
+ ...layer,
33
+ ...(top ? { maxBitrate: Math.round(top * share[index]) } : {}),
34
+ }));
35
+ }
6
36
  class MediaRoom {
7
37
  options;
8
38
  signal;
@@ -51,7 +81,13 @@ class MediaRoom {
51
81
  this.lastError = cause;
52
82
  // What the person was sending, before it is torn down. Recorded so the
53
83
  // screen can say so once the room is back (see `lostPublicationSources`).
54
- const wasPublishing = [...new Set([...this.publications.values()].map((p) => p.source))];
84
+ // A program feed is excluded: it is a studio's output, not something a
85
+ // person switched on, so nobody should be asked to switch it back on.
86
+ const wasPublishing = [
87
+ ...new Set([...this.publications.values()]
88
+ .map((p) => p.source)
89
+ .filter((s) => s !== "program")),
90
+ ];
55
91
  // Before the decision, and unconditionally. The transports are dead
56
92
  // whatever happens next, and so is every capture that was feeding them.
57
93
  this.teardownMedia();
@@ -266,13 +302,24 @@ class MediaRoom {
266
302
  * `publishKinds`: a token granting audio only must not be able to publish a
267
303
  * screen share by relabelling it, and the node is where that is decided.
268
304
  */
269
- async publish(track, source) {
305
+ async publish(track, source, options = {}) {
270
306
  const kind = track.kind === "audio" ? "audio" : "video";
271
307
  if (!this.device.canProduce(kind)) {
272
308
  throw new Error(`this browser cannot produce ${kind}`);
273
309
  }
274
310
  const transport = await this.ensureSendTransport();
275
- const handle = await transport.produce({ track, appData: { source } });
311
+ const handle = await transport.produce({
312
+ track,
313
+ appData: { source },
314
+ ...(options.codec ? { codec: options.codec } : {}),
315
+ ...(options.simulcast
316
+ ? { encodings: simulcastEncodings(options.maxBitrateKbps) }
317
+ : options.maxBitrateKbps
318
+ ? { encodings: [{ maxBitrate: options.maxBitrateKbps * 1000 }] }
319
+ : {}),
320
+ });
321
+ if (source === "program")
322
+ await keepProgramResolution(handle, this.options.onLog);
276
323
  const publication = {
277
324
  producerId: handle.id,
278
325
  kind,
@@ -289,7 +336,7 @@ class MediaRoom {
289
336
  this.trackEndWatchers.set(handle.id, whenTrackEnds(track, () => {
290
337
  void this.unpublish(handle.id);
291
338
  }));
292
- if (this.lostSources.includes(source)) {
339
+ if (source !== "program" && this.lostSources.includes(source)) {
293
340
  this.lostSources = this.lostSources.filter((s) => s !== source);
294
341
  if (this.lostSources.length === 0)
295
342
  this.lostSources = NO_SOURCES;
@@ -297,6 +344,33 @@ class MediaRoom {
297
344
  this.emit();
298
345
  return publication;
299
346
  }
347
+ /**
348
+ * Swap the capture behind a publication, keeping the producer.
349
+ *
350
+ * A device change (another camera, another microphone) is this, and it is
351
+ * deliberately NOT unpublish plus publish: that changes the producer id,
352
+ * which is the key every consumer's tile and every studio's scene holds, so
353
+ * a switched camera vanished from the stage until somebody re-added it.
354
+ * The old capture is stopped here; the new one is watched for ending the
355
+ * same way the first was.
356
+ */
357
+ async replaceTrack(producerId, track) {
358
+ const publication = this.publications.get(producerId);
359
+ if (!publication)
360
+ throw new Error("no such publication");
361
+ if (track.kind !== publication.kind)
362
+ throw new Error(`a ${publication.kind} publication cannot carry ${track.kind}`);
363
+ if (track === publication.track)
364
+ return;
365
+ await publication.handle.replaceTrack(track);
366
+ this.trackEndWatchers.get(producerId)?.();
367
+ publication.track.stop();
368
+ this.trackEndWatchers.set(producerId, whenTrackEnds(track, () => {
369
+ void this.unpublish(producerId);
370
+ }));
371
+ this.publications.set(producerId, { ...publication, track });
372
+ this.emit();
373
+ }
300
374
  async unpublish(producerId) {
301
375
  const publication = this.publications.get(producerId);
302
376
  if (!publication)
@@ -403,6 +477,7 @@ class MediaRoom {
403
477
  kind: response.kind,
404
478
  track: consumer.track,
405
479
  paused: entry.paused,
480
+ ...(entry.source ? { source: entry.source } : {}),
406
481
  });
407
482
  // RULE 3: resume LAST. The node creates every consumer paused, so media
408
483
  // arriving before the application has the track is dropped - and for video
@@ -592,4 +667,44 @@ async function connectToRoom(options) {
592
667
  await room.connect();
593
668
  return room;
594
669
  }
670
+ /**
671
+ * The program feed keeps its RESOLUTION and gives up frame rate instead.
672
+ *
673
+ * Chrome's default for a video sender is `balanced`, which under a low
674
+ * bandwidth estimate or CPU pressure scales the encode down. For a camera tile
675
+ * that is the right trade. For the program feed it is wrong twice over.
676
+ *
677
+ * First, this feed is the broadcast: a 1080p composite arriving at Twitch as
678
+ * 270p is the product, not a degraded preview. Twitch reported exactly that.
679
+ *
680
+ * Second, and worse, the RTMP leg cannot survive the CHANGE. The egress muxes
681
+ * the feed with `-c:v copy`, and an FLV header carries the dimensions once, at
682
+ * the start. When Chrome adapts resolution mid-stream the SPS changes under a
683
+ * header that still describes the old size, and the player refuses the stream:
684
+ *
685
+ * Your browser encountered an error while decoding the video. (Error #3000)
686
+ *
687
+ * while ffmpeg reports `drop_frames=0`, a healthy bitrate, and an established
688
+ * socket. Nothing on the server can see it.
689
+ *
690
+ * `maintain-resolution` makes the encoder drop frames rather than pixels, so
691
+ * the SPS stays put for the life of the broadcast.
692
+ *
693
+ * Best-effort: the setting is not universally implemented, and a browser that
694
+ * ignores it is no worse off than before. Only the program source, because a
695
+ * camera is better off shrinking than freezing.
696
+ */
697
+ async function keepProgramResolution(handle, onLog) {
698
+ const sender = handle.rtpSender;
699
+ if (!sender || handle.kind !== "video")
700
+ return;
701
+ try {
702
+ const params = sender.getParameters();
703
+ params.degradationPreference = "maintain-resolution";
704
+ await sender.setParameters(params);
705
+ }
706
+ catch (err) {
707
+ onLog?.("warn", "could not pin the program feed's resolution", err);
708
+ }
709
+ }
595
710
  //# sourceMappingURL=room.js.map