@@ -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