UNPKG

@yume-chan/scrcpy-decoder-webcodecs

Version:

Raw H.264 stream decoder and renderer using WebCodecs API (requires modern browser).

45 lines 1.58 kB
// cspell: ignore insertable export class InsertableStreamVideoFrameRenderer { static get isSupported() { return typeof MediaStreamTrackGenerator !== "undefined"; } #element; get element() { return this.#element; } #generator; #writer; #stream; constructor(element) { if (element) { this.#element = element; } else if (typeof document !== "undefined") { this.#element = document.createElement("video"); } else { throw new Error("no video element input found nor any video element can be created"); } this.#element.muted = true; this.#element.autoplay = true; this.#element.disablePictureInPicture = true; this.#element.disableRemotePlayback = true; // The spec replaced `MediaStreamTrackGenerator` with `VideoTrackGenerator`. // But Chrome has not implemented it yet. // https://issues.chromium.org/issues/40058895 this.#generator = new MediaStreamTrackGenerator({ kind: "video" }); this.#writer = this.#generator.writable.getWriter(); this.#stream = new MediaStream([this.#generator]); this.#element.srcObject = this.#stream; } setSize(width, height) { if (this.#element.width !== width || this.#element.height !== height) { this.#element.width = width; this.#element.height = height; } } async draw(frame) { await this.#writer.write(frame); } } //# sourceMappingURL=insertable-stream.js.map