tirtc-devtools-cli 0.0.10 → 0.0.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/README.md +17 -11
- package/USAGE.md +148 -41
- package/bin/tirtc-devtools-cli.js +1 -1
- package/dist/cli/src/bootstrap_flows.d.ts +46 -0
- package/dist/cli/src/bootstrap_flows.js +249 -0
- package/dist/{devtools/cli → cli}/src/config.d.ts +4 -15
- package/dist/{devtools/cli → cli}/src/config.js +8 -8
- package/dist/cli/src/default_paths.d.ts +3 -0
- package/dist/cli/src/default_paths.js +23 -0
- package/dist/{devtools/cli → cli}/src/embedded_paths.d.ts +1 -0
- package/dist/{devtools/cli → cli}/src/embedded_paths.js +18 -1
- package/dist/{devtools/cli → cli}/src/facade.d.ts +41 -235
- package/dist/{devtools/cli → cli}/src/facade.js +8 -27
- package/dist/cli/src/guide.js +47 -0
- package/dist/{devtools/cli → cli}/src/index.js +67 -153
- package/dist/{devtools/cli → cli}/src/session_manager.js +9 -11
- package/dist/{devtools/cli → cli}/src/token_command.js +80 -16
- package/dist/cli/src/token_tool.d.ts +55 -0
- package/dist/{devtools/cli → cli}/src/token_tool.js +143 -47
- package/dist/{devtools/cli → cli}/src/transport.d.ts +1 -1
- package/package.json +6 -2
- package/script/ensure_ffmpeg.sh +1 -1
- package/vendor/app-server/bin/native/linux-x64/credential_napi.node +0 -0
- package/vendor/app-server/bin/native/macos-arm64/credential_napi.node +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/credential.h +34 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/error.h +13 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/foundation/build_info.h +27 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/http.h +57 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/logging.h +3 -1
- package/vendor/app-server/bin/runtime/linux-x64/lib/libcrypto.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_credential.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_foundation_http.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_foundation_logging.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libssl.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/manifest.txt +2 -32
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/audio.h +44 -305
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/av.h +52 -372
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/error.h +2 -0
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/media_downlink.h +6 -0
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/transport.h +58 -133
- package/vendor/app-server/bin/runtime/macos-arm64/include/tirtc/trp.h +56 -511
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libTGTRP.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libTiRTC.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_audio.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_credential.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_facade.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_foundation_http.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_foundation_logging.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_media.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_transport.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/lib/libmatrix_runtime_video.a +0 -0
- package/vendor/app-server/bin/runtime/macos-arm64/manifest.txt +19 -15
- package/vendor/app-server/dist/host/HostCommandCoordinator.d.ts +19 -0
- package/vendor/app-server/dist/host/HostCommandCoordinator.js +196 -0
- package/vendor/app-server/dist/host/HostProtocol.d.ts +1 -11
- package/vendor/app-server/dist/host/HostProtocol.js +3 -37
- package/vendor/app-server/dist/host/HostServer.d.ts +1 -4
- package/vendor/app-server/dist/host/HostServer.js +16 -152
- package/vendor/app-server/dist/host/RuntimeAdapter.js +2 -2
- package/vendor/app-server/dist/host/native/RuntimeCredentialTokenIssuer.js +3 -3
- package/vendor/app-server/dist/host/native/RuntimeHostBridge.js +4 -4
- package/vendor/app-server/dist/host/runtime_backed_preflight.js +2 -2
- package/vendor/app-server/dist/host/tests/helpers/runtime_e2e_local_config.js +1 -1
- package/vendor/app-server/dist/protocol/contract.d.ts +5 -64
- package/vendor/app-server/dist/protocol/contract.js +3 -12
- package/dist/devtools/cli/src/guide.js +0 -50
- package/dist/devtools/cli/src/token_tool.d.ts +0 -38
- package/dist/dummy.d.ts +0 -0
- package/dist/dummy.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -48
- package/vendor/app-server/bin/native/macos-arm64/libcrypto.dylib +0 -0
- package/vendor/app-server/bin/native/macos-arm64/libssl.dylib +0 -0
- package/vendor/app-server/bin/native/macos-arm64/runtime_host_napi.node +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_codec.h +0 -23
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_frame.h +0 -36
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_io.h +0 -56
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_io_android.h +0 -19
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_io_apple.h +0 -19
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_io_harmony.h +0 -19
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_io_windows.h +0 -19
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_processing.h +0 -56
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/audio_sample_rate.h +0 -18
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/media_codec.h +0 -21
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/media_downlink.h +0 -89
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/media_uplink.h +0 -115
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/runtime.h +0 -236
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_codec.h +0 -57
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_frame.h +0 -55
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_io.h +0 -46
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_io_android.h +0 -32
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_io_apple.h +0 -34
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_io_harmony.h +0 -32
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_io_windows.h +0 -26
- package/vendor/app-server/bin/runtime/linux-x64/include/tirtc/video_processing.h +0 -34
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_audio.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_facade.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_media.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libmatrix_runtime_video.a +0 -0
- package/vendor/app-server/bin/runtime/linux-x64/lib/libwebrtc_apm.a +0 -0
- package/vendor/app-server/dist/host/RuntimeCredentialTokenIssuer.d.ts +0 -30
- package/vendor/app-server/dist/host/RuntimeCredentialTokenIssuer.js +0 -224
- /package/dist/{devtools/cli → cli}/src/dummy.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/dummy.js +0 -0
- /package/dist/{devtools/cli → cli}/src/ffmpeg_tool.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/ffmpeg_tool.js +0 -0
- /package/dist/{devtools/cli → cli}/src/guide.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/index.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/media_assets.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/media_assets.js +0 -0
- /package/dist/{devtools/cli → cli}/src/progress.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/progress.js +0 -0
- /package/dist/{devtools/cli → cli}/src/session_manager.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/token_command.d.ts +0 -0
- /package/dist/{devtools/cli → cli}/src/transport.js +0 -0
- /package/vendor/app-server/bin/{native/macos-arm64 → runtime/macos-arm64/lib}/libtgrtc.dylib +0 -0
|
@@ -1,22 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.resolveIssueTokenEnvironment = resolveIssueTokenEnvironment;
|
|
6
40
|
exports.issueToken = issueToken;
|
|
7
41
|
exports.buildIssuedTokenPayload = buildIssuedTokenPayload;
|
|
42
|
+
exports.buildLicenseQrcodePayload = buildLicenseQrcodePayload;
|
|
8
43
|
exports.writePngQrcode = writePngQrcode;
|
|
9
44
|
exports.buildAsciiQrcode = buildAsciiQrcode;
|
|
10
45
|
exports.issueTokenWithQrcode = issueTokenWithQrcode;
|
|
46
|
+
exports.buildLicenseQrcode = buildLicenseQrcode;
|
|
11
47
|
exports.formatTokenIssueConsoleOutput = formatTokenIssueConsoleOutput;
|
|
12
|
-
|
|
48
|
+
exports.formatLicenseQrcodeConsoleOutput = formatLicenseQrcodeConsoleOutput;
|
|
49
|
+
const childProcess = __importStar(require("child_process"));
|
|
13
50
|
const fs_1 = __importDefault(require("fs"));
|
|
14
51
|
const path_1 = __importDefault(require("path"));
|
|
15
52
|
const qrcode_1 = __importDefault(require("qrcode"));
|
|
16
53
|
const embedded_paths_1 = require("./embedded_paths");
|
|
17
|
-
const kDefaultOpenapiEntry = 'http://api-test-tirtc.tange365.com';
|
|
18
|
-
const kDefaultUserTtlSeconds = 86400;
|
|
19
|
-
const kDefaultChannelTtlSeconds = 300;
|
|
20
54
|
const kAsciiQrQuietZoneModules = 2;
|
|
21
55
|
function pathExists(filePath) {
|
|
22
56
|
return fs_1.default.existsSync(filePath);
|
|
@@ -30,15 +64,20 @@ function sanitizePathSegment(text) {
|
|
|
30
64
|
function resolveQrCodeOutputDir() {
|
|
31
65
|
return path_1.default.resolve(process.cwd(), '.tmp/tirtc-devtools-cli/qrcode');
|
|
32
66
|
}
|
|
33
|
-
function buildQrCodePngPath(
|
|
67
|
+
function buildQrCodePngPath(prefix, ...parts) {
|
|
34
68
|
const fileName = [
|
|
35
|
-
|
|
36
|
-
sanitizePathSegment(
|
|
37
|
-
sanitizePathSegment(payload.peer_id),
|
|
69
|
+
prefix,
|
|
70
|
+
...parts.map((part) => sanitizePathSegment(part)),
|
|
38
71
|
Date.now().toString(),
|
|
39
72
|
].join('-') + '.png';
|
|
40
73
|
return path_1.default.join(resolveQrCodeOutputDir(), fileName);
|
|
41
74
|
}
|
|
75
|
+
function buildTokenQrCodePngPath(payload) {
|
|
76
|
+
return buildQrCodePngPath('token', payload.remote_id);
|
|
77
|
+
}
|
|
78
|
+
function buildLicenseQrCodePngPath(payload) {
|
|
79
|
+
return buildQrCodePngPath('license', payload.license);
|
|
80
|
+
}
|
|
42
81
|
function resolveRuntimePlatform() {
|
|
43
82
|
const raw = process.env.TIRTC_RUNTIME_PLATFORM;
|
|
44
83
|
if (raw && raw.trim().length > 0) {
|
|
@@ -49,12 +88,12 @@ function resolveRuntimePlatform() {
|
|
|
49
88
|
}
|
|
50
89
|
return 'linux-x64';
|
|
51
90
|
}
|
|
52
|
-
function resolveRuntimeBundleRoot(runtimePlatform) {
|
|
91
|
+
function resolveRuntimeBundleRoot(runtimePlatform, fromDir = __dirname) {
|
|
53
92
|
const explicit = process.env.TIRTC_RUNTIME_BUNDLE_ROOT;
|
|
54
93
|
if (explicit && explicit.trim().length > 0) {
|
|
55
94
|
return explicit.trim();
|
|
56
95
|
}
|
|
57
|
-
const embedded = (0, embedded_paths_1.resolveEmbeddedRuntimeBundleRoot)(
|
|
96
|
+
const embedded = (0, embedded_paths_1.resolveEmbeddedRuntimeBundleRoot)(fromDir, runtimePlatform);
|
|
58
97
|
if (embedded) {
|
|
59
98
|
return embedded;
|
|
60
99
|
}
|
|
@@ -64,7 +103,7 @@ function resolveRuntimeBundleRoot(runtimePlatform) {
|
|
|
64
103
|
path_1.default.resolve(execDir, '../runtime', runtimePlatform),
|
|
65
104
|
path_1.default.resolve(__dirname, '../bin/runtime', runtimePlatform),
|
|
66
105
|
path_1.default.resolve(__dirname, '../../../../bin/runtime', runtimePlatform),
|
|
67
|
-
path_1.default.resolve(process.cwd(), '
|
|
106
|
+
path_1.default.resolve(process.cwd(), 'products/cli/bin/runtime', runtimePlatform),
|
|
68
107
|
path_1.default.resolve(process.cwd(), 'bin/runtime', runtimePlatform),
|
|
69
108
|
path_1.default.resolve(process.cwd(), '../bin/runtime', runtimePlatform),
|
|
70
109
|
];
|
|
@@ -75,8 +114,8 @@ function resolveRuntimeBundleRoot(runtimePlatform) {
|
|
|
75
114
|
}
|
|
76
115
|
return candidates[0];
|
|
77
116
|
}
|
|
78
|
-
function resolveRepoRoot() {
|
|
79
|
-
const embeddedAppServerRoot = (0, embedded_paths_1.resolveEmbeddedAppServerRoot)(
|
|
117
|
+
function resolveRepoRoot(fromDir = __dirname) {
|
|
118
|
+
const embeddedAppServerRoot = (0, embedded_paths_1.resolveEmbeddedAppServerRoot)(fromDir);
|
|
80
119
|
if (embeddedAppServerRoot) {
|
|
81
120
|
return path_1.default.resolve(embeddedAppServerRoot, '..');
|
|
82
121
|
}
|
|
@@ -87,12 +126,23 @@ function resolveRepoRoot() {
|
|
|
87
126
|
path_1.default.resolve(process.cwd()),
|
|
88
127
|
];
|
|
89
128
|
for (const candidate of candidates) {
|
|
90
|
-
if (pathExists(path_1.default.join(candidate, 'app-server')) && pathExists(path_1.default.join(candidate, '
|
|
129
|
+
if (pathExists(path_1.default.join(candidate, 'products/app-server')) && pathExists(path_1.default.join(candidate, 'products/cli'))) {
|
|
91
130
|
return candidate;
|
|
92
131
|
}
|
|
93
132
|
}
|
|
94
133
|
return candidates[0];
|
|
95
134
|
}
|
|
135
|
+
function resolveEmbeddedAddonPath(runtimePlatform, fromDir = __dirname) {
|
|
136
|
+
const embeddedAppServerRoot = (0, embedded_paths_1.resolveEmbeddedAppServerRoot)(fromDir);
|
|
137
|
+
if (!embeddedAppServerRoot) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const candidate = path_1.default.join(embeddedAppServerRoot, 'bin/native', runtimePlatform, 'credential_napi.node');
|
|
141
|
+
if (pathExists(candidate)) {
|
|
142
|
+
return candidate;
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
96
146
|
function ensureRuntimeBundleReady(runtimeBundleRoot) {
|
|
97
147
|
const includeDir = path_1.default.join(runtimeBundleRoot, 'include');
|
|
98
148
|
const libDir = path_1.default.join(runtimeBundleRoot, 'lib');
|
|
@@ -100,12 +150,16 @@ function ensureRuntimeBundleReady(runtimeBundleRoot) {
|
|
|
100
150
|
throw new Error('runtime-backed sdk bundle is missing: ' + runtimeBundleRoot);
|
|
101
151
|
}
|
|
102
152
|
}
|
|
103
|
-
function resolveAddonPath(repoRoot, runtimePlatform) {
|
|
153
|
+
function resolveAddonPath(repoRoot, runtimePlatform, fromDir = __dirname) {
|
|
104
154
|
const explicit = process.env.TIRTC_CREDENTIAL_ADDON_PATH;
|
|
155
|
+
const embedded = resolveEmbeddedAddonPath(runtimePlatform, fromDir);
|
|
105
156
|
const candidates = [
|
|
106
157
|
explicit,
|
|
158
|
+
embedded,
|
|
159
|
+
path_1.default.join(repoRoot, `products/app-server/bin/native/${runtimePlatform}/credential_napi.node`),
|
|
107
160
|
path_1.default.join(repoRoot, `app-server/bin/native/${runtimePlatform}/credential_napi.node`),
|
|
108
|
-
path_1.default.join(repoRoot,
|
|
161
|
+
path_1.default.join(repoRoot, `.build/app-server/native/${runtimePlatform}/credential_napi.node`),
|
|
162
|
+
path_1.default.resolve(process.cwd(), `products/app-server/bin/native/${runtimePlatform}/credential_napi.node`),
|
|
109
163
|
path_1.default.resolve(process.cwd(), `app-server/bin/native/${runtimePlatform}/credential_napi.node`),
|
|
110
164
|
path_1.default.resolve(process.cwd(), `.build/app-server/native/${runtimePlatform}/credential_napi.node`),
|
|
111
165
|
].filter((entry) => typeof entry === 'string' && entry.trim().length > 0);
|
|
@@ -116,7 +170,18 @@ function resolveAddonPath(repoRoot, runtimePlatform) {
|
|
|
116
170
|
}
|
|
117
171
|
}
|
|
118
172
|
throw new Error('credential addon missing for platform ' + runtimePlatform +
|
|
119
|
-
'; run: npm --prefix app-server run build:native');
|
|
173
|
+
'; run: npm --prefix products/app-server run build:native');
|
|
174
|
+
}
|
|
175
|
+
function resolveIssueTokenEnvironment(runtimePlatform = resolveRuntimePlatform(), fromDir = __dirname) {
|
|
176
|
+
const runtimeBundleRoot = resolveRuntimeBundleRoot(runtimePlatform, fromDir);
|
|
177
|
+
const repoRoot = resolveRepoRoot(fromDir);
|
|
178
|
+
ensureRuntimeBundleReady(runtimeBundleRoot);
|
|
179
|
+
return {
|
|
180
|
+
runtimePlatform,
|
|
181
|
+
runtimeBundleRoot,
|
|
182
|
+
repoRoot,
|
|
183
|
+
addonPath: resolveAddonPath(repoRoot, runtimePlatform, fromDir),
|
|
184
|
+
};
|
|
120
185
|
}
|
|
121
186
|
function normalizeIssuedToken(token) {
|
|
122
187
|
const normalized = token.trim();
|
|
@@ -138,13 +203,10 @@ function buildIssueTokenHelperSource() {
|
|
|
138
203
|
'});',
|
|
139
204
|
'try {',
|
|
140
205
|
' const token = addon.issueToken({',
|
|
141
|
-
'
|
|
206
|
+
' openapiEndpoint: input.openapiEndpoint,',
|
|
142
207
|
' accessId: input.accessId,',
|
|
143
208
|
' secretKey: input.secretKey,',
|
|
144
|
-
'
|
|
145
|
-
' peerId: input.peerId,',
|
|
146
|
-
' userTtlSeconds: input.userTtlSeconds,',
|
|
147
|
-
' channelTtlSeconds: input.channelTtlSeconds,',
|
|
209
|
+
' remoteId: input.remoteId,',
|
|
148
210
|
' });',
|
|
149
211
|
' process.stdout.write(String(token).trim());',
|
|
150
212
|
'} finally {',
|
|
@@ -153,7 +215,7 @@ function buildIssueTokenHelperSource() {
|
|
|
153
215
|
].join('\n');
|
|
154
216
|
}
|
|
155
217
|
function issueTokenViaSubprocess(addonPath, input) {
|
|
156
|
-
const result =
|
|
218
|
+
const result = childProcess.spawnSync(process.execPath, ['-e', buildIssueTokenHelperSource()], {
|
|
157
219
|
encoding: 'utf8',
|
|
158
220
|
env: {
|
|
159
221
|
...process.env,
|
|
@@ -227,13 +289,9 @@ function renderHalfBlockQr(modules) {
|
|
|
227
289
|
return lines.join('\n');
|
|
228
290
|
}
|
|
229
291
|
async function issueToken(input) {
|
|
230
|
-
const
|
|
231
|
-
const runtimeBundleRoot = resolveRuntimeBundleRoot(runtimePlatform);
|
|
232
|
-
const repoRoot = resolveRepoRoot();
|
|
233
|
-
ensureRuntimeBundleReady(runtimeBundleRoot);
|
|
234
|
-
const addonPath = resolveAddonPath(repoRoot, runtimePlatform);
|
|
292
|
+
const resolved = resolveIssueTokenEnvironment();
|
|
235
293
|
try {
|
|
236
|
-
return issueTokenViaSubprocess(addonPath, input);
|
|
294
|
+
return issueTokenViaSubprocess(resolved.addonPath, input);
|
|
237
295
|
}
|
|
238
296
|
catch (error) {
|
|
239
297
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -241,18 +299,29 @@ async function issueToken(input) {
|
|
|
241
299
|
}
|
|
242
300
|
}
|
|
243
301
|
function buildIssuedTokenPayload(input, token) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
type: 'tirtc-connect-token',
|
|
247
|
-
peer_id: input.peerId,
|
|
248
|
-
local_id: input.localId,
|
|
249
|
-
service_entry: input.serviceEntry ?? '',
|
|
302
|
+
const payload = {
|
|
303
|
+
remote_id: input.remoteId,
|
|
250
304
|
token,
|
|
251
|
-
openapi_entry: input.openapiEntry?.trim() || kDefaultOpenapiEntry,
|
|
252
|
-
user_ttl_seconds: input.userTtlSeconds ?? kDefaultUserTtlSeconds,
|
|
253
|
-
channel_ttl_seconds: input.channelTtlSeconds ?? kDefaultChannelTtlSeconds,
|
|
254
|
-
generated_at: new Date().toISOString(),
|
|
255
305
|
};
|
|
306
|
+
const normalizedEndpoint = input.endpoint?.trim();
|
|
307
|
+
if (normalizedEndpoint) {
|
|
308
|
+
payload.endpoint = normalizedEndpoint;
|
|
309
|
+
}
|
|
310
|
+
const normalizedOpenapiEndpoint = input.openapiEndpoint?.trim();
|
|
311
|
+
if (normalizedOpenapiEndpoint) {
|
|
312
|
+
payload.openapi_endpoint = normalizedOpenapiEndpoint;
|
|
313
|
+
}
|
|
314
|
+
return payload;
|
|
315
|
+
}
|
|
316
|
+
function buildLicenseQrcodePayload(input) {
|
|
317
|
+
const payload = {
|
|
318
|
+
license: input.license.trim(),
|
|
319
|
+
};
|
|
320
|
+
const normalizedEndpoint = input.endpoint?.trim();
|
|
321
|
+
if (normalizedEndpoint) {
|
|
322
|
+
payload.endpoint = normalizedEndpoint;
|
|
323
|
+
}
|
|
324
|
+
return payload;
|
|
256
325
|
}
|
|
257
326
|
async function writePngQrcode(payloadJson, outputPath, errorCorrectionLevel) {
|
|
258
327
|
const resolvedPath = path_1.default.resolve(outputPath);
|
|
@@ -284,7 +353,7 @@ async function issueTokenWithQrcode(input) {
|
|
|
284
353
|
const payload = buildIssuedTokenPayload(input, token);
|
|
285
354
|
const payloadJson = JSON.stringify(payload);
|
|
286
355
|
const qrErrorCorrectionLevel = input.qrErrorCorrectionLevel ?? 'M';
|
|
287
|
-
const qrCodePngPath = await writePngQrcode(payloadJson,
|
|
356
|
+
const qrCodePngPath = await writePngQrcode(payloadJson, buildTokenQrCodePngPath(payload), qrErrorCorrectionLevel);
|
|
288
357
|
const qrCodeAscii = await buildAsciiQrcode(payloadJson, input.asciiMaxColumns, qrErrorCorrectionLevel);
|
|
289
358
|
return {
|
|
290
359
|
payload,
|
|
@@ -295,16 +364,26 @@ async function issueTokenWithQrcode(input) {
|
|
|
295
364
|
qrCodeAsciiIncluded: !qrCodeAscii.startsWith('(omitted:'),
|
|
296
365
|
};
|
|
297
366
|
}
|
|
367
|
+
async function buildLicenseQrcode(input) {
|
|
368
|
+
const payload = buildLicenseQrcodePayload(input);
|
|
369
|
+
const payloadJson = JSON.stringify(payload);
|
|
370
|
+
const qrErrorCorrectionLevel = input.qrErrorCorrectionLevel ?? 'M';
|
|
371
|
+
const qrCodePngPath = await writePngQrcode(payloadJson, buildLicenseQrCodePngPath(payload), qrErrorCorrectionLevel);
|
|
372
|
+
const qrCodeAscii = await buildAsciiQrcode(payloadJson, input.asciiMaxColumns, qrErrorCorrectionLevel);
|
|
373
|
+
return {
|
|
374
|
+
payload,
|
|
375
|
+
payloadJson,
|
|
376
|
+
qrCodePngPath,
|
|
377
|
+
qrCodeAscii,
|
|
378
|
+
qrCodeAsciiIncluded: !qrCodeAscii.startsWith('(omitted:'),
|
|
379
|
+
};
|
|
380
|
+
}
|
|
298
381
|
function formatTokenIssueConsoleOutput(output) {
|
|
299
382
|
const summaryLines = [
|
|
300
383
|
'Issued Token Summary:',
|
|
301
|
-
'
|
|
302
|
-
'
|
|
303
|
-
'
|
|
304
|
-
' openapi_entry: ' + output.payload.openapi_entry,
|
|
305
|
-
' user_ttl_seconds: ' + output.payload.user_ttl_seconds,
|
|
306
|
-
' channel_ttl_seconds: ' + output.payload.channel_ttl_seconds,
|
|
307
|
-
' generated_at: ' + output.payload.generated_at,
|
|
384
|
+
' remote_id: ' + output.payload.remote_id,
|
|
385
|
+
' endpoint: ' + (output.payload.endpoint ?? '(omitted)'),
|
|
386
|
+
' openapi_endpoint: ' + (output.payload.openapi_endpoint ?? '(omitted)'),
|
|
308
387
|
'',
|
|
309
388
|
'Token:',
|
|
310
389
|
output.token,
|
|
@@ -320,3 +399,20 @@ function formatTokenIssueConsoleOutput(output) {
|
|
|
320
399
|
];
|
|
321
400
|
return summaryLines.join('\n');
|
|
322
401
|
}
|
|
402
|
+
function formatLicenseQrcodeConsoleOutput(output) {
|
|
403
|
+
const summaryLines = [
|
|
404
|
+
'License QR Code Summary:',
|
|
405
|
+
' license: ' + output.payload.license,
|
|
406
|
+
' endpoint: ' + (output.payload.endpoint ?? '(omitted)'),
|
|
407
|
+
'',
|
|
408
|
+
'Payload JSON:',
|
|
409
|
+
JSON.stringify(output.payload, null, 2),
|
|
410
|
+
'',
|
|
411
|
+
'QR Code ASCII:',
|
|
412
|
+
output.qrCodeAscii,
|
|
413
|
+
'',
|
|
414
|
+
'QR Code PNG:',
|
|
415
|
+
output.qrCodePngPath,
|
|
416
|
+
];
|
|
417
|
+
return summaryLines.join('\n');
|
|
418
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tirtc-devtools-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"private": false,
|
|
5
|
-
"main": "dist/index.js",
|
|
5
|
+
"main": "dist/cli/src/index.js",
|
|
6
|
+
"types": "dist/cli/src/index.d.ts",
|
|
6
7
|
"bin": {
|
|
7
8
|
"tirtc-devtools-cli": "bin/tirtc-devtools-cli.js"
|
|
8
9
|
},
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
"vendor"
|
|
16
17
|
],
|
|
17
18
|
"scripts": {
|
|
19
|
+
"prebuild": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
18
20
|
"build": "tsc",
|
|
19
21
|
"test": "jest",
|
|
20
22
|
"test:owner": "./script/test.sh owner",
|
|
@@ -23,6 +25,8 @@
|
|
|
23
25
|
"test:e2e": "./script/test.sh e2e",
|
|
24
26
|
"test:two-endpoints": "./script/test.sh two-endpoints",
|
|
25
27
|
"test:acceptance": "./script/test.sh acceptance",
|
|
28
|
+
"package:token-issue-assets": "./script/package_token_issue_assets.sh",
|
|
29
|
+
"verify:token-issue-package": "./script/verify_token_issue_package.sh",
|
|
26
30
|
"lint": "eslint . --ext .ts --max-warnings=0",
|
|
27
31
|
"lint:fix": "eslint . --ext .ts --fix",
|
|
28
32
|
"package": "./script/package.sh",
|
package/script/ensure_ffmpeg.sh
CHANGED
|
@@ -3,7 +3,7 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
5
5
|
CLI_ROOT=$(cd "$SCRIPT_DIR/.." && pwd)
|
|
6
|
-
CLI_DIST="$CLI_ROOT/dist/
|
|
6
|
+
CLI_DIST="$CLI_ROOT/dist/cli/src/ffmpeg_tool.js"
|
|
7
7
|
|
|
8
8
|
if [[ ! -f "$CLI_DIST" ]]; then
|
|
9
9
|
echo "[ensure_ffmpeg] compiled helper missing: $CLI_DIST" >&2
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#ifndef TIRTC_CREDENTIAL_H_
|
|
2
|
+
#define TIRTC_CREDENTIAL_H_
|
|
3
|
+
|
|
4
|
+
#include "tirtc/error.h"
|
|
5
|
+
|
|
6
|
+
#ifdef __cplusplus
|
|
7
|
+
extern "C" {
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
typedef struct TirtcCredentialIssueTokenOptions {
|
|
11
|
+
const char* openapi_entry;
|
|
12
|
+
const char* access_id;
|
|
13
|
+
const char* secret_key;
|
|
14
|
+
const char* local_id;
|
|
15
|
+
const char* peer_id;
|
|
16
|
+
int user_ttl_seconds;
|
|
17
|
+
int channel_ttl_seconds;
|
|
18
|
+
} TirtcCredentialIssueTokenOptions;
|
|
19
|
+
|
|
20
|
+
typedef struct TirtcCredentialIssueTokenResult {
|
|
21
|
+
char* token;
|
|
22
|
+
int http_status_code;
|
|
23
|
+
} TirtcCredentialIssueTokenResult;
|
|
24
|
+
|
|
25
|
+
TirtcError tirtc_credential_issue_token(const TirtcCredentialIssueTokenOptions* options,
|
|
26
|
+
TirtcCredentialIssueTokenResult* out_result);
|
|
27
|
+
|
|
28
|
+
void tirtc_credential_issue_token_result_dispose(TirtcCredentialIssueTokenResult* result);
|
|
29
|
+
|
|
30
|
+
#ifdef __cplusplus
|
|
31
|
+
}
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
#endif // TIRTC_CREDENTIAL_H_
|
|
@@ -11,6 +11,19 @@ typedef enum TirtcError {
|
|
|
11
11
|
TIRTC_ERROR_NOT_INITIALIZED = 2,
|
|
12
12
|
TIRTC_ERROR_INTERNAL = 3,
|
|
13
13
|
TIRTC_ERROR_NOT_READY = 4,
|
|
14
|
+
TIRTC_ERROR_UNSUPPORTED_LOOP_POLICY = 5,
|
|
15
|
+
TIRTC_ERROR_SOURCE_HASH_MISMATCH = 6,
|
|
16
|
+
TIRTC_ERROR_STOPPED = 7,
|
|
17
|
+
TIRTC_ERROR_DESTROYED = 8,
|
|
18
|
+
TIRTC_ERROR_TRANSPORT_INVALID_LICENSE = 9,
|
|
19
|
+
TIRTC_ERROR_TRANSPORT_TIMEOUT = 10,
|
|
20
|
+
TIRTC_ERROR_TRANSPORT_BUSY = 11,
|
|
21
|
+
TIRTC_ERROR_TRANSPORT_CONNECTION_TIMEOUT_CLOSED = 12,
|
|
22
|
+
TIRTC_ERROR_TRANSPORT_REMOTE_CLOSED = 13,
|
|
23
|
+
TIRTC_ERROR_TRANSPORT_CONNECTION_OTHER_ERROR = 14,
|
|
24
|
+
TIRTC_ERROR_TRANSPORT_TOKEN_EXPIRED = 15,
|
|
25
|
+
TIRTC_ERROR_DUMP_ROOT_UNAVAILABLE = 16,
|
|
26
|
+
TIRTC_ERROR_DUMP_ALREADY_ACTIVE = 17,
|
|
14
27
|
} TirtcError;
|
|
15
28
|
|
|
16
29
|
#ifdef __cplusplus
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#ifndef TIRTC_FOUNDATION_BUILD_INFO_H_
|
|
2
|
+
#define TIRTC_FOUNDATION_BUILD_INFO_H_
|
|
3
|
+
|
|
4
|
+
#include "tirtc/error.h"
|
|
5
|
+
|
|
6
|
+
#ifdef __cplusplus
|
|
7
|
+
extern "C" {
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
typedef struct TirtcBuildInfo {
|
|
11
|
+
const char* semver_base;
|
|
12
|
+
const char* semver_effective;
|
|
13
|
+
const char* commit_hash;
|
|
14
|
+
int commit_count;
|
|
15
|
+
const char* build_branch;
|
|
16
|
+
const char* build_time_utc;
|
|
17
|
+
const char* version_string;
|
|
18
|
+
} TirtcBuildInfo;
|
|
19
|
+
|
|
20
|
+
const TirtcBuildInfo* tirtc_build_info_get(void);
|
|
21
|
+
const char* tirtc_build_version_string(void);
|
|
22
|
+
|
|
23
|
+
#ifdef __cplusplus
|
|
24
|
+
}
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#endif // TIRTC_FOUNDATION_BUILD_INFO_H_
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#ifndef TIRTC_FOUNDATION_HTTP_H_
|
|
2
|
+
#define TIRTC_FOUNDATION_HTTP_H_
|
|
3
|
+
|
|
4
|
+
#include "tirtc/error.h"
|
|
5
|
+
|
|
6
|
+
#ifdef __cplusplus
|
|
7
|
+
extern "C" {
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
typedef enum TirtcHttpMethod {
|
|
11
|
+
TIRTC_HTTP_METHOD_GET = 0,
|
|
12
|
+
TIRTC_HTTP_METHOD_POST = 1,
|
|
13
|
+
TIRTC_HTTP_METHOD_PUT = 2,
|
|
14
|
+
TIRTC_HTTP_METHOD_PATCH = 3,
|
|
15
|
+
TIRTC_HTTP_METHOD_DELETE = 4,
|
|
16
|
+
} TirtcHttpMethod;
|
|
17
|
+
|
|
18
|
+
typedef struct TirtcHttpHeader {
|
|
19
|
+
const char* key;
|
|
20
|
+
const char* value;
|
|
21
|
+
} TirtcHttpHeader;
|
|
22
|
+
|
|
23
|
+
typedef struct TirtcHttpRequest {
|
|
24
|
+
const char* scheme;
|
|
25
|
+
const char* host;
|
|
26
|
+
int port;
|
|
27
|
+
const char* path;
|
|
28
|
+
const char* query;
|
|
29
|
+
const TirtcHttpHeader* headers;
|
|
30
|
+
int header_count;
|
|
31
|
+
const char* body;
|
|
32
|
+
int body_size;
|
|
33
|
+
int connect_timeout_ms;
|
|
34
|
+
int read_timeout_ms;
|
|
35
|
+
int write_timeout_ms;
|
|
36
|
+
} TirtcHttpRequest;
|
|
37
|
+
|
|
38
|
+
typedef struct TirtcHttpResponse {
|
|
39
|
+
int status_code;
|
|
40
|
+
const char* body;
|
|
41
|
+
int body_size;
|
|
42
|
+
} TirtcHttpResponse;
|
|
43
|
+
|
|
44
|
+
typedef TirtcError (*TirtcHttpMockHandler)(const TirtcHttpRequest* request, TirtcHttpMethod method,
|
|
45
|
+
TirtcHttpResponse* response, void* user_data);
|
|
46
|
+
|
|
47
|
+
TirtcError tirtc_http_request(const TirtcHttpRequest* request, TirtcHttpMethod method,
|
|
48
|
+
TirtcHttpResponse* response);
|
|
49
|
+
void tirtc_http_response_dispose(TirtcHttpResponse* response);
|
|
50
|
+
TirtcError tirtc_http_set_mock_handler(TirtcHttpMockHandler handler, void* user_data);
|
|
51
|
+
void tirtc_http_clear_mock_handler(void);
|
|
52
|
+
|
|
53
|
+
#ifdef __cplusplus
|
|
54
|
+
}
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#endif // TIRTC_FOUNDATION_HTTP_H_
|
|
@@ -21,10 +21,11 @@ typedef enum TirtcLogLevel {
|
|
|
21
21
|
typedef void (*TirtcLoggingPrintFunction)(const char* prefix, TirtcLogLevel level, const char* tag,
|
|
22
22
|
const char* fmt, va_list args);
|
|
23
23
|
|
|
24
|
-
#define TIRTC_LOG_PREFIX_DEFAULT "
|
|
24
|
+
#define TIRTC_LOG_PREFIX_DEFAULT "TIRTC_"
|
|
25
25
|
|
|
26
26
|
TirtcError tirtc_logging_set_print_function(TirtcLoggingPrintFunction function);
|
|
27
27
|
TirtcError tirtc_logging_set_level(TirtcLogLevel level);
|
|
28
|
+
TirtcError tirtc_logging_set_console_enabled(int enabled);
|
|
28
29
|
|
|
29
30
|
TirtcError tirtc_logging_initialize(const char* root_dir);
|
|
30
31
|
TirtcError tirtc_logging_write(TirtcLogLevel level, const char* tag, const char* message);
|
|
@@ -32,6 +33,7 @@ TirtcError tirtc_logging_print(const char* prefix, TirtcLogLevel level, const ch
|
|
|
32
33
|
const char* fmt, ...);
|
|
33
34
|
TirtcError tirtc_logging_flush(void);
|
|
34
35
|
TirtcError tirtc_logging_export(const char* output_zip_path);
|
|
36
|
+
TirtcError tirtc_logging_upload(char* log_id, int log_id_capacity);
|
|
35
37
|
|
|
36
38
|
#define TIRTC_LOGV(tag, fmt, ...) \
|
|
37
39
|
tirtc_logging_print(TIRTC_LOG_PREFIX_DEFAULT, TIRTC_LOG_LEVEL_VERBOSE, tag, fmt, ##__VA_ARGS__)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,34 +1,4 @@
|
|
|
1
1
|
platform=linux-x64
|
|
2
|
-
|
|
2
|
+
profile=credential
|
|
3
|
+
staged_at_utc=2026-04-21T13:44:44Z
|
|
3
4
|
source_sdk=/workspace/.build/sdk/linux-x64
|
|
4
|
-
|
|
5
|
-
6d972ccfe150a3b4f2d7f18fa92b3ade9210c1c8bb754d061ac6b7997b59e2cb include/tirtc/audio_codec.h
|
|
6
|
-
7bacbdb2d8bb10d6444036a8fef42f2a8e3ea34dfc38e165ee678d61f189db41 include/tirtc/audio_frame.h
|
|
7
|
-
818dc6ea4484e7ea37651db1ab1b50bfe1abe644d24208914691297173dce7a1 include/tirtc/audio_io.h
|
|
8
|
-
c2e1f31dcc75be461c577d18b1cebe32774f212d51cb4dd2a5b5a9bfe62b693e include/tirtc/audio_io_android.h
|
|
9
|
-
878bb18220ac62304ec95807f31e83e050c8dac14811f873454f9b045028694a include/tirtc/audio_io_apple.h
|
|
10
|
-
0569eb1d043ee7fa8d45ca43143eca1a22e4c4bf1507ca7e045e010a3ecbc288 include/tirtc/audio_io_harmony.h
|
|
11
|
-
51cbc911fe9f9834046f0e0a1a7cdd814a8e194a615894a8b4d11f9e5f095610 include/tirtc/audio_io_windows.h
|
|
12
|
-
21f60729117260a44af22c1af986ef17d22673b102b7b7a035f492d0665cce16 include/tirtc/audio_processing.h
|
|
13
|
-
0ca7c3c630b1242f51a0fd8154097c0a332b4c816a5707090e4381719852998c include/tirtc/audio_sample_rate.h
|
|
14
|
-
a484e249b1eb5f66bb0fcdde1a716c48207e99c05edf57674613d22c9293eac2 include/tirtc/error.h
|
|
15
|
-
5527348107b8bf88d75adf7e46d335a1f83b2377a03da0dbfd9f6d83fff88580 include/tirtc/logging.h
|
|
16
|
-
7e2f7f81afe37e22f5414d9db32438edd948ff775230c3a0a17ff9ac1a0b560e include/tirtc/media_codec.h
|
|
17
|
-
bb3afc6cad8737400d51b30b523be8f7259853587c83541734460e00485d0fda include/tirtc/media_downlink.h
|
|
18
|
-
51658c1784b862e4f52ad5692533a3d288eb5267649f1e0fb1696f4c519299de include/tirtc/media_uplink.h
|
|
19
|
-
7f0f1f5afd665f0c2b826eda3c72ca37a4d4153872b9b41593b0d527fb2b4316 include/tirtc/runtime.h
|
|
20
|
-
dbfe7cb2f8b26b37af759f54c3e254a973fe21fbd9a4e69a74a36ba28d7a448a include/tirtc/video_codec.h
|
|
21
|
-
e51379666c199588cc33279ccf52248035d1cae3d1d468b1615ebf29f0b39c9c include/tirtc/video_frame.h
|
|
22
|
-
d920afad955b9f206b02b19ca152315190fa84ab6f24e895a5b24c3ab9ffd701 include/tirtc/video_io.h
|
|
23
|
-
9294d144dbc56415ddbc06c68a26b4a662b51a3808f49ded81a37776ad243293 include/tirtc/video_io_android.h
|
|
24
|
-
43197ceccfbcf20de046bf19c7f6787c9daf681cbef6cf0c50e8466677cfd4ce include/tirtc/video_io_apple.h
|
|
25
|
-
cae0bbeb884e5466a56da15182c78cc22baab6c743f349a58d3595f623333585 include/tirtc/video_io_harmony.h
|
|
26
|
-
65b5d24fe3a6bc2a299a2220148a153ba4eb0955a49c1c3baabf1fdfed8aabdd include/tirtc/video_io_windows.h
|
|
27
|
-
8cd6b66bea14890a665cc317f8572429b2c3e4463773f8b77c1e4dc30a4a8747 include/tirtc/video_processing.h
|
|
28
|
-
c9a3a02ff8550719140dfee9ef81b5a1f8210d0ff91be919dd28008701ee6ccb lib/libmatrix_runtime_audio.a
|
|
29
|
-
095fc457691d15d20991a8e1eed257521f8ae5cea40cbeacea25537db4b3f420 lib/libmatrix_runtime_facade.a
|
|
30
|
-
210b16e023a4837d3a4d13efac2dcb733a228b4f47262dc6df60bc4c63929fbe lib/libmatrix_runtime_foundation_logging.a
|
|
31
|
-
574598183bb913924c9a56ae32e02abb50894687759661bc8d06b6e272b7c1ba lib/libmatrix_runtime_media.a
|
|
32
|
-
f54f40319d63191ddc1963ef5d0032286c78eba6378a0d2f32fdc304305a6363 lib/libmatrix_runtime_video.a
|
|
33
|
-
a67ec9034848ef24a1b17671e444daa62a8f9e6b8319a1e932593908720ff2a1 lib/libwebrtc_apm.a
|
|
34
|
-
700e455255897e3cffab13ca593a6e4d9d11383ae609215cbbd6043a63d47161 lib/libxlog.a
|