@@ -405,14 +405,21 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
405405
406406 jsReceiver.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
407407 } 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+ }
416423 var msgId = randomString (12 );
417424 try {
418425 worker.postMessage (
@@ -426,7 +433,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
426433 'trackId' : trackId,
427434 'options' : keyProvider.options.toJson (),
428435 'readableStream' : readable,
429- 'writableStream' : writable
436+ 'writableStream' : writable,
430437 }.jsify (),
431438 [readable, writable] as JSObject ,
432439 );
@@ -467,14 +474,21 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
467474 print ('object: ${options ['keyProviderId' ]}' );
468475 jsSender.transform = web.RTCRtpScriptTransform (worker, options.jsify ());
469476 } 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+ }
478492 var msgId = randomString (12 );
479493
480494 try {
@@ -489,7 +503,7 @@ class FrameCryptorFactoryImpl implements FrameCryptorFactory {
489503 'trackId' : trackId,
490504 'options' : keyProvider.options.toJson (),
491505 'readableStream' : readable,
492- 'writableStream' : writable
506+ 'writableStream' : writable,
493507 }.jsify (),
494508 [readable, writable] as JSObject ,
495509 );
0 commit comments