tirtc-devtools-cli 0.2.5 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +8 -2
  2. package/USAGE.md +9 -0
  3. package/dist/cli/src/index.js +6 -0
  4. package/dist/cli/src/role_driver.js +7 -2
  5. package/dist/cli/src/role_live_log.js +13 -1
  6. package/package.json +1 -1
  7. package/vendor/devtools/driver/linux-x64/devtools_driver_probe +0 -0
  8. package/vendor/devtools/driver/macos-arm64/devtools_driver_probe +0 -0
  9. package/vendor/runtime/linux-x64/include/tirtc/audio.h +5 -1
  10. package/vendor/runtime/linux-x64/include/tirtc/av.h +6 -2
  11. package/vendor/runtime/linux-x64/include/tirtc/media_downlink.h +9 -0
  12. package/vendor/runtime/linux-x64/include/tirtc/transport.h +1 -12
  13. package/vendor/runtime/linux-x64/include/tirtc/trp.h +4 -10
  14. package/vendor/runtime/linux-x64/include/tirtc/video_io_apple.h +14 -0
  15. package/vendor/runtime/linux-x64/lib/libmatrix_runtime_facade.a +0 -0
  16. package/vendor/runtime/linux-x64/lib/libmatrix_runtime_foundation_logging.a +0 -0
  17. package/vendor/runtime/linux-x64/lib/libmatrix_runtime_media.a +0 -0
  18. package/vendor/runtime/linux-x64/lib/libmatrix_runtime_transport.a +0 -0
  19. package/vendor/runtime/linux-x64/lib/libmatrix_runtime_video.a +0 -0
  20. package/vendor/runtime/linux-x64/manifest.txt +12 -12
  21. package/vendor/runtime/macos-arm64/include/tirtc/audio.h +5 -1
  22. package/vendor/runtime/macos-arm64/include/tirtc/av.h +6 -2
  23. package/vendor/runtime/macos-arm64/include/tirtc/media_downlink.h +9 -0
  24. package/vendor/runtime/macos-arm64/include/tirtc/transport.h +1 -12
  25. package/vendor/runtime/macos-arm64/include/tirtc/trp.h +4 -10
  26. package/vendor/runtime/macos-arm64/include/tirtc/video_io_apple.h +14 -0
  27. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_audio.a +0 -0
  28. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_facade.a +0 -0
  29. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_foundation_http.a +0 -0
  30. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_foundation_logging.a +0 -0
  31. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_media.a +0 -0
  32. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_transport.a +0 -0
  33. package/vendor/runtime/macos-arm64/lib/libmatrix_runtime_video.a +0 -0
  34. package/vendor/runtime/macos-arm64/manifest.txt +14 -14
package/README.md CHANGED
@@ -65,13 +65,19 @@ prepared asset 会按完整音视频轨循环,任一轨到达源文件末尾
65
65
  `device start` 的启动成功条件是 device listener 已就绪;客户端是否已经扫码连接不属于
66
66
  device 启动失败条件。没有 client 时命令会继续常驻,直到用户结束进程或显式
67
67
  `--duration-ms` 到期,summary 中 `media_send` 会保持未开始或标记为跳过。有 client
68
- 连接时 driver 会为该连接送流;client 断开后,device 继续等待下一次连接,并为新连接
69
- 重新挂载音视频输入和从源资产开头送出新的音视频包。同一时刻最多接受一个 client。
68
+ 连接时 driver 会把该连接挂到共享音视频输入上;client 断开后,device 会清理该连接,
69
+ 并继续接受新的连接。若旧连接的断开回调尚未到达,新连接也会立即挂载并收到同一组
70
+ 音视频输入的数据。
70
71
 
71
72
  native role 失败时,`reason_code` 与 `failed_stage` 仍是主失败事实;`log_upload`
72
73
  只说明失败现场日志是否已上传。上传成功时,CLI JSON 与 `summary.json` 会包含
73
74
  可用于后续抓取的 `log_id`。
74
75
 
76
+ `device start` 与 `client start` 启动的 native role 默认 echo 收到的 command:
77
+ 收到任意 command 后,用同一个 command id 与同一 payload 原样回发。CLI 不新增
78
+ 额外控制命令或开关;`summary.json` 与 `--json` envelope 会包含 `command_echo`
79
+ evidence,用于确认 command 收发面已被覆盖。
80
+
75
81
  打包入口:
76
82
 
77
83
  ```sh
package/USAGE.md CHANGED
@@ -146,6 +146,10 @@ provided. That file is a local handoff artifact for CLI client, runtime sample
146
146
  smoke, and validation automation. The token in that bootstrap is intended for
147
147
  one client connection.
148
148
 
149
+ `device start` starts a native role that echoes every received command with the
150
+ same command id and payload. No extra CLI command or option is required.
151
+ `summary.json` and the `--json` envelope include `command_echo` evidence.
152
+
149
153
  `bootstrap.json` is not a mobile SDK connection protocol. For phone debugging,
150
154
  use token/license QR today; a full session QR or deeplink is a separate product
151
155
  slice.
@@ -160,6 +164,11 @@ node products/cli/bin/tirtc-devtools-cli.js --json client start \
160
164
 
161
165
  Client writes `summary.json`, `events.jsonl`, runtime logs, and `render/first-video-frame.*` for `frame_dump`.
162
166
 
167
+ The native client role also echoes every received command with the same command
168
+ id and payload. `summary.json` and the `--json` envelope include `command_echo`
169
+ evidence, so command receive and reply coverage is visible in normal CLI
170
+ artifacts.
171
+
163
172
  `client start --bootstrap` is meant for the local computer-to-computer DevTools
164
173
  flow. Mobile clients should not be required to fetch a local JSON file from the
165
174
  developer machine.
@@ -141,6 +141,9 @@ device start succeeds once the device listener is ready. It keeps running withou
141
141
  the process is stopped or an explicit --duration-ms deadline is reached.
142
142
  Runtime lifecycle logs are written to stderr. With --json, the final envelope remains on stdout.
143
143
 
144
+ The native device role echoes every received command with the same command id and payload.
145
+ summary.json and the --json envelope include command_echo evidence.
146
+
144
147
  bootstrap.json is a local handoff artifact for client/sample/validation automation.
145
148
  It is only written when --client-token-json is provided.
146
149
  It is not a mobile SDK connection protocol.
@@ -171,6 +174,9 @@ Examples:
171
174
 
172
175
  bootstrap.json is expected to come from a local device start run.
173
176
  For mobile device debugging, use token/license QR or a future session QR/deeplink.
177
+
178
+ The native client role echoes every received command with the same command id and payload.
179
+ summary.json and the --json envelope include command_echo evidence.
174
180
  `)
175
181
  .action((commandOptions) => {
176
182
  runAndExit((0, role_driver_1.runClientStart)(commandOptions, getCliOptions()));
@@ -167,7 +167,11 @@ function redactRequestValue(value) {
167
167
  }
168
168
  const result = {};
169
169
  for (const [key, child] of Object.entries(value)) {
170
- if (key === 'license' || key === 'token' || key === 'client_token' || key === 'secret_key') {
170
+ if (key === 'license' ||
171
+ key === 'token' ||
172
+ key === 'client_token' ||
173
+ key === 'device_secret_key' ||
174
+ key === 'secret_key') {
171
175
  result[key] = '[REDACTED]';
172
176
  }
173
177
  else {
@@ -313,8 +317,8 @@ function buildDeviceRequest(roots, artifactRoot, options) {
313
317
  role: 'device',
314
318
  endpoint: deviceIdentity.endpoint,
315
319
  identity: {
316
- license: deviceIdentity.deviceId + ',' + deviceIdentity.deviceSecretKey,
317
320
  device_id: deviceIdentity.deviceId,
321
+ device_secret_key: deviceIdentity.deviceSecretKey,
318
322
  },
319
323
  bootstrap,
320
324
  streams: {
@@ -553,6 +557,7 @@ async function runRole(role, commandOptions, options) {
553
557
  failed_stage: failedStage(summary),
554
558
  log_id: summary.log_upload?.log_id,
555
559
  log_upload: summary.log_upload,
560
+ command_echo: summary.command_echo,
556
561
  };
557
562
  if (summary.exit_code === 0 && summary.status === 'completed') {
558
563
  printEnvelope(options, 0, 'OK', data);
@@ -83,7 +83,7 @@ function startRoleLiveLog(options) {
83
83
  let processedLineCount = 0;
84
84
  let stopped = false;
85
85
  const log = (message) => {
86
- emit('[device] ' + message);
86
+ emit(new Date().toISOString() + ' [device] ' + message);
87
87
  };
88
88
  const media = nestedRecord(request, 'media');
89
89
  const codec = payloadString(nestedRecord(media, 'video'), 'codec') ??
@@ -145,6 +145,15 @@ function startRoleLiveLog(options) {
145
145
  log('client connected session=' + (session ?? 'unknown'));
146
146
  break;
147
147
  }
148
+ case 'connection.state.changed': {
149
+ const parts = ['connection state changed'];
150
+ appendField(parts, 'session', sessionIndex(payload));
151
+ appendField(parts, 'state', payloadString(payload, 'state'));
152
+ appendField(parts, 'state_code', payloadNumber(payload, 'state_code'));
153
+ appendField(parts, 'error', payloadNumber(payload, 'error'));
154
+ log(parts.join(' '));
155
+ break;
156
+ }
148
157
  case 'connection.session.start': {
149
158
  const session = sessionIndex(payload);
150
159
  if (session !== undefined) {
@@ -219,6 +228,9 @@ function startRoleLiveLog(options) {
219
228
  appendField(parts, 'session', session);
220
229
  appendField(parts, 'first_audio', payloadBoolean(payload, 'sent_first_audio'));
221
230
  appendField(parts, 'first_video', payloadBoolean(payload, 'sent_first_video'));
231
+ appendField(parts, 'exit_reason', payloadString(payload, 'exit_reason'));
232
+ appendField(parts, 'submit_error_track', payloadString(payload, 'submit_error_track'));
233
+ appendField(parts, 'submit_error_status', payloadNumber(payload, 'submit_error_status'));
222
234
  appendField(parts, 'elapsed', elapsed === undefined ? undefined : formatDurationMs(elapsed));
223
235
  log(parts.join(' '));
224
236
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tirtc-devtools-cli",
3
- "version": "0.2.5",
3
+ "version": "0.3.1",
4
4
  "private": false,
5
5
  "main": "dist/cli/src/index.js",
6
6
  "types": "dist/cli/src/index.d.ts",
@@ -94,6 +94,10 @@ typedef struct TirtcPendingDurationMetrics {
94
94
  typedef struct TirtcAudioOutputMetricsSnapshot {
95
95
  TirtcOutputStutterMetrics stutter;
96
96
  TirtcPendingDurationMetrics pending;
97
+ double input_bitrate_kbps;
98
+ double input_packet_rate;
99
+ double render_callback_rate;
100
+ uint32_t rate_window_duration_ms;
97
101
  } TirtcAudioOutputMetricsSnapshot;
98
102
 
99
103
  /**
@@ -101,7 +105,7 @@ typedef struct TirtcAudioOutputMetricsSnapshot {
101
105
  *
102
106
  * The snapshot is a caller-owned value copy. Zero-initialized fields mean the output has not yet
103
107
  * observed a matching runtime fact or only cached zero-state is available. This diagnostic API is
104
- * intended for UI/debug visibility and logs, not for playback control decisions.
108
+ * intended for UI/debug visibility and logs, not for output control decisions.
105
109
  */
106
110
  typedef struct TirtcAudioOutputDebugSnapshot {
107
111
  TirtcMediaCodec codec;
@@ -46,6 +46,11 @@ typedef struct TirtcVideoOutputMetricsSnapshot {
46
46
  TirtcVideoOutputStartupMetrics startup;
47
47
  TirtcOutputStutterMetrics stutter;
48
48
  TirtcPendingDurationMetrics pending;
49
+ double input_bitrate_kbps;
50
+ double input_fps;
51
+ double decoded_fps;
52
+ double render_fps;
53
+ uint32_t rate_window_duration_ms;
49
54
  } TirtcVideoOutputMetricsSnapshot;
50
55
 
51
56
  /**
@@ -53,8 +58,7 @@ typedef struct TirtcVideoOutputMetricsSnapshot {
53
58
  *
54
59
  * The snapshot is a caller-owned value copy. `resolved_decoder_backend` is the runtime route that
55
60
  * has actually locked, so AUTO fallback reports the concrete backend family instead of the request.
56
- * Zero values mean no current fact or only cached zero-state is available. Additive changes require
57
- * a new V2 struct/function instead of extending this layout.
61
+ * Zero values mean no current fact or only cached zero-state is available.
58
62
  */
59
63
  typedef struct TirtcVideoOutputDebugSnapshot {
60
64
  TirtcMediaCodec codec;
@@ -69,6 +69,10 @@ typedef struct TirtcMediaDownlinkPendingMetricsSnapshot {
69
69
  typedef struct TirtcMediaDownlinkAudioMetricsSnapshot {
70
70
  TirtcMediaDownlinkStutterMetricsSnapshot stutter;
71
71
  TirtcMediaDownlinkPendingMetricsSnapshot pending;
72
+ double input_bitrate_kbps;
73
+ double input_packet_rate;
74
+ double render_callback_rate;
75
+ uint32_t rate_window_duration_ms;
72
76
  } TirtcMediaDownlinkAudioMetricsSnapshot;
73
77
 
74
78
  typedef struct TirtcMediaDownlinkVideoStartupMetricsSnapshot {
@@ -84,6 +88,11 @@ typedef struct TirtcMediaDownlinkVideoMetricsSnapshot {
84
88
  TirtcMediaDownlinkVideoStartupMetricsSnapshot startup;
85
89
  TirtcMediaDownlinkStutterMetricsSnapshot stutter;
86
90
  TirtcMediaDownlinkPendingMetricsSnapshot pending;
91
+ double input_bitrate_kbps;
92
+ double input_fps;
93
+ double decoded_fps;
94
+ double render_fps;
95
+ uint32_t rate_window_duration_ms;
87
96
  } TirtcMediaDownlinkVideoMetricsSnapshot;
88
97
 
89
98
  /**
@@ -139,7 +139,7 @@ typedef struct TirtcTransportConnServiceOptions {
139
139
  * This is a service-level capacity contract. It applies to the listener as a
140
140
  * whole, not to any single connection and not to any individual stream.
141
141
  *
142
- * The current public contract requires a non-zero value.
142
+ * Set to 0 to leave the listener capacity to the active transport backend.
143
143
  */
144
144
  uint32_t max_connections;
145
145
  } TirtcTransportConnServiceOptions;
@@ -289,17 +289,6 @@ typedef struct TirtcTransportConnCallbacks {
289
289
  */
290
290
  TirtcError tirtc_transport_init(void);
291
291
 
292
- /**
293
- * @brief Enable/disable transport debug mode.
294
- *
295
- * When enabled, transport backend sets verbose vendor SDK log level during runtime init
296
- * and applies it immediately if runtime is already initialized.
297
- *
298
- * @param enabled Non-zero to enable debug mode, zero to disable.
299
- * @return Operation status.
300
- */
301
- TirtcError tirtc_transport_enable_debug(uint8_t enabled);
302
-
303
292
  /**
304
293
  * @brief Uninitialize transport runtime.
305
294
  *
@@ -25,19 +25,13 @@ typedef struct TirtcInitOptions {
25
25
 
26
26
  } TirtcInitOptions;
27
27
 
28
- typedef enum TirtcMediaSendPolicy {
29
-
30
- TIRTC_MEDIA_SEND_POLICY_ON_REQUEST = 0,
31
-
32
- TIRTC_MEDIA_SEND_POLICY_AUTO_ON_CONNECTED = 1,
33
- } TirtcMediaSendPolicy;
34
-
35
28
  typedef struct TirtcConnServiceStartOptions {
36
- const char* license;
29
+ const char* device_id;
37
30
 
38
- uint32_t max_connections;
31
+ const char* device_secret_key;
39
32
 
40
- TirtcMediaSendPolicy media_send_policy;
33
+ /** Set to 0 to leave accepted-connection capacity to the active backend. */
34
+ uint32_t max_connections;
41
35
  } TirtcConnServiceStartOptions;
42
36
 
43
37
  typedef struct TirtcConnConnectOptions {
@@ -20,8 +20,17 @@ typedef enum TirtcVideoAppleWindowSlot {
20
20
  TIRTC_VIDEO_APPLE_WINDOW_SLOT_RIGHT = 2,
21
21
  } TirtcVideoAppleWindowSlot;
22
22
 
23
+ typedef enum TirtcVideoAppleCameraFacing {
24
+ TIRTC_VIDEO_APPLE_CAMERA_FACING_FRONT = 0,
25
+ TIRTC_VIDEO_APPLE_CAMERA_FACING_BACK = 1,
26
+ } TirtcVideoAppleCameraFacing;
27
+
23
28
  typedef int (*TirtcVideoAppleOnPixelBufferFn)(void* pixel_buffer, void* user_data);
24
29
 
30
+ typedef struct TirtcVideoAppleAvFoundationVinOptions {
31
+ TirtcVideoAppleCameraFacing camera_facing;
32
+ } TirtcVideoAppleAvFoundationVinOptions;
33
+
25
34
  typedef struct TirtcVideoAppleCoreVideoVoutOptions {
26
35
  TirtcVideoAppleVoutTarget target;
27
36
  TirtcVideoAppleOnPixelBufferFn on_pixel_buffer;
@@ -35,6 +44,11 @@ typedef struct TirtcVideoAppleCoreVideoVoutOptions {
35
44
  uint32_t window_height;
36
45
  } TirtcVideoAppleCoreVideoVoutOptions;
37
46
 
47
+ TirtcError tirtc_video_apple_create_avfoundation_vin(TirtcVideoVin** out_vin);
48
+ TirtcError tirtc_video_apple_avfoundation_vin_set_options(
49
+ TirtcVideoVin* vin, const TirtcVideoAppleAvFoundationVinOptions* options);
50
+ TirtcError tirtc_video_apple_avfoundation_vin_get_actual_facing(
51
+ TirtcVideoVin* vin, TirtcVideoAppleCameraFacing* out_camera_facing);
38
52
  TirtcError tirtc_video_apple_create_core_video_vout(TirtcVideoVout** out_vout);
39
53
  TirtcError tirtc_video_apple_core_video_vout_set_options(
40
54
  TirtcVideoVout* vout, const TirtcVideoAppleCoreVideoVoutOptions* options);
@@ -1,9 +1,9 @@
1
1
  platform=linux-x64
2
2
  profile=full
3
- staged_at_utc=2026-05-05T13:45:31Z
3
+ staged_at_utc=2026-05-09T08:58:54Z
4
4
  source_sdk=/Users/allenfeng/Development/Repositories/tirtc-nexus/tirtc-matrix/.build/sdk/linux-x64
5
5
 
6
- bfc096be1484ac2b1c2776ccabfa2a4c6a982e869abf875192ff06fad85e82ca include/tirtc/audio.h
6
+ 92ac54ea714e5a7da536d3d63b955a9e30faf9560ebe670034a79f3ea69c21cb include/tirtc/audio.h
7
7
  6d972ccfe150a3b4f2d7f18fa92b3ade9210c1c8bb754d061ac6b7997b59e2cb include/tirtc/audio_codec.h
8
8
  7bacbdb2d8bb10d6444036a8fef42f2a8e3ea34dfc38e165ee678d61f189db41 include/tirtc/audio_frame.h
9
9
  fb8ea35263167c33487bd3aa503c26ed2dfbf97877f7bda92c10065cd5c97c13 include/tirtc/audio_io.h
@@ -13,33 +13,33 @@ c2e1f31dcc75be461c577d18b1cebe32774f212d51cb4dd2a5b5a9bfe62b693e include/tirtc/
13
13
  51cbc911fe9f9834046f0e0a1a7cdd814a8e194a615894a8b4d11f9e5f095610 include/tirtc/audio_io_windows.h
14
14
  21f60729117260a44af22c1af986ef17d22673b102b7b7a035f492d0665cce16 include/tirtc/audio_processing.h
15
15
  0ca7c3c630b1242f51a0fd8154097c0a332b4c816a5707090e4381719852998c include/tirtc/audio_sample_rate.h
16
- 58807ba56770f38f47aec995661cadf9d3c1d6ea7bfc940767f1ce67317c7546 include/tirtc/av.h
16
+ f40ce007241e4aa6ef2e2bcd589060636ef0e9859a9102c8b955d348f4f7eabc include/tirtc/av.h
17
17
  b3e110ce04057d3be696b120d1abeaf6141711a1c63ca7f9bdf65ed5ec6e16d7 include/tirtc/error.h
18
18
  ae805545a9515edc9b94262e72ad2c7b7d649288166f4daeb450d8a55e82ae0b include/tirtc/foundation/build_info.h
19
19
  7cf8b372a3d48d4de4a65a04c7f102281a7b42cebb9ec247853d3c53afb63b6a include/tirtc/http.h
20
20
  70bbf93b84d9d1a85f376d9986de570c1f658319e1e5ab6d621f7a4d41033f5c include/tirtc/logging.h
21
21
  7e2f7f81afe37e22f5414d9db32438edd948ff775230c3a0a17ff9ac1a0b560e include/tirtc/media_codec.h
22
- ca63fe4fa0c787f20923e264e116fa6d7cb8194a227c03be4e9843d0ce5a9864 include/tirtc/media_downlink.h
22
+ 43c0ac9173b6259a1b1379eac780f4892a0a72572801ac9eb8516c0bdb4913c3 include/tirtc/media_downlink.h
23
23
  e64191a39004165cdcd11b2ca824af34d4bfe02f7ec3c3101fa9291f56488c30 include/tirtc/media_uplink.h
24
- 489f6c9caa3e4094566b660ef0a002a39c66c1956ef0a1bdb6eacca3798c849a include/tirtc/transport.h
25
- bb9c1bf46f2ab51a9f7adb211276c8563b09e7968031c0c6abeebc0eddd66acb include/tirtc/trp.h
24
+ 57be6941026e7dd173e8779b2bb868532d65e41f7917aad476a31ac25c1cd6c3 include/tirtc/transport.h
25
+ fba7954919606e507b6a074440440903665217959699da89ca9dd206772c0ef0 include/tirtc/trp.h
26
26
  92b3db6e2cb02265ad5db01881edce9d4e095b1dadf449dce5d8bb5362957e33 include/tirtc/video_codec.h
27
27
  e51379666c199588cc33279ccf52248035d1cae3d1d468b1615ebf29f0b39c9c include/tirtc/video_frame.h
28
28
  2a02645d82c58d433c7306a9f0bcd31d0f3e560b63822f7e80919761b81a6284 include/tirtc/video_io.h
29
29
  9930dce5e8e2b12a1ab28ee91f3fb46f6cf3487e515ea2b4ec0e00009bd5f070 include/tirtc/video_io_android.h
30
- 005114b9213ec826e18d11eca4b9d65cce2ca0e7c781f03d85292365d9d5dfdd include/tirtc/video_io_apple.h
30
+ f22127424d5978ab0644209b6c25c24e19e320dd2fbda6634e6344597ff7e2be include/tirtc/video_io_apple.h
31
31
  cae0bbeb884e5466a56da15182c78cc22baab6c743f349a58d3595f623333585 include/tirtc/video_io_harmony.h
32
32
  65b5d24fe3a6bc2a299a2220148a153ba4eb0955a49c1c3baabf1fdfed8aabdd include/tirtc/video_io_windows.h
33
33
  8cd6b66bea14890a665cc317f8572429b2c3e4463773f8b77c1e4dc30a4a8747 include/tirtc/video_processing.h
34
34
  ceb7cdd45efae57e5bd53d4177cb20c4a0cb9917fcdd23127b050d69c8b919ac lib/libTiRTC.a
35
35
  b1f4135025cb8e8520a14268d831b9998920a4239f84bb6b409d0e4909fd5bee lib/libcrypto.a
36
36
  296ba0b5efa9d2ac49e3bf278c5d467b31436e73fbc608b736e974bcf9759bde lib/libmatrix_runtime_audio.a
37
- 88f9c545943e4ef80024baf3620e91817ec16a4fea60b0e8c7887a0a41dc9d1b lib/libmatrix_runtime_facade.a
37
+ 8552aba878ffb4c242e4af589784fafbdd938291663af750aaa94d902cba72ce lib/libmatrix_runtime_facade.a
38
38
  ec7bbf8e8744c6645a441a28e24e0645906152cc987d6fcca16af3c3badba940 lib/libmatrix_runtime_foundation_http.a
39
- 4005e0f9ff88f2acc1639b79299c6089ba1b81d1a4fd52fe9d64c5e8603d488a lib/libmatrix_runtime_foundation_logging.a
40
- 8964ab2d93bf0fd4ee6666459ffec53cd35b07288fccc0d46e042e60b8466d4f lib/libmatrix_runtime_media.a
41
- 93dd81cfb9ed8aef29bfa3fb9d18aaed140ac25d00beeff1a0156a9333afa8a5 lib/libmatrix_runtime_transport.a
42
- ac7b85780c75b5d0c3abf1c5293181739a0fceeb2ad8fa930f98bd86bba5daa2 lib/libmatrix_runtime_video.a
39
+ b4f225727bf9c829c3329054112ab56477f1cc5729be1eb4952a85b649ba0a8a lib/libmatrix_runtime_foundation_logging.a
40
+ 031927b01cee74366cf2662559c2ddfe8476531c4af7c549f311503d4da6f424 lib/libmatrix_runtime_media.a
41
+ 4942f5c742a6013e35708f6dd1e5b8ca702454990f1785e82d734aaea6ab114d lib/libmatrix_runtime_transport.a
42
+ 774e8ae6c5e96ff5976bf440bc259044157c51e0b1dab0e77e5e087b7d059f01 lib/libmatrix_runtime_video.a
43
43
  511d521f7972df3993e5976d6e2dbcad7a6fbce9be15071274d0cbd9d51157f5 lib/libssl.a
44
44
  a67ec9034848ef24a1b17671e444daa62a8f9e6b8319a1e932593908720ff2a1 lib/libwebrtc_apm.a
45
45
  700e455255897e3cffab13ca593a6e4d9d11383ae609215cbbd6043a63d47161 lib/libxlog.a
@@ -94,6 +94,10 @@ typedef struct TirtcPendingDurationMetrics {
94
94
  typedef struct TirtcAudioOutputMetricsSnapshot {
95
95
  TirtcOutputStutterMetrics stutter;
96
96
  TirtcPendingDurationMetrics pending;
97
+ double input_bitrate_kbps;
98
+ double input_packet_rate;
99
+ double render_callback_rate;
100
+ uint32_t rate_window_duration_ms;
97
101
  } TirtcAudioOutputMetricsSnapshot;
98
102
 
99
103
  /**
@@ -101,7 +105,7 @@ typedef struct TirtcAudioOutputMetricsSnapshot {
101
105
  *
102
106
  * The snapshot is a caller-owned value copy. Zero-initialized fields mean the output has not yet
103
107
  * observed a matching runtime fact or only cached zero-state is available. This diagnostic API is
104
- * intended for UI/debug visibility and logs, not for playback control decisions.
108
+ * intended for UI/debug visibility and logs, not for output control decisions.
105
109
  */
106
110
  typedef struct TirtcAudioOutputDebugSnapshot {
107
111
  TirtcMediaCodec codec;
@@ -46,6 +46,11 @@ typedef struct TirtcVideoOutputMetricsSnapshot {
46
46
  TirtcVideoOutputStartupMetrics startup;
47
47
  TirtcOutputStutterMetrics stutter;
48
48
  TirtcPendingDurationMetrics pending;
49
+ double input_bitrate_kbps;
50
+ double input_fps;
51
+ double decoded_fps;
52
+ double render_fps;
53
+ uint32_t rate_window_duration_ms;
49
54
  } TirtcVideoOutputMetricsSnapshot;
50
55
 
51
56
  /**
@@ -53,8 +58,7 @@ typedef struct TirtcVideoOutputMetricsSnapshot {
53
58
  *
54
59
  * The snapshot is a caller-owned value copy. `resolved_decoder_backend` is the runtime route that
55
60
  * has actually locked, so AUTO fallback reports the concrete backend family instead of the request.
56
- * Zero values mean no current fact or only cached zero-state is available. Additive changes require
57
- * a new V2 struct/function instead of extending this layout.
61
+ * Zero values mean no current fact or only cached zero-state is available.
58
62
  */
59
63
  typedef struct TirtcVideoOutputDebugSnapshot {
60
64
  TirtcMediaCodec codec;
@@ -69,6 +69,10 @@ typedef struct TirtcMediaDownlinkPendingMetricsSnapshot {
69
69
  typedef struct TirtcMediaDownlinkAudioMetricsSnapshot {
70
70
  TirtcMediaDownlinkStutterMetricsSnapshot stutter;
71
71
  TirtcMediaDownlinkPendingMetricsSnapshot pending;
72
+ double input_bitrate_kbps;
73
+ double input_packet_rate;
74
+ double render_callback_rate;
75
+ uint32_t rate_window_duration_ms;
72
76
  } TirtcMediaDownlinkAudioMetricsSnapshot;
73
77
 
74
78
  typedef struct TirtcMediaDownlinkVideoStartupMetricsSnapshot {
@@ -84,6 +88,11 @@ typedef struct TirtcMediaDownlinkVideoMetricsSnapshot {
84
88
  TirtcMediaDownlinkVideoStartupMetricsSnapshot startup;
85
89
  TirtcMediaDownlinkStutterMetricsSnapshot stutter;
86
90
  TirtcMediaDownlinkPendingMetricsSnapshot pending;
91
+ double input_bitrate_kbps;
92
+ double input_fps;
93
+ double decoded_fps;
94
+ double render_fps;
95
+ uint32_t rate_window_duration_ms;
87
96
  } TirtcMediaDownlinkVideoMetricsSnapshot;
88
97
 
89
98
  /**
@@ -139,7 +139,7 @@ typedef struct TirtcTransportConnServiceOptions {
139
139
  * This is a service-level capacity contract. It applies to the listener as a
140
140
  * whole, not to any single connection and not to any individual stream.
141
141
  *
142
- * The current public contract requires a non-zero value.
142
+ * Set to 0 to leave the listener capacity to the active transport backend.
143
143
  */
144
144
  uint32_t max_connections;
145
145
  } TirtcTransportConnServiceOptions;
@@ -289,17 +289,6 @@ typedef struct TirtcTransportConnCallbacks {
289
289
  */
290
290
  TirtcError tirtc_transport_init(void);
291
291
 
292
- /**
293
- * @brief Enable/disable transport debug mode.
294
- *
295
- * When enabled, transport backend sets verbose vendor SDK log level during runtime init
296
- * and applies it immediately if runtime is already initialized.
297
- *
298
- * @param enabled Non-zero to enable debug mode, zero to disable.
299
- * @return Operation status.
300
- */
301
- TirtcError tirtc_transport_enable_debug(uint8_t enabled);
302
-
303
292
  /**
304
293
  * @brief Uninitialize transport runtime.
305
294
  *
@@ -25,19 +25,13 @@ typedef struct TirtcInitOptions {
25
25
 
26
26
  } TirtcInitOptions;
27
27
 
28
- typedef enum TirtcMediaSendPolicy {
29
-
30
- TIRTC_MEDIA_SEND_POLICY_ON_REQUEST = 0,
31
-
32
- TIRTC_MEDIA_SEND_POLICY_AUTO_ON_CONNECTED = 1,
33
- } TirtcMediaSendPolicy;
34
-
35
28
  typedef struct TirtcConnServiceStartOptions {
36
- const char* license;
29
+ const char* device_id;
37
30
 
38
- uint32_t max_connections;
31
+ const char* device_secret_key;
39
32
 
40
- TirtcMediaSendPolicy media_send_policy;
33
+ /** Set to 0 to leave accepted-connection capacity to the active backend. */
34
+ uint32_t max_connections;
41
35
  } TirtcConnServiceStartOptions;
42
36
 
43
37
  typedef struct TirtcConnConnectOptions {
@@ -20,8 +20,17 @@ typedef enum TirtcVideoAppleWindowSlot {
20
20
  TIRTC_VIDEO_APPLE_WINDOW_SLOT_RIGHT = 2,
21
21
  } TirtcVideoAppleWindowSlot;
22
22
 
23
+ typedef enum TirtcVideoAppleCameraFacing {
24
+ TIRTC_VIDEO_APPLE_CAMERA_FACING_FRONT = 0,
25
+ TIRTC_VIDEO_APPLE_CAMERA_FACING_BACK = 1,
26
+ } TirtcVideoAppleCameraFacing;
27
+
23
28
  typedef int (*TirtcVideoAppleOnPixelBufferFn)(void* pixel_buffer, void* user_data);
24
29
 
30
+ typedef struct TirtcVideoAppleAvFoundationVinOptions {
31
+ TirtcVideoAppleCameraFacing camera_facing;
32
+ } TirtcVideoAppleAvFoundationVinOptions;
33
+
25
34
  typedef struct TirtcVideoAppleCoreVideoVoutOptions {
26
35
  TirtcVideoAppleVoutTarget target;
27
36
  TirtcVideoAppleOnPixelBufferFn on_pixel_buffer;
@@ -35,6 +44,11 @@ typedef struct TirtcVideoAppleCoreVideoVoutOptions {
35
44
  uint32_t window_height;
36
45
  } TirtcVideoAppleCoreVideoVoutOptions;
37
46
 
47
+ TirtcError tirtc_video_apple_create_avfoundation_vin(TirtcVideoVin** out_vin);
48
+ TirtcError tirtc_video_apple_avfoundation_vin_set_options(
49
+ TirtcVideoVin* vin, const TirtcVideoAppleAvFoundationVinOptions* options);
50
+ TirtcError tirtc_video_apple_avfoundation_vin_get_actual_facing(
51
+ TirtcVideoVin* vin, TirtcVideoAppleCameraFacing* out_camera_facing);
38
52
  TirtcError tirtc_video_apple_create_core_video_vout(TirtcVideoVout** out_vout);
39
53
  TirtcError tirtc_video_apple_core_video_vout_set_options(
40
54
  TirtcVideoVout* vout, const TirtcVideoAppleCoreVideoVoutOptions* options);
@@ -1,9 +1,9 @@
1
1
  platform=macos-arm64
2
2
  profile=full
3
- staged_at_utc=2026-05-05T13:43:48Z
3
+ staged_at_utc=2026-05-09T08:57:10Z
4
4
  source_sdk=/Users/allenfeng/Development/Repositories/tirtc-nexus/tirtc-matrix/.build/sdk/macos-arm64
5
5
 
6
- bfc096be1484ac2b1c2776ccabfa2a4c6a982e869abf875192ff06fad85e82ca include/tirtc/audio.h
6
+ 92ac54ea714e5a7da536d3d63b955a9e30faf9560ebe670034a79f3ea69c21cb include/tirtc/audio.h
7
7
  6d972ccfe150a3b4f2d7f18fa92b3ade9210c1c8bb754d061ac6b7997b59e2cb include/tirtc/audio_codec.h
8
8
  7bacbdb2d8bb10d6444036a8fef42f2a8e3ea34dfc38e165ee678d61f189db41 include/tirtc/audio_frame.h
9
9
  fb8ea35263167c33487bd3aa503c26ed2dfbf97877f7bda92c10065cd5c97c13 include/tirtc/audio_io.h
@@ -13,21 +13,21 @@ c2e1f31dcc75be461c577d18b1cebe32774f212d51cb4dd2a5b5a9bfe62b693e include/tirtc/
13
13
  51cbc911fe9f9834046f0e0a1a7cdd814a8e194a615894a8b4d11f9e5f095610 include/tirtc/audio_io_windows.h
14
14
  21f60729117260a44af22c1af986ef17d22673b102b7b7a035f492d0665cce16 include/tirtc/audio_processing.h
15
15
  0ca7c3c630b1242f51a0fd8154097c0a332b4c816a5707090e4381719852998c include/tirtc/audio_sample_rate.h
16
- 58807ba56770f38f47aec995661cadf9d3c1d6ea7bfc940767f1ce67317c7546 include/tirtc/av.h
16
+ f40ce007241e4aa6ef2e2bcd589060636ef0e9859a9102c8b955d348f4f7eabc include/tirtc/av.h
17
17
  b3e110ce04057d3be696b120d1abeaf6141711a1c63ca7f9bdf65ed5ec6e16d7 include/tirtc/error.h
18
18
  ae805545a9515edc9b94262e72ad2c7b7d649288166f4daeb450d8a55e82ae0b include/tirtc/foundation/build_info.h
19
19
  7cf8b372a3d48d4de4a65a04c7f102281a7b42cebb9ec247853d3c53afb63b6a include/tirtc/http.h
20
20
  70bbf93b84d9d1a85f376d9986de570c1f658319e1e5ab6d621f7a4d41033f5c include/tirtc/logging.h
21
21
  7e2f7f81afe37e22f5414d9db32438edd948ff775230c3a0a17ff9ac1a0b560e include/tirtc/media_codec.h
22
- ca63fe4fa0c787f20923e264e116fa6d7cb8194a227c03be4e9843d0ce5a9864 include/tirtc/media_downlink.h
22
+ 43c0ac9173b6259a1b1379eac780f4892a0a72572801ac9eb8516c0bdb4913c3 include/tirtc/media_downlink.h
23
23
  e64191a39004165cdcd11b2ca824af34d4bfe02f7ec3c3101fa9291f56488c30 include/tirtc/media_uplink.h
24
- 489f6c9caa3e4094566b660ef0a002a39c66c1956ef0a1bdb6eacca3798c849a include/tirtc/transport.h
25
- bb9c1bf46f2ab51a9f7adb211276c8563b09e7968031c0c6abeebc0eddd66acb include/tirtc/trp.h
24
+ 57be6941026e7dd173e8779b2bb868532d65e41f7917aad476a31ac25c1cd6c3 include/tirtc/transport.h
25
+ fba7954919606e507b6a074440440903665217959699da89ca9dd206772c0ef0 include/tirtc/trp.h
26
26
  92b3db6e2cb02265ad5db01881edce9d4e095b1dadf449dce5d8bb5362957e33 include/tirtc/video_codec.h
27
27
  e51379666c199588cc33279ccf52248035d1cae3d1d468b1615ebf29f0b39c9c include/tirtc/video_frame.h
28
28
  2a02645d82c58d433c7306a9f0bcd31d0f3e560b63822f7e80919761b81a6284 include/tirtc/video_io.h
29
29
  9930dce5e8e2b12a1ab28ee91f3fb46f6cf3487e515ea2b4ec0e00009bd5f070 include/tirtc/video_io_android.h
30
- 005114b9213ec826e18d11eca4b9d65cce2ca0e7c781f03d85292365d9d5dfdd include/tirtc/video_io_apple.h
30
+ f22127424d5978ab0644209b6c25c24e19e320dd2fbda6634e6344597ff7e2be include/tirtc/video_io_apple.h
31
31
  cae0bbeb884e5466a56da15182c78cc22baab6c743f349a58d3595f623333585 include/tirtc/video_io_harmony.h
32
32
  65b5d24fe3a6bc2a299a2220148a153ba4eb0955a49c1c3baabf1fdfed8aabdd include/tirtc/video_io_windows.h
33
33
  8cd6b66bea14890a665cc317f8572429b2c3e4463773f8b77c1e4dc30a4a8747 include/tirtc/video_processing.h
@@ -35,13 +35,13 @@ cae0bbeb884e5466a56da15182c78cc22baab6c743f349a58d3595f623333585 include/tirtc/
35
35
  8db86d6714264047e8fd4086ddd7315722d675749719e6175f89eb5a636b48a1 lib/libTiRTC.a
36
36
  b39daee6a3d39bf0ca20c45084601133c4198de8dca848dcff6dd9c70ae99016 lib/libcrypto.a
37
37
  c052857ef315e3d61db9c862cad10709a3a6b2487dc41799cbe4d74a805de875 lib/libcrypto.dylib
38
- 8cf2dc6547ac1f3aa0d2866005af74c9ae6adf1f358d84cec119205bc1455a2a lib/libmatrix_runtime_audio.a
39
- 11f5e0e50838b9f521acc0eed761120c550be71b87d0a04f172a02a62e6ea6bd lib/libmatrix_runtime_facade.a
40
- 6ec439f590f1468763cdcc7ed6e4a5e24e9d169d37ecdb3d7d3449d633a01da3 lib/libmatrix_runtime_foundation_http.a
41
- 8b49e1ae4eab6cdb74576e28e1df4c34986e65df044bbdf275b4f58daaddc52f lib/libmatrix_runtime_foundation_logging.a
42
- 8151ddd3e587a169050a733db09e216c347a5733e341da90ec234153cf432297 lib/libmatrix_runtime_media.a
43
- 05efbdfd1051206fa407dc81f3da9c35e60cf9d21005d01f59a23da688d97b64 lib/libmatrix_runtime_transport.a
44
- 2f2c455c0fbb4c0d2242586aee3eec6c59f9323b380edeac85f3af0d8b9fb5e4 lib/libmatrix_runtime_video.a
38
+ e2cc6ebe4b3efd602dd454c32cf5a56f7cecddff52ba51a09307434a102a3134 lib/libmatrix_runtime_audio.a
39
+ 86952647a2ee67457e5e0129270bbcc130bc1c3055674bd1256996e63d1d396d lib/libmatrix_runtime_facade.a
40
+ 88c8067852e3a334f6d7b741d36ffe4d5dc5a639b50a5566178485f2e3a62d51 lib/libmatrix_runtime_foundation_http.a
41
+ 5928ccfe2717594f66aba6b43d3b3d394634d2d742d5a79ccd86d17ab56adf6c lib/libmatrix_runtime_foundation_logging.a
42
+ a1a7c04dff1601fee215bf71b99a1b2725b74171b7182ab807b4f40ba96a5554 lib/libmatrix_runtime_media.a
43
+ 8adcf9d35a21d86392336389e361d6c75554ba1cdd6afde74e9e748adff34b77 lib/libmatrix_runtime_transport.a
44
+ 9e8db21a0c02d407799a9acc80042af2de38bc2b9509914df6d0bd63cae1a945 lib/libmatrix_runtime_video.a
45
45
  c11c65d373a127028350c41fa58cd2d1223f2b5d70a84e13b115d90daaba25ca lib/libssl.a
46
46
  ef1c1104bbdd2528ed7b958fb7252bd6249875f92300b0c9577d6c4bd6c0d88a lib/libssl.dylib
47
47
  e14e846e43d64e240fa0e5745bf4e702b79d0f2442e7f768beb990610735c71b lib/libtgrtc.dylib