@stinkycomputing/sesame-api-client 1.4.1-beta.10 → 1.4.1-beta.12
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 +25 -1
- package/dist/command-list.d.ts.map +1 -1
- package/dist/generated/property-types.d.ts +869 -0
- package/dist/generated/property-types.d.ts.map +1 -0
- package/dist/index.browser.mjs.map +2 -2
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs.map +2 -2
- package/docs/protocol-reference.md +1749 -765
- package/package.json +5 -3
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<!-- Generated from .proto files — do not edit manually. -->
|
|
2
|
+
<!-- Regenerate: cmake --build build --target proto-docs -->
|
|
3
|
+
|
|
1
4
|
# Sesame Protocol Reference
|
|
2
5
|
|
|
3
6
|
Complete reference for all protobuf types available through `@stinkycomputing/sesame-api-client`.
|
|
@@ -11,97 +14,307 @@ import { sesame } from '@stinkycomputing/sesame-api-client';
|
|
|
11
14
|
|
|
12
15
|
## Table of Contents
|
|
13
16
|
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [
|
|
18
|
-
- [
|
|
19
|
-
- [
|
|
20
|
-
- [
|
|
21
|
-
- [
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
17
|
+
- [sesame/v1/audio/audio_mixer.proto](#sesame_v1_audio_audio_mixer-proto)
|
|
18
|
+
- [sesame/v1/commands/commands.proto](#sesame_v1_commands_commands-proto)
|
|
19
|
+
- [sesame/v1/common/common.proto](#sesame_v1_common_common-proto)
|
|
20
|
+
- [sesame/v1/compositor/compositor.proto](#sesame_v1_compositor_compositor-proto)
|
|
21
|
+
- [sesame/v1/jobs/jobs.proto](#sesame_v1_jobs_jobs-proto)
|
|
22
|
+
- [sesame/v1/outputs/output.proto](#sesame_v1_outputs_output-proto)
|
|
23
|
+
- [sesame/v1/recorder/recorder.proto](#sesame_v1_recorder_recorder-proto)
|
|
24
|
+
- [sesame/v1/rpc/rpc.proto](#sesame_v1_rpc_rpc-proto)
|
|
25
|
+
- [sesame/v1/rpc/service.proto](#sesame_v1_rpc_service-proto)
|
|
26
|
+
- [sesame/v1/sources/source.proto](#sesame_v1_sources_source-proto)
|
|
27
|
+
- [sesame/v1/status/statistics.proto](#sesame_v1_status_statistics-proto)
|
|
28
|
+
- [sesame/v1/status/status.proto](#sesame_v1_status_status-proto)
|
|
29
|
+
- [sesame/v1/wire/wire.proto](#sesame_v1_wire_wire-proto)
|
|
27
30
|
- [Event Subscriptions](#event-subscriptions)
|
|
28
31
|
- [Scene Graph Properties](#scene-graph-properties)
|
|
29
32
|
|
|
30
33
|
---
|
|
31
34
|
|
|
32
|
-
## Wire Protocol
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
## sesame/v1/audio/audio_mixer.proto
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
`sesame.v1.audio`
|
|
37
39
|
|
|
38
|
-
```
|
|
39
|
-
[4-byte LE header_size][FrameHeader protobuf][payload bytes]
|
|
40
|
-
```
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### AudioMixerChannelType
|
|
44
|
+
|
|
45
|
+
Audio mixer channel type.
|
|
43
46
|
|
|
44
47
|
| Value | Name | Description |
|
|
45
48
|
|-------|------|-------------|
|
|
46
|
-
| 0 | `
|
|
47
|
-
| 1 | `
|
|
48
|
-
| 2 | `
|
|
49
|
-
| 3 | `FRAME_TYPE_AUDIO` | Live audio frames |
|
|
50
|
-
| 4 | `FRAME_TYPE_MUXED` | Muxed audio+video data |
|
|
51
|
-
| 5 | `FRAME_TYPE_DECODER_DATA` | Codec init data (SPS/PPS) |
|
|
52
|
-
| 6 | `FRAME_TYPE_DATA` | Live metadata streams |
|
|
49
|
+
| 0 | `AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
50
|
+
| 1 | `AUDIO_MIXER_CHANNEL_TYPE_MONO` | Mono channel |
|
|
51
|
+
| 2 | `AUDIO_MIXER_CHANNEL_TYPE_STEREO` | Stereo channel |
|
|
53
52
|
|
|
54
|
-
### CodecType
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
| 1 | `CODEC_TYPE_VIDEO_VP8` |
|
|
60
|
-
| 2 | `CODEC_TYPE_VIDEO_VP9` |
|
|
61
|
-
| 3 | `CODEC_TYPE_VIDEO_AVC` |
|
|
62
|
-
| 4 | `CODEC_TYPE_VIDEO_HEVC` |
|
|
63
|
-
| 5 | `CODEC_TYPE_VIDEO_AV1` |
|
|
64
|
-
| 64 | `CODEC_TYPE_AUDIO_OPUS` |
|
|
65
|
-
| 65 | `CODEC_TYPE_AUDIO_AAC` |
|
|
66
|
-
| 66 | `CODEC_TYPE_AUDIO_PCM` |
|
|
54
|
+
### AudioChannelAddRequest
|
|
55
|
+
|
|
56
|
+
Request to add a channel to an audio mixer.
|
|
67
57
|
|
|
68
|
-
### MediaCodecData
|
|
69
58
|
|
|
70
59
|
| Field | Type | Description |
|
|
71
60
|
|-------|------|-------------|
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
|
61
|
+
| `mixer_id` | string | Mixer ID |
|
|
62
|
+
| `channel_config` | AudioMixerChannel | Channel configuration |
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### AudioChannelPluginStatus
|
|
66
|
+
|
|
67
|
+
Audio channel plugin status.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
| Field | Type | Description |
|
|
71
|
+
|-------|------|-------------|
|
|
72
|
+
| `id` | string | Plugin ID |
|
|
73
|
+
| `type` | string | Plugin type |
|
|
74
|
+
| `params` | repeated AudioPluginParamStatus | Plugin parameter status |
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### AudioChannelRemoveRequest
|
|
78
|
+
|
|
79
|
+
Request to remove a channel from an audio mixer.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
| Field | Type | Description |
|
|
83
|
+
|-------|------|-------------|
|
|
84
|
+
| `mixer_id` | string | Mixer ID |
|
|
85
|
+
| `channel_id` | string | Channel ID to remove |
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### AudioChannelStatus
|
|
89
|
+
|
|
90
|
+
Audio channel status.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
| Field | Type | Description |
|
|
94
|
+
|-------|------|-------------|
|
|
95
|
+
| `id` | string | Channel ID |
|
|
96
|
+
| `output_type` | AudioMixerChannelType | Output type |
|
|
97
|
+
| `level` | float | Channel level (0.0-1.0) |
|
|
98
|
+
| `pan` | float | Pan position |
|
|
99
|
+
| `vu` | repeated float | VU meter values |
|
|
100
|
+
| `has_data` | bool | Has audio data |
|
|
101
|
+
| `read_errors` | uint32 | Read error count |
|
|
102
|
+
| `plugins` | repeated AudioChannelPluginStatus | Plugin status |
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
### AudioMixerAddRequest
|
|
106
|
+
|
|
107
|
+
Request to add a new audio mixer.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
| Field | Type | Description |
|
|
111
|
+
|-------|------|-------------|
|
|
112
|
+
| `id` | string | Unique mixer ID |
|
|
113
|
+
| `config` | AudioMixerConfig | Mixer configuration |
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### AudioMixerChannel
|
|
117
|
+
|
|
118
|
+
Audio mixer channel configuration.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
| Field | Type | Description |
|
|
122
|
+
|-------|------|-------------|
|
|
123
|
+
| `id` | string | Channel ID |
|
|
124
|
+
| `source_id` | string | Source ID |
|
|
125
|
+
| `channel_type` | AudioMixerChannelType | Channel type |
|
|
126
|
+
| `source_channels` | repeated uint32 | Source channel indices |
|
|
127
|
+
| `level` | float | Channel level (0.0-1.0) |
|
|
128
|
+
| `pan` | float | Pan position (-1.0 to 1.0) |
|
|
129
|
+
| `plugins` | repeated AudioPlugin | Audio plugins |
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
### AudioMixerConfig
|
|
133
|
+
|
|
134
|
+
Audio mixer configuration.
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
| Field | Type | Description |
|
|
138
|
+
|-------|------|-------------|
|
|
139
|
+
| `channels` | repeated AudioMixerChannel | Mixer channels |
|
|
140
|
+
| `output_type` | AudioMixerChannelType | Output channel type |
|
|
141
|
+
| `order` | uint32 | Processing order |
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
### AudioMixerRemoveRequest
|
|
145
|
+
|
|
146
|
+
Request to remove an audio mixer.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
| Field | Type | Description |
|
|
150
|
+
|-------|------|-------------|
|
|
151
|
+
| `id` | string | Mixer ID to remove |
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### AudioMixerStatus
|
|
155
|
+
|
|
156
|
+
Audio mixer status.
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
| Field | Type | Description |
|
|
160
|
+
|-------|------|-------------|
|
|
161
|
+
| `id` | string | Mixer ID |
|
|
162
|
+
| `output_type` | AudioMixerChannelType | Output type |
|
|
163
|
+
| `vu` | repeated float | Master VU meter values |
|
|
164
|
+
| `channels` | repeated AudioChannelStatus | Channel status |
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
### AudioMixerUpdateRequest
|
|
168
|
+
|
|
169
|
+
Request to update an existing audio mixer.
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
| Field | Type | Description |
|
|
173
|
+
|-------|------|-------------|
|
|
174
|
+
| `id` | string | Mixer ID to update |
|
|
175
|
+
| `config` | AudioMixerConfig | New configuration |
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### AudioPlugin
|
|
179
|
+
|
|
180
|
+
Audio plugin instance.
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
| Field | Type | Description |
|
|
184
|
+
|-------|------|-------------|
|
|
185
|
+
| `id` | string | Plugin instance ID |
|
|
186
|
+
| `type` | string | Plugin type |
|
|
187
|
+
| `params` | repeated AudioPluginParam | Plugin parameters |
|
|
188
|
+
| `aux_input_mix_ids` | repeated string | Auxiliary input mixer IDs |
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
### AudioPluginParam
|
|
192
|
+
|
|
193
|
+
Audio plugin parameter.
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
| Field | Type | Description |
|
|
197
|
+
|-------|------|-------------|
|
|
198
|
+
| `id` | uint32 | Parameter ID |
|
|
199
|
+
| `float_value` | float | Parameter value |
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
### AudioPluginParamStatus
|
|
203
|
+
|
|
204
|
+
Audio plugin parameter status (with display info).
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
| Field | Type | Description |
|
|
208
|
+
|-------|------|-------------|
|
|
209
|
+
| `id` | uint32 | Parameter ID |
|
|
210
|
+
| `float_value` | float | Parameter value |
|
|
211
|
+
| `label` | string | Parameter label |
|
|
212
|
+
| `display_value` | string | Formatted display value |
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## sesame/v1/commands/commands.proto
|
|
219
|
+
|
|
220
|
+
`sesame.v1.commands`
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
### CommandExecutionResponse
|
|
226
|
+
|
|
227
|
+
Command execution response.
|
|
228
|
+
|
|
229
|
+
Reserved for future per-command results.
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
### CommandList
|
|
233
|
+
|
|
234
|
+
Command list.
|
|
235
|
+
A list of commands to execute in sequence.
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
| Field | Type | Description |
|
|
239
|
+
|-------|------|-------------|
|
|
240
|
+
| `command_list` | repeated CommandListItem | List of commands |
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### CommandListItem
|
|
244
|
+
|
|
245
|
+
Command list item.
|
|
246
|
+
Each item represents a single command to execute at a specific time offset.
|
|
82
247
|
|
|
83
|
-
### FrameHeader
|
|
84
248
|
|
|
85
249
|
| Field | Type | Description |
|
|
86
250
|
|-------|------|-------------|
|
|
87
|
-
| `
|
|
88
|
-
| `
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
251
|
+
| `time_offset_us` | int64 | Time offset in microseconds |
|
|
252
|
+
| `add_source` | sesame.v1.sources.SourceAddRequest | Source commands |
|
|
253
|
+
| `update_source` | sesame.v1.sources.SourceUpdateRequest | |
|
|
254
|
+
| `remove_source` | sesame.v1.sources.SourceRemoveRequest | |
|
|
255
|
+
| `add_output` | sesame.v1.outputs.OutputAddRequest | Output commands |
|
|
256
|
+
| `update_output` | sesame.v1.outputs.OutputUpdateRequest | |
|
|
257
|
+
| `remove_output` | sesame.v1.outputs.OutputRemoveRequest | |
|
|
258
|
+
| `add_compositor` | sesame.v1.compositor.CompositorAddRequest | Compositor commands |
|
|
259
|
+
| `remove_compositor` | sesame.v1.compositor.CompositorRemoveRequest | |
|
|
260
|
+
| `clear_compositor` | sesame.v1.compositor.CompositorClearRequest | |
|
|
261
|
+
| `add_node` | sesame.v1.compositor.NodeAddRequest | Node commands |
|
|
262
|
+
| `remove_node` | sesame.v1.compositor.NodeRemoveRequest | |
|
|
263
|
+
| `set_property` | sesame.v1.compositor.PropertySetRequest | Property commands |
|
|
264
|
+
| `animate_property` | sesame.v1.compositor.PropertyAnimateRequest | |
|
|
265
|
+
| `add_audio_mixer` | sesame.v1.audio.AudioMixerAddRequest | Audio mixer commands |
|
|
266
|
+
| `update_audio_mixer` | sesame.v1.audio.AudioMixerUpdateRequest | |
|
|
267
|
+
| `remove_audio_mixer` | sesame.v1.audio.AudioMixerRemoveRequest | |
|
|
268
|
+
| `add_audio_channel` | sesame.v1.audio.AudioChannelAddRequest | |
|
|
269
|
+
| `remove_audio_channel` | sesame.v1.audio.AudioChannelRemoveRequest | |
|
|
270
|
+
| `update_source_transport` | sesame.v1.sources.SourceTransportCommand | Source transport commands |
|
|
271
|
+
| `load_playlist` | sesame.v1.sources.LoadPlaylistRequest | Recorder playlist commands |
|
|
272
|
+
| `eject_playlist` | sesame.v1.sources.EjectPlaylistRequest | |
|
|
273
|
+
| `callback` | sesame.v1.common.Callback | Callback command |
|
|
274
|
+
| `set_source_metadata` | sesame.v1.sources.SourceMetadataSetRequest | Source metadata command |
|
|
275
|
+
| `transaction_id` | optional uint32 | Transaction ID for grouping |
|
|
276
|
+
| `transaction_deps` | repeated uint32 | Transaction dependencies |
|
|
277
|
+
|
|
93
278
|
|
|
94
279
|
---
|
|
95
280
|
|
|
96
|
-
|
|
281
|
+
|
|
282
|
+
## sesame/v1/common/common.proto
|
|
97
283
|
|
|
98
284
|
`sesame.v1.common`
|
|
99
285
|
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
### CodecType
|
|
290
|
+
|
|
291
|
+
Shared codec identifier for video and audio.
|
|
292
|
+
Video codecs occupy numbers 1–63; audio codecs start at 64.
|
|
293
|
+
|
|
294
|
+
| Value | Name | Description |
|
|
295
|
+
|-------|------|-------------|
|
|
296
|
+
| 0 | `CODEC_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
297
|
+
| 1 | `CODEC_TYPE_VIDEO_VP8` | VP8 codec |
|
|
298
|
+
| 2 | `CODEC_TYPE_VIDEO_VP9` | VP9 codec |
|
|
299
|
+
| 3 | `CODEC_TYPE_VIDEO_AVC` | H.264/AVC codec |
|
|
300
|
+
| 4 | `CODEC_TYPE_VIDEO_HEVC` | H.265/HEVC codec |
|
|
301
|
+
| 5 | `CODEC_TYPE_VIDEO_AV1` | AV1 codec |
|
|
302
|
+
| 6 | `CODEC_TYPE_VIDEO_PRORES` | Apple ProRes codec family |
|
|
303
|
+
| 7 | `CODEC_TYPE_VIDEO_DNXHR` | Avid DNxHR codec family |
|
|
304
|
+
| 64 | `CODEC_TYPE_AUDIO_OPUS` | Opus audio codec |
|
|
305
|
+
| 65 | `CODEC_TYPE_AUDIO_AAC` | AAC audio codec |
|
|
306
|
+
| 66 | `CODEC_TYPE_AUDIO_PCM` | PCM 16-bit little-endian audio |
|
|
307
|
+
| 67 | `CODEC_TYPE_AUDIO_PCM_S24LE` | PCM 24-bit little-endian audio |
|
|
308
|
+
|
|
309
|
+
|
|
100
310
|
### ConnectionState
|
|
101
311
|
|
|
312
|
+
Connection/lifecycle state for runtime entities (sources, outputs, etc.).
|
|
313
|
+
Used by source/output status models across the API.
|
|
314
|
+
|
|
102
315
|
| Value | Name | Description |
|
|
103
316
|
|-------|------|-------------|
|
|
104
|
-
| 0 | `CONNECTION_STATE_UNSPECIFIED` |
|
|
317
|
+
| 0 | `CONNECTION_STATE_UNSPECIFIED` | Unspecified |
|
|
105
318
|
| 1 | `CONNECTION_STATE_INITIALIZING` | Initializing resources |
|
|
106
319
|
| 2 | `CONNECTION_STATE_CONNECTING` | Connecting/opening |
|
|
107
320
|
| 3 | `CONNECTION_STATE_ONLINE` | Healthy and running |
|
|
@@ -109,208 +322,1089 @@ Every WebSocket message is framed as:
|
|
|
109
322
|
| 5 | `CONNECTION_STATE_OFFLINE` | Stopped or unavailable |
|
|
110
323
|
| 6 | `CONNECTION_STATE_ERROR` | Failed with error |
|
|
111
324
|
|
|
325
|
+
|
|
326
|
+
### EventTopic
|
|
327
|
+
|
|
328
|
+
Typed event topics for subscriptions and event delivery.
|
|
329
|
+
Replaces stringly-typed topic names with compile-time checked values.
|
|
330
|
+
|
|
331
|
+
| Value | Name | Description |
|
|
332
|
+
|-------|------|-------------|
|
|
333
|
+
| 0 | `EVENT_TOPIC_UNSPECIFIED` | Unspecified (invalid) |
|
|
334
|
+
| 1 | `EVENT_TOPIC_ERROR` | Error events |
|
|
335
|
+
| 2 | `EVENT_TOPIC_TRANSPORT` | Source transport/playback state changes |
|
|
336
|
+
| 3 | `EVENT_TOPIC_CALLBACK` | Client callback events |
|
|
337
|
+
| 4 | `EVENT_TOPIC_JOB` | Job events (export, import, etc.) |
|
|
338
|
+
| 6 | `EVENT_TOPIC_RECORDER` | Recorder events |
|
|
339
|
+
|
|
340
|
+
|
|
112
341
|
### VideoFormat
|
|
113
342
|
|
|
343
|
+
Video format for Decklink and other hardware devices.
|
|
344
|
+
|
|
114
345
|
| Value | Name | Description |
|
|
115
346
|
|-------|------|-------------|
|
|
116
|
-
| 0 | `VIDEO_FORMAT_UNSPECIFIED` |
|
|
347
|
+
| 0 | `VIDEO_FORMAT_UNSPECIFIED` | Unspecified (invalid) |
|
|
117
348
|
| 1 | `VIDEO_FORMAT_1080_50I` | 1080i50 |
|
|
118
349
|
| 2 | `VIDEO_FORMAT_1080_50P` | 1080p50 |
|
|
119
350
|
| 3 | `VIDEO_FORMAT_1080_60I` | 1080i60 |
|
|
120
351
|
| 4 | `VIDEO_FORMAT_1080_60P` | 1080p60 |
|
|
121
352
|
|
|
122
|
-
### CodecId
|
|
123
353
|
|
|
124
|
-
|
|
125
|
-
|-------|------|-------------|
|
|
126
|
-
| 0 | `CODEC_ID_UNSPECIFIED` | Invalid |
|
|
127
|
-
| 1 | `CODEC_ID_H264` | H.264/AVC |
|
|
128
|
-
| 2 | `CODEC_ID_HEVC` | H.265/HEVC |
|
|
129
|
-
| 3 | `CODEC_ID_AV1` | AV1 |
|
|
130
|
-
| 4 | `CODEC_ID_VP8` | VP8 |
|
|
131
|
-
| 5 | `CODEC_ID_PRORES` | Apple ProRes |
|
|
132
|
-
| 6 | `CODEC_ID_DNXHR` | Avid DNxHR |
|
|
354
|
+
### Callback
|
|
133
355
|
|
|
134
|
-
|
|
356
|
+
Callback message for event notifications.
|
|
357
|
+
Used to trigger client-side callbacks when specific events occur.
|
|
135
358
|
|
|
136
|
-
|
|
359
|
+
|
|
360
|
+
| Field | Type | Description |
|
|
137
361
|
|-------|------|-------------|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
362
|
+
| `event` | string | Event name/identifier |
|
|
363
|
+
| `data` | string | Event data (JSON or other format) |
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
### Empty
|
|
367
|
+
|
|
368
|
+
Empty message for RPCs that don't need request/response data.
|
|
369
|
+
This is the standard protobuf convention for "void" operations.
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
### NameValue
|
|
373
|
+
|
|
374
|
+
Key-value pair for metadata and generic data.
|
|
375
|
+
Used for transport metadata, custom properties, etc.
|
|
144
376
|
|
|
145
|
-
### Vec4
|
|
146
377
|
|
|
147
378
|
| Field | Type | Description |
|
|
148
379
|
|-------|------|-------------|
|
|
149
|
-
| `
|
|
150
|
-
| `
|
|
151
|
-
|
|
152
|
-
| `w` | float | Alpha / W |
|
|
380
|
+
| `name` | string | Key name |
|
|
381
|
+
| `value` | PropValue | Value as string |
|
|
382
|
+
|
|
153
383
|
|
|
154
384
|
### PropValue
|
|
155
385
|
|
|
156
|
-
|
|
386
|
+
Property value union type.
|
|
387
|
+
Used for setting compositor properties, audio parameters, etc.
|
|
388
|
+
Only one field should be set at a time.
|
|
389
|
+
|
|
157
390
|
|
|
158
391
|
| Field | Type | Description |
|
|
159
392
|
|-------|------|-------------|
|
|
160
|
-
| `float_value` |
|
|
161
|
-
| `vec4_value` |
|
|
162
|
-
| `string_value` |
|
|
163
|
-
| `bool_value` |
|
|
164
|
-
| `int_value` |
|
|
393
|
+
| `float_value` | float | Floating point value (opacity, volume, etc.) |
|
|
394
|
+
| `vec4_value` | Vec4 | Vector value (color, position, etc.) |
|
|
395
|
+
| `string_value` | string | String value (text content, URLs, etc.) |
|
|
396
|
+
| `bool_value` | bool | Boolean value (enabled/disabled flags) |
|
|
397
|
+
| `int_value` | int32 | Integer value (indices, counts, etc.) |
|
|
398
|
+
|
|
165
399
|
|
|
166
400
|
### PropertyDomain
|
|
167
401
|
|
|
168
|
-
|
|
402
|
+
Property domain (compositor, audio mixer, etc.).
|
|
403
|
+
Used for property set/animate operations across different domains.
|
|
404
|
+
|
|
169
405
|
|
|
170
406
|
| Field | Type | Description |
|
|
171
407
|
|-------|------|-------------|
|
|
172
|
-
| `compositor_id` |
|
|
173
|
-
| `audio_mixer_id` |
|
|
174
|
-
| `
|
|
175
|
-
| `
|
|
408
|
+
| `compositor_id` | string | Compositor ID |
|
|
409
|
+
| `audio_mixer_id` | string | Audio mixer ID |
|
|
410
|
+
| `replay_id` | string | Replay ID |
|
|
411
|
+
| `source_id` | string | Source ID |
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
### TransportMetadata
|
|
415
|
+
|
|
416
|
+
Transport metadata (timecode, etc.).
|
|
417
|
+
Used for source and recorder metadata operations.
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
| Field | Type | Description |
|
|
421
|
+
|-------|------|-------------|
|
|
422
|
+
| `items` | repeated NameValue | Metadata items |
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
### Vec4
|
|
426
|
+
|
|
427
|
+
4-component vector used for colors (RGBA), positions, rectangles, etc.
|
|
428
|
+
Components are typically in the range [0.0, 1.0] for colors,
|
|
429
|
+
but can be arbitrary for positions and sizes.
|
|
176
430
|
|
|
177
|
-
### Callback
|
|
178
431
|
|
|
179
432
|
| Field | Type | Description |
|
|
180
433
|
|-------|------|-------------|
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
434
|
+
| `x` | float | Red component for colors, X position for coordinates |
|
|
435
|
+
| `y` | float | Green component for colors, Y position for coordinates |
|
|
436
|
+
| `z` | float | Blue component for colors, Z position for coordinates |
|
|
437
|
+
| `w` | float | Alpha component for colors, W component for coordinates |
|
|
438
|
+
|
|
183
439
|
|
|
184
440
|
---
|
|
185
441
|
|
|
186
|
-
## RPC Envelope
|
|
187
442
|
|
|
188
|
-
|
|
443
|
+
## sesame/v1/compositor/compositor.proto
|
|
189
444
|
|
|
190
|
-
|
|
445
|
+
`sesame.v1.compositor`
|
|
191
446
|
|
|
192
|
-
Oneof `payload`:
|
|
193
447
|
|
|
194
|
-
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
### AnimationChannelEvaluationMode
|
|
451
|
+
|
|
452
|
+
Animation channel evaluation mode.
|
|
453
|
+
|
|
454
|
+
| Value | Name | Description |
|
|
195
455
|
|-------|------|-------------|
|
|
196
|
-
|
|
|
197
|
-
| `
|
|
198
|
-
|
|
|
456
|
+
| 0 | `ANIM_MODE_CONSTANT` | Constant (hold last value) |
|
|
457
|
+
| 1 | `ANIM_MODE_STATE_FROM` | State from (use initial value) |
|
|
458
|
+
| 2 | `ANIM_MODE_LOOP` | Loop animation |
|
|
459
|
+
| 3 | `ANIM_MODE_BOUNCE` | Bounce animation (ping-pong) |
|
|
199
460
|
|
|
200
|
-
### Request
|
|
201
461
|
|
|
202
|
-
|
|
462
|
+
### NodeType
|
|
463
|
+
|
|
464
|
+
Node type in the scene graph.
|
|
465
|
+
|
|
466
|
+
| Value | Name | Description |
|
|
203
467
|
|-------|------|-------------|
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
|
468
|
+
| 0 | `NODE_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
469
|
+
| 1 | `NODE_TYPE_GROUP` | Group node (container) |
|
|
470
|
+
| 2 | `NODE_TYPE_TEXT` | Text node |
|
|
471
|
+
| 3 | `NODE_TYPE_VIDEO_BOX` | Video box node |
|
|
472
|
+
| 4 | `NODE_TYPE_IMAGE` | Image node |
|
|
473
|
+
| 5 | `NODE_TYPE_EFFECT_RTT` | Render-to-texture effect |
|
|
474
|
+
| 6 | `NODE_TYPE_EFFECT_TIMECODE` | Timecode display effect |
|
|
475
|
+
| 7 | `NODE_TYPE_EFFECT_CLIP_PLANE` | Clip plane effect |
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
### CompositorAddRequest
|
|
479
|
+
|
|
480
|
+
Request to add a new compositor.
|
|
207
481
|
|
|
208
|
-
### Response
|
|
209
482
|
|
|
210
483
|
| Field | Type | Description |
|
|
211
484
|
|-------|------|-------------|
|
|
212
|
-
| `
|
|
213
|
-
| `
|
|
214
|
-
| `
|
|
215
|
-
| `
|
|
485
|
+
| `id` | string | Unique compositor ID |
|
|
486
|
+
| `multisample` | bool | Enable multisampling (anti-aliasing) |
|
|
487
|
+
| `width` | uint32 | Compositor width |
|
|
488
|
+
| `height` | uint32 | Compositor height |
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
### CompositorClearRequest
|
|
492
|
+
|
|
493
|
+
Request to clear a compositor (remove all nodes).
|
|
216
494
|
|
|
217
|
-
### Event
|
|
218
495
|
|
|
219
496
|
| Field | Type | Description |
|
|
220
497
|
|-------|------|-------------|
|
|
221
|
-
| `
|
|
222
|
-
| `payload` | bytes | Serialized `status.Event` protobuf |
|
|
498
|
+
| `id` | string | Compositor ID to clear |
|
|
223
499
|
|
|
224
|
-
---
|
|
225
500
|
|
|
226
|
-
|
|
501
|
+
### CompositorRemoveRequest
|
|
227
502
|
|
|
228
|
-
|
|
503
|
+
Request to remove a compositor.
|
|
229
504
|
|
|
230
|
-
Commands are batched into a `CommandList` and executed atomically via `ExecuteCommandList`.
|
|
231
505
|
|
|
232
|
-
|
|
506
|
+
| Field | Type | Description |
|
|
507
|
+
|-------|------|-------------|
|
|
508
|
+
| `id` | string | Compositor ID to remove |
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
### KeyFrame
|
|
512
|
+
|
|
513
|
+
Animation keyframe.
|
|
514
|
+
|
|
233
515
|
|
|
234
516
|
| Field | Type | Description |
|
|
235
517
|
|-------|------|-------------|
|
|
236
|
-
| `
|
|
237
|
-
| `
|
|
238
|
-
| `
|
|
239
|
-
|
|
240
|
-
Oneof `item` — exactly one per command:
|
|
241
|
-
|
|
242
|
-
| Field | Type | Category |
|
|
243
|
-
|-------|------|----------|
|
|
244
|
-
| `add_source` | SourceAddRequest | Source |
|
|
245
|
-
| `update_source` | SourceUpdateRequest | Source |
|
|
246
|
-
| `remove_source` | SourceRemoveRequest | Source |
|
|
247
|
-
| `add_output` | OutputAddRequest | Output |
|
|
248
|
-
| `update_output` | OutputUpdateRequest | Output |
|
|
249
|
-
| `remove_output` | OutputRemoveRequest | Output |
|
|
250
|
-
| `add_compositor` | CompositorAddRequest | Compositor |
|
|
251
|
-
| `remove_compositor` | CompositorRemoveRequest | Compositor |
|
|
252
|
-
| `clear_compositor` | CompositorClearRequest | Compositor |
|
|
253
|
-
| `add_node` | NodeAddRequest | Scene graph |
|
|
254
|
-
| `remove_node` | NodeRemoveRequest | Scene graph |
|
|
255
|
-
| `set_property` | PropertySetRequest | Property |
|
|
256
|
-
| `animate_property` | PropertyAnimateRequest | Property |
|
|
257
|
-
| `add_audio_mixer` | AudioMixerAddRequest | Audio |
|
|
258
|
-
| `update_audio_mixer` | AudioMixerUpdateRequest | Audio |
|
|
259
|
-
| `remove_audio_mixer` | AudioMixerRemoveRequest | Audio |
|
|
260
|
-
| `add_audio_channel` | AudioChannelAddRequest | Audio |
|
|
261
|
-
| `remove_audio_channel` | AudioChannelRemoveRequest | Audio |
|
|
262
|
-
| `update_source_transport` | SourceTransportCommand | Transport |
|
|
263
|
-
| `load_playlist` | LoadPlaylistRequest | Playlist |
|
|
264
|
-
| `eject_playlist` | EjectPlaylistRequest | Playlist |
|
|
265
|
-
| `callback` | Callback | Callback |
|
|
266
|
-
| `set_source_metadata` | SourceMetadataSetRequest | Metadata |
|
|
518
|
+
| `time_us` | int64 | Keyframe time in microseconds |
|
|
519
|
+
| `value` | sesame.v1.common.PropValue | Keyframe value |
|
|
520
|
+
| `easing_in` | string | Easing function for incoming interpolation |
|
|
521
|
+
| `easing_out` | string | Easing function for outgoing interpolation |
|
|
267
522
|
|
|
268
|
-
---
|
|
269
523
|
|
|
270
|
-
|
|
524
|
+
### NodeAddRequest
|
|
271
525
|
|
|
272
|
-
|
|
526
|
+
Request to add a node to the scene graph.
|
|
273
527
|
|
|
274
|
-
### SourceType
|
|
275
528
|
|
|
276
|
-
|
|
|
529
|
+
| Field | Type | Description |
|
|
277
530
|
|-------|------|-------------|
|
|
278
|
-
|
|
|
279
|
-
|
|
|
280
|
-
|
|
|
281
|
-
|
|
|
282
|
-
| 4 | `SOURCE_TYPE_RTT` | Render-to-texture |
|
|
283
|
-
| 5 | `SOURCE_TYPE_DECKLINK` | Blackmagic Decklink capture |
|
|
284
|
-
| 6 | `SOURCE_TYPE_SIGNAL_GENERATOR` | Test signal generator |
|
|
285
|
-
| 7 | `SOURCE_TYPE_SYSTEM_AUDIO` | System audio input |
|
|
286
|
-
| 8 | `SOURCE_TYPE_SRT_STREAM` | SRT stream |
|
|
287
|
-
| 9 | `SOURCE_TYPE_WEBSOCKET` | WebSocket stream |
|
|
288
|
-
| 10 | `SOURCE_TYPE_MOQ` | Media over QUIC |
|
|
531
|
+
| `compositor_id` | string | Compositor ID |
|
|
532
|
+
| `parent_address` | string | Parent node address (e.g., "root/layer1") |
|
|
533
|
+
| `node_id` | string | New node ID |
|
|
534
|
+
| `node_type` | NodeType | Node type |
|
|
289
535
|
|
|
290
|
-
### SourceTransportState
|
|
291
536
|
|
|
292
|
-
|
|
537
|
+
### NodeRemoveRequest
|
|
538
|
+
|
|
539
|
+
Request to remove a node from the scene graph.
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
| Field | Type | Description |
|
|
293
543
|
|-------|------|-------------|
|
|
294
|
-
|
|
|
295
|
-
|
|
|
296
|
-
| 2 | `SOURCE_TRANSPORT_STATE_CUEING` | Cueing to position |
|
|
297
|
-
| 3 | `SOURCE_TRANSPORT_STATE_ERROR` | Error state |
|
|
298
|
-
| 4 | `SOURCE_TRANSPORT_STATE_PLAYING_LIVE` | Playing live (no seeking) |
|
|
544
|
+
| `compositor_id` | string | Compositor ID |
|
|
545
|
+
| `address` | string | Node address to remove |
|
|
299
546
|
|
|
300
|
-
### SourceTransportCommandType
|
|
301
547
|
|
|
302
|
-
|
|
548
|
+
### PropertyAnimateRequest
|
|
549
|
+
|
|
550
|
+
Request to animate a property.
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
| Field | Type | Description |
|
|
303
554
|
|-------|------|-------------|
|
|
304
|
-
|
|
|
305
|
-
|
|
|
306
|
-
|
|
|
555
|
+
| `domain` | sesame.v1.common.PropertyDomain | Property domain |
|
|
556
|
+
| `address` | string | Node address |
|
|
557
|
+
| `property` | string | Property name |
|
|
558
|
+
| `keyframes` | repeated KeyFrame | Animation keyframes |
|
|
559
|
+
| `before` | AnimationChannelEvaluationMode | Evaluation mode before first keyframe |
|
|
560
|
+
| `after` | AnimationChannelEvaluationMode | Evaluation mode after last keyframe |
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
### PropertySetRequest
|
|
564
|
+
|
|
565
|
+
Request to set a property value.
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
| Field | Type | Description |
|
|
569
|
+
|-------|------|-------------|
|
|
570
|
+
| `domain` | sesame.v1.common.PropertyDomain | Property domain |
|
|
571
|
+
| `address` | string | Node address |
|
|
572
|
+
| `property` | string | Property name |
|
|
573
|
+
| `value` | sesame.v1.common.PropValue | Property value |
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
---
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
## sesame/v1/jobs/jobs.proto
|
|
580
|
+
|
|
581
|
+
`sesame.v1.jobs`
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
### ContainerFormat
|
|
587
|
+
|
|
588
|
+
Container format for exported files.
|
|
589
|
+
|
|
590
|
+
| Value | Name | Description |
|
|
591
|
+
|-------|------|-------------|
|
|
592
|
+
| 0 | `CONTAINER_FORMAT_UNSPECIFIED` | Unspecified (invalid) |
|
|
593
|
+
| 1 | `CONTAINER_FORMAT_MP4` | MP4 container |
|
|
594
|
+
| 2 | `CONTAINER_FORMAT_MOV` | QuickTime MOV container |
|
|
595
|
+
| 3 | `CONTAINER_FORMAT_MKV` | Matroska container |
|
|
596
|
+
| 4 | `CONTAINER_FORMAT_MXF` | Material eXchange Format |
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
### JobStatus
|
|
600
|
+
|
|
601
|
+
Job status.
|
|
602
|
+
|
|
603
|
+
| Value | Name | Description |
|
|
604
|
+
|-------|------|-------------|
|
|
605
|
+
| 0 | `JOB_STATUS_UNSPECIFIED` | Unspecified (invalid) |
|
|
606
|
+
| 1 | `JOB_STATUS_PENDING` | Pending (not started) |
|
|
607
|
+
| 2 | `JOB_STATUS_IN_PROGRESS` | In progress |
|
|
608
|
+
| 3 | `JOB_STATUS_COMPLETE` | Complete |
|
|
609
|
+
| 4 | `JOB_STATUS_ABORTED` | Aborted by user |
|
|
610
|
+
| 5 | `JOB_STATUS_ERROR` | Error occurred |
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
### JobType
|
|
614
|
+
|
|
615
|
+
Job type.
|
|
616
|
+
|
|
617
|
+
| Value | Name | Description |
|
|
618
|
+
|-------|------|-------------|
|
|
619
|
+
| 0 | `JOB_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
620
|
+
| 1 | `JOB_TYPE_EXPORT` | Playlist export |
|
|
621
|
+
| 2 | `JOB_TYPE_IMPORT` | Clip import |
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
### RateControlMode
|
|
625
|
+
|
|
626
|
+
Rate control mode for video encoding.
|
|
627
|
+
|
|
628
|
+
| Value | Name | Description |
|
|
629
|
+
|-------|------|-------------|
|
|
630
|
+
| 0 | `RATE_CONTROL_MODE_UNSPECIFIED` | Unspecified (invalid) |
|
|
631
|
+
| 1 | `RATE_CONTROL_MODE_CBR` | Constant bitrate |
|
|
632
|
+
| 2 | `RATE_CONTROL_MODE_VBR` | Variable bitrate |
|
|
633
|
+
| 3 | `RATE_CONTROL_MODE_CQ` | Constant quality |
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
### ExportConfiguration
|
|
637
|
+
|
|
638
|
+
Playlist export configuration.
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
| Field | Type | Description |
|
|
642
|
+
|-------|------|-------------|
|
|
643
|
+
| `filename` | string | Output filename |
|
|
644
|
+
| `container` | ContainerFormat | Output container format |
|
|
645
|
+
| `video_codec` | sesame.v1.common.CodecType | Video codec |
|
|
646
|
+
| `width` | uint32 | Output width |
|
|
647
|
+
| `height` | uint32 | Output height |
|
|
648
|
+
| `fps_num` | uint32 | Frame rate numerator |
|
|
649
|
+
| `fps_den` | uint32 | Frame rate denominator |
|
|
650
|
+
| `rate_control` | RateControlMode | Video rate control mode |
|
|
651
|
+
| `video_bitrate_kbps` | uint32 | Target video bitrate (kbps) |
|
|
652
|
+
| `max_video_bitrate_kbps` | uint32 | Peak video bitrate cap (kbps) |
|
|
653
|
+
| `gop_size` | uint32 | GOP size in frames |
|
|
654
|
+
| `max_b_frames` | uint32 | Maximum B-frames |
|
|
655
|
+
| `profile` | string | Codec profile (e.g. main, high) |
|
|
656
|
+
| `level` | string | Codec level (e.g. 4.1, 5.1) |
|
|
657
|
+
| `pixel_format` | string | Pixel format (e.g. yuv420p) |
|
|
658
|
+
| `color_primaries` | string | Color primaries (e.g. bt709) |
|
|
659
|
+
| `color_transfer` | string | Transfer characteristics (e.g. bt709) |
|
|
660
|
+
| `color_matrix` | string | Matrix coefficients (e.g. bt709) |
|
|
661
|
+
| `full_range` | bool | Full range if true, limited if false |
|
|
662
|
+
| `audio_codec` | sesame.v1.common.CodecType | Audio codec |
|
|
663
|
+
| `audio_bitrate_kbps` | uint32 | Audio bitrate (kbps) |
|
|
664
|
+
| `audio_sample_rate_hz` | uint32 | Audio sample rate (Hz) |
|
|
665
|
+
| `audio_channels` | uint32 | Number of audio channels |
|
|
666
|
+
| `audio_routing` | repeated uint32 | Audio channel routing |
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
### ExportStartRequest
|
|
670
|
+
|
|
671
|
+
Request to start playlist export.
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
| Field | Type | Description |
|
|
675
|
+
|-------|------|-------------|
|
|
676
|
+
| `config` | ExportConfiguration | Export configuration |
|
|
677
|
+
| `items` | repeated sesame.v1.recorder.PlaylistItem | Playlist items |
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
### ImportConfiguration
|
|
681
|
+
|
|
682
|
+
Clip import configuration.
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
| Field | Type | Description |
|
|
686
|
+
|-------|------|-------------|
|
|
687
|
+
| `src_filename` | string | Source filename |
|
|
688
|
+
| `audio_routing` | repeated uint32 | Audio channel routing |
|
|
689
|
+
| `dst_recorder_id` | string | Destination recorder ID |
|
|
690
|
+
| `dst_clip_id` | uint64 | Destination clip ID |
|
|
691
|
+
| `dst_clip_name` | string | Destination clip name |
|
|
692
|
+
| `dst_clip_user_data` | string | Destination clip user data |
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
### ImportStartRequest
|
|
696
|
+
|
|
697
|
+
Request to start clip import.
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
| Field | Type | Description |
|
|
701
|
+
|-------|------|-------------|
|
|
702
|
+
| `config` | ImportConfiguration | Import configuration |
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
### Job
|
|
706
|
+
|
|
707
|
+
A job. Used as RPC response, list item, and event payload.
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
| Field | Type | Description |
|
|
711
|
+
|-------|------|-------------|
|
|
712
|
+
| `id` | uint32 | Job ID |
|
|
713
|
+
| `type` | JobType | Job type |
|
|
714
|
+
| `status` | JobStatus | Current status |
|
|
715
|
+
| `name` | string | Job name (e.g. "Export playlist") |
|
|
716
|
+
| `description` | string | Job description (e.g. filename) |
|
|
717
|
+
| `error` | optional string | Error message (if status == ERROR) |
|
|
718
|
+
| `progress` | int64 | Current progress (us) |
|
|
719
|
+
| `total` | int64 | Total duration (us) |
|
|
720
|
+
| `timing_info` | optional TimingInfo | Timing info (set on completion for imports) |
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
### JobAbortRequest
|
|
724
|
+
|
|
725
|
+
Request to abort a job.
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
| Field | Type | Description |
|
|
729
|
+
|-------|------|-------------|
|
|
730
|
+
| `job_id` | uint32 | Job ID to abort |
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
### JobList
|
|
734
|
+
|
|
735
|
+
List of jobs.
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
| Field | Type | Description |
|
|
739
|
+
|-------|------|-------------|
|
|
740
|
+
| `jobs` | repeated Job | |
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
### JobListRequest
|
|
744
|
+
|
|
745
|
+
Request to list all jobs.
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
### JobStartRequest
|
|
749
|
+
|
|
750
|
+
Request to start a job.
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
| Field | Type | Description |
|
|
754
|
+
|-------|------|-------------|
|
|
755
|
+
| `export_request` | ExportStartRequest | Playlist export |
|
|
756
|
+
| `import_request` | ImportStartRequest | Clip import |
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
### JobStatusRequest
|
|
760
|
+
|
|
761
|
+
Request to get job status.
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
| Field | Type | Description |
|
|
765
|
+
|-------|------|-------------|
|
|
766
|
+
| `job_id` | uint32 | Job ID |
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
### TimingInfo
|
|
770
|
+
|
|
771
|
+
Timing information for clips.
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
| Field | Type | Description |
|
|
775
|
+
|-------|------|-------------|
|
|
776
|
+
| `tc_in` | int64 | In timecode (us) |
|
|
777
|
+
| `tc_out` | int64 | Out timecode (us) |
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
---
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
## sesame/v1/outputs/output.proto
|
|
784
|
+
|
|
785
|
+
`sesame.v1.outputs`
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
### EncoderPreset
|
|
791
|
+
|
|
792
|
+
Encoder preset.
|
|
793
|
+
|
|
794
|
+
| Value | Name | Description |
|
|
795
|
+
|-------|------|-------------|
|
|
796
|
+
| 0 | `ENCODER_PRESET_UNSPECIFIED` | Unspecified (invalid) |
|
|
797
|
+
| 1 | `ENCODER_PRESET_LOW_LATENCY` | Low-latency tune |
|
|
798
|
+
| 2 | `ENCODER_PRESET_LOW_LATENCY_IDR_ONLY` | Low-latency with IDR-only GOP |
|
|
799
|
+
| 3 | `ENCODER_PRESET_HIGH_QUALITY` | High-quality tune |
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
### OutputType
|
|
803
|
+
|
|
804
|
+
Type of output.
|
|
805
|
+
|
|
806
|
+
| Value | Name | Description |
|
|
807
|
+
|-------|------|-------------|
|
|
808
|
+
| 0 | `OUTPUT_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
809
|
+
| 1 | `OUTPUT_TYPE_ENCODED_WEBSOCKET` | Encoded WebSocket stream |
|
|
810
|
+
| 2 | `OUTPUT_TYPE_ENCODED_RECORDER` | Encoded recorder |
|
|
811
|
+
| 3 | `OUTPUT_TYPE_DECKLINK` | Blackmagic Decklink output |
|
|
812
|
+
| 4 | `OUTPUT_TYPE_SYSTEM_AUDIO` | System audio output |
|
|
813
|
+
| 5 | `OUTPUT_TYPE_ENCODED_SRT` | Encoded SRT stream |
|
|
814
|
+
| 6 | `OUTPUT_TYPE_ENCODED_MOQ` | Encoded MoQ stream |
|
|
815
|
+
| 7 | `OUTPUT_TYPE_ENCODED_SUPER_SLOWMO_RECORDER` | Super slow-mo recorder |
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
### RecorderType
|
|
819
|
+
|
|
820
|
+
Recorder type.
|
|
821
|
+
|
|
822
|
+
| Value | Name | Description |
|
|
823
|
+
|-------|------|-------------|
|
|
824
|
+
| 0 | `RECORDER_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
825
|
+
| 1 | `RECORDER_TYPE_LIVE` | Live recorder (circular buffer) |
|
|
826
|
+
| 2 | `RECORDER_TYPE_CLIPS` | Clip recorder; not continuously recording, only ingested frames are persisted |
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
### DecklinkOutputConfig
|
|
830
|
+
|
|
831
|
+
Decklink output configuration.
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
| Field | Type | Description |
|
|
835
|
+
|-------|------|-------------|
|
|
836
|
+
| `device_index` | uint32 | Decklink device index |
|
|
837
|
+
| `video_format` | sesame.v1.common.VideoFormat | Video format |
|
|
838
|
+
| `key_and_fill` | bool | Key and fill mode |
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
### EncodedMoqOutputConfig
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
| Field | Type | Description |
|
|
847
|
+
|-------|------|-------------|
|
|
848
|
+
| `encoder` | EncoderConfig | Encoded transport settings |
|
|
849
|
+
| `url` | string | MoQ URL |
|
|
850
|
+
| `broadcast` | string | Broadcast namespace |
|
|
851
|
+
| `key` | string | Authentication key |
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
### EncodedRecorderOutputConfig
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
| Field | Type | Description |
|
|
860
|
+
|-------|------|-------------|
|
|
861
|
+
| `encoder` | EncoderConfig | Encoded transport settings |
|
|
862
|
+
| `filename` | string | Base filename |
|
|
863
|
+
| `size_gb` | uint32 | Maximum size in GB |
|
|
864
|
+
| `group_id` | string | Group ID for organization |
|
|
865
|
+
| `recorder_type` | RecorderType | Recorder type |
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
### EncodedSrtOutputConfig
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
| Field | Type | Description |
|
|
874
|
+
|-------|------|-------------|
|
|
875
|
+
| `url` | string | SRT URL |
|
|
876
|
+
| `encoder` | EncoderConfig | Encoded transport settings |
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
### EncodedSuperSlowMoRecorderOutputConfig
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
| Field | Type | Description |
|
|
885
|
+
|-------|------|-------------|
|
|
886
|
+
| `encoder` | EncoderConfig | Encoded transport settings |
|
|
887
|
+
| `filename` | string | Base filename |
|
|
888
|
+
| `size_gb` | uint32 | Maximum size in GB |
|
|
889
|
+
| `group_id` | string | Group ID |
|
|
890
|
+
| `recorder_type` | RecorderType | Recorder type |
|
|
891
|
+
| `composition_ids` | repeated string | Compositor IDs to record |
|
|
892
|
+
| `source_ids` | repeated string | Source IDs to record |
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
### EncodedWebSocketOutputConfig
|
|
896
|
+
|
|
897
|
+
-----------------------------------------------------------------------------
|
|
898
|
+
Type-specific output payloads
|
|
899
|
+
-----------------------------------------------------------------------------
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
| Field | Type | Description |
|
|
903
|
+
|-------|------|-------------|
|
|
904
|
+
| `channel` | string | WebSocket channel/topic |
|
|
905
|
+
| `encoder` | EncoderConfig | Encoded transport settings |
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
### EncoderConfig
|
|
909
|
+
|
|
910
|
+
Encoded output configuration (WebSocket, SRT, MoQ).
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
| Field | Type | Description |
|
|
914
|
+
|-------|------|-------------|
|
|
915
|
+
| `codec` | sesame.v1.common.CodecType | Encoder codec |
|
|
916
|
+
| `preset` | EncoderPreset | Encoder preset |
|
|
917
|
+
| `bitrate_kbps` | uint32 | Bitrate in kbps |
|
|
918
|
+
| `keyframe_interval` | uint32 | GOP length in frames (0 = codec/preset default) |
|
|
919
|
+
| `width` | uint32 | Video width |
|
|
920
|
+
| `height` | uint32 | Video height |
|
|
921
|
+
| `fps` | float | Video framerate |
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
### KeyframeRequest
|
|
925
|
+
|
|
926
|
+
Keyframe request for encoder.
|
|
927
|
+
Requests an immediate keyframe (IDR frame) from an encoder output.
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
| Field | Type | Description |
|
|
931
|
+
|-------|------|-------------|
|
|
932
|
+
| `id` | string | ID of the output to request keyframe from |
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
### OutputAddRequest
|
|
936
|
+
|
|
937
|
+
Request to add a new output.
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
| Field | Type | Description |
|
|
941
|
+
|-------|------|-------------|
|
|
942
|
+
| `id` | string | Unique output ID |
|
|
943
|
+
| `composition_id` | string | Compositor ID to output |
|
|
944
|
+
| `audio_mix_ids` | repeated string | Audio mixer IDs |
|
|
945
|
+
| `use_as_clock` | bool | Use as master clock |
|
|
946
|
+
| `websocket` | EncodedWebSocketOutputConfig | |
|
|
947
|
+
| `recorder` | EncodedRecorderOutputConfig | |
|
|
948
|
+
| `super_slowmo_recorder` | EncodedSuperSlowMoRecorderOutputConfig | |
|
|
949
|
+
| `srt` | EncodedSrtOutputConfig | |
|
|
950
|
+
| `moq` | EncodedMoqOutputConfig | |
|
|
951
|
+
| `decklink` | DecklinkOutputConfig | |
|
|
952
|
+
| `system_audio` | SystemAudioOutputConfig | |
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
### OutputRemoveRequest
|
|
956
|
+
|
|
957
|
+
Request to remove an output.
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
| Field | Type | Description |
|
|
961
|
+
|-------|------|-------------|
|
|
962
|
+
| `id` | string | Output ID to remove |
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
### OutputStatus
|
|
966
|
+
|
|
967
|
+
Output status information.
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
| Field | Type | Description |
|
|
971
|
+
|-------|------|-------------|
|
|
972
|
+
| `id` | string | Output ID |
|
|
973
|
+
| `type` | OutputType | Output type |
|
|
974
|
+
| `state` | sesame.v1.common.ConnectionState | Connection/lifecycle state |
|
|
975
|
+
| `msg` | optional string | Error message (typically when state == ERROR) |
|
|
976
|
+
| `url` | string | Output URL |
|
|
977
|
+
| `buffer_size` | uint32 | Buffer size (frames) |
|
|
978
|
+
| `srt_stats` | optional sesame.v1.status.SRTSendStatistics | SRT stats (if SRT output) |
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
### OutputUpdateRequest
|
|
982
|
+
|
|
983
|
+
Request to update an existing output.
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
| Field | Type | Description |
|
|
987
|
+
|-------|------|-------------|
|
|
988
|
+
| `id` | string | Output ID to update |
|
|
989
|
+
| `composition_id` | string | Compositor ID |
|
|
990
|
+
| `audio_mix_ids` | repeated string | Audio mixer IDs |
|
|
991
|
+
| `use_as_clock` | bool | Use as master clock |
|
|
992
|
+
| `websocket` | EncodedWebSocketOutputConfig | |
|
|
993
|
+
| `recorder` | EncodedRecorderOutputConfig | |
|
|
994
|
+
| `super_slowmo_recorder` | EncodedSuperSlowMoRecorderOutputConfig | |
|
|
995
|
+
| `srt` | EncodedSrtOutputConfig | |
|
|
996
|
+
| `moq` | EncodedMoqOutputConfig | |
|
|
997
|
+
| `decklink` | DecklinkOutputConfig | |
|
|
998
|
+
| `system_audio` | SystemAudioOutputConfig | |
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
### SystemAudioOutputConfig
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
| Field | Type | Description |
|
|
1007
|
+
|-------|------|-------------|
|
|
1008
|
+
| `device_name` | string | System audio device settings |
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
---
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
## sesame/v1/recorder/recorder.proto
|
|
1015
|
+
|
|
1016
|
+
`sesame.v1.recorder`
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
### TransitionType
|
|
1022
|
+
|
|
1023
|
+
Transition type for playlist items.
|
|
1024
|
+
|
|
1025
|
+
| Value | Name | Description |
|
|
1026
|
+
|-------|------|-------------|
|
|
1027
|
+
| 0 | `TRANSITION_TYPE_MIX` | Mix/dissolve transition |
|
|
1028
|
+
| 1 | `TRANSITION_TYPE_FADE_TO_COLOR` | Fade to color |
|
|
1029
|
+
| 2 | `TRANSITION_TYPE_FADE_FROM_COLOR` | Fade from color |
|
|
1030
|
+
| 3 | `TRANSITION_TYPE_FADE_TO_FROM_COLOR` | Fade to and from color |
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
### PlaylistItem
|
|
1034
|
+
|
|
1035
|
+
Playlist item for recorder source playback.
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
| Field | Type | Description |
|
|
1039
|
+
|-------|------|-------------|
|
|
1040
|
+
| `recorder_id` | string | Recorder ID |
|
|
1041
|
+
| `id` | uint64 | Clip ID |
|
|
1042
|
+
| `transition_time_us` | int64 | Transition duration (us) |
|
|
1043
|
+
| `transition_type` | TransitionType | Transition type |
|
|
1044
|
+
| `transition_fade_color` | sesame.v1.common.Vec4 | Fade color |
|
|
1045
|
+
| `speed` | float | Playback speed |
|
|
1046
|
+
| `audio_routing` | repeated uint32 | Audio routing |
|
|
1047
|
+
| `start_time_us` | optional int64 | Start time (us) |
|
|
1048
|
+
| `end_time_us` | optional int64 | End time (us) |
|
|
1049
|
+
| `audio_levels` | repeated float | Audio levels per channel (0.0-1.0) |
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
### RecorderClip
|
|
1053
|
+
|
|
1054
|
+
Recorder clip information.
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
| Field | Type | Description |
|
|
1058
|
+
|-------|------|-------------|
|
|
1059
|
+
| `id` | uint64 | Clip ID |
|
|
1060
|
+
| `name` | string | Clip name |
|
|
1061
|
+
| `user_data` | string | User-defined data |
|
|
1062
|
+
| `flags` | uint64 | Clip flags (bitfield) |
|
|
1063
|
+
| `start_time_us` | int64 | Start time (us) |
|
|
1064
|
+
| `end_time_us` | int64 | End time (us) |
|
|
1065
|
+
| `locked_start_us` | int64 | Locked start time (us) |
|
|
1066
|
+
| `locked_end_us` | int64 | Locked end time (us) |
|
|
1067
|
+
| `user_time_us` | int64 | User-defined timecode (us) |
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
### RecorderClipAddRequest
|
|
1071
|
+
|
|
1072
|
+
Request to add a clip to a recorder.
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
| Field | Type | Description |
|
|
1076
|
+
|-------|------|-------------|
|
|
1077
|
+
| `clip` | RecorderClip | Clip to add |
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
### RecorderClipCopyRequest
|
|
1081
|
+
|
|
1082
|
+
Request to copy a clip.
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
| Field | Type | Description |
|
|
1086
|
+
|-------|------|-------------|
|
|
1087
|
+
| `clip_id` | uint64 | Source clip ID |
|
|
1088
|
+
| `new_clip_id` | uint64 | Destination clip ID |
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
### RecorderClipFlagSetRequest
|
|
1092
|
+
|
|
1093
|
+
Request to set a clip flag.
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
| Field | Type | Description |
|
|
1097
|
+
|-------|------|-------------|
|
|
1098
|
+
| `clip_id` | uint64 | Clip ID |
|
|
1099
|
+
| `flag` | uint64 | Flag to set/clear |
|
|
1100
|
+
| `value` | bool | Flag value |
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
### RecorderClipRange
|
|
1104
|
+
|
|
1105
|
+
Clip id range.
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
| Field | Type | Description |
|
|
1109
|
+
|-------|------|-------------|
|
|
1110
|
+
| `low` | uint64 | Low clip ID |
|
|
1111
|
+
| `high` | uint64 | High clip ID |
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
### RecorderClipRemoveRequest
|
|
1115
|
+
|
|
1116
|
+
Request to remove a clip.
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
| Field | Type | Description |
|
|
1120
|
+
|-------|------|-------------|
|
|
1121
|
+
| `clip_id` | uint64 | Clip ID to remove |
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
### RecorderClipsClearRequest
|
|
1125
|
+
|
|
1126
|
+
Request to clear clips with filters.
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
| Field | Type | Description |
|
|
1130
|
+
|-------|------|-------------|
|
|
1131
|
+
| `protected_ranges` | repeated RecorderClipRange | Protected time ranges |
|
|
1132
|
+
| `must_have_flags` | uint64 | Clips must have these flags |
|
|
1133
|
+
| `must_not_have_flags` | uint64 | Clips must not have these flags |
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
### RecorderClipsGetRequest
|
|
1137
|
+
|
|
1138
|
+
Request to get all clips from a recorder.
|
|
1139
|
+
|
|
1140
|
+
Empty - returns all clips
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
### RecorderClipsGetResponse
|
|
1144
|
+
|
|
1145
|
+
Response with recorder clips.
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
| Field | Type | Description |
|
|
1149
|
+
|-------|------|-------------|
|
|
1150
|
+
| `clips` | repeated RecorderClip | List of clips |
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
### RecorderClipsVerifyRequest
|
|
1154
|
+
|
|
1155
|
+
Request to verify clip integrity.
|
|
1156
|
+
|
|
1157
|
+
Empty - verifies all clips
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
### RecorderClipsVerifyResponse
|
|
1161
|
+
|
|
1162
|
+
Response with verification errors.
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
| Field | Type | Description |
|
|
1166
|
+
|-------|------|-------------|
|
|
1167
|
+
| `errors` | repeated string | List of errors |
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
### RecorderEvent
|
|
1171
|
+
|
|
1172
|
+
Recorder event notification.
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
| Field | Type | Description |
|
|
1176
|
+
|-------|------|-------------|
|
|
1177
|
+
| `id` | string | Recorder ID |
|
|
1178
|
+
| `online` | bool | Is recorder online |
|
|
1179
|
+
| `message` | optional string | Event message |
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
### RecorderLockedDurationSetRequest
|
|
1183
|
+
|
|
1184
|
+
Request to set locked duration.
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
| Field | Type | Description |
|
|
1188
|
+
|-------|------|-------------|
|
|
1189
|
+
| `frames` | uint32 | Locked duration in frames |
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
### RecorderMetadataSetRequest
|
|
1193
|
+
|
|
1194
|
+
Request to set recorder metadata.
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
| Field | Type | Description |
|
|
1198
|
+
|-------|------|-------------|
|
|
1199
|
+
| `metadata` | sesame.v1.common.TransportMetadata | Metadata to set |
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
### RecorderOkResponse
|
|
1203
|
+
|
|
1204
|
+
Generic OK response.
|
|
1205
|
+
|
|
1206
|
+
Empty - indicates success
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
### RecorderRequest
|
|
1210
|
+
|
|
1211
|
+
Recorder request wrapper.
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
| Field | Type | Description |
|
|
1215
|
+
|-------|------|-------------|
|
|
1216
|
+
| `recorder_id` | string | Recorder ID |
|
|
1217
|
+
| `get_clips` | RecorderClipsGetRequest | |
|
|
1218
|
+
| `add_clip` | RecorderClipAddRequest | |
|
|
1219
|
+
| `remove_clip` | RecorderClipRemoveRequest | |
|
|
1220
|
+
| `clear_clips` | RecorderClipsClearRequest | |
|
|
1221
|
+
| `set_metadata` | RecorderMetadataSetRequest | |
|
|
1222
|
+
| `verify_clips` | RecorderClipsVerifyRequest | |
|
|
1223
|
+
| `set_clip_flag` | RecorderClipFlagSetRequest | |
|
|
1224
|
+
| `copy_clip` | RecorderClipCopyRequest | |
|
|
1225
|
+
| `set_locked_duration` | RecorderLockedDurationSetRequest | |
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
### RecorderResponse
|
|
1229
|
+
|
|
1230
|
+
Recorder response wrapper.
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
| Field | Type | Description |
|
|
1234
|
+
|-------|------|-------------|
|
|
1235
|
+
| `get_clips_response` | RecorderClipsGetResponse | |
|
|
1236
|
+
| `ok_response` | RecorderOkResponse | |
|
|
1237
|
+
| `verify_clips_response` | RecorderClipsVerifyResponse | |
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
### RecorderStatus
|
|
1241
|
+
|
|
1242
|
+
Recorder status.
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
| Field | Type | Description |
|
|
1246
|
+
|-------|------|-------------|
|
|
1247
|
+
| `id` | string | Recorder ID |
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
---
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
## sesame/v1/rpc/rpc.proto
|
|
1254
|
+
|
|
1255
|
+
`sesame.v1.rpc`
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
### Event
|
|
1261
|
+
|
|
1262
|
+
Server event notification.
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
| Field | Type | Description |
|
|
1266
|
+
|-------|------|-------------|
|
|
1267
|
+
| `topic` | sesame.v1.common.EventTopic | Event topic (typed) |
|
|
1268
|
+
| `payload` | bytes | Serialized event payload |
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
### Message
|
|
1272
|
+
|
|
1273
|
+
Top-level message wrapper.
|
|
1274
|
+
All RPC communication uses this message type.
|
|
1275
|
+
Exactly one payload field will be set, determining the message type.
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
| Field | Type | Description |
|
|
1279
|
+
|-------|------|-------------|
|
|
1280
|
+
| `request` | Request | Client request |
|
|
1281
|
+
| `response` | Response | Server response |
|
|
1282
|
+
| `event` | Event | Server event |
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
### Request
|
|
1286
|
+
|
|
1287
|
+
RPC request from client to server.
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
| Field | Type | Description |
|
|
1291
|
+
|-------|------|-------------|
|
|
1292
|
+
| `method` | string | RPC method name |
|
|
1293
|
+
| `seq` | uint32 | Sequence number for matching responses |
|
|
1294
|
+
| `payload` | bytes | Serialized request payload |
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
### Response
|
|
1298
|
+
|
|
1299
|
+
RPC response from server to client.
|
|
1300
|
+
Error handling:
|
|
1301
|
+
- If `ok` is true, `payload` contains the serialized success response and
|
|
1302
|
+
`error` should be empty.
|
|
1303
|
+
- If `ok` is false, `error` contains a human-readable message and `payload`
|
|
1304
|
+
may be empty or contain a partial diagnostic payload.
|
|
1305
|
+
- Transport-level failures (disconnect/timeouts) are not represented here and
|
|
1306
|
+
must be handled by the framing/transport layer.
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
| Field | Type | Description |
|
|
1310
|
+
|-------|------|-------------|
|
|
1311
|
+
| `seq` | uint32 | Sequence number matching request |
|
|
1312
|
+
| `ok` | bool | Success flag |
|
|
1313
|
+
| `payload` | bytes | Serialized response payload |
|
|
1314
|
+
| `error` | string | Error message (if ok == false) |
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
---
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
## sesame/v1/rpc/service.proto
|
|
1321
|
+
|
|
1322
|
+
`sesame.v1.rpc`
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
### SesameAPIService
|
|
1328
|
+
|
|
1329
|
+
Main Sesame API service.
|
|
1330
|
+
|
|
1331
|
+
| Method | Request | Response | Description |
|
|
1332
|
+
|--------|---------|----------|-------------|
|
|
1333
|
+
| `ExecuteCommandList` | .sesame.v1.commands.CommandList | .sesame.v1.commands.CommandExecutionResponse | Execute a list of commands. |
|
|
1334
|
+
| `UpdateSubscriptions` | .sesame.v1.status.SubscriptionRequest | .sesame.v1.common.Empty | Update event subscriptions. |
|
|
1335
|
+
| `NotImplemented` | .sesame.v1.common.Empty | .sesame.v1.common.Empty | Not implemented (placeholder). |
|
|
1336
|
+
| `RequestEvents` | .sesame.v1.common.Empty | stream .sesame.v1.status.Event | Subscribe to events (server streaming). |
|
|
1337
|
+
| `RequestStatus` | .sesame.v1.common.Empty | .sesame.v1.status.Status | Get current system status. |
|
|
1338
|
+
| `RequestRecorderOperation` | .sesame.v1.recorder.RecorderRequest | .sesame.v1.recorder.RecorderResponse | Recorder operations. |
|
|
1339
|
+
| `StartJob` | .sesame.v1.jobs.JobStartRequest | .sesame.v1.jobs.Job | Job operations. |
|
|
1340
|
+
| `AbortJob` | .sesame.v1.jobs.JobAbortRequest | .sesame.v1.jobs.Job | Abort a running job. |
|
|
1341
|
+
| `GetJobStatus` | .sesame.v1.jobs.JobStatusRequest | .sesame.v1.jobs.Job | Fetch status for a job. |
|
|
1342
|
+
| `ListJobs` | .sesame.v1.jobs.JobListRequest | .sesame.v1.jobs.JobList | List jobs. |
|
|
1343
|
+
| `RequestKeyframe` | .sesame.v1.outputs.KeyframeRequest | .sesame.v1.common.Empty | Request keyframe from encoder. |
|
|
1344
|
+
| `RequestIODeviceList` | .sesame.v1.common.Empty | .sesame.v1.status.IODeviceListResponse | Get list of I/O devices. |
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
---
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
## sesame/v1/sources/source.proto
|
|
1351
|
+
|
|
1352
|
+
`sesame.v1.sources`
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
### DeinterlaceType
|
|
1358
|
+
|
|
1359
|
+
Deinterlacing mode for interlaced sources.
|
|
1360
|
+
|
|
1361
|
+
| Value | Name | Description |
|
|
1362
|
+
|-------|------|-------------|
|
|
1363
|
+
| 0 | `DEINTERLACE_TYPE_PROGRESSIVE` | Progressive (no deinterlacing) |
|
|
1364
|
+
| 1 | `DEINTERLACE_TYPE_UPPER_FIELD_FIRST` | Upper field first |
|
|
1365
|
+
| 2 | `DEINTERLACE_TYPE_LOWER_FIELD_FIRST` | Lower field first |
|
|
1366
|
+
| 3 | `DEINTERLACE_TYPE_AUTO` | Auto-detect field order |
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
### PreprocessStep
|
|
1370
|
+
|
|
1371
|
+
Video preprocessing step type.
|
|
1372
|
+
|
|
1373
|
+
| Value | Name | Description |
|
|
1374
|
+
|-------|------|-------------|
|
|
1375
|
+
| 0 | `PREPROCESS_STEP_UNSPECIFIED` | Unspecified (invalid) |
|
|
1376
|
+
| 1 | `PREPROCESS_STEP_VIDEO_SCOPES` | Video scopes/waveform |
|
|
1377
|
+
| 2 | `PREPROCESS_STEP_CHROMA_KEY` | Chroma key |
|
|
1378
|
+
| 3 | `PREPROCESS_STEP_BLUR` | Blur effect |
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
### SourceTextureSize
|
|
1382
|
+
|
|
1383
|
+
Source texture size for GPU upload.
|
|
1384
|
+
|
|
1385
|
+
| Value | Name | Description |
|
|
1386
|
+
|-------|------|-------------|
|
|
1387
|
+
| 0 | `SOURCE_TEXTURE_SIZE_UNSPECIFIED` | Unspecified (invalid) |
|
|
1388
|
+
| 1 | `SOURCE_TEXTURE_SIZE_HD` | HD resolution (1920x1080) |
|
|
1389
|
+
| 2 | `SOURCE_TEXTURE_SIZE_4K` | 4K resolution (3840x2160) |
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
### SourceTransportCommandType
|
|
1393
|
+
|
|
1394
|
+
Source transport command type.
|
|
1395
|
+
|
|
1396
|
+
| Value | Name | Description |
|
|
1397
|
+
|-------|------|-------------|
|
|
1398
|
+
| 0 | `SOURCE_TRANSPORT_CMD_UNSPECIFIED` | Unspecified (invalid) |
|
|
1399
|
+
| 1 | `SOURCE_TRANSPORT_CMD_STOP` | Stop playback |
|
|
1400
|
+
| 2 | `SOURCE_TRANSPORT_CMD_PLAY` | Start playback |
|
|
307
1401
|
| 3 | `SOURCE_TRANSPORT_CMD_SEEK` | Seek to position |
|
|
308
1402
|
| 4 | `SOURCE_TRANSPORT_CMD_LOOP` | Set loop mode |
|
|
309
|
-
| 5 | `SOURCE_TRANSPORT_CMD_LIVE` | Switch to live |
|
|
1403
|
+
| 5 | `SOURCE_TRANSPORT_CMD_LIVE` | Switch to live mode |
|
|
310
1404
|
| 6 | `SOURCE_TRANSPORT_CMD_JOG` | Jog forward/backward |
|
|
311
1405
|
| 7 | `SOURCE_TRANSPORT_CMD_MONITOR` | Monitor mode |
|
|
312
1406
|
| 8 | `SOURCE_TRANSPORT_CMD_SEEK_USER_TIME` | Seek to user timecode |
|
|
313
|
-
| 9 | `SOURCE_TRANSPORT_CMD_TAKE` | Take
|
|
1407
|
+
| 9 | `SOURCE_TRANSPORT_CMD_TAKE` | Take/cut to next |
|
|
314
1408
|
| 10 | `SOURCE_TRANSPORT_CMD_POST_ROLL` | Post-roll |
|
|
315
1409
|
| 11 | `SOURCE_TRANSPORT_CMD_PRE_ROLL` | Pre-roll |
|
|
316
1410
|
| 12 | `SOURCE_TRANSPORT_CMD_NEXT` | Next item |
|
|
@@ -318,786 +1412,645 @@ Oneof `item` — exactly one per command:
|
|
|
318
1412
|
| 14 | `SOURCE_TRANSPORT_CMD_TRANSITIONS_DISABLED` | Disable transitions |
|
|
319
1413
|
| 15 | `SOURCE_TRANSPORT_CMD_SET_SCRUBBING` | Set scrubbing mode |
|
|
320
1414
|
|
|
321
|
-
### DecoderType
|
|
322
1415
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
|
328
|
-
|
|
1416
|
+
### SourceTransportState
|
|
1417
|
+
|
|
1418
|
+
Source transport/playback state.
|
|
1419
|
+
|
|
1420
|
+
| Value | Name | Description |
|
|
1421
|
+
|-------|------|-------------|
|
|
1422
|
+
| 0 | `SOURCE_TRANSPORT_STATE_STOPPED` | Stopped |
|
|
1423
|
+
| 1 | `SOURCE_TRANSPORT_STATE_PLAYING` | Playing |
|
|
1424
|
+
| 2 | `SOURCE_TRANSPORT_STATE_CUEING` | Cueing to position |
|
|
1425
|
+
| 3 | `SOURCE_TRANSPORT_STATE_ERROR` | Error state |
|
|
1426
|
+
| 4 | `SOURCE_TRANSPORT_STATE_PLAYING_LIVE` | Playing live (no seeking) |
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
### SourceType
|
|
1430
|
+
|
|
1431
|
+
Type of video/audio source.
|
|
1432
|
+
|
|
1433
|
+
| Value | Name | Description |
|
|
1434
|
+
|-------|------|-------------|
|
|
1435
|
+
| 0 | `SOURCE_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
1436
|
+
| 1 | `SOURCE_TYPE_FILE` | File source (video/audio file) |
|
|
1437
|
+
| 2 | `SOURCE_TYPE_RECORDER` | Recorder playback source |
|
|
1438
|
+
| 3 | `SOURCE_TYPE_BROWSER` | Browser/CEF source |
|
|
1439
|
+
| 4 | `SOURCE_TYPE_RTT` | Render-to-texture source |
|
|
1440
|
+
| 5 | `SOURCE_TYPE_DECKLINK` | Blackmagic Decklink capture |
|
|
1441
|
+
| 6 | `SOURCE_TYPE_SIGNAL_GENERATOR` | Test signal generator |
|
|
1442
|
+
| 7 | `SOURCE_TYPE_SYSTEM_AUDIO` | System audio input |
|
|
1443
|
+
| 8 | `SOURCE_TYPE_SRT_STREAM` | SRT stream |
|
|
1444
|
+
| 9 | `SOURCE_TYPE_WEBSOCKET` | WebSocket stream |
|
|
1445
|
+
| 10 | `SOURCE_TYPE_MOQ` | Media over QUIC stream |
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
### BrowserSourceConfig
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
| Field | Type | Description |
|
|
1454
|
+
|-------|------|-------------|
|
|
1455
|
+
| `url` | string | Initial page URL |
|
|
1456
|
+
| `width` | uint32 | Optional browser width hint |
|
|
1457
|
+
| `height` | uint32 | Optional browser height hint |
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
### DecklinkSourceConfig
|
|
1461
|
+
|
|
1462
|
+
Decklink source configuration.
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
| Field | Type | Description |
|
|
1466
|
+
|-------|------|-------------|
|
|
1467
|
+
| `device_index` | uint32 | Decklink device index |
|
|
1468
|
+
| `video_format` | sesame.v1.common.VideoFormat | Video format |
|
|
1469
|
+
| `sync_group` | optional uint32 | Sync group for genlock |
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
### EjectPlaylistRequest
|
|
1473
|
+
|
|
1474
|
+
Request to eject playlist from recorder source.
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
| Field | Type | Description |
|
|
1478
|
+
|-------|------|-------------|
|
|
1479
|
+
| `source_id` | string | Source ID |
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
### FileSourceConfig
|
|
1483
|
+
|
|
1484
|
+
Type-specific source payloads.
|
|
1485
|
+
|
|
1486
|
+
|
|
1487
|
+
| Field | Type | Description |
|
|
1488
|
+
|-------|------|-------------|
|
|
1489
|
+
| `url` | string | File URL/path |
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
### LoadPlaylistRequest
|
|
1493
|
+
|
|
1494
|
+
Request to load a playlist into a recorder source.
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
| Field | Type | Description |
|
|
1498
|
+
|-------|------|-------------|
|
|
1499
|
+
| `source_id` | string | Source ID |
|
|
1500
|
+
| `user_playlist_id` | string | User playlist ID |
|
|
1501
|
+
| `items` | repeated sesame.v1.recorder.PlaylistItem | Playlist items |
|
|
1502
|
+
| `start_time_us` | optional int64 | Start time (us) |
|
|
1503
|
+
| `start_index` | optional int64 | Start item index |
|
|
1504
|
+
| `material_pos_us` | optional int64 | Material position (us) |
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
### MoqSourceConfig
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
| Field | Type | Description |
|
|
1513
|
+
|-------|------|-------------|
|
|
1514
|
+
| `url` | string | MoQ relay URL |
|
|
1515
|
+
| `broadcast` | string | Broadcast namespace |
|
|
1516
|
+
| `key` | string | Authentication key |
|
|
1517
|
+
| `decode_buffer_frames` | uint32 | Live buffer size in frames (0 = use default) |
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
### RTTSourceConfig
|
|
1521
|
+
|
|
1522
|
+
RTT (Render-to-Texture) source configuration.
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
| Field | Type | Description |
|
|
1526
|
+
|-------|------|-------------|
|
|
1527
|
+
| `rtt_id` | string | ID of the RTT render target to display |
|
|
1528
|
+
| `audio_mixes` | repeated string | Audio mixer IDs to include |
|
|
1529
|
+
| `delay_frames` | uint32 | Delay in frames |
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
### RecorderSourceConfig
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
329
1536
|
|
|
330
|
-
|
|
1537
|
+
| Field | Type | Description |
|
|
1538
|
+
|-------|------|-------------|
|
|
1539
|
+
| `recorder_id` | string | Recorder ID |
|
|
1540
|
+
| `codec` | sesame.v1.common.CodecType | Preferred hardware decoder codec |
|
|
331
1541
|
|
|
332
|
-
| Value | Name |
|
|
333
|
-
|-------|------|
|
|
334
|
-
| 0 | `DEINTERLACE_TYPE_PROGRESSIVE` |
|
|
335
|
-
| 1 | `DEINTERLACE_TYPE_UPPER_FIELD_FIRST` |
|
|
336
|
-
| 2 | `DEINTERLACE_TYPE_LOWER_FIELD_FIRST` |
|
|
337
|
-
| 3 | `DEINTERLACE_TYPE_AUTO` |
|
|
338
1542
|
|
|
339
|
-
###
|
|
1543
|
+
### SignalGeneratorSourceConfig
|
|
340
1544
|
|
|
341
|
-
| Value | Name | Description |
|
|
342
|
-
|-------|------|-------------|
|
|
343
|
-
| 0 | `SOURCE_TEXTURE_SIZE_UNSPECIFIED` | Default |
|
|
344
|
-
| 1 | `SOURCE_TEXTURE_SIZE_HD` | 1920×1080 |
|
|
345
|
-
| 2 | `SOURCE_TEXTURE_SIZE_4K` | 3840×2160 |
|
|
346
1545
|
|
|
347
|
-
### PreprocessStep
|
|
348
1546
|
|
|
349
|
-
| Value | Name | Description |
|
|
350
|
-
|-------|------|-------------|
|
|
351
|
-
| 0 | `PREPROCESS_STEP_UNSPECIFIED` | Invalid |
|
|
352
|
-
| 1 | `PREPROCESS_STEP_VIDEO_SCOPES` | Video scopes/waveform |
|
|
353
|
-
| 2 | `PREPROCESS_STEP_CHROMA_KEY` | Chroma key |
|
|
354
|
-
| 3 | `PREPROCESS_STEP_BLUR` | Blur effect |
|
|
355
1547
|
|
|
356
|
-
###
|
|
1548
|
+
### SourceAddRequest
|
|
1549
|
+
|
|
1550
|
+
Request to add a new source.
|
|
357
1551
|
|
|
358
|
-
Shared settings for all source types.
|
|
359
1552
|
|
|
360
1553
|
| Field | Type | Description |
|
|
361
1554
|
|-------|------|-------------|
|
|
362
|
-
| `
|
|
363
|
-
| `
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
| `texture_size` | SourceTextureSize | GPU texture size |
|
|
370
|
-
| `deinterlace` | DeinterlaceType | Deinterlace mode |
|
|
371
|
-
| `video_processors` | VideoProcessor[] | Video preprocessors |
|
|
1555
|
+
| `id` | string | Unique source ID |
|
|
1556
|
+
| `config` | SourceConfig | Source configuration |
|
|
1557
|
+
|
|
1558
|
+
|
|
1559
|
+
### SourceCommonConfig
|
|
1560
|
+
|
|
1561
|
+
Shared fields for all source kinds.
|
|
372
1562
|
|
|
373
|
-
### SourceConfig
|
|
374
1563
|
|
|
375
1564
|
| Field | Type | Description |
|
|
376
1565
|
|-------|------|-------------|
|
|
377
|
-
| `
|
|
1566
|
+
| `user_id` | string | User-defined ID |
|
|
1567
|
+
| `use_as_clock` | bool | Use as master clock |
|
|
1568
|
+
| `audio_only` | bool | Audio-only mode |
|
|
1569
|
+
| `audio_channels` | uint32 | Requested/expected audio channel count |
|
|
1570
|
+
| `loop` | bool | Loop playback (if applicable) |
|
|
1571
|
+
| `play_state` | SourceTransportState | Initial playback state |
|
|
1572
|
+
| `mip_map` | bool | Generate mipmaps |
|
|
1573
|
+
| `texture_size` | SourceTextureSize | Texture size for GPU upload |
|
|
1574
|
+
| `deinterlace` | DeinterlaceType | Deinterlace mode |
|
|
1575
|
+
| `video_processors` | repeated VideoProcessor | Video processors |
|
|
378
1576
|
|
|
379
|
-
Oneof `details` — exactly one required:
|
|
380
1577
|
|
|
381
|
-
|
|
382
|
-
|-------|------|------------|
|
|
383
|
-
| `file` | FileSourceConfig | `SOURCE_TYPE_FILE` |
|
|
384
|
-
| `recorder` | RecorderSourceConfig | `SOURCE_TYPE_RECORDER` |
|
|
385
|
-
| `browser` | BrowserSourceConfig | `SOURCE_TYPE_BROWSER` |
|
|
386
|
-
| `rtt` | RTTSourceConfig | `SOURCE_TYPE_RTT` |
|
|
387
|
-
| `decklink` | DecklinkSourceConfig | `SOURCE_TYPE_DECKLINK` |
|
|
388
|
-
| `signal_generator` | SignalGeneratorSourceConfig | `SOURCE_TYPE_SIGNAL_GENERATOR` |
|
|
389
|
-
| `system_audio` | SystemAudioSourceConfig | `SOURCE_TYPE_SYSTEM_AUDIO` |
|
|
390
|
-
| `srt_stream` | SrtSourceConfig | `SOURCE_TYPE_SRT_STREAM` |
|
|
391
|
-
| `websocket` | WebsocketSourceConfig | `SOURCE_TYPE_WEBSOCKET` |
|
|
392
|
-
| `moq` | MoqSourceConfig | `SOURCE_TYPE_MOQ` |
|
|
1578
|
+
### SourceConfig
|
|
393
1579
|
|
|
394
|
-
|
|
1580
|
+
Source configuration.
|
|
1581
|
+
Defines how a source is created and configured.
|
|
395
1582
|
|
|
396
|
-
**FileSourceConfig** — `{ url: string }`
|
|
397
1583
|
|
|
398
|
-
|
|
1584
|
+
| Field | Type | Description |
|
|
1585
|
+
|-------|------|-------------|
|
|
1586
|
+
| `common` | SourceCommonConfig | Shared source settings |
|
|
1587
|
+
| `file` | FileSourceConfig | SOURCE_TYPE_FILE |
|
|
1588
|
+
| `recorder` | RecorderSourceConfig | SOURCE_TYPE_RECORDER |
|
|
1589
|
+
| `browser` | BrowserSourceConfig | SOURCE_TYPE_BROWSER |
|
|
1590
|
+
| `rtt` | RTTSourceConfig | SOURCE_TYPE_RTT |
|
|
1591
|
+
| `decklink` | DecklinkSourceConfig | SOURCE_TYPE_DECKLINK |
|
|
1592
|
+
| `signal_generator` | SignalGeneratorSourceConfig | SOURCE_TYPE_SIGNAL_GENERATOR |
|
|
1593
|
+
| `system_audio` | SystemAudioSourceConfig | SOURCE_TYPE_SYSTEM_AUDIO |
|
|
1594
|
+
| `srt_stream` | SrtSourceConfig | SOURCE_TYPE_SRT_STREAM |
|
|
1595
|
+
| `websocket` | WebsocketSourceConfig | SOURCE_TYPE_WEBSOCKET |
|
|
1596
|
+
| `moq` | MoqSourceConfig | SOURCE_TYPE_MOQ |
|
|
399
1597
|
|
|
400
|
-
**BrowserSourceConfig** — `{ url: string, width?: uint32, height?: uint32 }`
|
|
401
1598
|
|
|
402
|
-
|
|
1599
|
+
### SourceMetadataEvent
|
|
403
1600
|
|
|
404
|
-
|
|
1601
|
+
Source metadata transport event notification.
|
|
405
1602
|
|
|
406
|
-
**SignalGeneratorSourceConfig** — `{}` (no fields)
|
|
407
1603
|
|
|
408
|
-
|
|
1604
|
+
| Field | Type | Description |
|
|
1605
|
+
|-------|------|-------------|
|
|
1606
|
+
| `source_id` | string | Source ID |
|
|
1607
|
+
| `metadata` | sesame.v1.common.TransportMetadata | Event metadata |
|
|
409
1608
|
|
|
410
|
-
**SrtSourceConfig** — `{ url: string, decode_buffer_frames: uint32 }`
|
|
411
1609
|
|
|
412
|
-
|
|
1610
|
+
### SourceMetadataSetRequest
|
|
413
1611
|
|
|
414
|
-
|
|
1612
|
+
Request to set source metadata.
|
|
415
1613
|
|
|
416
|
-
### SourceTransportCommand
|
|
417
1614
|
|
|
418
1615
|
| Field | Type | Description |
|
|
419
1616
|
|-------|------|-------------|
|
|
420
|
-
| `source_id` |
|
|
421
|
-
| `
|
|
422
|
-
| `value` | PropValue | Command value |
|
|
1617
|
+
| `source_id` | string | Source ID |
|
|
1618
|
+
| `metadata` | sesame.v1.common.TransportMetadata | Metadata to set |
|
|
423
1619
|
|
|
424
|
-
### LoadPlaylistRequest
|
|
425
1620
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
| `user_playlist_id` | string | User playlist ID |
|
|
430
|
-
| `items` | PlaylistItem[] | Playlist items |
|
|
431
|
-
| `start_time_us` | int64? | Start time (μs) |
|
|
432
|
-
| `start_index` | int64? | Start item index |
|
|
433
|
-
| `material_pos_us` | int64? | Material position (μs) |
|
|
1621
|
+
### SourceRemoveRequest
|
|
1622
|
+
|
|
1623
|
+
Request to remove a source.
|
|
434
1624
|
|
|
435
|
-
### SourceStatus
|
|
436
1625
|
|
|
437
1626
|
| Field | Type | Description |
|
|
438
1627
|
|-------|------|-------------|
|
|
439
|
-
| `id` |
|
|
440
|
-
| `type` | SourceType | Source type |
|
|
441
|
-
| `user_id` | string | User-defined ID |
|
|
442
|
-
| `state` | ConnectionState | Connection state |
|
|
443
|
-
| `transport_state` | SourceTransportState | Transport state |
|
|
444
|
-
| `msg` | string? | Error message |
|
|
445
|
-
| `url` | string | Current URL |
|
|
446
|
-
| `width` | uint32 | Video width |
|
|
447
|
-
| `height` | uint32 | Video height |
|
|
448
|
-
| `fps` | float | Video framerate |
|
|
449
|
-
| `duration_us` | int64 | Duration (μs) |
|
|
450
|
-
| `play_position_us` | int64 | Playback position (μs) |
|
|
451
|
-
| `video_buf` | int32 | Video buffer (frames) |
|
|
452
|
-
| `audio_buf` | int32 | Audio buffer (frames) |
|
|
453
|
-
| `gpu_buf` | int32 | GPU buffer (frames) |
|
|
454
|
-
| `audio_channels` | uint32 | Active audio channels |
|
|
455
|
-
| `audio_level` | float | Audio level (0–1) |
|
|
456
|
-
| `lip_sync_offset_us` | int64 | Lip sync offset (μs) |
|
|
457
|
-
| `decode_timing` | FrameTiming | Decode timing stats |
|
|
458
|
-
| `video_buf_avg` | double | Average video buffer level |
|
|
459
|
-
| `srt_stats` | SRTReceiveStatistics? | SRT stats (if SRT source) |
|
|
1628
|
+
| `id` | string | Source ID to remove |
|
|
460
1629
|
|
|
461
|
-
---
|
|
462
1630
|
|
|
463
|
-
|
|
1631
|
+
### SourceStatus
|
|
464
1632
|
|
|
465
|
-
|
|
1633
|
+
Source status information.
|
|
466
1634
|
|
|
467
|
-
### OutputType
|
|
468
1635
|
|
|
469
|
-
|
|
|
1636
|
+
| Field | Type | Description |
|
|
470
1637
|
|-------|------|-------------|
|
|
471
|
-
|
|
|
472
|
-
|
|
|
473
|
-
|
|
|
474
|
-
|
|
|
475
|
-
|
|
|
476
|
-
|
|
|
477
|
-
|
|
|
478
|
-
|
|
|
1638
|
+
| `id` | string | Source ID |
|
|
1639
|
+
| `type` | SourceType | Source type |
|
|
1640
|
+
| `user_id` | string | User-defined ID |
|
|
1641
|
+
| `state` | sesame.v1.common.ConnectionState | Connection/lifecycle state |
|
|
1642
|
+
| `transport_state` | SourceTransportState | Transport state |
|
|
1643
|
+
| `msg` | optional string | Error message (typically when state == ERROR) |
|
|
1644
|
+
| `url` | string | Current URL |
|
|
1645
|
+
| `width` | uint32 | Video width |
|
|
1646
|
+
| `height` | uint32 | Video height |
|
|
1647
|
+
| `fps` | float | Video framerate |
|
|
1648
|
+
| `duration_us` | int64 | Duration (us) |
|
|
1649
|
+
| `play_position_us` | int64 | Playback position (us) |
|
|
1650
|
+
| `video_buf` | int32 | Video buffer level (frames) |
|
|
1651
|
+
| `audio_buf` | int32 | Audio buffer level (frames) |
|
|
1652
|
+
| `gpu_buf` | int32 | GPU buffer level (frames) |
|
|
1653
|
+
| `audio_channels` | uint32 | Active audio channels |
|
|
1654
|
+
| `audio_level` | float | Audio level (0.0-1.0) |
|
|
1655
|
+
| `lip_sync_offset_us` | int64 | Lip sync offset (us) |
|
|
1656
|
+
| `decode_timing` | sesame.v1.status.FrameTiming | Decode timing stats |
|
|
1657
|
+
| `video_buf_avg` | double | Average video buffer level |
|
|
1658
|
+
| `srt_stats` | optional sesame.v1.status.SRTReceiveStatistics | SRT stats (if SRT source) |
|
|
479
1659
|
|
|
480
|
-
### RecorderType
|
|
481
|
-
|
|
482
|
-
| Value | Name | Description |
|
|
483
|
-
|-------|------|-------------|
|
|
484
|
-
| 0 | `RECORDER_TYPE_UNSPECIFIED` | Invalid |
|
|
485
|
-
| 1 | `RECORDER_TYPE_LIVE` | Live recorder (circular buffer) |
|
|
486
|
-
| 2 | `RECORDER_TYPE_CLIPS` | Clip recorder (ingested frames only) |
|
|
487
1660
|
|
|
488
|
-
###
|
|
1661
|
+
### SourceTransportCommand
|
|
489
1662
|
|
|
490
|
-
|
|
491
|
-
|-------|------|-------------|
|
|
492
|
-
| 0 | `ENCODER_PRESET_UNSPECIFIED` | Invalid |
|
|
493
|
-
| 1 | `ENCODER_PRESET_LOW_LATENCY` | Low-latency tune |
|
|
494
|
-
| 2 | `ENCODER_PRESET_LOW_LATENCY_IDR_ONLY` | Low-latency, IDR-only GOP |
|
|
495
|
-
| 3 | `ENCODER_PRESET_HIGH_QUALITY` | High-quality tune |
|
|
1663
|
+
Source transport command.
|
|
496
1664
|
|
|
497
|
-
### EncoderConfig
|
|
498
1665
|
|
|
499
1666
|
| Field | Type | Description |
|
|
500
1667
|
|-------|------|-------------|
|
|
501
|
-
| `
|
|
502
|
-
| `
|
|
503
|
-
| `
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
1668
|
+
| `source_id` | string | Source ID |
|
|
1669
|
+
| `cmd_type` | SourceTransportCommandType | Command type |
|
|
1670
|
+
| `value` | sesame.v1.common.PropValue | Command value |
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
### SourceUpdateRequest
|
|
1674
|
+
|
|
1675
|
+
Request to update an existing source.
|
|
508
1676
|
|
|
509
|
-
### OutputAddRequest
|
|
510
1677
|
|
|
511
1678
|
| Field | Type | Description |
|
|
512
1679
|
|-------|------|-------------|
|
|
513
|
-
| `id` |
|
|
514
|
-
| `
|
|
515
|
-
| `audio_mix_ids` | string[] | Audio mixer IDs |
|
|
516
|
-
| `use_as_clock` | bool | Use as master clock |
|
|
1680
|
+
| `id` | string | Source ID to update |
|
|
1681
|
+
| `config` | SourceConfig | New configuration |
|
|
517
1682
|
|
|
518
|
-
Oneof `output` — exactly one required:
|
|
519
1683
|
|
|
520
|
-
|
|
521
|
-
|-------|------|
|
|
522
|
-
| `websocket` | EncodedWebSocketOutputConfig |
|
|
523
|
-
| `recorder` | EncodedRecorderOutputConfig |
|
|
524
|
-
| `super_slowmo_recorder` | EncodedSuperSlowMoRecorderOutputConfig |
|
|
525
|
-
| `srt` | EncodedSrtOutputConfig |
|
|
526
|
-
| `moq` | EncodedMoqOutputConfig |
|
|
527
|
-
| `decklink` | DecklinkOutputConfig |
|
|
528
|
-
| `system_audio` | SystemAudioOutputConfig |
|
|
1684
|
+
### SrtSourceConfig
|
|
529
1685
|
|
|
530
|
-
### Output Type Configs
|
|
531
1686
|
|
|
532
|
-
**EncodedWebSocketOutputConfig** — `{ channel: string, encoder: EncoderConfig }`
|
|
533
1687
|
|
|
534
|
-
**EncodedRecorderOutputConfig** — `{ encoder: EncoderConfig, filename: string, size_gb: uint32, group_id: string, recorder_type: RecorderType }`
|
|
535
1688
|
|
|
536
|
-
|
|
1689
|
+
| Field | Type | Description |
|
|
1690
|
+
|-------|------|-------------|
|
|
1691
|
+
| `url` | string | SRT URL |
|
|
1692
|
+
| `decode_buffer_frames` | uint32 | Live buffer size in frames (0 = use default) |
|
|
537
1693
|
|
|
538
|
-
**EncodedSrtOutputConfig** — `{ url: string, encoder: EncoderConfig }`
|
|
539
1694
|
|
|
540
|
-
|
|
1695
|
+
### SystemAudioSourceConfig
|
|
541
1696
|
|
|
542
|
-
**DecklinkOutputConfig** — `{ device_index: uint32, video_format: VideoFormat, key_and_fill: bool }`
|
|
543
1697
|
|
|
544
|
-
**SystemAudioOutputConfig** — `{ device_name: string }`
|
|
545
1698
|
|
|
546
|
-
### OutputStatus
|
|
547
1699
|
|
|
548
1700
|
| Field | Type | Description |
|
|
549
1701
|
|-------|------|-------------|
|
|
550
|
-
| `
|
|
551
|
-
| `type` | OutputType | Output type |
|
|
552
|
-
| `state` | ConnectionState | Connection state |
|
|
553
|
-
| `msg` | string? | Error message |
|
|
554
|
-
| `url` | string | Output URL |
|
|
555
|
-
| `buffer_size` | uint32 | Buffer size (frames) |
|
|
556
|
-
| `srt_stats` | SRTSendStatistics? | SRT stats (if SRT output) |
|
|
1702
|
+
| `device_name` | string | System input/output device name, empty for default |
|
|
557
1703
|
|
|
558
|
-
---
|
|
559
1704
|
|
|
560
|
-
|
|
1705
|
+
### VideoProcessor
|
|
561
1706
|
|
|
562
|
-
|
|
1707
|
+
Video processor instance configuration.
|
|
563
1708
|
|
|
564
|
-
### NodeType
|
|
565
1709
|
|
|
566
|
-
|
|
|
1710
|
+
| Field | Type | Description |
|
|
567
1711
|
|-------|------|-------------|
|
|
568
|
-
|
|
|
569
|
-
|
|
|
570
|
-
|
|
|
571
|
-
| 3 | `NODE_TYPE_VIDEO_BOX` | Video source display |
|
|
572
|
-
| 4 | `NODE_TYPE_IMAGE` | Image/texture |
|
|
573
|
-
| 5 | `NODE_TYPE_EFFECT_RTT` | Render-to-texture effect |
|
|
574
|
-
| 6 | `NODE_TYPE_EFFECT_TIMECODE` | Timecode display effect |
|
|
575
|
-
| 7 | `NODE_TYPE_EFFECT_CLIP_PLANE` | Clip plane effect |
|
|
576
|
-
|
|
577
|
-
### AnimationChannelEvaluationMode
|
|
1712
|
+
| `id` | string | Unique instance ID |
|
|
1713
|
+
| `type` | PreprocessStep | Processor type |
|
|
1714
|
+
| `params` | repeated VideoProcessorParam | Processor parameters |
|
|
578
1715
|
|
|
579
|
-
| Value | Name | Description |
|
|
580
|
-
|-------|------|-------------|
|
|
581
|
-
| 0 | `ANIM_MODE_CONSTANT` | Hold last value |
|
|
582
|
-
| 1 | `ANIM_MODE_STATE_FROM` | Use initial value |
|
|
583
|
-
| 2 | `ANIM_MODE_LOOP` | Loop animation |
|
|
584
|
-
| 3 | `ANIM_MODE_BOUNCE` | Ping-pong |
|
|
585
1716
|
|
|
586
|
-
###
|
|
1717
|
+
### VideoProcessorParam
|
|
587
1718
|
|
|
588
|
-
|
|
589
|
-
|-------|------|-------------|
|
|
590
|
-
| `id` | string | Unique compositor ID |
|
|
591
|
-
| `multisample` | bool | Enable MSAA |
|
|
592
|
-
| `width` | uint32 | Width |
|
|
593
|
-
| `height` | uint32 | Height |
|
|
1719
|
+
Video processor parameter (mirrors AudioPluginParam).
|
|
594
1720
|
|
|
595
|
-
### NodeAddRequest
|
|
596
1721
|
|
|
597
1722
|
| Field | Type | Description |
|
|
598
1723
|
|-------|------|-------------|
|
|
599
|
-
| `
|
|
600
|
-
| `
|
|
601
|
-
| `node_id` | string | New node ID |
|
|
602
|
-
| `node_type` | NodeType | Node type |
|
|
1724
|
+
| `id` | uint32 | Parameter ID |
|
|
1725
|
+
| `float_value` | float | Parameter value |
|
|
603
1726
|
|
|
604
|
-
### PropertySetRequest
|
|
605
1727
|
|
|
606
|
-
|
|
607
|
-
|-------|------|-------------|
|
|
608
|
-
| `domain` | PropertyDomain | Property domain (compositor, audio mixer, source) |
|
|
609
|
-
| `address` | string | Node/effect/channel address |
|
|
610
|
-
| `property` | string | Property name |
|
|
611
|
-
| `value` | PropValue | Value to set |
|
|
1728
|
+
### WebsocketSourceConfig
|
|
612
1729
|
|
|
613
|
-
### PropertyAnimateRequest
|
|
614
1730
|
|
|
615
|
-
| Field | Type | Description |
|
|
616
|
-
|-------|------|-------------|
|
|
617
|
-
| `domain` | PropertyDomain | Property domain |
|
|
618
|
-
| `address` | string | Node/effect address |
|
|
619
|
-
| `property` | string | Property name |
|
|
620
|
-
| `keyframes` | KeyFrame[] | Animation keyframes |
|
|
621
|
-
| `before` | AnimationChannelEvaluationMode | Mode before first keyframe |
|
|
622
|
-
| `after` | AnimationChannelEvaluationMode | Mode after last keyframe |
|
|
623
1731
|
|
|
624
|
-
### KeyFrame
|
|
625
1732
|
|
|
626
1733
|
| Field | Type | Description |
|
|
627
1734
|
|-------|------|-------------|
|
|
628
|
-
| `
|
|
629
|
-
| `
|
|
630
|
-
|
|
631
|
-
| `easing_out` | string | Easing function out |
|
|
1735
|
+
| `channel` | string | WebSocket channel/topic |
|
|
1736
|
+
| `decode_buffer_frames` | uint32 | Live buffer size in frames (0 = use default) |
|
|
1737
|
+
|
|
632
1738
|
|
|
633
1739
|
---
|
|
634
1740
|
|
|
635
|
-
## Audio Mixer
|
|
636
1741
|
|
|
637
|
-
|
|
1742
|
+
## sesame/v1/status/statistics.proto
|
|
638
1743
|
|
|
639
|
-
|
|
1744
|
+
`sesame.v1.status`
|
|
640
1745
|
|
|
641
|
-
| Value | Name |
|
|
642
|
-
|-------|------|
|
|
643
|
-
| 0 | `AUDIO_MIXER_CHANNEL_TYPE_UNSPECIFIED` |
|
|
644
|
-
| 1 | `AUDIO_MIXER_CHANNEL_TYPE_MONO` |
|
|
645
|
-
| 2 | `AUDIO_MIXER_CHANNEL_TYPE_STEREO` |
|
|
646
1746
|
|
|
647
|
-
### AudioMixerChannel
|
|
648
1747
|
|
|
649
|
-
| Field | Type | Description |
|
|
650
|
-
|-------|------|-------------|
|
|
651
|
-
| `id` | string | Channel ID |
|
|
652
|
-
| `source_id` | string | Source ID |
|
|
653
|
-
| `channel_type` | AudioMixerChannelType | Channel type |
|
|
654
|
-
| `source_channels` | uint32[] | Source channel indices |
|
|
655
|
-
| `level` | float | Level (0–1) |
|
|
656
|
-
| `pan` | float | Pan (−1 to 1) |
|
|
657
|
-
| `plugins` | AudioPlugin[] | Audio plugins |
|
|
658
1748
|
|
|
659
|
-
###
|
|
1749
|
+
### FrameTiming
|
|
660
1750
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
| `type` | string | Plugin type (CLAP plugin ID) |
|
|
665
|
-
| `params` | AudioPluginParam[] | Plugin parameters |
|
|
666
|
-
| `aux_input_mix_ids` | string[] | Auxiliary input mixer IDs |
|
|
1751
|
+
Frame timing statistics.
|
|
1752
|
+
Used to monitor decode/encode/render performance.
|
|
1753
|
+
All times are in microseconds (us).
|
|
667
1754
|
|
|
668
|
-
### AudioMixerConfig
|
|
669
1755
|
|
|
670
1756
|
| Field | Type | Description |
|
|
671
1757
|
|-------|------|-------------|
|
|
672
|
-
| `
|
|
673
|
-
| `
|
|
674
|
-
| `
|
|
1758
|
+
| `frame_time` | int32 | Current frame time (us) |
|
|
1759
|
+
| `frame_time_avg` | int32 | Average frame time (us) |
|
|
1760
|
+
| `frame_time_min` | int32 | Minimum frame time (us) |
|
|
1761
|
+
| `frame_time_max` | int32 | Maximum frame time (us) |
|
|
675
1762
|
|
|
676
|
-
### AudioMixerStatus
|
|
677
1763
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
| `vu` | float[] | Master VU meter values |
|
|
683
|
-
| `channels` | AudioChannelStatus[] | Channel status |
|
|
1764
|
+
### MemoryDomainStats
|
|
1765
|
+
|
|
1766
|
+
Memory domain statistics.
|
|
1767
|
+
Tracks memory usage for different allocation domains.
|
|
684
1768
|
|
|
685
|
-
### AudioChannelStatus
|
|
686
1769
|
|
|
687
1770
|
| Field | Type | Description |
|
|
688
1771
|
|-------|------|-------------|
|
|
689
|
-
| `
|
|
690
|
-
| `
|
|
691
|
-
| `
|
|
692
|
-
| `pan` | float | Pan |
|
|
693
|
-
| `vu` | float[] | VU meter values |
|
|
694
|
-
| `has_data` | bool | Has audio data |
|
|
695
|
-
| `read_errors` | uint32 | Read error count |
|
|
696
|
-
| `plugins` | AudioChannelPluginStatus[] | Plugin status |
|
|
697
|
-
|
|
698
|
-
---
|
|
1772
|
+
| `current_bytes` | uint64 | Current allocated bytes |
|
|
1773
|
+
| `peak_bytes` | uint64 | Peak allocated bytes |
|
|
1774
|
+
| `budget_bytes` | uint64 | Budget/limit in bytes |
|
|
699
1775
|
|
|
700
|
-
## Recorder
|
|
701
1776
|
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
### TransitionType
|
|
1777
|
+
### SRTReceiveStatistics
|
|
705
1778
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
| 1 | `TRANSITION_TYPE_FADE_TO_COLOR` | Fade to color |
|
|
710
|
-
| 2 | `TRANSITION_TYPE_FADE_FROM_COLOR` | Fade from color |
|
|
711
|
-
| 3 | `TRANSITION_TYPE_FADE_TO_FROM_COLOR` | Fade to and from color |
|
|
1779
|
+
SRT receive statistics.
|
|
1780
|
+
Provides detailed metrics for SRT stream reception.
|
|
1781
|
+
Used for monitoring stream health and diagnosing issues.
|
|
712
1782
|
|
|
713
|
-
### RecorderClip
|
|
714
1783
|
|
|
715
1784
|
| Field | Type | Description |
|
|
716
1785
|
|-------|------|-------------|
|
|
717
|
-
| `
|
|
718
|
-
| `
|
|
719
|
-
| `
|
|
720
|
-
| `
|
|
721
|
-
| `
|
|
722
|
-
| `
|
|
723
|
-
| `
|
|
724
|
-
| `
|
|
725
|
-
| `
|
|
1786
|
+
| `packets_received` | int64 | Total packets received |
|
|
1787
|
+
| `packets_received_lost` | int32 | Packets lost during reception |
|
|
1788
|
+
| `packet_ack_sent` | int32 | ACK packets sent |
|
|
1789
|
+
| `packet_nack_sent` | int32 | NACK packets sent (retransmission requests) |
|
|
1790
|
+
| `bytes_received` | int64 | Total bytes received |
|
|
1791
|
+
| `bytes_received_lost` | int64 | Bytes lost during reception |
|
|
1792
|
+
| `receive_rate_mbps` | double | Current receive rate (Mbps) |
|
|
1793
|
+
| `tsbpd_delay` | int32 | Timestamp-based packet delivery delay (ms) |
|
|
1794
|
+
| `bandwidth_mbps` | double | Available bandwidth (Mbps) |
|
|
1795
|
+
| `rtt_ms` | double | Round-trip time (ms) |
|
|
726
1796
|
|
|
727
|
-
### PlaylistItem
|
|
728
1797
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
| `transition_time_us` | int64 | Transition duration (μs) |
|
|
734
|
-
| `transition_type` | TransitionType | Transition type |
|
|
735
|
-
| `transition_fade_color` | Vec4 | Fade color |
|
|
736
|
-
| `speed` | float | Playback speed |
|
|
737
|
-
| `audio_routing` | uint32[] | Audio channel routing |
|
|
738
|
-
| `start_time_us` | int64? | Start time (μs) |
|
|
739
|
-
| `end_time_us` | int64? | End time (μs) |
|
|
740
|
-
| `audio_levels` | float[] | Audio levels per channel (0–1) |
|
|
1798
|
+
### SRTSendStatistics
|
|
1799
|
+
|
|
1800
|
+
SRT send statistics.
|
|
1801
|
+
Provides detailed metrics for SRT stream transmission.
|
|
741
1802
|
|
|
742
|
-
### RecorderRequest
|
|
743
1803
|
|
|
744
1804
|
| Field | Type | Description |
|
|
745
1805
|
|-------|------|-------------|
|
|
746
|
-
| `
|
|
1806
|
+
| `packets_sent` | int64 | Total packets sent |
|
|
1807
|
+
| `packets_sent_lost` | int32 | Packets lost during transmission |
|
|
1808
|
+
| `packets_sent_dropped` | int32 | Packets dropped (buffer full, etc.) |
|
|
1809
|
+
| `packets_retransmitted` | int32 | Packets retransmitted |
|
|
1810
|
+
| `packet_ack_received` | int32 | ACK packets received |
|
|
1811
|
+
| `packet_nack_received` | int32 | NACK packets received |
|
|
1812
|
+
| `bytes_sent` | int64 | Total bytes sent |
|
|
1813
|
+
| `bytes_sent_dropped` | int64 | Bytes dropped |
|
|
1814
|
+
| `send_rate_mbps` | double | Current send rate (Mbps) |
|
|
1815
|
+
| `bandwidth_mbps` | double | Available bandwidth (Mbps) |
|
|
1816
|
+
| `rtt_ms` | double | Round-trip time (ms) |
|
|
747
1817
|
|
|
748
|
-
Oneof `request`:
|
|
749
1818
|
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
| `remove_clip` | RecorderClipRemoveRequest |
|
|
755
|
-
| `clear_clips` | RecorderClipsClearRequest |
|
|
756
|
-
| `set_metadata` | RecorderMetadataSetRequest |
|
|
757
|
-
| `verify_clips` | RecorderClipsVerifyRequest |
|
|
758
|
-
| `set_clip_flag` | RecorderClipFlagSetRequest |
|
|
759
|
-
| `copy_clip` | RecorderClipCopyRequest |
|
|
760
|
-
| `set_locked_duration` | RecorderLockedDurationSetRequest |
|
|
1819
|
+
### SystemStatus
|
|
1820
|
+
|
|
1821
|
+
System status information.
|
|
1822
|
+
Provides overall system health and performance metrics.
|
|
761
1823
|
|
|
762
|
-
### RecorderEvent
|
|
763
1824
|
|
|
764
1825
|
| Field | Type | Description |
|
|
765
1826
|
|-------|------|-------------|
|
|
766
|
-
| `
|
|
767
|
-
| `
|
|
768
|
-
| `
|
|
1827
|
+
| `uptime` | uint64 | System uptime in seconds |
|
|
1828
|
+
| `framedrops` | uint32 | Total frames dropped |
|
|
1829
|
+
| `framerate` | float | Current framerate (fps) |
|
|
1830
|
+
| `gpu_mem` | uint64 | GPU memory used (bytes) - deprecated, use gpu_mem_used |
|
|
1831
|
+
| `cpu_mem` | uint64 | CPU memory used (bytes) |
|
|
1832
|
+
| `mem_gpu_pool` | MemoryDomainStats | GPU pool memory stats |
|
|
1833
|
+
| `mem_cpu_pool` | MemoryDomainStats | CPU pool memory stats |
|
|
1834
|
+
| `mem_gpu_adhoc` | MemoryDomainStats | GPU ad-hoc allocation stats |
|
|
1835
|
+
| `mem_gpu_pinned` | MemoryDomainStats | GPU pinned memory stats |
|
|
1836
|
+
| `gpu_mem_total` | uint64 | GPU hardware metrics (via NVML)
|
|
1837
|
+
|
|
1838
|
+
Total GPU memory (bytes) |
|
|
1839
|
+
| `gpu_mem_used` | uint64 | Used GPU memory (bytes) |
|
|
1840
|
+
| `gpu_utilization` | uint32 | SM/compute utilization (0-100%) |
|
|
1841
|
+
| `gpu_mem_utilization` | uint32 | Memory controller utilization (0-100%) |
|
|
1842
|
+
| `gpu_encoder_utilization` | uint32 | NVENC utilization (0-100%) |
|
|
1843
|
+
| `gpu_decoder_utilization` | uint32 | NVDEC utilization (0-100%) |
|
|
1844
|
+
| `gpu_name` | string | GPU model name |
|
|
1845
|
+
| `vma_bytes` | uint64 | Vulkan Memory Allocator total bytes |
|
|
1846
|
+
|
|
769
1847
|
|
|
770
1848
|
---
|
|
771
1849
|
|
|
772
|
-
## Jobs
|
|
773
1850
|
|
|
774
|
-
|
|
1851
|
+
## sesame/v1/status/status.proto
|
|
775
1852
|
|
|
776
|
-
|
|
1853
|
+
`sesame.v1.status`
|
|
777
1854
|
|
|
778
|
-
| Value | Name | Description |
|
|
779
|
-
|-------|------|-------------|
|
|
780
|
-
| 0 | `JOB_TYPE_UNSPECIFIED` | Invalid |
|
|
781
|
-
| 1 | `JOB_TYPE_EXPORT` | Playlist export |
|
|
782
|
-
| 2 | `JOB_TYPE_IMPORT` | Clip import |
|
|
783
1855
|
|
|
784
|
-
### JobStatus
|
|
785
1856
|
|
|
786
|
-
| Value | Name | Description |
|
|
787
|
-
|-------|------|-------------|
|
|
788
|
-
| 0 | `JOB_STATUS_UNSPECIFIED` | Invalid |
|
|
789
|
-
| 1 | `JOB_STATUS_PENDING` | Queued, not started |
|
|
790
|
-
| 2 | `JOB_STATUS_IN_PROGRESS` | Running (includes progress events) |
|
|
791
|
-
| 3 | `JOB_STATUS_COMPLETE` | Finished successfully |
|
|
792
|
-
| 4 | `JOB_STATUS_ABORTED` | Aborted by user |
|
|
793
|
-
| 5 | `JOB_STATUS_ERROR` | Failed with error |
|
|
794
1857
|
|
|
795
|
-
###
|
|
1858
|
+
### IODeviceType
|
|
796
1859
|
|
|
797
|
-
|
|
1860
|
+
I/O device type.
|
|
1861
|
+
|
|
1862
|
+
| Value | Name | Description |
|
|
798
1863
|
|-------|------|-------------|
|
|
799
|
-
|
|
|
800
|
-
| `
|
|
801
|
-
| `
|
|
802
|
-
| `
|
|
803
|
-
|
|
|
804
|
-
| `error` | string? | Error message (when status = ERROR) |
|
|
805
|
-
| `progress` | int64 | Current progress (μs) |
|
|
806
|
-
| `total` | int64 | Total duration (μs) |
|
|
807
|
-
| `timing_info` | TimingInfo? | Timing info (set on import completion) |
|
|
1864
|
+
| 0 | `IO_DEVICE_TYPE_UNSPECIFIED` | Unspecified (invalid) |
|
|
1865
|
+
| 1 | `IO_DEVICE_TYPE_VIDEO_INPUT` | Video input device |
|
|
1866
|
+
| 2 | `IO_DEVICE_TYPE_VIDEO_OUTPUT` | Video output device |
|
|
1867
|
+
| 3 | `IO_DEVICE_TYPE_AUDIO_INPUT` | Audio input device |
|
|
1868
|
+
| 4 | `IO_DEVICE_TYPE_AUDIO_OUTPUT` | Audio output device |
|
|
808
1869
|
|
|
809
|
-
### JobStartRequest
|
|
810
1870
|
|
|
811
|
-
|
|
1871
|
+
### CompositorStatus
|
|
812
1872
|
|
|
813
|
-
|
|
814
|
-
|-------|------|
|
|
815
|
-
| `export_request` | ExportStartRequest |
|
|
816
|
-
| `import_request` | ImportStartRequest |
|
|
1873
|
+
Compositor status.
|
|
817
1874
|
|
|
818
|
-
### JobAbortRequest
|
|
819
1875
|
|
|
820
1876
|
| Field | Type | Description |
|
|
821
1877
|
|-------|------|-------------|
|
|
822
|
-
| `
|
|
823
|
-
|
|
824
|
-
### JobStatusRequest
|
|
1878
|
+
| `id` | string | Compositor ID |
|
|
825
1879
|
|
|
826
|
-
| Field | Type | Description |
|
|
827
|
-
|-------|------|-------------|
|
|
828
|
-
| `job_id` | uint32 | Job ID |
|
|
829
1880
|
|
|
830
|
-
###
|
|
1881
|
+
### ErrorEvent
|
|
831
1882
|
|
|
832
|
-
|
|
1883
|
+
Error event.
|
|
833
1884
|
|
|
834
|
-
### ExportConfiguration
|
|
835
1885
|
|
|
836
1886
|
| Field | Type | Description |
|
|
837
1887
|
|-------|------|-------------|
|
|
838
|
-
| `
|
|
839
|
-
| `container` | ContainerFormat | Container format |
|
|
840
|
-
| `video_codec` | CodecId | Video codec |
|
|
841
|
-
| `width` | uint32 | Width |
|
|
842
|
-
| `height` | uint32 | Height |
|
|
843
|
-
| `fps_num` | uint32 | Frame rate numerator |
|
|
844
|
-
| `fps_den` | uint32 | Frame rate denominator |
|
|
845
|
-
| `rate_control` | RateControlMode | Rate control mode |
|
|
846
|
-
| `video_bitrate_kbps` | uint32 | Video bitrate (kbps) |
|
|
847
|
-
| `max_video_bitrate_kbps` | uint32 | Peak bitrate cap (kbps) |
|
|
848
|
-
| `gop_size` | uint32 | GOP size (frames) |
|
|
849
|
-
| `max_b_frames` | uint32 | Max B-frames |
|
|
850
|
-
| `profile` | string | Codec profile (e.g. main, high) |
|
|
851
|
-
| `level` | string | Codec level (e.g. 4.1) |
|
|
852
|
-
| `pixel_format` | string | Pixel format (e.g. yuv420p) |
|
|
853
|
-
| `color_primaries` | string | Color primaries (e.g. bt709) |
|
|
854
|
-
| `color_transfer` | string | Transfer characteristics |
|
|
855
|
-
| `color_matrix` | string | Matrix coefficients |
|
|
856
|
-
| `full_range` | bool | Full range vs limited |
|
|
857
|
-
| `audio_codec` | AudioCodecId | Audio codec |
|
|
858
|
-
| `audio_bitrate_kbps` | uint32 | Audio bitrate (kbps) |
|
|
859
|
-
| `audio_sample_rate_hz` | uint32 | Audio sample rate (Hz) |
|
|
860
|
-
| `audio_channels` | uint32 | Audio channels |
|
|
861
|
-
| `audio_routing` | uint32[] | Audio channel routing |
|
|
1888
|
+
| `msg` | string | Error message |
|
|
862
1889
|
|
|
863
|
-
### ContainerFormat
|
|
864
1890
|
|
|
865
|
-
|
|
866
|
-
|-------|------|
|
|
867
|
-
| 0 | `CONTAINER_FORMAT_UNSPECIFIED` |
|
|
868
|
-
| 1 | `CONTAINER_FORMAT_MP4` |
|
|
869
|
-
| 2 | `CONTAINER_FORMAT_MOV` |
|
|
870
|
-
| 3 | `CONTAINER_FORMAT_MKV` |
|
|
871
|
-
| 4 | `CONTAINER_FORMAT_MXF` |
|
|
1891
|
+
### Event
|
|
872
1892
|
|
|
873
|
-
|
|
1893
|
+
Event message wrapper.
|
|
874
1894
|
|
|
875
|
-
| Value | Name |
|
|
876
|
-
|-------|------|
|
|
877
|
-
| 0 | `AUDIO_CODEC_ID_UNSPECIFIED` |
|
|
878
|
-
| 1 | `AUDIO_CODEC_ID_AAC` |
|
|
879
|
-
| 2 | `AUDIO_CODEC_ID_OPUS` |
|
|
880
|
-
| 3 | `AUDIO_CODEC_ID_PCM_S16LE` |
|
|
881
|
-
| 4 | `AUDIO_CODEC_ID_PCM_S24LE` |
|
|
882
1895
|
|
|
883
|
-
|
|
1896
|
+
| Field | Type | Description |
|
|
1897
|
+
|-------|------|-------------|
|
|
1898
|
+
| `error_event` | ErrorEvent | Error event |
|
|
1899
|
+
| `transport_event` | TransportEvent | Transport event |
|
|
1900
|
+
| `callback_event` | sesame.v1.common.Callback | Callback event |
|
|
1901
|
+
| `job_event` | sesame.v1.jobs.Job | Job event (per-job state change) |
|
|
1902
|
+
| `recorder_event` | sesame.v1.recorder.RecorderEvent | Recorder event |
|
|
884
1903
|
|
|
885
|
-
| Value | Name |
|
|
886
|
-
|-------|------|
|
|
887
|
-
| 0 | `RATE_CONTROL_MODE_UNSPECIFIED` |
|
|
888
|
-
| 1 | `RATE_CONTROL_MODE_CBR` |
|
|
889
|
-
| 2 | `RATE_CONTROL_MODE_VBR` |
|
|
890
|
-
| 3 | `RATE_CONTROL_MODE_CQ` |
|
|
891
1904
|
|
|
892
|
-
###
|
|
1905
|
+
### IODeviceItem
|
|
1906
|
+
|
|
1907
|
+
I/O device item.
|
|
1908
|
+
|
|
893
1909
|
|
|
894
1910
|
| Field | Type | Description |
|
|
895
1911
|
|-------|------|-------------|
|
|
896
|
-
| `
|
|
897
|
-
| `
|
|
898
|
-
| `
|
|
899
|
-
| `dst_clip_id` | uint64 | Destination clip ID |
|
|
900
|
-
| `dst_clip_name` | string | Destination clip name |
|
|
901
|
-
| `dst_clip_user_data` | string | Destination clip user data |
|
|
902
|
-
|
|
903
|
-
---
|
|
1912
|
+
| `id` | string | Device ID |
|
|
1913
|
+
| `name` | string | Device name |
|
|
1914
|
+
| `type` | IODeviceType | Device type |
|
|
904
1915
|
|
|
905
|
-
## Status & Events
|
|
906
1916
|
|
|
907
|
-
|
|
1917
|
+
### IODeviceListResponse
|
|
908
1918
|
|
|
909
|
-
|
|
1919
|
+
I/O device list response.
|
|
910
1920
|
|
|
911
|
-
Full system status returned by `RequestStatus`.
|
|
912
1921
|
|
|
913
1922
|
| Field | Type | Description |
|
|
914
1923
|
|-------|------|-------------|
|
|
915
|
-
| `
|
|
916
|
-
| `render_status_gpu` | FrameTiming | GPU render timing |
|
|
917
|
-
| `render_status_cpu` | FrameTiming | CPU render timing |
|
|
918
|
-
| `sources` | SourceStatus[] | All source status |
|
|
919
|
-
| `compositions` | CompositorStatus[] | All compositor status |
|
|
920
|
-
| `audio_mixes` | AudioMixerStatus[] | All audio mixer status |
|
|
921
|
-
| `outputs` | OutputStatus[] | All output status |
|
|
922
|
-
| `recorders` | RecorderStatus[] | All recorder status |
|
|
1924
|
+
| `devices` | repeated IODeviceItem | List of devices |
|
|
923
1925
|
|
|
924
|
-
### Event
|
|
925
1926
|
|
|
926
|
-
|
|
1927
|
+
### Status
|
|
927
1928
|
|
|
928
|
-
|
|
929
|
-
|-------|------|-------|
|
|
930
|
-
| `error_event` | ErrorEvent | `EVENT_TOPIC_ERROR` |
|
|
931
|
-
| `transport_event` | TransportEvent | `EVENT_TOPIC_TRANSPORT` |
|
|
932
|
-
| `callback_event` | Callback | `EVENT_TOPIC_CALLBACK` |
|
|
933
|
-
| `job_event` | Job | `EVENT_TOPIC_JOB` |
|
|
934
|
-
| `recorder_event` | RecorderEvent | `EVENT_TOPIC_RECORDER` |
|
|
1929
|
+
Overall system status.
|
|
935
1930
|
|
|
936
|
-
### TransportEvent
|
|
937
1931
|
|
|
938
1932
|
| Field | Type | Description |
|
|
939
1933
|
|-------|------|-------------|
|
|
940
|
-
| `
|
|
941
|
-
| `
|
|
942
|
-
| `
|
|
943
|
-
| `
|
|
944
|
-
| `
|
|
945
|
-
| `
|
|
946
|
-
| `
|
|
947
|
-
| `
|
|
948
|
-
|
|
949
|
-
| `user_playlist_id` | string | User playlist ID |
|
|
950
|
-
| `playlist_index` | uint32 | Playlist item index |
|
|
951
|
-
| `playlist_length` | uint32 | Playlist length |
|
|
952
|
-
| `clip_id` | uint64 | Clip ID |
|
|
953
|
-
| `clip_position_us` | int64 | Position within clip (μs) |
|
|
954
|
-
| `clip_duration_us` | int64 | Clip duration (μs) |
|
|
955
|
-
| `preroll` | uint32 | Pre-roll frames |
|
|
956
|
-
| `postroll` | uint32 | Post-roll frames |
|
|
957
|
-
| `metadata` | string | Transport metadata |
|
|
1934
|
+
| `system_status` | SystemStatus | System status |
|
|
1935
|
+
| `render_status_gpu` | FrameTiming | GPU render timing |
|
|
1936
|
+
| `render_status_cpu` | FrameTiming | CPU render timing |
|
|
1937
|
+
| `sources` | repeated sesame.v1.sources.SourceStatus | Source status |
|
|
1938
|
+
| `compositions` | repeated CompositorStatus | Compositor status |
|
|
1939
|
+
| `audio_mixes` | repeated sesame.v1.audio.AudioMixerStatus | Audio mixer status |
|
|
1940
|
+
| `outputs` | repeated sesame.v1.outputs.OutputStatus | Output status |
|
|
1941
|
+
| `recorders` | repeated sesame.v1.recorder.RecorderStatus | Recorder status |
|
|
1942
|
+
|
|
958
1943
|
|
|
959
1944
|
### SubscriptionRequest
|
|
960
1945
|
|
|
1946
|
+
Subscription request.
|
|
1947
|
+
|
|
1948
|
+
|
|
961
1949
|
| Field | Type | Description |
|
|
962
1950
|
|-------|------|-------------|
|
|
963
|
-
| `event_topics` | EventTopic
|
|
964
|
-
| `channels` | string
|
|
1951
|
+
| `event_topics` | repeated sesame.v1.common.EventTopic | Typed event topics to subscribe to |
|
|
1952
|
+
| `channels` | repeated string | Dynamic channel subscriptions (e.g. video/audio channels) |
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
### TransportEvent
|
|
1956
|
+
|
|
1957
|
+
Transport event (source playback state change).
|
|
965
1958
|
|
|
966
|
-
### IODeviceItem
|
|
967
1959
|
|
|
968
1960
|
| Field | Type | Description |
|
|
969
1961
|
|-------|------|-------------|
|
|
970
|
-
| `
|
|
971
|
-
| `
|
|
972
|
-
| `
|
|
973
|
-
|
|
974
|
-
|
|
1962
|
+
| `source_id` | string | Source ID |
|
|
1963
|
+
| `user_id` | string | User ID |
|
|
1964
|
+
| `uri` | string | Source URI |
|
|
1965
|
+
| `state` | sesame.v1.sources.SourceTransportState | Transport state |
|
|
1966
|
+
| `duration_us` | int64 | Duration (us) |
|
|
1967
|
+
| `position_us` | int64 | Playback position (us) |
|
|
1968
|
+
| `material_position_us` | int64 | Material position (us) |
|
|
1969
|
+
| `user_time_us` | int64 | User time (us) |
|
|
1970
|
+
| `speed` | float | Playback speed |
|
|
1971
|
+
| `user_playlist_id` | string | User playlist ID |
|
|
1972
|
+
| `playlist_index` | uint32 | Playlist item index |
|
|
1973
|
+
| `playlist_length` | uint32 | Playlist length |
|
|
1974
|
+
| `clip_id` | uint64 | Clip ID (if playing from recorder) |
|
|
1975
|
+
| `clip_position_us` | int64 | Position within clip (us) |
|
|
1976
|
+
| `clip_duration_us` | int64 | Duration of clip (us) |
|
|
1977
|
+
| `preroll` | uint32 | |
|
|
1978
|
+
| `postroll` | uint32 | |
|
|
1979
|
+
| `metadata` | sesame.v1.common.TransportMetadata | Transport metadata |
|
|
975
1980
|
|
|
976
|
-
| Value | Name |
|
|
977
|
-
|-------|------|
|
|
978
|
-
| 0 | `IO_DEVICE_TYPE_UNSPECIFIED` |
|
|
979
|
-
| 1 | `IO_DEVICE_TYPE_VIDEO_INPUT` |
|
|
980
|
-
| 2 | `IO_DEVICE_TYPE_VIDEO_OUTPUT` |
|
|
981
|
-
| 3 | `IO_DEVICE_TYPE_AUDIO_INPUT` |
|
|
982
|
-
| 4 | `IO_DEVICE_TYPE_AUDIO_OUTPUT` |
|
|
983
1981
|
|
|
984
1982
|
---
|
|
985
1983
|
|
|
986
|
-
## Statistics
|
|
987
1984
|
|
|
988
|
-
|
|
1985
|
+
## sesame/v1/wire/wire.proto
|
|
989
1986
|
|
|
990
|
-
|
|
1987
|
+
`sesame.v1.wire`
|
|
991
1988
|
|
|
992
|
-
| Field | Type | Description |
|
|
993
|
-
|-------|------|-------------|
|
|
994
|
-
| `frame_time` | int32 | Current frame time (μs) |
|
|
995
|
-
| `frame_time_avg` | int32 | Average frame time (μs) |
|
|
996
|
-
| `frame_time_min` | int32 | Minimum frame time (μs) |
|
|
997
|
-
| `frame_time_max` | int32 | Maximum frame time (μs) |
|
|
998
1989
|
|
|
999
|
-
### SystemStatus
|
|
1000
1990
|
|
|
1001
|
-
| Field | Type | Description |
|
|
1002
|
-
|-------|------|-------------|
|
|
1003
|
-
| `uptime` | uint64 | Uptime (seconds) |
|
|
1004
|
-
| `framedrops` | uint32 | Total frames dropped |
|
|
1005
|
-
| `framerate` | float | Current framerate |
|
|
1006
|
-
| `gpu_mem` | uint64 | GPU memory used (deprecated) |
|
|
1007
|
-
| `cpu_mem` | uint64 | CPU memory used (bytes) |
|
|
1008
|
-
| `mem_gpu_pool` | MemoryDomainStats | GPU pool memory |
|
|
1009
|
-
| `mem_cpu_pool` | MemoryDomainStats | CPU pool memory |
|
|
1010
|
-
| `mem_gpu_adhoc` | MemoryDomainStats | GPU ad-hoc allocations |
|
|
1011
|
-
| `mem_gpu_pinned` | MemoryDomainStats | GPU pinned memory |
|
|
1012
|
-
| `gpu_mem_total` | uint64 | Total GPU memory (bytes) |
|
|
1013
|
-
| `gpu_mem_used` | uint64 | Used GPU memory (bytes) |
|
|
1014
|
-
| `gpu_utilization` | uint32 | SM compute utilization (0–100) |
|
|
1015
|
-
| `gpu_mem_utilization` | uint32 | Memory controller (0–100) |
|
|
1016
|
-
| `gpu_encoder_utilization` | uint32 | NVENC utilization (0–100) |
|
|
1017
|
-
| `gpu_decoder_utilization` | uint32 | NVDEC utilization (0–100) |
|
|
1018
|
-
| `gpu_name` | string | GPU model name |
|
|
1019
|
-
| `vma_bytes` | uint64 | Vulkan Memory Allocator bytes |
|
|
1020
1991
|
|
|
1021
|
-
###
|
|
1992
|
+
### FrameType
|
|
1022
1993
|
|
|
1023
|
-
|
|
1994
|
+
Type of frame carried on the wire.
|
|
1995
|
+
|
|
1996
|
+
| Value | Name | Description |
|
|
1024
1997
|
|-------|------|-------------|
|
|
1025
|
-
|
|
|
1026
|
-
|
|
|
1027
|
-
|
|
|
1998
|
+
| 0 | `FRAME_TYPE_UNSPECIFIED` | |
|
|
1999
|
+
| 1 | `FRAME_TYPE_RPC` | |
|
|
2000
|
+
| 2 | `FRAME_TYPE_VIDEO` | |
|
|
2001
|
+
| 3 | `FRAME_TYPE_AUDIO` | |
|
|
2002
|
+
| 4 | `FRAME_TYPE_MUXED` | |
|
|
2003
|
+
| 5 | `FRAME_TYPE_DECODER_DATA` | |
|
|
2004
|
+
| 6 | `FRAME_TYPE_DATA` | |
|
|
1028
2005
|
|
|
1029
|
-
### SRTReceiveStatistics
|
|
1030
2006
|
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
| `packet_ack_sent` | int32 | ACK packets sent |
|
|
1036
|
-
| `packet_nack_sent` | int32 | NACK packets sent |
|
|
1037
|
-
| `bytes_received` | int64 | Total bytes received |
|
|
1038
|
-
| `bytes_received_lost` | int64 | Bytes lost |
|
|
1039
|
-
| `receive_rate_mbps` | double | Receive rate (Mbps) |
|
|
1040
|
-
| `tsbpd_delay` | int32 | TSBPD delay (ms) |
|
|
1041
|
-
| `bandwidth_mbps` | double | Available bandwidth (Mbps) |
|
|
1042
|
-
| `rtt_ms` | double | Round-trip time (ms) |
|
|
2007
|
+
### FrameHeader
|
|
2008
|
+
|
|
2009
|
+
Header for every websocket / MoQ frame.
|
|
2010
|
+
Serialized with a 4-byte little-endian size prefix on the wire.
|
|
1043
2011
|
|
|
1044
|
-
### SRTSendStatistics
|
|
1045
2012
|
|
|
1046
2013
|
| Field | Type | Description |
|
|
1047
2014
|
|-------|------|-------------|
|
|
1048
|
-
| `
|
|
1049
|
-
| `
|
|
1050
|
-
| `
|
|
1051
|
-
| `packets_retransmitted` | int32 | Packets retransmitted |
|
|
1052
|
-
| `packet_ack_received` | int32 | ACK packets received |
|
|
1053
|
-
| `packet_nack_received` | int32 | NACK packets received |
|
|
1054
|
-
| `bytes_sent` | int64 | Total bytes sent |
|
|
1055
|
-
| `bytes_sent_dropped` | int64 | Bytes dropped |
|
|
1056
|
-
| `send_rate_mbps` | double | Send rate (Mbps) |
|
|
1057
|
-
| `bandwidth_mbps` | double | Available bandwidth (Mbps) |
|
|
1058
|
-
| `rtt_ms` | double | Round-trip time (ms) |
|
|
2015
|
+
| `type` | FrameType | |
|
|
2016
|
+
| `routing_metadata` | string | Source routing (inbound only) |
|
|
2017
|
+
| `media` | MediaFrameData | Present for VIDEO, AUDIO, MUXED, DECODER_DATA |
|
|
1059
2018
|
|
|
1060
|
-
---
|
|
1061
2019
|
|
|
1062
|
-
|
|
2020
|
+
### MediaCodecData
|
|
1063
2021
|
|
|
1064
|
-
|
|
2022
|
+
Codec parameters for a media stream.
|
|
1065
2023
|
|
|
1066
|
-
| Method | Request | Response | Description |
|
|
1067
|
-
|--------|---------|----------|-------------|
|
|
1068
|
-
| `ExecuteCommandList` | CommandList | CommandExecutionResponse | Execute batched commands |
|
|
1069
|
-
| `UpdateSubscriptions` | SubscriptionRequest | Empty | Update event subscriptions |
|
|
1070
|
-
| `RequestStatus` | Empty | Status | Get full system status |
|
|
1071
|
-
| `RequestEvents` | Empty | stream Event | Subscribe to events (server streaming) |
|
|
1072
|
-
| `StartJob` | JobStartRequest | Job | Start export/import job |
|
|
1073
|
-
| `AbortJob` | JobAbortRequest | Job | Abort a running job |
|
|
1074
|
-
| `GetJobStatus` | JobStatusRequest | Job | Get job status by ID |
|
|
1075
|
-
| `ListJobs` | JobListRequest | JobList | List all jobs |
|
|
1076
|
-
| `RequestRecorderOperation` | RecorderRequest | RecorderResponse | Recorder operations |
|
|
1077
|
-
| `RequestKeyframe` | KeyframeRequest | Empty | Request keyframe from encoder |
|
|
1078
|
-
| `RequestIODeviceList` | Empty | IODeviceListResponse | List I/O devices |
|
|
1079
2024
|
|
|
1080
|
-
|
|
2025
|
+
| Field | Type | Description |
|
|
2026
|
+
|-------|------|-------------|
|
|
2027
|
+
| `codec_type` | sesame.v1.common.CodecType | |
|
|
2028
|
+
| `sample_rate` | uint32 | |
|
|
2029
|
+
| `timebase_num` | uint32 | |
|
|
2030
|
+
| `timebase_den` | uint32 | |
|
|
2031
|
+
| `codec_profile` | uint32 | |
|
|
2032
|
+
| `codec_level` | uint32 | |
|
|
2033
|
+
| `width` | uint32 | |
|
|
2034
|
+
| `height` | uint32 | |
|
|
2035
|
+
| `channels` | uint32 | |
|
|
2036
|
+
| `bit_depth` | uint32 | |
|
|
1081
2037
|
|
|
1082
|
-
## Event Subscriptions
|
|
1083
2038
|
|
|
1084
|
-
|
|
2039
|
+
### MediaFrameData
|
|
1085
2040
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
2041
|
+
Media-specific fields for VIDEO, AUDIO, MUXED, and DECODER_DATA frames.
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
| Field | Type | Description |
|
|
2045
|
+
|-------|------|-------------|
|
|
2046
|
+
| `pts` | uint64 | Presentation timestamp in codec_data timebase units |
|
|
2047
|
+
| `keyframe` | bool | True for video key frames |
|
|
2048
|
+
| `codec_data` | MediaCodecData | Codec parameters (may be present on first frame or key frames) |
|
|
1090
2049
|
|
|
1091
|
-
| Topic | Event type | When fired |
|
|
1092
|
-
|-------|-----------|------------|
|
|
1093
|
-
| `EVENT_TOPIC_ERROR` | ErrorEvent | Engine error |
|
|
1094
|
-
| `EVENT_TOPIC_TRANSPORT` | TransportEvent | Source playback state change |
|
|
1095
|
-
| `EVENT_TOPIC_CALLBACK` | Callback | Client callback command echoed |
|
|
1096
|
-
| `EVENT_TOPIC_JOB` | Job | Job lifecycle change + progress (~2 Hz) |
|
|
1097
|
-
| `EVENT_TOPIC_RECORDER` | RecorderEvent | Recorder online/offline |
|
|
1098
2050
|
|
|
1099
2051
|
---
|
|
1100
2052
|
|
|
2053
|
+
|
|
1101
2054
|
## Scene Graph Properties
|
|
1102
2055
|
|
|
1103
2056
|
Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequest`. The `domain` field identifies the owning engine object.
|
|
@@ -1108,19 +2061,19 @@ Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequ
|
|
|
1108
2061
|
|
|
1109
2062
|
| Property | Type | Description |
|
|
1110
2063
|
|----------|------|-------------|
|
|
2064
|
+
| `position` | vec4 | XYZ position |
|
|
1111
2065
|
| `position.x` | float | X position |
|
|
1112
2066
|
| `position.y` | float | Y position |
|
|
1113
|
-
| `position.z` | float | Z position |
|
|
1114
|
-
| `
|
|
2067
|
+
| `position.z` | float | Z position / depth |
|
|
2068
|
+
| `scale` | vec4 | XYZ scale |
|
|
1115
2069
|
| `scale.x` | float | X scale |
|
|
1116
2070
|
| `scale.y` | float | Y scale |
|
|
1117
2071
|
| `scale.z` | float | Z scale |
|
|
1118
|
-
| `
|
|
1119
|
-
| `rotation.x` | float | X rotation |
|
|
1120
|
-
| `rotation.y` | float | Y rotation |
|
|
1121
|
-
| `rotation.z` | float | Z rotation |
|
|
1122
|
-
| `
|
|
1123
|
-
| `opacity` | float | Opacity (0–1) |
|
|
2072
|
+
| `rotation` | vec4 | XYZ rotation (degrees) |
|
|
2073
|
+
| `rotation.x` | float | X rotation (degrees) |
|
|
2074
|
+
| `rotation.y` | float | Y rotation (degrees) |
|
|
2075
|
+
| `rotation.z` | float | Z rotation (degrees) |
|
|
2076
|
+
| `opacity` | float | Opacity (0-1) |
|
|
1124
2077
|
| `priority` | float | Render priority (z-order) |
|
|
1125
2078
|
| `visible` | bool | Visibility |
|
|
1126
2079
|
| `alpha_map` | string | Alpha map source ID |
|
|
@@ -1129,7 +2082,7 @@ Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequ
|
|
|
1129
2082
|
|
|
1130
2083
|
| Property | Type | Description |
|
|
1131
2084
|
|----------|------|-------------|
|
|
1132
|
-
| `size` | vec4 | Width
|
|
2085
|
+
| `size` | vec4 | Width and height |
|
|
1133
2086
|
| `size.x` | float | Width |
|
|
1134
2087
|
| `size.y` | float | Height |
|
|
1135
2088
|
| `origin` | vec4 | Origin point |
|
|
@@ -1173,14 +2126,22 @@ Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequ
|
|
|
1173
2126
|
|
|
1174
2127
|
#### Effects
|
|
1175
2128
|
|
|
1176
|
-
**All effects:**
|
|
2129
|
+
**All effects:**
|
|
2130
|
+
|
|
2131
|
+
| Property | Type | Description |
|
|
2132
|
+
|----------|------|-------------|
|
|
2133
|
+
| `enabled` | bool | Enable/disable the effect |
|
|
1177
2134
|
|
|
1178
|
-
**RTT Effect:**
|
|
2135
|
+
**RTT Effect:**
|
|
2136
|
+
|
|
2137
|
+
| Property | Type | Description |
|
|
2138
|
+
|----------|------|-------------|
|
|
2139
|
+
| `rtt-id` | string | Render-to-texture target ID |
|
|
1179
2140
|
|
|
1180
2141
|
**Timecode Effect:**
|
|
1181
2142
|
|
|
1182
|
-
| Property | Type |
|
|
1183
|
-
|
|
2143
|
+
| Property | Type | Description |
|
|
2144
|
+
|----------|------|-------------|
|
|
1184
2145
|
| `timecode_type` | string | `internal`, `time_of_day`, `recorder`, `recorder_internal`, `recorder_clip_countdown`, `recorder_playlist_countdown`, `recorder_internal_offset`, `recorder_free_space`, `recorder_playback_speed` |
|
|
1185
2146
|
| `timecode_src` | string | Source ID for timecode |
|
|
1186
2147
|
|
|
@@ -1189,10 +2150,10 @@ Properties are set via `PropertySetRequest` or animated via `PropertyAnimateRequ
|
|
|
1189
2150
|
| Property | Type | Description |
|
|
1190
2151
|
|----------|------|-------------|
|
|
1191
2152
|
| `clip-plane` | vec4 | Clip plane XYZW |
|
|
1192
|
-
| `clip-plane.r
|
|
1193
|
-
| `clip-plane.g
|
|
1194
|
-
| `clip-plane.b
|
|
1195
|
-
| `clip-plane.a
|
|
2153
|
+
| `clip-plane.r / clip-plane.x` | float | Clip plane X |
|
|
2154
|
+
| `clip-plane.g / clip-plane.y` | float | Clip plane Y |
|
|
2155
|
+
| `clip-plane.b / clip-plane.z` | float | Clip plane Z |
|
|
2156
|
+
| `clip-plane.a / clip-plane.w` | float | Clip plane W |
|
|
1196
2157
|
| `feather` | float | Feather amount |
|
|
1197
2158
|
|
|
1198
2159
|
### Audio Mixer Domain (`domain.audio_mixer_id`)
|
|
@@ -1201,8 +2162,8 @@ Address format: `channel_id` for channel properties, `channel_id/plugin_id` for
|
|
|
1201
2162
|
|
|
1202
2163
|
| Property | Type | Description |
|
|
1203
2164
|
|----------|------|-------------|
|
|
1204
|
-
| `level` | float | Channel level (0
|
|
1205
|
-
| `pan` | float | Pan position (
|
|
2165
|
+
| `level` | float | Channel level (0-1) |
|
|
2166
|
+
| `pan` | float | Pan position (-1 to 1) |
|
|
1206
2167
|
| `mute` | bool | Mute channel |
|
|
1207
2168
|
| `source_channels` | vec4 | Source channel routing |
|
|
1208
2169
|
| `source_id` | string | Source ID |
|
|
@@ -1216,3 +2177,26 @@ Address format: `processor_id` for preprocessor parameters.
|
|
|
1216
2177
|
|----------|------|-------------|
|
|
1217
2178
|
| `audio_level` | float | Source audio level |
|
|
1218
2179
|
| `<param_id>` | float | Preprocessor parameter (numeric ID as string) |
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
<!-- Hand-maintained sections — appended to generated protocol-reference.md -->
|
|
2183
|
+
<!-- Scene Graph Properties are now auto-generated from property-registry.h -->
|
|
2184
|
+
|
|
2185
|
+
## Event Subscriptions
|
|
2186
|
+
|
|
2187
|
+
Clients must subscribe to receive push events. Call `UpdateSubscriptions` with desired `EventTopic` values:
|
|
2188
|
+
|
|
2189
|
+
```typescript
|
|
2190
|
+
client.addSubscription(sesame.v1.common.EventTopic.EVENT_TOPIC_TRANSPORT, callback);
|
|
2191
|
+
client.addSubscription(sesame.v1.common.EventTopic.EVENT_TOPIC_JOB, callback);
|
|
2192
|
+
```
|
|
2193
|
+
|
|
2194
|
+
| Topic | Event type | When fired |
|
|
2195
|
+
|-------|-----------|------------|
|
|
2196
|
+
| `EVENT_TOPIC_ERROR` | ErrorEvent | Engine error |
|
|
2197
|
+
| `EVENT_TOPIC_TRANSPORT` | TransportEvent | Source playback state change |
|
|
2198
|
+
| `EVENT_TOPIC_CALLBACK` | Callback | Client callback command echoed |
|
|
2199
|
+
| `EVENT_TOPIC_JOB` | Job | Job lifecycle change + progress (~2 Hz) |
|
|
2200
|
+
| `EVENT_TOPIC_RECORDER` | RecorderEvent | Recorder online/offline |
|
|
2201
|
+
|
|
2202
|
+
|