@ylink-sdk/mobile-web 0.1.6 → 0.1.9-beta.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.
- package/dist/e30037b8/VERSION +6 -0
- package/dist/e30037b8/libipvp-simd.d.ts +474 -0
- package/dist/e30037b8/libipvp-simd.js +3267 -0
- package/dist/e30037b8/libipvp-simd.prod.d.ts +474 -0
- package/dist/e30037b8/libipvp-simd.prod.js +184 -0
- package/dist/e30037b8/libipvp-simd.prod.wasm +0 -0
- package/dist/e30037b8/libipvp-simd.wasm +0 -0
- package/dist/e30037b8/libipvp.d.ts +474 -0
- package/dist/e30037b8/libipvp.js +3267 -0
- package/dist/e30037b8/libipvp.prod.d.ts +474 -0
- package/dist/e30037b8/libipvp.prod.js +184 -0
- package/dist/e30037b8/libipvp.prod.wasm +0 -0
- package/dist/e30037b8/libipvp.wasm +0 -0
- package/dist/e30037b8/librtc.d.ts +438 -0
- package/dist/e30037b8/librtc.global.js +5863 -0
- package/dist/e30037b8/librtc.global.prod.js +15 -0
- package/dist/e30037b8/libsfu-simd.d.ts +767 -0
- package/dist/e30037b8/libsfu-simd.js +4822 -0
- package/dist/e30037b8/libsfu-simd.prod.d.ts +767 -0
- package/dist/e30037b8/libsfu-simd.prod.js +209 -0
- package/dist/e30037b8/libsfu-simd.prod.wasm +0 -0
- package/dist/e30037b8/libsfu-simd.wasm +0 -0
- package/dist/e30037b8/libsfu.d.ts +767 -0
- package/dist/e30037b8/libsfu.js +4822 -0
- package/dist/e30037b8/libsfu.prod.d.ts +767 -0
- package/dist/e30037b8/libsfu.prod.js +209 -0
- package/dist/e30037b8/libsfu.prod.wasm +0 -0
- package/dist/e30037b8/libsfu.wasm +0 -0
- package/dist/e30037b8/libsvc-simd-m1.d.ts +767 -0
- package/dist/e30037b8/libsvc-simd-m1.js +4921 -0
- package/dist/e30037b8/libsvc-simd-m1.prod.d.ts +767 -0
- package/dist/e30037b8/libsvc-simd-m1.prod.js +209 -0
- package/dist/e30037b8/libsvc-simd-m1.prod.wasm +0 -0
- package/dist/e30037b8/libsvc-simd-m1.wasm +0 -0
- package/dist/e30037b8/libsvc-simd.d.ts +767 -0
- package/dist/e30037b8/libsvc-simd.js +4857 -0
- package/dist/e30037b8/libsvc-simd.prod.d.ts +767 -0
- package/dist/e30037b8/libsvc-simd.prod.js +209 -0
- package/dist/e30037b8/libsvc-simd.prod.wasm +0 -0
- package/dist/e30037b8/libsvc-simd.wasm +0 -0
- package/dist/e30037b8/libsvc.d.ts +767 -0
- package/dist/e30037b8/libsvc.js +4857 -0
- package/dist/e30037b8/libsvc.prod.d.ts +767 -0
- package/dist/e30037b8/libsvc.prod.js +209 -0
- package/dist/e30037b8/libsvc.prod.wasm +0 -0
- package/dist/e30037b8/libsvc.wasm +0 -0
- package/dist/e30037b8/native-audio-worker.global.js +1583 -0
- package/dist/e30037b8/native-audio-worker.global.prod.js +15 -0
- package/dist/e30037b8/native-video-worker.global.js +1960 -0
- package/dist/e30037b8/native-video-worker.global.prod.js +15 -0
- package/dist/e30037b8/worklet-audio-worker.global.js +900 -0
- package/dist/e30037b8/worklet-audio-worker.global.prod.js +15 -0
- package/dist/style.css +1 -1
- package/dist/ylink-sdk-mobile.umd.js +70 -70
- package/package.json +1 -1
|
@@ -0,0 +1,767 @@
|
|
|
1
|
+
/// <reference types="emscripten" />
|
|
2
|
+
|
|
3
|
+
import './libsvc.ambient';
|
|
4
|
+
|
|
5
|
+
/* eslint-disable camelcase */
|
|
6
|
+
export interface SVCModule extends EmscriptenModuleWithRuntime {
|
|
7
|
+
SFUEndpoint: SFUEndpoint;
|
|
8
|
+
SFUTransport: SFUTransport;
|
|
9
|
+
SFUTransportProxy: SFUTransportProxy;
|
|
10
|
+
VideoChannel: VideoChannel;
|
|
11
|
+
|
|
12
|
+
Transport: Transport;
|
|
13
|
+
TransportFactory: TransportFactory;
|
|
14
|
+
TimerFactory: TimerFactory;
|
|
15
|
+
|
|
16
|
+
FrameSource: FrameSource;
|
|
17
|
+
FrameSink: FrameSink;
|
|
18
|
+
I420Buffer: I420Buffer;
|
|
19
|
+
EventEmitter: EventEmitter;
|
|
20
|
+
|
|
21
|
+
SFUReason: SFUReason;
|
|
22
|
+
SFUUserRole: SFUUserRole;
|
|
23
|
+
SFUTransportType: SFUTransportType;
|
|
24
|
+
SFUTransportStatus: SFUTransportStatus;
|
|
25
|
+
SFUTransportOrient: SFUTransportOrient;
|
|
26
|
+
SFUEndpointStatus: SFUEndpointStatus;
|
|
27
|
+
VideoChannelOrient: VideoChannelOrient;
|
|
28
|
+
VideoChannelMode: VideoChannelMode;
|
|
29
|
+
VideoRotation: VideoRotation;
|
|
30
|
+
|
|
31
|
+
DataChannel: DataChannel;
|
|
32
|
+
DataType: DataType;
|
|
33
|
+
|
|
34
|
+
SubtitleRecord: SubtitleRecord;
|
|
35
|
+
SubtitleRealtime: SubtitleRealtime;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface SFUTransport {
|
|
39
|
+
prototype: SFUTransportInterface;
|
|
40
|
+
new (endpoint: SFUEndpointInterface, type: SFUTransportType): SFUTransportInterface;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface SFUTransportInterface
|
|
44
|
+
extends EmscriptenClass<SFUTransportInterface>,
|
|
45
|
+
EventEmitterInterface<SFUTransportEvents> {
|
|
46
|
+
Connect(config: SFUTransportConfig): number;
|
|
47
|
+
Disconnect(): number;
|
|
48
|
+
|
|
49
|
+
Subscribe(request: SFUSubscribeData[], remove: SFUSubscribeData[]): number;
|
|
50
|
+
|
|
51
|
+
SendData(data: SFUData[], meta?: SFUDataMeta): number;
|
|
52
|
+
SendSingal(data: number, length: number, ccid: number): number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type SFUTransportEvents = {
|
|
56
|
+
onjoin: (reason: SFUReason) => void;
|
|
57
|
+
onleave: (reason: SFUReason) => void;
|
|
58
|
+
onstatus: (status: SFUTransportStatus, reason: SFUReason) => void;
|
|
59
|
+
onsubscribe: (ccid: number, reason: SFUReason) => void;
|
|
60
|
+
onsubscribeupdated: (requests: SFUSubscribeConfig[]) => void;
|
|
61
|
+
onbitrate: (info: SFUNetworkInfo) => void;
|
|
62
|
+
onsendstats: (stats: SFUNetworkStats) => void;
|
|
63
|
+
onrecvstats: (stats: SFUNetworkStats) => void;
|
|
64
|
+
onsendreport: (stats: SFUNetworkStats) => void;
|
|
65
|
+
onaudiosendstats: (stats: SFUNetworkAudioStats) => void;
|
|
66
|
+
onaudiorecvstats: (stats: SFUNetworkAudioStats) => void;
|
|
67
|
+
ontimestamps: () => void;
|
|
68
|
+
onmediasync: (timestamps: SFUTimestamp[]) => void;
|
|
69
|
+
onsignal: (data: number, length: number) => void;
|
|
70
|
+
ondata: (data: number, length: number, ccid: number, time: string, channel: number) => void;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export interface SFUTransportProxy {
|
|
74
|
+
prototype: SFUTransportProxyInterface;
|
|
75
|
+
new (delegate: SFUTransportDelegate): SFUTransportProxyInterface;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface SFUTransportProxyInterface
|
|
79
|
+
extends EmscriptenClass<SFUTransportProxyInterface>,
|
|
80
|
+
SFUTransportEvents {
|
|
81
|
+
// onjoin: (reason: SFUReason) => void;
|
|
82
|
+
// onleave: (reason: SFUReason) => void;
|
|
83
|
+
// onstatus: (status: SFUTransportStatus, reason: SFUReason) => void;
|
|
84
|
+
// onsubscribe: (ccid: number, reason: SFUReason) => void;
|
|
85
|
+
// onsubscribeupdated: (requests: SFUSubscribeConfig[]) => void;
|
|
86
|
+
// onbitrate: (info: SFUNetworkInfo) => void;
|
|
87
|
+
// onsendstats: (stats: SFUNetworkStats) => void;
|
|
88
|
+
// onrecvstats: (stats: SFUNetworkStats) => void;
|
|
89
|
+
// onsendreport: (stats: SFUNetworkStats) => void;
|
|
90
|
+
// ontimestamps: () => void;
|
|
91
|
+
// onmediasync: (timestamps: SFUTimestamp[]) => void;
|
|
92
|
+
// onsignal: (data: number, length: number) => void;
|
|
93
|
+
// ondata: (data: number, length: number, ccid: number, time: string) => void;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface SFUTransportDelegate {
|
|
97
|
+
Connect(config: SFUTransportConfig): void;
|
|
98
|
+
Disconnect(): void;
|
|
99
|
+
|
|
100
|
+
Subscribe(request: SFUSubscribeData[], remove: number[]): void;
|
|
101
|
+
|
|
102
|
+
SendData(data: SFUData[], meta: SFUDataMeta): void;
|
|
103
|
+
SendSingal(data: number, length: number, ccid: number): void;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// pointer, length
|
|
107
|
+
export type SFUData = [number, number];
|
|
108
|
+
|
|
109
|
+
export interface SFUDataMeta {
|
|
110
|
+
channel: number;
|
|
111
|
+
priority: number;
|
|
112
|
+
key_flag: number;
|
|
113
|
+
cursor_image_flag: number;
|
|
114
|
+
timestamp: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface SFUTransportConfig {
|
|
118
|
+
orient: SFUTransportOrient;
|
|
119
|
+
feature: number;
|
|
120
|
+
target_incoming_bitrate: number;
|
|
121
|
+
target_outgoing_bitrate: number;
|
|
122
|
+
desc: SFUData;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export enum SFUTransportType {
|
|
126
|
+
kAudio = 1,
|
|
127
|
+
kVideo,
|
|
128
|
+
kData,
|
|
129
|
+
kAnnotation,
|
|
130
|
+
kMessage,
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export enum SFUTransportOrient {
|
|
134
|
+
kSend = 1,
|
|
135
|
+
kRecv,
|
|
136
|
+
kBoth,
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export enum SFUUserRole {
|
|
140
|
+
kInteractive = 1,
|
|
141
|
+
kBroadcast,
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface SFUNetworkInfo {
|
|
145
|
+
probe: number;
|
|
146
|
+
bitrate: number;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface SFUNetworkStats {
|
|
150
|
+
loss_rate: number;
|
|
151
|
+
accumulated_loss_packets: number;
|
|
152
|
+
jitter: number;
|
|
153
|
+
rtt: number;
|
|
154
|
+
bitrate: number;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface SFUNetworkReport {
|
|
158
|
+
allocate_bitrate: number;
|
|
159
|
+
bandwidth_estimation: number;
|
|
160
|
+
bandwidth_from_reciever: number;
|
|
161
|
+
fec_bitrate: number;
|
|
162
|
+
nack_bitrate: number;
|
|
163
|
+
paced_send_delay: number;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface SFUNetworkAudioStats {
|
|
167
|
+
rtt: number;
|
|
168
|
+
jitter: number;
|
|
169
|
+
bitrate: number;
|
|
170
|
+
audio_real_pkg_num: number;
|
|
171
|
+
loss_rate: number;
|
|
172
|
+
loss_continue_info: {
|
|
173
|
+
loss_continue_eq_2: number;
|
|
174
|
+
loss_continue_eq_3: number;
|
|
175
|
+
loss_continue_eq_4: number;
|
|
176
|
+
loss_continue_eq_5: number;
|
|
177
|
+
loss_continue_eq_6: number;
|
|
178
|
+
loss_continue_eq_7: number;
|
|
179
|
+
loss_continue_eq_8: number;
|
|
180
|
+
loss_continue_eq_9: number;
|
|
181
|
+
loss_continue_gte_10: number;
|
|
182
|
+
};
|
|
183
|
+
outband_fec_bitrate: number;
|
|
184
|
+
outband_fec_level: number;
|
|
185
|
+
outband_fec_recover_rate: number;
|
|
186
|
+
arq_bitrate: number;
|
|
187
|
+
arq_recover_rate: number;
|
|
188
|
+
arq_max_req_counts: number;
|
|
189
|
+
arq_avg_req_counts: number;
|
|
190
|
+
outband_loss_recover_rate: number;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export interface SFUTimestamp {
|
|
194
|
+
ccid: number;
|
|
195
|
+
timestamp: number;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface SFUSubscribeData {
|
|
199
|
+
ccid: number;
|
|
200
|
+
desc: SFUData;
|
|
201
|
+
}
|
|
202
|
+
export interface SFUSubscribeConfig {
|
|
203
|
+
width: number;
|
|
204
|
+
height: number;
|
|
205
|
+
fps: number;
|
|
206
|
+
bandwidth: number;
|
|
207
|
+
is_update: boolean;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface SFUEndpoint {
|
|
211
|
+
prototype: SFUEndpointInterface;
|
|
212
|
+
new (transport_factory: TransportFactoryInterface): SFUEndpointInterface;
|
|
213
|
+
|
|
214
|
+
Version(): string;
|
|
215
|
+
|
|
216
|
+
Init(factory: TimerFactoryInterface, callback?: VideoChannelLogCallback): void;
|
|
217
|
+
Exit(): void;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export interface SFUEndpointInterface
|
|
221
|
+
extends EmscriptenClass<SFUEndpointInterface>,
|
|
222
|
+
EventEmitterInterface<SFUEndpointEvents> {
|
|
223
|
+
Start(config: SFUEndpointConfig): void;
|
|
224
|
+
Stop(): void;
|
|
225
|
+
|
|
226
|
+
SendOutboundAppCommand(data: number, length: number): void;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export type SFUEndpointEvents = {
|
|
230
|
+
onstatus: (state: SFUEndpointStatus, reason: SFUReason) => void;
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
export interface SFUEndpointConfig {
|
|
234
|
+
ccid: number;
|
|
235
|
+
confid: string;
|
|
236
|
+
token: string;
|
|
237
|
+
encrypt: string;
|
|
238
|
+
user_account: string;
|
|
239
|
+
meeting_number: string;
|
|
240
|
+
meeting_param: string;
|
|
241
|
+
client_type: string;
|
|
242
|
+
role: SFUUserRole;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export enum SFUReason {
|
|
246
|
+
kOK = 0,
|
|
247
|
+
kError = 1000,
|
|
248
|
+
kExisted,
|
|
249
|
+
kNetworkError,
|
|
250
|
+
kMCFailed,
|
|
251
|
+
kMSSFailed,
|
|
252
|
+
kMSSLost,
|
|
253
|
+
kAuthFailed,
|
|
254
|
+
kLoadFailed,
|
|
255
|
+
kNoImplemented,
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export enum SFUTransportStatus {
|
|
259
|
+
kReconnecting = 500,
|
|
260
|
+
kReconnectOK,
|
|
261
|
+
kReconnectNG,
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export enum SFUEndpointStatus {
|
|
265
|
+
kHandshakeOK = 100,
|
|
266
|
+
kHandshakeNG,
|
|
267
|
+
kConnectOK,
|
|
268
|
+
kConnectNG,
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface TransportInterface extends EmscriptenClass<TransportInterface> {
|
|
272
|
+
readonly identity: TransportType;
|
|
273
|
+
readonly callback: number;
|
|
274
|
+
|
|
275
|
+
onopen(): void;
|
|
276
|
+
onerror(): void;
|
|
277
|
+
onclose(error: boolean, code: number): void;
|
|
278
|
+
onmessage(data: number, length: number): void;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export interface TransportImpl {
|
|
282
|
+
send(data: number, length: number): void;
|
|
283
|
+
close(): void;
|
|
284
|
+
destroy(): void;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export interface Transport {
|
|
288
|
+
prototype: TransportInterface;
|
|
289
|
+
new (impl: TransportImpl, identity: TransportType, callback: number): TransportInterface;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export enum TransportType {
|
|
293
|
+
kSignal = 0,
|
|
294
|
+
kData,
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export interface TransportFactoryInterface extends EmscriptenClass<TransportFactoryInterface> {}
|
|
298
|
+
|
|
299
|
+
export interface TransportFactoryImpl {
|
|
300
|
+
create(identity: TransportType, callback: number): TransportInterface;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export interface TransportFactory {
|
|
304
|
+
prototype: TransportFactoryInterface;
|
|
305
|
+
new (impl: TransportFactoryImpl): TransportFactoryInterface;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface TimerFactoryInterface extends EmscriptenClass<TimerFactoryInterface> {}
|
|
309
|
+
|
|
310
|
+
export interface TimerFactoryImpl {
|
|
311
|
+
start(callback: number, delay: number): any;
|
|
312
|
+
stop(id: any): void;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface TimerFactory {
|
|
316
|
+
prototype: TimerFactoryInterface;
|
|
317
|
+
new (impl: TimerFactoryImpl): TimerFactoryInterface;
|
|
318
|
+
|
|
319
|
+
Run(callback: number): void;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export interface VideoChannel {
|
|
323
|
+
prototype: VideoChannelInterface;
|
|
324
|
+
new (type: VideoChannelType): VideoChannelInterface;
|
|
325
|
+
|
|
326
|
+
Version(): string;
|
|
327
|
+
|
|
328
|
+
Init(factory: TimerFactoryInterface, callback?: VideoChannelLogCallback): void;
|
|
329
|
+
Exit(): void;
|
|
330
|
+
|
|
331
|
+
EncodeMode(mode: VideoEncodeMode): void;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export enum VideoEncodeMode {
|
|
335
|
+
kVeryfast = 0,
|
|
336
|
+
kUltrafast = 1,
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export type VideoChannelLogCallback = (level: number, msg: string) => void;
|
|
340
|
+
|
|
341
|
+
export interface VideoChannelInterface
|
|
342
|
+
extends EmscriptenClass<VideoChannelInterface>,
|
|
343
|
+
EventEmitterInterface<VideoChannelEvents> {
|
|
344
|
+
readonly type: VideoChannelType;
|
|
345
|
+
|
|
346
|
+
SetTransport(transport?: SFUTransportProxyInterface): number;
|
|
347
|
+
SetSource(source?: FrameSourceInterface): number;
|
|
348
|
+
SetSink(source?: FrameSinkInterface): number;
|
|
349
|
+
SetOrient(orient: VideoChannelOrient): number;
|
|
350
|
+
|
|
351
|
+
Join(config: VideoChannelConfig): number;
|
|
352
|
+
Leave(): number;
|
|
353
|
+
|
|
354
|
+
Subscribe(request: VideoSubscribeConfig[], remove: number[]): number;
|
|
355
|
+
|
|
356
|
+
SendStats(): VideoChannelStats;
|
|
357
|
+
RecvStats(ccid: number): VideoChannelStats;
|
|
358
|
+
|
|
359
|
+
SendReport(): VideoChannelSendReport;
|
|
360
|
+
RecvReport(ccid: number): VideoChannelRecvReport;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export type VideoChannelEvents = {
|
|
364
|
+
onjoin: (result: SFUReason) => void;
|
|
365
|
+
onsubscribe: (ccid: number, result: SFUReason) => void;
|
|
366
|
+
onfailoverstart: () => void;
|
|
367
|
+
onfailoverfailed: () => void;
|
|
368
|
+
onvideosize: (width: number, height: number) => void;
|
|
369
|
+
oncpu: (cores: number) => void;
|
|
370
|
+
onhighcpu: () => void;
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
// SFUTransportType
|
|
374
|
+
// type VideoChannelType = SFUTransportType;
|
|
375
|
+
export enum VideoChannelType {
|
|
376
|
+
kAudio = 1,
|
|
377
|
+
kVideo,
|
|
378
|
+
kData,
|
|
379
|
+
kAnnotation,
|
|
380
|
+
kMessage,
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// SFUTransportOrient
|
|
384
|
+
// type VideoChannelOrient = SFUTransportOrient;
|
|
385
|
+
export enum VideoChannelOrient {
|
|
386
|
+
kSend = 1,
|
|
387
|
+
kRecv,
|
|
388
|
+
kBoth,
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
export enum VideoChannelMode {
|
|
392
|
+
kNormal = 0,
|
|
393
|
+
kSmooth,
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export interface VideoChannelConfig {
|
|
397
|
+
ccid: number;
|
|
398
|
+
confid: string;
|
|
399
|
+
orient: VideoChannelOrient;
|
|
400
|
+
mode: VideoChannelMode;
|
|
401
|
+
max_width: number;
|
|
402
|
+
max_height: number;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export interface VideoSubscribeConfig {
|
|
406
|
+
ccid: number;
|
|
407
|
+
width: number;
|
|
408
|
+
height: number;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
export interface VideoChannelStats {
|
|
412
|
+
width: number;
|
|
413
|
+
height: number;
|
|
414
|
+
frame_rate: number;
|
|
415
|
+
bit_rate: number;
|
|
416
|
+
loss_rate: number;
|
|
417
|
+
accumulated_loss_packets: number;
|
|
418
|
+
jitter: number;
|
|
419
|
+
rtt: number;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
export interface VideoChannelSendReport {
|
|
423
|
+
send_net_info: VideoChannelOutboundInfo;
|
|
424
|
+
send_stream_info: VideoChannelStreamInfo;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export interface VideoChannelRecvReport {
|
|
428
|
+
recv_net_info: VideoChannelInboundInfo;
|
|
429
|
+
recv_decode_info: VideoChannelDecodeInfo;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
export interface VideoChannelOutboundInfo {
|
|
433
|
+
ssrc: number;
|
|
434
|
+
rtt: number;
|
|
435
|
+
jitter: number;
|
|
436
|
+
loss_rate: number;
|
|
437
|
+
bandwidth_estimation: number;
|
|
438
|
+
allocate_bitrate: number;
|
|
439
|
+
bandwidth_from_reciever: number;
|
|
440
|
+
send_bitrate: number;
|
|
441
|
+
fec_bitrate: number;
|
|
442
|
+
nack_bitrate: number;
|
|
443
|
+
paced_send_delay: number;
|
|
444
|
+
}
|
|
445
|
+
export interface VideoChannelStreamInfo {
|
|
446
|
+
capture_fps: number;
|
|
447
|
+
datacap_avg_time: number;
|
|
448
|
+
video_encode_infos: VideoEncodeInfo[];
|
|
449
|
+
}
|
|
450
|
+
export interface VideoEncodeInfo {
|
|
451
|
+
enc_mode: number;
|
|
452
|
+
codec_type: string;
|
|
453
|
+
enc_width: number;
|
|
454
|
+
enc_height: number;
|
|
455
|
+
enc_fps: number;
|
|
456
|
+
enc_bitrate: number;
|
|
457
|
+
enc_avg_qp: number;
|
|
458
|
+
enc_max_qp: number;
|
|
459
|
+
enc_min_qp: number;
|
|
460
|
+
enc_i_avg_qp: number;
|
|
461
|
+
enc_idr_frame_num: number;
|
|
462
|
+
enc_avg_time: number;
|
|
463
|
+
cap2send_max_time: number;
|
|
464
|
+
enc_high_delay_frame_num: number;
|
|
465
|
+
big_frame_num: number;
|
|
466
|
+
recv_req_keyframe_num: number;
|
|
467
|
+
ltr_mark_frequency: number;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
export interface VideoChannelInboundInfo {
|
|
471
|
+
ssrc: number;
|
|
472
|
+
rtt: number;
|
|
473
|
+
jitter: number;
|
|
474
|
+
loss_rate: number;
|
|
475
|
+
recv_bitrate: number;
|
|
476
|
+
}
|
|
477
|
+
export interface VideoChannelDecodeInfo {
|
|
478
|
+
codec_type: string;
|
|
479
|
+
dec_width: number;
|
|
480
|
+
dec_height: number;
|
|
481
|
+
first_frame_time: number;
|
|
482
|
+
video_aftdec_bitrate: number;
|
|
483
|
+
video_aftdec_framerate: number;
|
|
484
|
+
video_dec_errorcode: number;
|
|
485
|
+
video_recovfrm_time: number;
|
|
486
|
+
video_jitterbuf_time: number;
|
|
487
|
+
decode_avg_time: number;
|
|
488
|
+
req_keyframe_num: number;
|
|
489
|
+
freeze_time: number;
|
|
490
|
+
video_dec_largefreeze_num: number;
|
|
491
|
+
sync_delay: number;
|
|
492
|
+
eva_grade: number;
|
|
493
|
+
frozen_rate: number;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
export interface FrameSourceInterface
|
|
497
|
+
extends EmscriptenClass<FrameSourceInterface>,
|
|
498
|
+
EventEmitterInterface<FrameSourceEvents> {
|
|
499
|
+
ccid: number;
|
|
500
|
+
|
|
501
|
+
readonly canstart: boolean;
|
|
502
|
+
readonly canstop: boolean;
|
|
503
|
+
|
|
504
|
+
OnFrame(buffer: I420BufferInterface): void;
|
|
505
|
+
|
|
506
|
+
AddSink(sink: FrameSinkInterface): void;
|
|
507
|
+
RemoveSink(sink: FrameSinkInterface): void;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
export type FrameSourceEvents = {
|
|
511
|
+
onstart: () => void;
|
|
512
|
+
onstop: () => void;
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
export interface FrameSource {
|
|
516
|
+
prototype: FrameSourceInterface;
|
|
517
|
+
new (): FrameSourceInterface;
|
|
518
|
+
new (ccid: number): FrameSourceInterface;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
export interface FrameSinkInterface
|
|
522
|
+
extends EmscriptenClass<FrameSinkInterface>,
|
|
523
|
+
EventEmitterInterface<FrameSinkEvents> {}
|
|
524
|
+
|
|
525
|
+
export type FrameSinkEvents = {
|
|
526
|
+
onframe: (ccid: number, buffer: I420BufferInterface) => void;
|
|
527
|
+
oncursor: (ccid: number) => void;
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
export interface FrameSink {
|
|
531
|
+
prototype: FrameSinkInterface;
|
|
532
|
+
new (): FrameSinkInterface;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
export interface I420BufferInterface extends EmscriptenClass<I420BufferInterface> {
|
|
536
|
+
readonly width: number;
|
|
537
|
+
readonly height: number;
|
|
538
|
+
readonly chromaWidth: number;
|
|
539
|
+
readonly chromaHeight: number;
|
|
540
|
+
readonly dataY: number;
|
|
541
|
+
readonly dataU: number;
|
|
542
|
+
readonly dataV: number;
|
|
543
|
+
readonly strideY: number;
|
|
544
|
+
readonly strideU: number;
|
|
545
|
+
readonly strideV: number;
|
|
546
|
+
|
|
547
|
+
CropAndScaleFrom(buffer: I420BufferInterface): void;
|
|
548
|
+
ScaleFrom(buffer: I420BufferInterface): void;
|
|
549
|
+
PasteFrom(buffer: I420BufferInterface, offset_col: number, offset_row: number): void;
|
|
550
|
+
ToABGR(pointer: number): void;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
export interface I420Buffer {
|
|
554
|
+
prototype: I420BufferInterface;
|
|
555
|
+
new (width: number, height: number): I420BufferInterface;
|
|
556
|
+
|
|
557
|
+
Copy(buffer: I420BufferInterface): I420BufferInterface;
|
|
558
|
+
FromYUV(
|
|
559
|
+
width: number,
|
|
560
|
+
height: number,
|
|
561
|
+
dataY: number,
|
|
562
|
+
strideY: number,
|
|
563
|
+
dataU: number,
|
|
564
|
+
strideU: number,
|
|
565
|
+
dataV: number,
|
|
566
|
+
strideV: number
|
|
567
|
+
): I420BufferInterface;
|
|
568
|
+
FromABGR(width: number, height: number, data: number, stride: number): I420BufferInterface;
|
|
569
|
+
Rotate(buffer: I420BufferInterface, rotation: VideoRotation): I420BufferInterface;
|
|
570
|
+
SetBlack(buffer: I420BufferInterface): void;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
export enum VideoRotation {
|
|
574
|
+
kRotation_0 = 0,
|
|
575
|
+
kRotation_90 = 90,
|
|
576
|
+
kRotation_180 = 180,
|
|
577
|
+
kRotation_270 = 270,
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export interface DataChannel {
|
|
581
|
+
prototype: DataChannelInterface;
|
|
582
|
+
// can only be VideoChannelType.kMessage
|
|
583
|
+
new (type: VideoChannelType): DataChannelInterface;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
export enum DataType {
|
|
587
|
+
kCoopration = 1,
|
|
588
|
+
kRemoteControl,
|
|
589
|
+
kSubtitleRealtime,
|
|
590
|
+
kSubtitleRecord,
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
export interface DataChannelInterface
|
|
594
|
+
extends EmscriptenClass<DataChannelInterface>,
|
|
595
|
+
EventEmitterInterface<DataChannelEvents> {
|
|
596
|
+
readonly type: VideoChannelType;
|
|
597
|
+
|
|
598
|
+
SetTransport(transport?: SFUTransportProxyInterface): number;
|
|
599
|
+
|
|
600
|
+
Join(config: DataChannelConfig): number;
|
|
601
|
+
Leave(): number;
|
|
602
|
+
|
|
603
|
+
CreateDataStream(type: DataType): DataStreamInterface;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export type DataChannelEvents = Record<string, (...args: any[]) => void>;
|
|
607
|
+
|
|
608
|
+
export interface DataChannelConfig {
|
|
609
|
+
ccid: number;
|
|
610
|
+
confid: string;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
export interface DataStreamInterface
|
|
614
|
+
extends EmscriptenClass<DataStreamInterface>,
|
|
615
|
+
EventEmitterInterface<DataStreamEvents> {
|
|
616
|
+
Write(data: number, length: number, dest: number[], traits: DataTraits): void;
|
|
617
|
+
Subscribe(request: number[], remove: number[]): number;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
export type DataStreamEvents = {
|
|
621
|
+
ondata: (data: number, length: number, from: number[]) => void;
|
|
622
|
+
};
|
|
623
|
+
|
|
624
|
+
export interface DataTraits {
|
|
625
|
+
direct: boolean;
|
|
626
|
+
merge: boolean;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
export interface SubtitleRecord {
|
|
630
|
+
prototype: SubtitleRecordInterface;
|
|
631
|
+
new (): SubtitleRecordInterface;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export interface SubtitleRecordInterface {
|
|
635
|
+
encode(subtitle: RecordSubtitleInfo, callback: (data: SFUData) => void): void;
|
|
636
|
+
decode(data: SFUData, callback: (subtitle: RecordSubtitleInfo) => void): void;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
export interface SubtitleRealtime {
|
|
640
|
+
prototype: SubtitleRealtimeInterface;
|
|
641
|
+
new (): SubtitleRealtimeInterface;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
export interface SubtitleRealtimeInterface {
|
|
645
|
+
encode(subtitle: RealtimeSubtitleInfo, callback: (data: SFUData) => void): void;
|
|
646
|
+
decode(data: SFUData, callback: (subtitle: RealtimeSubtitleInfo) => void): void;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
export interface SubtitleInfo {
|
|
650
|
+
sentence: SubtitleSentenceInfo;
|
|
651
|
+
}
|
|
652
|
+
export interface SubtitleSentenceInfo {
|
|
653
|
+
speakerid: number;
|
|
654
|
+
sentenceid: number;
|
|
655
|
+
action: SubtitleSentenceAction;
|
|
656
|
+
content: string;
|
|
657
|
+
}
|
|
658
|
+
export enum SubtitleSentenceAction {
|
|
659
|
+
kCommon = 0,
|
|
660
|
+
kShareStart,
|
|
661
|
+
kShareEnd,
|
|
662
|
+
kCoopStart,
|
|
663
|
+
kCoopEnd,
|
|
664
|
+
kServiceOver,
|
|
665
|
+
}
|
|
666
|
+
export interface RecordSubtitleInfo extends SubtitleInfo {
|
|
667
|
+
speaker: string;
|
|
668
|
+
starttime: number;
|
|
669
|
+
endtime: number;
|
|
670
|
+
words: SubtitleWordInfo[];
|
|
671
|
+
}
|
|
672
|
+
export interface RealtimeSubtitleInfo extends SubtitleInfo {
|
|
673
|
+
status: SubtitleSentenceStatus;
|
|
674
|
+
}
|
|
675
|
+
export enum SubtitleSentenceStatus {
|
|
676
|
+
kStart = 0,
|
|
677
|
+
kChanging,
|
|
678
|
+
kEnd,
|
|
679
|
+
}
|
|
680
|
+
export interface SubtitleWordInfo {
|
|
681
|
+
timeoffset: number;
|
|
682
|
+
content: string;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
export interface EventEmitterInterface<
|
|
686
|
+
EventMap extends Record<string, (...args: any[]) => void> = never
|
|
687
|
+
> {
|
|
688
|
+
once<T extends keyof EventMap>(event: T, callback: EventMap[T]): void;
|
|
689
|
+
once<T extends keyof EventMap>(
|
|
690
|
+
event: '*',
|
|
691
|
+
callback: (event: T, ...args: Parameters<EventMap[T]>) => void
|
|
692
|
+
): void;
|
|
693
|
+
once<T extends keyof EventMap>(
|
|
694
|
+
event: '*',
|
|
695
|
+
callback: (event: T, ...args: unknown[]) => void
|
|
696
|
+
): void;
|
|
697
|
+
once(event: string, callback: (...args: unknown[]) => void): void;
|
|
698
|
+
|
|
699
|
+
on<T extends keyof EventMap>(event: T, callback: EventMap[T]): void;
|
|
700
|
+
on<T extends keyof EventMap>(
|
|
701
|
+
event: '*',
|
|
702
|
+
callback: (event: T, ...args: Parameters<EventMap[T]>) => void
|
|
703
|
+
): void;
|
|
704
|
+
on<T extends keyof EventMap>(event: '*', callback: (event: T, ...args: unknown[]) => void): void;
|
|
705
|
+
on(event: string, callback: (...args: unknown[]) => void): void;
|
|
706
|
+
|
|
707
|
+
off<T extends keyof EventMap>(event: T, callback?: EventMap[T]): void;
|
|
708
|
+
off(event: string, callback?: (...args: unknown[]) => void): void;
|
|
709
|
+
|
|
710
|
+
emit(event: keyof EventMap, ...args: Parameters<EventMap[typeof event]>): void;
|
|
711
|
+
emit(event: string, ...args: unknown[]): void;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
export interface EventEmitter {
|
|
715
|
+
prototype: EventEmitterInterface & EmscriptenClass<EventEmitterInterface>;
|
|
716
|
+
new (): EventEmitterInterface & EmscriptenClass<EventEmitterInterface>;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export interface EmscriptenClass<T> {
|
|
720
|
+
clone(): T;
|
|
721
|
+
delete(): void;
|
|
722
|
+
deleteLater(): void;
|
|
723
|
+
isAliasOf(): boolean;
|
|
724
|
+
isDeleted(): boolean;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
export interface EmscriptenModuleWithRuntime extends EmscriptenModule {
|
|
728
|
+
ccall: typeof ccall;
|
|
729
|
+
cwrap: typeof cwrap;
|
|
730
|
+
|
|
731
|
+
setValue: typeof setValue;
|
|
732
|
+
getValue: typeof getValue;
|
|
733
|
+
|
|
734
|
+
allocate: typeof allocate;
|
|
735
|
+
|
|
736
|
+
stackAlloc: typeof stackAlloc;
|
|
737
|
+
stackSave: typeof stackSave;
|
|
738
|
+
stackRestore: typeof stackRestore;
|
|
739
|
+
|
|
740
|
+
UTF8ToString: typeof UTF8ToString;
|
|
741
|
+
stringToUTF8: typeof stringToUTF8;
|
|
742
|
+
lengthBytesUTF8: typeof lengthBytesUTF8;
|
|
743
|
+
allocateUTF8: typeof allocateUTF8;
|
|
744
|
+
allocateUTF8OnStack: typeof allocateUTF8OnStack;
|
|
745
|
+
UTF16ToString: typeof UTF16ToString;
|
|
746
|
+
stringToUTF16: typeof stringToUTF16;
|
|
747
|
+
lengthBytesUTF16: typeof lengthBytesUTF16;
|
|
748
|
+
UTF32ToString: typeof UTF32ToString;
|
|
749
|
+
stringToUTF32: typeof stringToUTF32;
|
|
750
|
+
lengthBytesUTF32: typeof lengthBytesUTF32;
|
|
751
|
+
|
|
752
|
+
intArrayFromString: typeof intArrayFromString;
|
|
753
|
+
intArrayToString: typeof intArrayToString;
|
|
754
|
+
writeStringToMemory: typeof writeStringToMemory;
|
|
755
|
+
writeArrayToMemory: typeof writeArrayToMemory;
|
|
756
|
+
writeAsciiToMemory: typeof writeAsciiToMemory;
|
|
757
|
+
|
|
758
|
+
addRunDependency: typeof addRunDependency;
|
|
759
|
+
removeRunDependency: typeof removeRunDependency;
|
|
760
|
+
|
|
761
|
+
addFunction: typeof addFunction;
|
|
762
|
+
removeFunction: typeof removeFunction;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
declare const factory: EmscriptenModuleFactory<SVCModule>;
|
|
766
|
+
|
|
767
|
+
export default factory;
|