@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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stinkycomputing/sesame-api-client",
3
- "version": "1.8.0",
3
+ "version": "1.10.0-alpha.2",
4
4
  "description": "Sesame API client library with protobuf definitions and command list helpers",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",