@@ -20,70 +20,6 @@ class WorkerResponse {
2020 dynamic data;
2121}
2222
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-
8723class FrameCryptorImpl extends FrameCryptor {
8824 FrameCryptorImpl (
8925 this ._factory, this .worker, this ._participantId, this ._trackId,
@@ -452,7 +388,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
452388 required KeyProvider keyProvider}) {
453389 var jsReceiver = (receiver as RTCRtpReceiverWeb ).jsRtpReceiver;
454390
455- var trackId = jsReceiver.hashCode. toString () ;
391+ var trackId = jsReceiver.track.id ;
456392 var kind = jsReceiver.track.kind;
457393
458394 if (web.window.hasProperty ('RTCRtpScriptTransform' .toJS).toDart) {
@@ -469,33 +405,35 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
469405
470406 jsReceiver.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
471407 } 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+
484416 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+ }
499437 }
500438 FrameCryptor cryptor = FrameCryptorImpl (
501439 this , worker, participantId, trackId,
@@ -529,39 +467,42 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
529467 print ('object: ${options ['keyProviderId' ]}' );
530468 jsSender.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
531469 } 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+
544478 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+ }
560500 }
561501 FrameCryptor cryptor = FrameCryptorImpl (
562502 this , worker, participantId, trackId,
563503 jsSender: jsSender, keyProvider: keyProvider);
564504 _frameCryptors[trackId] = cryptor;
505+
565506 return Future .value (cryptor);
566507 }
567508
0 commit comments