@stinkycomputing/sesame-api-client 1.5.0 → 1.5.2
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.
- package/dist/index.browser.mjs +30 -0
- package/dist/index.browser.mjs.map +2 -2
- package/dist/index.cjs +30 -0
- package/dist/index.cjs.map +2 -2
- package/dist/index.mjs +30 -0
- package/dist/index.mjs.map +2 -2
- package/dist/proto/api.d.ts +8 -1
- package/dist/proto/api.js +35 -0
- package/docs/protocol-reference.md +172 -4
- package/package.json +1 -1
package/dist/proto/api.d.ts
CHANGED
|
@@ -3299,7 +3299,8 @@ export namespace sesame {
|
|
|
3299
3299
|
SOURCE_TRANSPORT_CMD_NEXT = 12,
|
|
3300
3300
|
SOURCE_TRANSPORT_CMD_SKIP_NEXT = 13,
|
|
3301
3301
|
SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED = 14,
|
|
3302
|
-
SOURCE_TRANSPORT_CMD_SET_SCRUBBING = 15
|
|
3302
|
+
SOURCE_TRANSPORT_CMD_SET_SCRUBBING = 15,
|
|
3303
|
+
SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION = 16
|
|
3303
3304
|
}
|
|
3304
3305
|
|
|
3305
3306
|
/** SourceTextureSize enum. */
|
|
@@ -9442,6 +9443,9 @@ export namespace sesame {
|
|
|
9442
9443
|
|
|
9443
9444
|
/** TransportEvent metadata */
|
|
9444
9445
|
metadata?: (sesame.v1.common.ITransportMetadata|null);
|
|
9446
|
+
|
|
9447
|
+
/** TransportEvent nearEnd */
|
|
9448
|
+
nearEnd?: (boolean|null);
|
|
9445
9449
|
}
|
|
9446
9450
|
|
|
9447
9451
|
/** Represents a TransportEvent. */
|
|
@@ -9507,6 +9511,9 @@ export namespace sesame {
|
|
|
9507
9511
|
/** TransportEvent metadata. */
|
|
9508
9512
|
public metadata?: (sesame.v1.common.ITransportMetadata|null);
|
|
9509
9513
|
|
|
9514
|
+
/** TransportEvent nearEnd. */
|
|
9515
|
+
public nearEnd: boolean;
|
|
9516
|
+
|
|
9510
9517
|
/**
|
|
9511
9518
|
* Creates a new TransportEvent instance using the specified properties.
|
|
9512
9519
|
* @param [properties] Properties to set
|
package/dist/proto/api.js
CHANGED
|
@@ -8685,6 +8685,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
8685
8685
|
* @property {number} SOURCE_TRANSPORT_CMD_SKIP_NEXT=13 SOURCE_TRANSPORT_CMD_SKIP_NEXT value
|
|
8686
8686
|
* @property {number} SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED=14 SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED value
|
|
8687
8687
|
* @property {number} SOURCE_TRANSPORT_CMD_SET_SCRUBBING=15 SOURCE_TRANSPORT_CMD_SET_SCRUBBING value
|
|
8688
|
+
* @property {number} SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION=16 SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION value
|
|
8688
8689
|
*/
|
|
8689
8690
|
sources.SourceTransportCommandType = (function() {
|
|
8690
8691
|
const valuesById = {}, values = Object.create(valuesById);
|
|
@@ -8704,6 +8705,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
8704
8705
|
values[valuesById[13] = "SOURCE_TRANSPORT_CMD_SKIP_NEXT"] = 13;
|
|
8705
8706
|
values[valuesById[14] = "SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED"] = 14;
|
|
8706
8707
|
values[valuesById[15] = "SOURCE_TRANSPORT_CMD_SET_SCRUBBING"] = 15;
|
|
8708
|
+
values[valuesById[16] = "SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION"] = 16;
|
|
8707
8709
|
return values;
|
|
8708
8710
|
})();
|
|
8709
8711
|
|
|
@@ -15099,6 +15101,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
15099
15101
|
case 13:
|
|
15100
15102
|
case 14:
|
|
15101
15103
|
case 15:
|
|
15104
|
+
case 16:
|
|
15102
15105
|
break;
|
|
15103
15106
|
}
|
|
15104
15107
|
if (message.value != null && message.hasOwnProperty("value")) {
|
|
@@ -15194,6 +15197,10 @@ export const sesame = $root.sesame = (() => {
|
|
|
15194
15197
|
case 15:
|
|
15195
15198
|
message.cmdType = 15;
|
|
15196
15199
|
break;
|
|
15200
|
+
case "SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION":
|
|
15201
|
+
case 16:
|
|
15202
|
+
message.cmdType = 16;
|
|
15203
|
+
break;
|
|
15197
15204
|
}
|
|
15198
15205
|
if (object.value != null) {
|
|
15199
15206
|
if (typeof object.value !== "object")
|
|
@@ -16039,6 +16046,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
16039
16046
|
case 13:
|
|
16040
16047
|
case 14:
|
|
16041
16048
|
case 15:
|
|
16049
|
+
case 16:
|
|
16042
16050
|
break;
|
|
16043
16051
|
}
|
|
16044
16052
|
if (message.value != null && message.hasOwnProperty("value")) {
|
|
@@ -16132,6 +16140,10 @@ export const sesame = $root.sesame = (() => {
|
|
|
16132
16140
|
case 15:
|
|
16133
16141
|
message.cmdType = 15;
|
|
16134
16142
|
break;
|
|
16143
|
+
case "SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION":
|
|
16144
|
+
case 16:
|
|
16145
|
+
message.cmdType = 16;
|
|
16146
|
+
break;
|
|
16135
16147
|
}
|
|
16136
16148
|
if (object.value != null) {
|
|
16137
16149
|
if (typeof object.value !== "object")
|
|
@@ -25149,6 +25161,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
25149
25161
|
* @property {number|null} [preroll] TransportEvent preroll
|
|
25150
25162
|
* @property {number|null} [postroll] TransportEvent postroll
|
|
25151
25163
|
* @property {sesame.v1.common.ITransportMetadata|null} [metadata] TransportEvent metadata
|
|
25164
|
+
* @property {boolean|null} [nearEnd] TransportEvent nearEnd
|
|
25152
25165
|
*/
|
|
25153
25166
|
|
|
25154
25167
|
/**
|
|
@@ -25310,6 +25323,14 @@ export const sesame = $root.sesame = (() => {
|
|
|
25310
25323
|
*/
|
|
25311
25324
|
TransportEvent.prototype.metadata = null;
|
|
25312
25325
|
|
|
25326
|
+
/**
|
|
25327
|
+
* TransportEvent nearEnd.
|
|
25328
|
+
* @member {boolean} nearEnd
|
|
25329
|
+
* @memberof sesame.v1.status.TransportEvent
|
|
25330
|
+
* @instance
|
|
25331
|
+
*/
|
|
25332
|
+
TransportEvent.prototype.nearEnd = false;
|
|
25333
|
+
|
|
25313
25334
|
/**
|
|
25314
25335
|
* Creates a new TransportEvent instance using the specified properties.
|
|
25315
25336
|
* @function create
|
|
@@ -25370,6 +25391,8 @@ export const sesame = $root.sesame = (() => {
|
|
|
25370
25391
|
writer.uint32(/* id 17, wireType 0 =*/136).uint32(message.postroll);
|
|
25371
25392
|
if (message.metadata != null && Object.hasOwnProperty.call(message, "metadata"))
|
|
25372
25393
|
$root.sesame.v1.common.TransportMetadata.encode(message.metadata, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();
|
|
25394
|
+
if (message.nearEnd != null && Object.hasOwnProperty.call(message, "nearEnd"))
|
|
25395
|
+
writer.uint32(/* id 19, wireType 0 =*/152).bool(message.nearEnd);
|
|
25373
25396
|
return writer;
|
|
25374
25397
|
};
|
|
25375
25398
|
|
|
@@ -25478,6 +25501,10 @@ export const sesame = $root.sesame = (() => {
|
|
|
25478
25501
|
message.metadata = $root.sesame.v1.common.TransportMetadata.decode(reader, reader.uint32());
|
|
25479
25502
|
break;
|
|
25480
25503
|
}
|
|
25504
|
+
case 19: {
|
|
25505
|
+
message.nearEnd = reader.bool();
|
|
25506
|
+
break;
|
|
25507
|
+
}
|
|
25481
25508
|
default:
|
|
25482
25509
|
reader.skipType(tag & 7);
|
|
25483
25510
|
break;
|
|
@@ -25577,6 +25604,9 @@ export const sesame = $root.sesame = (() => {
|
|
|
25577
25604
|
if (error)
|
|
25578
25605
|
return "metadata." + error;
|
|
25579
25606
|
}
|
|
25607
|
+
if (message.nearEnd != null && message.hasOwnProperty("nearEnd"))
|
|
25608
|
+
if (typeof message.nearEnd !== "boolean")
|
|
25609
|
+
return "nearEnd: boolean expected";
|
|
25580
25610
|
return null;
|
|
25581
25611
|
};
|
|
25582
25612
|
|
|
@@ -25706,6 +25736,8 @@ export const sesame = $root.sesame = (() => {
|
|
|
25706
25736
|
throw TypeError(".sesame.v1.status.TransportEvent.metadata: object expected");
|
|
25707
25737
|
message.metadata = $root.sesame.v1.common.TransportMetadata.fromObject(object.metadata);
|
|
25708
25738
|
}
|
|
25739
|
+
if (object.nearEnd != null)
|
|
25740
|
+
message.nearEnd = Boolean(object.nearEnd);
|
|
25709
25741
|
return message;
|
|
25710
25742
|
};
|
|
25711
25743
|
|
|
@@ -25769,6 +25801,7 @@ export const sesame = $root.sesame = (() => {
|
|
|
25769
25801
|
object.preroll = 0;
|
|
25770
25802
|
object.postroll = 0;
|
|
25771
25803
|
object.metadata = null;
|
|
25804
|
+
object.nearEnd = false;
|
|
25772
25805
|
}
|
|
25773
25806
|
if (message.sourceId != null && message.hasOwnProperty("sourceId"))
|
|
25774
25807
|
object.sourceId = message.sourceId;
|
|
@@ -25827,6 +25860,8 @@ export const sesame = $root.sesame = (() => {
|
|
|
25827
25860
|
object.postroll = message.postroll;
|
|
25828
25861
|
if (message.metadata != null && message.hasOwnProperty("metadata"))
|
|
25829
25862
|
object.metadata = $root.sesame.v1.common.TransportMetadata.toObject(message.metadata, options);
|
|
25863
|
+
if (message.nearEnd != null && message.hasOwnProperty("nearEnd"))
|
|
25864
|
+
object.nearEnd = message.nearEnd;
|
|
25830
25865
|
return object;
|
|
25831
25866
|
};
|
|
25832
25867
|
|
|
@@ -62,6 +62,19 @@ Request to add a channel to an audio mixer.
|
|
|
62
62
|
| `channel_config` | AudioMixerChannel | |
|
|
63
63
|
|
|
64
64
|
|
|
65
|
+
### AudioChannelControlRequest
|
|
66
|
+
|
|
67
|
+
Per-channel property updates. Absent optional fields are left unchanged.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
| Field | Type | Description |
|
|
71
|
+
|-------|------|-------------|
|
|
72
|
+
| `channel_id` | string | |
|
|
73
|
+
| `level` | optional float | |
|
|
74
|
+
| `pan` | optional float | |
|
|
75
|
+
| `plugins` | repeated AudioPluginControlRequest | |
|
|
76
|
+
|
|
77
|
+
|
|
65
78
|
### AudioChannelPluginStatus
|
|
66
79
|
|
|
67
80
|
Audio channel plugin status.
|
|
@@ -102,6 +115,23 @@ Audio channel status.
|
|
|
102
115
|
| `plugins` | repeated AudioChannelPluginStatus | |
|
|
103
116
|
|
|
104
117
|
|
|
118
|
+
### AudioControlRequest
|
|
119
|
+
|
|
120
|
+
Payload for DATA_TYPE_AUDIO_CONTROL frames (transport → server).
|
|
121
|
+
|
|
122
|
+
The target mixer ID is NOT included here — it is resolved server-side from
|
|
123
|
+
the MetadataRouter binding configured for this source track. This mirrors
|
|
124
|
+
AudioMixerStatus: to build a control message, take an AudioMixerStatus,
|
|
125
|
+
pick the channels you want to change, copy their `id` into `channel_id`,
|
|
126
|
+
and set the desired `level`/`pan`/plugin params. Omit fields you don't
|
|
127
|
+
want to change (optional fields that are absent are left unchanged).
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
| Field | Type | Description |
|
|
131
|
+
|-------|------|-------------|
|
|
132
|
+
| `channels` | repeated AudioChannelControlRequest | |
|
|
133
|
+
|
|
134
|
+
|
|
105
135
|
### AudioMixerAddRequest
|
|
106
136
|
|
|
107
137
|
Request to add a new audio mixer.
|
|
@@ -188,6 +218,17 @@ Audio plugin instance.
|
|
|
188
218
|
| `aux_input_mix_ids` | repeated string | |
|
|
189
219
|
|
|
190
220
|
|
|
221
|
+
### AudioPluginControlRequest
|
|
222
|
+
|
|
223
|
+
Plugin parameter update within an AudioChannelControlRequest.
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
| Field | Type | Description |
|
|
227
|
+
|-------|------|-------------|
|
|
228
|
+
| `plugin_id` | string | |
|
|
229
|
+
| `params` | repeated AudioPluginParam | |
|
|
230
|
+
|
|
231
|
+
|
|
191
232
|
### AudioPluginParam
|
|
192
233
|
|
|
193
234
|
Audio plugin parameter.
|
|
@@ -272,10 +313,46 @@ Each item represents a single command to execute at a specific time offset.
|
|
|
272
313
|
| `eject_playlist` | sesame.v1.sources.EjectPlaylistRequest | |
|
|
273
314
|
| `callback` | sesame.v1.common.Callback | |
|
|
274
315
|
| `set_source_metadata` | sesame.v1.sources.SourceMetadataSetRequest | |
|
|
316
|
+
| `set_metadata_bindings` | SetMetadataBindingsRequest | |
|
|
275
317
|
| `transaction_id` | optional uint32 | |
|
|
276
318
|
| `transaction_deps` | repeated uint32 | |
|
|
277
319
|
|
|
278
320
|
|
|
321
|
+
### MetadataBinding
|
|
322
|
+
|
|
323
|
+
Routes metadata between producers and consumers across transport boundaries.
|
|
324
|
+
|
|
325
|
+
Outbound route:
|
|
326
|
+
source_id + metadata_id -> output_id + track_name
|
|
327
|
+
|
|
328
|
+
Inbound route:
|
|
329
|
+
source_id + track_name -> target_id + metadata_id
|
|
330
|
+
|
|
331
|
+
Exactly one route direction should be specified per binding:
|
|
332
|
+
- outbound: output_id is set, target_id is empty
|
|
333
|
+
- inbound: target_id is set, output_id is empty
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
| Field | Type | Description |
|
|
337
|
+
|-------|------|-------------|
|
|
338
|
+
| `source_id` | string | |
|
|
339
|
+
| `metadata_id` | string | |
|
|
340
|
+
| `output_id` | string | |
|
|
341
|
+
| `track_name` | string | |
|
|
342
|
+
| `target_id` | string | |
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
### SetMetadataBindingsRequest
|
|
346
|
+
|
|
347
|
+
Replaces the full metadata routing table.
|
|
348
|
+
Send once after all sources/outputs are configured.
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
| Field | Type | Description |
|
|
352
|
+
|-------|------|-------------|
|
|
353
|
+
| `bindings` | repeated MetadataBinding | |
|
|
354
|
+
|
|
355
|
+
|
|
279
356
|
---
|
|
280
357
|
|
|
281
358
|
|
|
@@ -335,6 +412,7 @@ Replaces stringly-typed topic names with compile-time checked values.
|
|
|
335
412
|
| 2 | `EVENT_TOPIC_TRANSPORT` | Source transport/playback state changes |
|
|
336
413
|
| 3 | `EVENT_TOPIC_CALLBACK` | Client callback events |
|
|
337
414
|
| 4 | `EVENT_TOPIC_JOB` | Job events (export, import, etc.) |
|
|
415
|
+
| 5 | `EVENT_TOPIC_METADATA` | JSON metadata track events (inbound data frames routed to apps) |
|
|
338
416
|
| 6 | `EVENT_TOPIC_RECORDER` | Recorder events |
|
|
339
417
|
|
|
340
418
|
|
|
@@ -394,7 +472,7 @@ Only one field should be set at a time.
|
|
|
394
472
|
| `vec4_value` | Vec4 | |
|
|
395
473
|
| `string_value` | string | |
|
|
396
474
|
| `bool_value` | bool | |
|
|
397
|
-
| `int_value` |
|
|
475
|
+
| `int_value` | int64 | |
|
|
398
476
|
|
|
399
477
|
|
|
400
478
|
### PropertyDomain
|
|
@@ -849,6 +927,7 @@ Decklink output configuration.
|
|
|
849
927
|
| `url` | string | |
|
|
850
928
|
| `broadcast` | string | |
|
|
851
929
|
| `key` | string | |
|
|
930
|
+
| `metadata_tracks` | repeated string | |
|
|
852
931
|
|
|
853
932
|
|
|
854
933
|
### EncodedRecorderOutputConfig
|
|
@@ -903,6 +982,7 @@ Type-specific output payloads
|
|
|
903
982
|
|-------|------|-------------|
|
|
904
983
|
| `channel` | string | |
|
|
905
984
|
| `encoder` | EncoderConfig | |
|
|
985
|
+
| `metadata_tracks` | repeated string | |
|
|
906
986
|
|
|
907
987
|
|
|
908
988
|
### EncoderConfig
|
|
@@ -1324,6 +1404,20 @@ Error handling:
|
|
|
1324
1404
|
|
|
1325
1405
|
|
|
1326
1406
|
|
|
1407
|
+
### PublishMetadataRequest
|
|
1408
|
+
|
|
1409
|
+
Request to publish a metadata payload from an app to all output transports
|
|
1410
|
+
that have a binding from this node+metadataId.
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
| Field | Type | Description |
|
|
1414
|
+
|-------|------|-------------|
|
|
1415
|
+
| `node_id` | string | |
|
|
1416
|
+
| `metadata_id` | string | |
|
|
1417
|
+
| `payload` | bytes | |
|
|
1418
|
+
| `data_type` | sesame.v1.wire.DataType | |
|
|
1419
|
+
|
|
1420
|
+
|
|
1327
1421
|
### SesameAPIService
|
|
1328
1422
|
|
|
1329
1423
|
Main Sesame API service.
|
|
@@ -1342,6 +1436,7 @@ Main Sesame API service.
|
|
|
1342
1436
|
| `ListJobs` | .sesame.v1.jobs.JobListRequest | .sesame.v1.jobs.JobList | List jobs. |
|
|
1343
1437
|
| `RequestKeyframe` | .sesame.v1.outputs.KeyframeRequest | .sesame.v1.common.Empty | Request keyframe from encoder. |
|
|
1344
1438
|
| `RequestIODeviceList` | .sesame.v1.common.Empty | .sesame.v1.status.IODeviceListResponse | Get list of I/O devices. |
|
|
1439
|
+
| `PublishMetadata` | PublishMetadataRequest | .sesame.v1.common.Empty | Publish a JSON metadata payload to all output transports bound to this node+metadataId. Used by apps (e.g. Snigel) to emit state that should be forwarded on MoQ/WebSocket outputs. |
|
|
1345
1440
|
|
|
1346
1441
|
|
|
1347
1442
|
---
|
|
@@ -1411,6 +1506,7 @@ Source transport command type.
|
|
|
1411
1506
|
| 13 | `SOURCE_TRANSPORT_CMD_SKIP_NEXT` | Skip to next |
|
|
1412
1507
|
| 14 | `SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED` | Disable transitions |
|
|
1413
1508
|
| 15 | `SOURCE_TRANSPORT_CMD_SET_SCRUBBING` | Set scrubbing mode |
|
|
1509
|
+
| 16 | `SOURCE_TRANSPORT_CMD_SET_END_NOTIFICATION` | Set near-end callback threshold (int64 µs before end; 0 = disabled) |
|
|
1414
1510
|
|
|
1415
1511
|
|
|
1416
1512
|
### SourceTransportState
|
|
@@ -1515,6 +1611,7 @@ Request to load a playlist into a recorder source.
|
|
|
1515
1611
|
| `broadcast` | string | |
|
|
1516
1612
|
| `key` | string | |
|
|
1517
1613
|
| `decode_buffer_frames` | uint32 | |
|
|
1614
|
+
| `incoming_metadata_tracks` | repeated string | |
|
|
1518
1615
|
|
|
1519
1616
|
|
|
1520
1617
|
### RTTSourceConfig
|
|
@@ -1702,6 +1799,23 @@ Request to update an existing source.
|
|
|
1702
1799
|
| `device_name` | string | |
|
|
1703
1800
|
|
|
1704
1801
|
|
|
1802
|
+
### TransportControlRequest
|
|
1803
|
+
|
|
1804
|
+
Payload for DATA_TYPE_TRANSPORT_CONTROL frames (transport → server).
|
|
1805
|
+
|
|
1806
|
+
The target source ID is NOT included here — it is resolved server-side from
|
|
1807
|
+
the MetadataRouter binding configured for this source track. This mirrors
|
|
1808
|
+
TransportEvent: to build a control message, copy cmd_type and value from
|
|
1809
|
+
the desired SourceTransportCommandType. The server will only apply commands
|
|
1810
|
+
to the source the track is bound to; it cannot control arbitrary sources.
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
| Field | Type | Description |
|
|
1814
|
+
|-------|------|-------------|
|
|
1815
|
+
| `cmd_type` | SourceTransportCommandType | |
|
|
1816
|
+
| `value` | sesame.v1.common.PropValue | |
|
|
1817
|
+
|
|
1818
|
+
|
|
1705
1819
|
### VideoProcessor
|
|
1706
1820
|
|
|
1707
1821
|
Video processor instance configuration.
|
|
@@ -1734,6 +1848,7 @@ Video processor parameter (mirrors AudioPluginParam).
|
|
|
1734
1848
|
|-------|------|-------------|
|
|
1735
1849
|
| `channel` | string | |
|
|
1736
1850
|
| `decode_buffer_frames` | uint32 | |
|
|
1851
|
+
| `incoming_metadata_tracks` | repeated string | |
|
|
1737
1852
|
|
|
1738
1853
|
|
|
1739
1854
|
---
|
|
@@ -1897,6 +2012,7 @@ Event message wrapper.
|
|
|
1897
2012
|
| `transport_event` | TransportEvent | |
|
|
1898
2013
|
| `callback_event` | sesame.v1.common.Callback | |
|
|
1899
2014
|
| `job_event` | sesame.v1.jobs.Job | |
|
|
2015
|
+
| `metadata_event` | MetadataEvent | |
|
|
1900
2016
|
| `recorder_event` | sesame.v1.recorder.RecorderEvent | |
|
|
1901
2017
|
|
|
1902
2018
|
|
|
@@ -1922,6 +2038,21 @@ I/O device list response.
|
|
|
1922
2038
|
| `devices` | repeated IODeviceItem | |
|
|
1923
2039
|
|
|
1924
2040
|
|
|
2041
|
+
### MetadataEvent
|
|
2042
|
+
|
|
2043
|
+
Fired when a metadata DATA frame arrives on a streaming source and is
|
|
2044
|
+
routed to an app consumer via the metadata binding table.
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
| Field | Type | Description |
|
|
2048
|
+
|-------|------|-------------|
|
|
2049
|
+
| `source_node_id` | string | |
|
|
2050
|
+
| `track_name` | string | |
|
|
2051
|
+
| `target_node_id` | string | |
|
|
2052
|
+
| `metadata_id` | string | |
|
|
2053
|
+
| `payload` | bytes | |
|
|
2054
|
+
|
|
2055
|
+
|
|
1925
2056
|
### Status
|
|
1926
2057
|
|
|
1927
2058
|
Overall system status.
|
|
@@ -1975,6 +2106,7 @@ Transport event (source playback state change).
|
|
|
1975
2106
|
| `preroll` | uint32 | |
|
|
1976
2107
|
| `postroll` | uint32 | |
|
|
1977
2108
|
| `metadata` | sesame.v1.common.TransportMetadata | |
|
|
2109
|
+
| `near_end` | bool | True in the single event fired when the end-notification threshold is crossed |
|
|
1978
2110
|
|
|
1979
2111
|
|
|
1980
2112
|
---
|
|
@@ -1987,6 +2119,23 @@ Transport event (source playback state change).
|
|
|
1987
2119
|
|
|
1988
2120
|
|
|
1989
2121
|
|
|
2122
|
+
### DataType
|
|
2123
|
+
|
|
2124
|
+
Payload type carried in a FRAME_TYPE_DATA frame.
|
|
2125
|
+
The frame payload bytes are a serialized protobuf message of the indicated
|
|
2126
|
+
type, or raw UTF-8 JSON for DATA_TYPE_JSON.
|
|
2127
|
+
|
|
2128
|
+
| Value | Name | Description |
|
|
2129
|
+
|-------|------|-------------|
|
|
2130
|
+
| 0 | `DATA_TYPE_UNSPECIFIED` | |
|
|
2131
|
+
| 1 | `DATA_TYPE_JSON` | |
|
|
2132
|
+
| 2 | `DATA_TYPE_TRANSPORT_STATUS` | payload: sesame.v1.status.TransportEvent (source → transport) |
|
|
2133
|
+
| 3 | `DATA_TYPE_AUDIO_STATE` | payload: sesame.v1.audio.AudioMixerStatus (mixer → transport) |
|
|
2134
|
+
| 4 | `DATA_TYPE_TRANSPORT_CONTROL` | payload: sesame.v1.sources.TransportControlRequest (transport → source) |
|
|
2135
|
+
| 5 | `DATA_TYPE_AUDIO_CONTROL` | payload: sesame.v1.audio.AudioControlRequest (transport → mixer) |
|
|
2136
|
+
| 6 | `DATA_TYPE_BINARY` | payload: raw binary bytes (opaque to the wire layer) |
|
|
2137
|
+
|
|
2138
|
+
|
|
1990
2139
|
### FrameType
|
|
1991
2140
|
|
|
1992
2141
|
Type of frame carried on the wire.
|
|
@@ -2002,6 +2151,17 @@ Type of frame carried on the wire.
|
|
|
2002
2151
|
| 6 | `FRAME_TYPE_DATA` | |
|
|
2003
2152
|
|
|
2004
2153
|
|
|
2154
|
+
### DataFrameData
|
|
2155
|
+
|
|
2156
|
+
Header data for FRAME_TYPE_DATA frames.
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
| Field | Type | Description |
|
|
2160
|
+
|-------|------|-------------|
|
|
2161
|
+
| `data_type` | DataType | |
|
|
2162
|
+
| `track_name` | string | |
|
|
2163
|
+
|
|
2164
|
+
|
|
2005
2165
|
### FrameHeader
|
|
2006
2166
|
|
|
2007
2167
|
Header for every websocket / MoQ frame.
|
|
@@ -2013,6 +2173,7 @@ Serialized with a 4-byte little-endian size prefix on the wire.
|
|
|
2013
2173
|
| `type` | FrameType | |
|
|
2014
2174
|
| `routing_metadata` | string | |
|
|
2015
2175
|
| `media` | MediaFrameData | |
|
|
2176
|
+
| `data` | DataFrameData | |
|
|
2016
2177
|
|
|
2017
2178
|
|
|
2018
2179
|
### MediaCodecData
|
|
@@ -2156,7 +2317,12 @@ Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequ
|
|
|
2156
2317
|
|
|
2157
2318
|
### Audio Mixer Domain (`domain.audio_mixer_id`)
|
|
2158
2319
|
|
|
2159
|
-
Address
|
|
2320
|
+
**Address field** identifies the target within the mixer:
|
|
2321
|
+
|
|
2322
|
+
- Channel property — set `address` to the channel ID (e.g. `"video-1"` or `"snigel1-pgm1/audio_mixer_0"`).
|
|
2323
|
+
- Plugin parameter — set `address` to `"<channel_id>::<plugin_id>"` and `property` to the numeric param ID as a string (e.g. `"0"`, `"3"`).
|
|
2324
|
+
|
|
2325
|
+
The server disambiguates these two cases by whether `address` contains the `::` delimiter: if it does, the address is split into channel ID and plugin ID, and `property` is parsed as a numeric param ID; otherwise the full `address` string is used as the channel ID for a named channel property.
|
|
2160
2326
|
|
|
2161
2327
|
| Property | Type | Description |
|
|
2162
2328
|
|----------|------|-------------|
|
|
@@ -2165,7 +2331,9 @@ Address format: `channel_id` for channel properties, `channel_id/plugin_id` for
|
|
|
2165
2331
|
| `mute` | bool | Mute channel |
|
|
2166
2332
|
| `source_channels` | vec4 | Source channel routing |
|
|
2167
2333
|
| `source_id` | string | Source ID |
|
|
2168
|
-
| `<param_id>` | float | Plugin parameter
|
|
2334
|
+
| `<param_id>` | float | Plugin parameter — `address` must be `channel_id::plugin_id`, `property` is the numeric param ID |
|
|
2335
|
+
|
|
2336
|
+
**Level animation:** use `propertyAnimate` with `ANIM_MODE_STATE_FROM` to fade from the current level. For an instant cut (no transition), `propertySet` is preferred — a zero-duration `propertyAnimate` is clamped to 1 ms by the server rather than producing an instant cut.
|
|
2169
2337
|
|
|
2170
2338
|
### Source Domain (`domain.source_id`)
|
|
2171
2339
|
|
|
@@ -2192,7 +2360,7 @@ client.addSubscription(sesame.v1.common.EventTopic.EVENT_TOPIC_JOB, callback);
|
|
|
2192
2360
|
| Topic | Event type | When fired |
|
|
2193
2361
|
|-------|-----------|------------|
|
|
2194
2362
|
| `EVENT_TOPIC_ERROR` | ErrorEvent | Engine error |
|
|
2195
|
-
| `EVENT_TOPIC_TRANSPORT` | TransportEvent | Source playback state change |
|
|
2363
|
+
| `EVENT_TOPIC_TRANSPORT` | TransportEvent | Source playback state change; also fired once per playback run with `near_end=true` when the end-notification threshold is crossed |
|
|
2196
2364
|
| `EVENT_TOPIC_CALLBACK` | Callback | Client callback command echoed |
|
|
2197
2365
|
| `EVENT_TOPIC_JOB` | Job | Job lifecycle change + progress (~2 Hz) |
|
|
2198
2366
|
| `EVENT_TOPIC_RECORDER` | RecorderEvent | Recorder online/offline |
|
package/package.json
CHANGED