Das folgende Beispiel zeigt, wie RTCRtpScriptTransformer.readable
durch einen TransformStream
zu RTCRtpScriptTransformer.writable
geleitet wird.
addEventListener("rtctransform", (event) => {
let transform;
// Select a transform based on passed options
if (event.transformer.options.name === "senderTransform")
transform = createSenderTransform(); // A TransformStream
else if (event.transformer.options.name === "receiverTransform")
transform = createReceiverTransform(); // A TransformStream
else return;
// Pipe frames from the readable to writeable through TransformStream
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
Der Code implementiert einen Handler für das rtctransform
-Ereignis, das beim globalen Worker-Objekt bei der Konstruktion des entsprechenden RTCRtpScriptTransform
ausgelöst wird und wenn neue Rahmen zur Verarbeitung in die Warteschlange gestellt werden. event.transformer
ist der RTCRtpScriptTransformer
, der die writable
und readable
Eigenschaften hat.
Ein unterschiedlicher TransformStream
wird erstellt, um abgehende und eingehende Rahmen zu verarbeiten, unter Verwendung von createSenderTransform()
oder createReceiverTransform()
, je nachdem (Implementierungen nicht gezeigt). Der Ereignishandler wählt den korrekten Transform-Stream, basierend auf Optionen, die durch den RTCRtpScriptTransform
Konstruktor übergeben werden, und weist ihn transform
zu.
Der Code ruft ReadableStream.pipeThrough()
auf dem readable
auf, um kodierte Rahmen durch den ausgewählten TransformStream
zu leiten, und dann ReadableStream.pipeTo()
, um sie zum RTCRtpScriptTransformer.writable
zu leiten.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4