@stinkycomputing/sesame-api-client 1.8.0 → 1.10.0-alpha.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/command-list.d.ts +24 -0
- package/dist/command-list.d.ts.map +1 -1
- package/dist/generated/property-types.d.ts +4 -1
- package/dist/generated/property-types.d.ts.map +1 -1
- package/dist/index.browser.mjs +3567 -1625
- package/dist/index.browser.mjs.map +3 -3
- package/dist/index.cjs +3571 -1625
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +3567 -1625
- package/dist/index.mjs.map +3 -3
- package/dist/proto/api.d.ts +1423 -242
- package/dist/proto/api.js +3651 -421
- package/dist/sesame-wire-protocol.d.ts +54 -0
- package/dist/sesame-wire-protocol.d.ts.map +1 -1
- package/docs/protocol-reference.md +167 -1
- package/package.json +1 -1
|
@@ -12,6 +12,11 @@ export declare const FrameHeader: typeof sesame.v1.wire.FrameHeader;
|
|
|
12
12
|
export type IMediaCodecData = sesame.v1.wire.IMediaCodecData;
|
|
13
13
|
export declare const MediaCodecData: typeof sesame.v1.wire.MediaCodecData;
|
|
14
14
|
export declare const CodecType: typeof sesame.v1.common.CodecType;
|
|
15
|
+
export type ISideData = sesame.v1.sidedata.ISideData;
|
|
16
|
+
export type ISideDataSet = sesame.v1.sidedata.ISideDataSet;
|
|
17
|
+
export type IAtlasLayout = sesame.v1.sidedata.IAtlasLayout;
|
|
18
|
+
export type IAtlasEntry = sesame.v1.sidedata.IAtlasEntry;
|
|
19
|
+
export declare const SideData: typeof sesame.v1.sidedata.SideData;
|
|
15
20
|
export interface ParsedFrame {
|
|
16
21
|
valid: boolean;
|
|
17
22
|
header: sesame.v1.wire.FrameHeader | null;
|
|
@@ -59,6 +64,35 @@ export type ParsedDataFrame = {
|
|
|
59
64
|
* ```
|
|
60
65
|
*/
|
|
61
66
|
export declare function parseDataFrame(frame: ParsedFrame): ParsedDataFrame | null;
|
|
67
|
+
/**
|
|
68
|
+
* Side data carried by a media frame, or `null` when the frame carries none,
|
|
69
|
+
* meaning the set is unchanged since the last frame that carried one. An empty
|
|
70
|
+
* array means every entry was removed. The set is present on key frames and on
|
|
71
|
+
* the frame where it changes, so a receiver that starts at a key frame is
|
|
72
|
+
* always complete.
|
|
73
|
+
*/
|
|
74
|
+
export declare function getSideData(frame: ParsedFrame): ISideData[] | null;
|
|
75
|
+
/**
|
|
76
|
+
* Tracks the side data set in effect across a media stream.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* const tracker = new SideDataTracker();
|
|
81
|
+
* client.onMediaPacket = (id, frame) => {
|
|
82
|
+
* if (tracker.update(frame)) {
|
|
83
|
+
* const atlas = tracker.get('sesame.atlas.v1')?.atlas;
|
|
84
|
+
* // atlas.entries: [{ sourceId, x, y, width, height }, ...] in atlas.width x atlas.height space
|
|
85
|
+
* }
|
|
86
|
+
* };
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare class SideDataTracker {
|
|
90
|
+
private entries;
|
|
91
|
+
/** Feed every media frame in order; returns true when the set changed. */
|
|
92
|
+
update(frame: ParsedFrame): boolean;
|
|
93
|
+
get(id: string): ISideData | undefined;
|
|
94
|
+
all(): ISideData[];
|
|
95
|
+
}
|
|
62
96
|
/**
|
|
63
97
|
* Build a ready-to-send wire frame carrying an `AudioControlRequest`.
|
|
64
98
|
*
|
|
@@ -90,6 +124,26 @@ export declare function buildAudioControlFrame(trackName: string, request: sesam
|
|
|
90
124
|
* ```
|
|
91
125
|
*/
|
|
92
126
|
export declare function buildTransportControlFrame(trackName: string, request: sesame.v1.sources.ITransportControlRequest): Uint8Array;
|
|
127
|
+
/**
|
|
128
|
+
* Build a ready-to-send wire frame carrying a `SourceControlRequest`.
|
|
129
|
+
*
|
|
130
|
+
* Send this over a WebSocket or MoQ source connection to set video processor
|
|
131
|
+
* parameters (color correction, chroma key, blur), reset processors to their
|
|
132
|
+
* defaults, or set the audio level of the source the track is bound to on the
|
|
133
|
+
* server. Values in one request are applied together on the same engine tick.
|
|
134
|
+
* Current values arrive in `SourceStatus.videoProcessors` on the
|
|
135
|
+
* `sesame.source.state.v1` track; parameter ids per processor type are
|
|
136
|
+
* exported as `VIDEO_PROCESSOR_PARAM_IDS` by sesame-interop.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const bytes = buildSourceControlFrame('my-control-track', {
|
|
141
|
+
* videoProcessors: [{ processorId: 'cc', params: [{ id: 2, floatValue: 1.2 }] }],
|
|
142
|
+
* });
|
|
143
|
+
* ws.send(bytes);
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function buildSourceControlFrame(trackName: string, request: sesame.v1.sources.ISourceControlRequest): Uint8Array;
|
|
93
147
|
/**
|
|
94
148
|
* Build a ready-to-send wire frame carrying raw binary data.
|
|
95
149
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sesame-wire-protocol.d.ts","sourceRoot":"","sources":["../src/sesame-wire-protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,eAAO,MAAM,SAAS,iCAA2B,CAAC;AAClD,eAAO,MAAM,QAAQ,gCAA0B,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;AACvD,eAAO,MAAM,WAAW,mCAA6B,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7D,eAAO,MAAM,cAAc,sCAAgC,CAAC;AAC5D,eAAO,MAAM,SAAS,mCAA6B,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5B;AAMD,+EAA+E;AAC/E,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAe,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACpE;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAA;CAAE,GAC7F;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAQ,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAA;CAAE,GAC/F;IAAE,QAAQ,EAAE,mBAAmB,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAA;CAAE,GACzG;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAM,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAA;CAAE,GACnG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAa,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAoCzE;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,GAC5C,UAAU,CAOZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,GAClD,UAAU,CAOZ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,GAClB,UAAU,CAMZ;AAID,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,UAAU;IAqB9F;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW;CAqB5C"}
|
|
1
|
+
{"version":3,"file":"sesame-wire-protocol.d.ts","sourceRoot":"","sources":["../src/sesame-wire-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ import { sesame } from '@stinkycomputing/sesame-api-client';
|
|
|
23
23
|
- [sesame/v1/recorder/recorder.proto](#sesame_v1_recorder_recorder-proto)
|
|
24
24
|
- [sesame/v1/rpc/rpc.proto](#sesame_v1_rpc_rpc-proto)
|
|
25
25
|
- [sesame/v1/rpc/service.proto](#sesame_v1_rpc_service-proto)
|
|
26
|
+
- [sesame/v1/sidedata/side_data.proto](#sesame_v1_sidedata_side_data-proto)
|
|
26
27
|
- [sesame/v1/sources/source.proto](#sesame_v1_sources_source-proto)
|
|
27
28
|
- [sesame/v1/status/statistics.proto](#sesame_v1_status_statistics-proto)
|
|
28
29
|
- [sesame/v1/status/status.proto](#sesame_v1_status_status-proto)
|
|
@@ -369,6 +370,9 @@ Each item represents a single command to execute at a specific time offset.
|
|
|
369
370
|
| `update_encoder` | sesame.v1.outputs.EncoderUpdateRequest | |
|
|
370
371
|
| `remove_encoder` | sesame.v1.outputs.EncoderRemoveRequest | |
|
|
371
372
|
| `take_playlist` | sesame.v1.sources.TakePlaylistRequest | Recorder direct take commands |
|
|
373
|
+
| `output_control` | sesame.v1.outputs.OutputControlRequest | Runtime output stream control (manual SRT outputs) |
|
|
374
|
+
| `set_side_data` | sesame.v1.compositor.SideDataSetRequest | Compositor side data (per-frame metadata on encoded outputs) |
|
|
375
|
+
| `remove_side_data` | sesame.v1.compositor.SideDataRemoveRequest | |
|
|
372
376
|
| `transaction_id` | optional uint32 | Transaction ID for grouping |
|
|
373
377
|
| `transaction_deps` | repeated uint32 | Transaction dependencies |
|
|
374
378
|
|
|
@@ -453,6 +457,7 @@ Used by source/output status models across the API.
|
|
|
453
457
|
| 4 | `CONNECTION_STATE_DEGRADED` | Running with reduced health |
|
|
454
458
|
| 5 | `CONNECTION_STATE_OFFLINE` | Stopped or unavailable |
|
|
455
459
|
| 6 | `CONNECTION_STATE_ERROR` | Failed with error |
|
|
460
|
+
| 7 | `CONNECTION_STATE_DISABLED` | Intentionally stopped (by config or operator); not an error |
|
|
456
461
|
|
|
457
462
|
|
|
458
463
|
### EventTopic
|
|
@@ -706,6 +711,30 @@ Request to set a property value.
|
|
|
706
711
|
| `value` | sesame.v1.common.PropValue | Property value |
|
|
707
712
|
|
|
708
713
|
|
|
714
|
+
### SideDataRemoveRequest
|
|
715
|
+
|
|
716
|
+
Request to remove one side data entry from a compositor.
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
| Field | Type | Description |
|
|
720
|
+
|-------|------|-------------|
|
|
721
|
+
| `compositor_id` | string | Compositor ID |
|
|
722
|
+
| `id` | string | Side data entry ID |
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
### SideDataSetRequest
|
|
726
|
+
|
|
727
|
+
Request to attach side data to a compositor's frames.
|
|
728
|
+
Replaces the entry with the same id. Takes effect on the frame the command
|
|
729
|
+
executes on, so batching it with node changes keeps both in sync.
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
| Field | Type | Description |
|
|
733
|
+
|-------|------|-------------|
|
|
734
|
+
| `compositor_id` | string | Compositor ID |
|
|
735
|
+
| `side_data` | sesame.v1.sidedata.SideData | Entry to attach |
|
|
736
|
+
|
|
737
|
+
|
|
709
738
|
---
|
|
710
739
|
|
|
711
740
|
|
|
@@ -987,6 +1016,17 @@ Type of encoder resource.
|
|
|
987
1016
|
| 1 | `ENCODER_TYPE_VIDEO` | Video encoder |
|
|
988
1017
|
|
|
989
1018
|
|
|
1019
|
+
### OutputControlAction
|
|
1020
|
+
|
|
1021
|
+
Runtime start/stop action for a manually controlled output stream.
|
|
1022
|
+
|
|
1023
|
+
| Value | Name | Description |
|
|
1024
|
+
|-------|------|-------------|
|
|
1025
|
+
| 0 | `OUTPUT_CONTROL_ACTION_UNSPECIFIED` | Unspecified (invalid) |
|
|
1026
|
+
| 1 | `OUTPUT_CONTROL_ACTION_START` | Start sending |
|
|
1027
|
+
| 2 | `OUTPUT_CONTROL_ACTION_STOP` | Stop sending |
|
|
1028
|
+
|
|
1029
|
+
|
|
990
1030
|
### OutputType
|
|
991
1031
|
|
|
992
1032
|
Type of output.
|
|
@@ -1014,6 +1054,17 @@ Recorder type.
|
|
|
1014
1054
|
| 2 | `RECORDER_TYPE_CLIPS` | Clip recorder; not continuously recording, only ingested frames are persisted |
|
|
1015
1055
|
|
|
1016
1056
|
|
|
1057
|
+
### SrtStreamControl
|
|
1058
|
+
|
|
1059
|
+
Who starts and stops an SRT output stream.
|
|
1060
|
+
|
|
1061
|
+
| Value | Name | Description |
|
|
1062
|
+
|-------|------|-------------|
|
|
1063
|
+
| 0 | `SRT_STREAM_CONTROL_UNSPECIFIED` | Treated as STARTED |
|
|
1064
|
+
| 1 | `SRT_STREAM_CONTROL_STARTED` | Streams whenever the engine runs; enforced on every config apply |
|
|
1065
|
+
| 2 | `SRT_STREAM_CONTROL_MANUAL` | Operator start/stop via OutputControlRequest; stopped after engine start |
|
|
1066
|
+
|
|
1067
|
+
|
|
1017
1068
|
### TimecodeMode
|
|
1018
1069
|
|
|
1019
1070
|
Timecode embedding mode for encoded streams (SEI/metadata OBU).
|
|
@@ -1076,6 +1127,7 @@ Decklink output configuration.
|
|
|
1076
1127
|
|-------|------|-------------|
|
|
1077
1128
|
| `url` | string | SRT URL |
|
|
1078
1129
|
| `encoder_id` | string | Shared encoder ID |
|
|
1130
|
+
| `control` | SrtStreamControl | Stream control mode (unset = STARTED) |
|
|
1079
1131
|
|
|
1080
1132
|
|
|
1081
1133
|
### EncodedSuperSlowMoRecorderOutputConfig
|
|
@@ -1231,6 +1283,21 @@ Request to add a new output.
|
|
|
1231
1283
|
| `system_audio` | SystemAudioOutputConfig | |
|
|
1232
1284
|
|
|
1233
1285
|
|
|
1286
|
+
### OutputControlRequest
|
|
1287
|
+
|
|
1288
|
+
Runtime start/stop of an output stream. Only valid for SRT outputs configured
|
|
1289
|
+
with SRT_STREAM_CONTROL_MANUAL; rejected otherwise.
|
|
1290
|
+
When received over the wire protocol (DATA_TYPE_OUTPUT_CONTROL) the target
|
|
1291
|
+
output is resolved from the track's metadata binding and `id` is ignored, so
|
|
1292
|
+
a remote client can only control the output its track is bound to.
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
| Field | Type | Description |
|
|
1296
|
+
|-------|------|-------------|
|
|
1297
|
+
| `id` | string | Output ID (command API only; ignored on bound wire tracks) |
|
|
1298
|
+
| `action` | OutputControlAction | Action to perform |
|
|
1299
|
+
|
|
1300
|
+
|
|
1234
1301
|
### OutputRemoveRequest
|
|
1235
1302
|
|
|
1236
1303
|
Request to remove an output.
|
|
@@ -1256,6 +1323,7 @@ Output status information.
|
|
|
1256
1323
|
| `buffer_size` | uint32 | Buffer size (frames) |
|
|
1257
1324
|
| `srt_stats` | optional sesame.v1.status.SRTSendStatistics | SRT stats (if SRT output) |
|
|
1258
1325
|
| `encoder_id` | string | Shared encoder ID used by this output, if any |
|
|
1326
|
+
| `control` | SrtStreamControl | Stream control mode (SRT outputs; UNSPECIFIED elsewhere) |
|
|
1259
1327
|
|
|
1260
1328
|
|
|
1261
1329
|
### OutputUpdateRequest
|
|
@@ -1654,6 +1722,71 @@ Main Sesame API service.
|
|
|
1654
1722
|
---
|
|
1655
1723
|
|
|
1656
1724
|
|
|
1725
|
+
## sesame/v1/sidedata/side_data.proto
|
|
1726
|
+
|
|
1727
|
+
`sesame.v1.sidedata`
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
### AtlasEntry
|
|
1733
|
+
|
|
1734
|
+
Placement of one source inside an atlas, in output pixels.
|
|
1735
|
+
|
|
1736
|
+
|
|
1737
|
+
| Field | Type | Description |
|
|
1738
|
+
|-------|------|-------------|
|
|
1739
|
+
| `source_id` | string | Source rendered at this rectangle |
|
|
1740
|
+
| `x` | uint32 | Left edge |
|
|
1741
|
+
| `y` | uint32 | Top edge |
|
|
1742
|
+
| `width` | uint32 | Rectangle width |
|
|
1743
|
+
| `height` | uint32 | Rectangle height |
|
|
1744
|
+
| `source_width` | uint32 | Native picture size of the source before scaling into the rectangle. Filled by the engine; 0 while unknown. May change without a version bump. |
|
|
1745
|
+
| `source_height` | uint32 | |
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
### AtlasLayout
|
|
1749
|
+
|
|
1750
|
+
Where each source sits in an atlas frame. Entries are expressed in the
|
|
1751
|
+
width x height coordinate space, normally the compositor size; receivers
|
|
1752
|
+
scale by decoded size over layout size when the encoder rescales.
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
| Field | Type | Description |
|
|
1756
|
+
|-------|------|-------------|
|
|
1757
|
+
| `width` | uint32 | Coordinate space width |
|
|
1758
|
+
| `height` | uint32 | Coordinate space height |
|
|
1759
|
+
| `entries` | repeated AtlasEntry | |
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
### SideData
|
|
1763
|
+
|
|
1764
|
+
One side data entry. Entries are keyed by id so independent producers can
|
|
1765
|
+
attach data to the same compositor without touching each other's entries.
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
| Field | Type | Description |
|
|
1769
|
+
|-------|------|-------------|
|
|
1770
|
+
| `id` | string | Namespaced key, e.g. "sesame.atlas.v1" |
|
|
1771
|
+
| `version` | uint64 | Producer-assigned; increases when the entry changes |
|
|
1772
|
+
| `atlas` | AtlasLayout | |
|
|
1773
|
+
| `json` | string | UTF-8 JSON, application-defined schema |
|
|
1774
|
+
| `binary` | bytes | Opaque bytes |
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
### SideDataSet
|
|
1778
|
+
|
|
1779
|
+
Complete set of side data entries in effect for a frame.
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
| Field | Type | Description |
|
|
1783
|
+
|-------|------|-------------|
|
|
1784
|
+
| `entries` | repeated SideData | |
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
---
|
|
1788
|
+
|
|
1789
|
+
|
|
1657
1790
|
## sesame/v1/sources/source.proto
|
|
1658
1791
|
|
|
1659
1792
|
`sesame.v1.sources`
|
|
@@ -1680,11 +1813,23 @@ Video preprocessing step type.
|
|
|
1680
1813
|
| Value | Name | Description |
|
|
1681
1814
|
|-------|------|-------------|
|
|
1682
1815
|
| 0 | `PREPROCESS_STEP_UNSPECIFIED` | Unspecified (invalid) |
|
|
1683
|
-
| 1 | `PREPROCESS_STEP_VIDEO_SCOPES` | Video scopes/waveform |
|
|
1684
1816
|
| 2 | `PREPROCESS_STEP_CHROMA_KEY` | Chroma key |
|
|
1685
1817
|
| 3 | `PREPROCESS_STEP_BLUR` | Blur effect |
|
|
1686
1818
|
|
|
1687
1819
|
|
|
1820
|
+
### ScopeMode
|
|
1821
|
+
|
|
1822
|
+
What a scope source draws.
|
|
1823
|
+
|
|
1824
|
+
| Value | Name | Description |
|
|
1825
|
+
|-------|------|-------------|
|
|
1826
|
+
| 0 | `SCOPE_MODE_UNSPECIFIED` | Unset; the server draws a waveform |
|
|
1827
|
+
| 1 | `SCOPE_MODE_WAVEFORM` | BT.709 luma waveform of the compositor output |
|
|
1828
|
+
| 2 | `SCOPE_MODE_RGB_PARADE` | RGB parade waveform of the compositor output |
|
|
1829
|
+
| 3 | `SCOPE_MODE_VECTORSCOPE` | BT.709 Cb/Cr vectorscope of the compositor output |
|
|
1830
|
+
| 4 | `SCOPE_MODE_AUDIO_PHASE` | Stereo phase (goniometer) of the audio mix |
|
|
1831
|
+
|
|
1832
|
+
|
|
1688
1833
|
### SignalGeneratorAudioMode
|
|
1689
1834
|
|
|
1690
1835
|
Signal generator audio program.
|
|
@@ -1786,6 +1931,7 @@ Type of video/audio source.
|
|
|
1786
1931
|
| 8 | `SOURCE_TYPE_SRT_STREAM` | SRT stream |
|
|
1787
1932
|
| 9 | `SOURCE_TYPE_WEBSOCKET` | WebSocket stream |
|
|
1788
1933
|
| 10 | `SOURCE_TYPE_MOQ` | Media over QUIC stream |
|
|
1934
|
+
| 11 | `SOURCE_TYPE_SCOPE` | Video or audio scope rendered from a compositor or audio mixer |
|
|
1789
1935
|
|
|
1790
1936
|
|
|
1791
1937
|
### BrowserSourceConfig
|
|
@@ -1884,6 +2030,21 @@ RTT (Render-to-Texture) source configuration.
|
|
|
1884
2030
|
| `codec` | sesame.v1.common.CodecType | Preferred hardware decoder codec |
|
|
1885
2031
|
|
|
1886
2032
|
|
|
2033
|
+
### ScopeSourceConfig
|
|
2034
|
+
|
|
2035
|
+
Scope source configuration. Video modes read compositor_id, the audio
|
|
2036
|
+
phase mode reads audio_mix. The scope is drawn into the source texture
|
|
2037
|
+
in the same frame its input is produced, so downstream compositors see
|
|
2038
|
+
no added latency.
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
| Field | Type | Description |
|
|
2042
|
+
|-------|------|-------------|
|
|
2043
|
+
| `compositor_id` | string | Compositor whose output is analysed (video modes) |
|
|
2044
|
+
| `audio_mix` | string | Audio mixer ID, or "<mixer_id>/<output_id>" (audio modes) |
|
|
2045
|
+
| `mode` | ScopeMode | What to draw |
|
|
2046
|
+
|
|
2047
|
+
|
|
1887
2048
|
### SignalGeneratorSourceConfig
|
|
1888
2049
|
|
|
1889
2050
|
Signal generator source configuration.
|
|
@@ -1947,6 +2108,7 @@ Defines how a source is created and configured.
|
|
|
1947
2108
|
| `srt_stream` | SrtSourceConfig | SOURCE_TYPE_SRT_STREAM |
|
|
1948
2109
|
| `websocket` | WebsocketSourceConfig | SOURCE_TYPE_WEBSOCKET |
|
|
1949
2110
|
| `moq` | MoqSourceConfig | SOURCE_TYPE_MOQ |
|
|
2111
|
+
| `scope` | ScopeSourceConfig | SOURCE_TYPE_SCOPE |
|
|
1950
2112
|
|
|
1951
2113
|
|
|
1952
2114
|
### SourceMetadataEvent
|
|
@@ -2415,6 +2577,9 @@ type, or raw UTF-8 JSON for DATA_TYPE_JSON.
|
|
|
2415
2577
|
| 4 | `DATA_TYPE_TRANSPORT_CONTROL` | payload: sesame.v1.sources.TransportControlRequest (transport → source) |
|
|
2416
2578
|
| 5 | `DATA_TYPE_AUDIO_CONTROL` | payload: sesame.v1.audio.AudioControlRequest (transport → mixer) |
|
|
2417
2579
|
| 6 | `DATA_TYPE_BINARY` | payload: raw binary bytes (opaque to the wire layer) |
|
|
2580
|
+
| 7 | `DATA_TYPE_OUTPUT_STATUS` | payload: sesame.v1.outputs.OutputStatus (output → transport) |
|
|
2581
|
+
| 8 | `DATA_TYPE_OUTPUT_CONTROL` | payload: sesame.v1.outputs.OutputControlRequest (transport → output) |
|
|
2582
|
+
| 9 | `DATA_TYPE_ENGINE_STATUS` | payload: sesame.v1.status.Status (engine → transport; full monitor status) |
|
|
2418
2583
|
|
|
2419
2584
|
|
|
2420
2585
|
### FrameType
|
|
@@ -2486,6 +2651,7 @@ Media-specific fields for VIDEO, AUDIO, MUXED, and DECODER_DATA frames.
|
|
|
2486
2651
|
| `pts` | uint64 | Presentation timestamp in codec_data timebase units |
|
|
2487
2652
|
| `keyframe` | bool | True for video key frames |
|
|
2488
2653
|
| `codec_data` | MediaCodecData | Codec parameters (may be present on first frame or key frames) |
|
|
2654
|
+
| `side_data` | sesame.v1.sidedata.SideDataSet | Complete side data set in effect from this frame on. Present on key frames and on the frame where the set changes; absent means unchanged since the last frame that carried it. An empty set clears all entries. |
|
|
2489
2655
|
|
|
2490
2656
|
|
|
2491
2657
|
---
|
package/package.json
CHANGED