UNPKG

@yume-chan/scrcpy

Version:
49 lines 1.58 kB
import { BufferedReadableStream } from "@yume-chan/stream-extra"; import { ScrcpyVideoCodecId } from "../../base/video.js"; import { PrevImpl } from "./prev.js"; function toCodecId(codec) { switch (codec) { case "h264": return ScrcpyVideoCodecId.H264; case "h265": return ScrcpyVideoCodecId.H265; case "av1": return ScrcpyVideoCodecId.AV1; default: throw new Error(`Unknown video codec: ${codec}`); } } async function parseAsync(options, stream) { const buffered = new BufferedReadableStream(stream); // `sendDeviceMeta` now only contains device name, // can't use `super.parseVideoStreamMetadata` here let deviceName; if (options.sendDeviceMeta) { deviceName = await PrevImpl.readString(buffered, 64); } let codec; let width; let height; if (options.sendCodecMeta) { codec = (await PrevImpl.readU32(buffered)); width = await PrevImpl.readU32(buffered); height = await PrevImpl.readU32(buffered); } else { codec = toCodecId(options.videoCodec); } return { stream: buffered.release(), metadata: { deviceName, codec, width, height }, }; } export function parseVideoStreamMetadata(options, stream) { if (!options.sendDeviceMeta && !options.sendCodecMeta) { return { stream, metadata: { codec: toCodecId(options.videoCodec) }, }; } return parseAsync(options, stream); } //# sourceMappingURL=parse-video-stream-metadata.js.map