@@ -20,70 +20,6 @@ class WorkerResponse {
20
20
dynamic data;
21
21
}
22
22
23
- extension RtcRtpReceiverExt on web.RTCRtpReceiver {
24
- static Map <int , web.ReadableStream > readableStreams_ = {};
25
- static Map <int , web.WritableStream > writableStreams_ = {};
26
-
27
- web.ReadableStream ? get readable {
28
- if (readableStreams_.containsKey (hashCode)) {
29
- return readableStreams_[hashCode]! ;
30
- }
31
- return null ;
32
- }
33
-
34
- web.WritableStream ? get writable {
35
- if (writableStreams_.containsKey (hashCode)) {
36
- return writableStreams_[hashCode]! ;
37
- }
38
- return null ;
39
- }
40
-
41
- set readableStream (web.ReadableStream stream) {
42
- readableStreams_[hashCode] = stream;
43
- }
44
-
45
- set writableStream (web.WritableStream stream) {
46
- writableStreams_[hashCode] = stream;
47
- }
48
-
49
- void closeStreams () {
50
- readableStreams_.remove (hashCode);
51
- writableStreams_.remove (hashCode);
52
- }
53
- }
54
-
55
- extension RtcRtpSenderExt on web.RTCRtpSender {
56
- static Map <int , web.ReadableStream > readableStreams_ = {};
57
- static Map <int , web.WritableStream > writableStreams_ = {};
58
-
59
- web.ReadableStream ? get readable {
60
- if (readableStreams_.containsKey (hashCode)) {
61
- return readableStreams_[hashCode]! ;
62
- }
63
- return null ;
64
- }
65
-
66
- web.WritableStream ? get writable {
67
- if (writableStreams_.containsKey (hashCode)) {
68
- return writableStreams_[hashCode]! ;
69
- }
70
- return null ;
71
- }
72
-
73
- set readableStream (web.ReadableStream stream) {
74
- readableStreams_[hashCode] = stream;
75
- }
76
-
77
- set writableStream (web.WritableStream stream) {
78
- writableStreams_[hashCode] = stream;
79
- }
80
-
81
- void closeStreams () {
82
- readableStreams_.remove (hashCode);
83
- writableStreams_.remove (hashCode);
84
- }
85
- }
86
-
87
23
class FrameCryptorImpl extends FrameCryptor {
88
24
FrameCryptorImpl (
89
25
this ._factory, this .worker, this ._participantId, this ._trackId,
@@ -452,7 +388,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
452
388
required KeyProvider keyProvider}) {
453
389
var jsReceiver = (receiver as RTCRtpReceiverWeb ).jsRtpReceiver;
454
390
455
- var trackId = jsReceiver.hashCode. toString () ;
391
+ var trackId = jsReceiver.track.id ;
456
392
var kind = jsReceiver.track.kind;
457
393
458
394
if (web.window.hasProperty ('RTCRtpScriptTransform' .toJS).toDart) {
@@ -469,33 +405,35 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
469
405
470
406
jsReceiver.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
471
407
} else {
472
- var writable = jsReceiver.writable;
473
- var readable = jsReceiver.readable;
474
- var exist = true ;
475
- if (writable == null || readable == null ) {
476
- final streams =
477
- jsReceiver.callMethod <JSObject >('createEncodedStreams' .toJS);
478
- readable = streams.getProperty ('readable' .toJS) as web.ReadableStream ;
479
- jsReceiver.readableStream = readable;
480
- writable = streams.getProperty ('writable' .toJS) as web.WritableStream ;
481
- jsReceiver.writableStream = writable;
482
- exist = false ;
483
- }
408
+ var exist = false ;
409
+ final streams =
410
+ jsReceiver.callMethod <JSObject >('createEncodedStreams' .toJS);
411
+ final readable =
412
+ streams.getProperty ('readable' .toJS) as web.ReadableStream ;
413
+ final writable =
414
+ streams.getProperty ('writable' .toJS) as web.WritableStream ;
415
+
484
416
var msgId = randomString (12 );
485
- worker.postMessage (
486
- {
487
- 'msgType' : 'decode' ,
488
- 'msgId' : msgId,
489
- 'keyProviderId' : (keyProvider as KeyProviderImpl ).id,
490
- 'kind' : kind,
491
- 'exist' : exist,
492
- 'participantId' : participantId,
493
- 'trackId' : trackId,
494
- 'readableStream' : readable,
495
- 'writableStream' : writable
496
- }.jsify (),
497
- [readable, writable].jsify () as JSObject ,
498
- );
417
+ try {
418
+ worker.postMessage (
419
+ {
420
+ 'msgType' : 'decode' ,
421
+ 'msgId' : msgId,
422
+ 'keyProviderId' : (keyProvider as KeyProviderImpl ).id,
423
+ 'kind' : kind,
424
+ 'exist' : exist,
425
+ 'participantId' : participantId,
426
+ 'trackId' : trackId,
427
+ 'options' : keyProvider.options.toJson (),
428
+ 'readableStream' : readable,
429
+ 'writableStream' : writable
430
+ }.jsify (),
431
+ [readable, writable] as JSObject ,
432
+ );
433
+ } catch (e) {
434
+ print ('Error posting message: $e ' );
435
+ rethrow ;
436
+ }
499
437
}
500
438
FrameCryptor cryptor = FrameCryptorImpl (
501
439
this , worker, participantId, trackId,
@@ -529,39 +467,42 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
529
467
print ('object: ${options ['keyProviderId' ]}' );
530
468
jsSender.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
531
469
} else {
532
- var writable = jsSender.writable;
533
- var readable = jsSender.readable;
534
- var exist = true ;
535
- if (writable == null || readable == null ) {
536
- final streams =
537
- jsSender.callMethod <JSObject >('createEncodedStreams' .toJS);
538
- readable = streams.getProperty ('readable' .toJS) as web.ReadableStream ;
539
- jsSender.readableStream = readable;
540
- writable = streams.getProperty ('writable' .toJS) as web.WritableStream ;
541
-
542
- exist = false ;
543
- }
470
+ var exist = false ;
471
+ final streams =
472
+ jsSender.callMethod <JSObject >('createEncodedStreams' .toJS);
473
+ final readable =
474
+ streams.getProperty ('readable' .toJS) as web.ReadableStream ;
475
+ final writable =
476
+ streams.getProperty ('writable' .toJS) as web.WritableStream ;
477
+
544
478
var msgId = randomString (12 );
545
- worker.postMessage (
546
- {
547
- 'msgType' : 'encode' ,
548
- 'msgId' : msgId,
549
- 'keyProviderId' : (keyProvider as KeyProviderImpl ).id,
550
- 'kind' : kind,
551
- 'exist' : exist,
552
- 'participantId' : participantId,
553
- 'trackId' : trackId,
554
- 'options' : keyProvider.options.toJson (),
555
- 'readableStream' : readable,
556
- 'writableStream' : writable
557
- }.jsify (),
558
- [readable, writable].jsify () as JSObject ,
559
- );
479
+
480
+ try {
481
+ worker.postMessage (
482
+ {
483
+ 'msgType' : 'encode' ,
484
+ 'msgId' : msgId,
485
+ 'keyProviderId' : (keyProvider as KeyProviderImpl ).id,
486
+ 'kind' : kind,
487
+ 'exist' : exist,
488
+ 'participantId' : participantId,
489
+ 'trackId' : trackId,
490
+ 'options' : keyProvider.options.toJson (),
491
+ 'readableStream' : readable,
492
+ 'writableStream' : writable
493
+ }.jsify (),
494
+ [readable, writable] as JSObject ,
495
+ );
496
+ } catch (e) {
497
+ print ('Error posting message: $e ' );
498
+ rethrow ;
499
+ }
560
500
}
561
501
FrameCryptor cryptor = FrameCryptorImpl (
562
502
this , worker, participantId, trackId,
563
503
jsSender: jsSender, keyProvider: keyProvider);
564
504
_frameCryptors[trackId] = cryptor;
505
+
565
506
return Future .value (cryptor);
566
507
}
567
508
0 commit comments