@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.
Files changed (55) hide show
  1. package/dist/e30037b8/VERSION +6 -0
  2. package/dist/e30037b8/libipvp-simd.d.ts +474 -0
  3. package/dist/e30037b8/libipvp-simd.js +3267 -0
  4. package/dist/e30037b8/libipvp-simd.prod.d.ts +474 -0
  5. package/dist/e30037b8/libipvp-simd.prod.js +184 -0
  6. package/dist/e30037b8/libipvp-simd.prod.wasm +0 -0
  7. package/dist/e30037b8/libipvp-simd.wasm +0 -0
  8. package/dist/e30037b8/libipvp.d.ts +474 -0
  9. package/dist/e30037b8/libipvp.js +3267 -0
  10. package/dist/e30037b8/libipvp.prod.d.ts +474 -0
  11. package/dist/e30037b8/libipvp.prod.js +184 -0
  12. package/dist/e30037b8/libipvp.prod.wasm +0 -0
  13. package/dist/e30037b8/libipvp.wasm +0 -0
  14. package/dist/e30037b8/librtc.d.ts +438 -0
  15. package/dist/e30037b8/librtc.global.js +5863 -0
  16. package/dist/e30037b8/librtc.global.prod.js +15 -0
  17. package/dist/e30037b8/libsfu-simd.d.ts +767 -0
  18. package/dist/e30037b8/libsfu-simd.js +4822 -0
  19. package/dist/e30037b8/libsfu-simd.prod.d.ts +767 -0
  20. package/dist/e30037b8/libsfu-simd.prod.js +209 -0
  21. package/dist/e30037b8/libsfu-simd.prod.wasm +0 -0
  22. package/dist/e30037b8/libsfu-simd.wasm +0 -0
  23. package/dist/e30037b8/libsfu.d.ts +767 -0
  24. package/dist/e30037b8/libsfu.js +4822 -0
  25. package/dist/e30037b8/libsfu.prod.d.ts +767 -0
  26. package/dist/e30037b8/libsfu.prod.js +209 -0
  27. package/dist/e30037b8/libsfu.prod.wasm +0 -0
  28. package/dist/e30037b8/libsfu.wasm +0 -0
  29. package/dist/e30037b8/libsvc-simd-m1.d.ts +767 -0
  30. package/dist/e30037b8/libsvc-simd-m1.js +4921 -0
  31. package/dist/e30037b8/libsvc-simd-m1.prod.d.ts +767 -0
  32. package/dist/e30037b8/libsvc-simd-m1.prod.js +209 -0
  33. package/dist/e30037b8/libsvc-simd-m1.prod.wasm +0 -0
  34. package/dist/e30037b8/libsvc-simd-m1.wasm +0 -0
  35. package/dist/e30037b8/libsvc-simd.d.ts +767 -0
  36. package/dist/e30037b8/libsvc-simd.js +4857 -0
  37. package/dist/e30037b8/libsvc-simd.prod.d.ts +767 -0
  38. package/dist/e30037b8/libsvc-simd.prod.js +209 -0
  39. package/dist/e30037b8/libsvc-simd.prod.wasm +0 -0
  40. package/dist/e30037b8/libsvc-simd.wasm +0 -0
  41. package/dist/e30037b8/libsvc.d.ts +767 -0
  42. package/dist/e30037b8/libsvc.js +4857 -0
  43. package/dist/e30037b8/libsvc.prod.d.ts +767 -0
  44. package/dist/e30037b8/libsvc.prod.js +209 -0
  45. package/dist/e30037b8/libsvc.prod.wasm +0 -0
  46. package/dist/e30037b8/libsvc.wasm +0 -0
  47. package/dist/e30037b8/native-audio-worker.global.js +1583 -0
  48. package/dist/e30037b8/native-audio-worker.global.prod.js +15 -0
  49. package/dist/e30037b8/native-video-worker.global.js +1960 -0
  50. package/dist/e30037b8/native-video-worker.global.prod.js +15 -0
  51. package/dist/e30037b8/worklet-audio-worker.global.js +900 -0
  52. package/dist/e30037b8/worklet-audio-worker.global.prod.js +15 -0
  53. package/dist/style.css +1 -1
  54. package/dist/ylink-sdk-mobile.umd.js +70 -70
  55. 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;