@@ -405,14 +405,21 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
405
405
406
406
jsReceiver.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
407
407
} else {
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
-
408
+ var writable =
409
+ jsReceiver.getProperty ('writable' .toJS) as web.WritableStream ? ;
410
+ var readable =
411
+ jsReceiver.getProperty ('readable' .toJS) as web.ReadableStream ? ;
412
+ var exist = true ;
413
+ if (writable == null || readable == null ) {
414
+ final streams = jsReceiver.callMethod <JSObject >(
415
+ 'createEncodedStreams' .toJS,
416
+ );
417
+ readable = streams.getProperty ('readable' .toJS) as web.ReadableStream ;
418
+ jsReceiver.setProperty ('readable' .toJS, readable);
419
+ writable = streams.getProperty ('writable' .toJS) as web.WritableStream ;
420
+ jsReceiver.setProperty ('writable' .toJS, writable);
421
+ exist = false ;
422
+ }
416
423
var msgId = randomString (12 );
417
424
try {
418
425
worker.postMessage (
@@ -426,7 +433,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
426
433
'trackId' : trackId,
427
434
'options' : keyProvider.options.toJson (),
428
435
'readableStream' : readable,
429
- 'writableStream' : writable
436
+ 'writableStream' : writable,
430
437
}.jsify (),
431
438
[readable, writable] as JSObject ,
432
439
);
@@ -467,14 +474,21 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
467
474
print ('object: ${options ['keyProviderId' ]}' );
468
475
jsSender.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
469
476
} else {
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
-
477
+ var writable =
478
+ jsSender.getProperty ('writable' .toJS) as web.WritableStream ? ;
479
+ var readable =
480
+ jsSender.getProperty ('readable' .toJS) as web.ReadableStream ? ;
481
+ var exist = true ;
482
+ if (writable == null || readable == null ) {
483
+ final streams = jsSender.callMethod <JSObject >(
484
+ 'createEncodedStreams' .toJS,
485
+ );
486
+ readable = streams.getProperty ('readable' .toJS) as web.ReadableStream ;
487
+ jsSender.setProperty ('readable' .toJS, readable);
488
+ writable = streams.getProperty ('writable' .toJS) as web.WritableStream ;
489
+ jsSender.setProperty ('writable' .toJS, writable);
490
+ exist = false ;
491
+ }
478
492
var msgId = randomString (12 );
479
493
480
494
try {
@@ -489,7 +503,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
489
503
'trackId' : trackId,
490
504
'options' : keyProvider.options.toJson (),
491
505
'readableStream' : readable,
492
- 'writableStream' : writable
506
+ 'writableStream' : writable,
493
507
}.jsify (),
494
508
[readable, writable] as JSObject ,
495
509
);
0 commit comments