@yume-chan/scrcpy
Version:
TypeScript implementation of Scrcpy client.
92 lines • 3.11 kB
JavaScript
import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, parseAudioStreamMetadata, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, serializeUHidCreateControlMessage, setListDisplays, setListEncoders, UHidOutputStream, } from "./impl/index.js";
export class ScrcpyOptions3_1 {
static Defaults = Defaults;
value;
get controlMessageTypes() {
return ControlMessageTypes;
}
#clipboard;
get clipboard() {
return this.#clipboard;
}
#ackClipboardHandler;
#uHidOutput;
get uHidOutput() {
return this.#uHidOutput;
}
constructor(init) {
this.value = { ...Defaults, ...init };
if (this.value.videoSource === "camera") {
this.value.control = false;
}
if (this.value.audioDup) {
this.value.audioSource = "playback";
}
if (this.value.control) {
if (this.value.clipboardAutosync) {
this.#clipboard = new ClipboardStream();
this.#ackClipboardHandler = new AckClipboardHandler();
}
this.#uHidOutput = new UHidOutputStream();
}
}
serialize() {
return serialize(this.value, Defaults);
}
setListDisplays() {
setListDisplays(this.value);
}
parseDisplay(line) {
return parseDisplay(line);
}
setListEncoders() {
setListEncoders(this.value);
}
parseEncoder(line) {
return parseEncoder(line);
}
parseVideoStreamMetadata(stream) {
return parseVideoStreamMetadata(this.value, stream);
}
parseAudioStreamMetadata(stream) {
return parseAudioStreamMetadata(stream, this.value);
}
async parseDeviceMessage(id, stream) {
if (await this.#clipboard?.parse(id, stream)) {
return;
}
if (await this.#ackClipboardHandler?.parse(id, stream)) {
return;
}
throw new Error("Unknown device message");
}
endDeviceMessageStream(e) {
if (e) {
this.#clipboard?.error(e);
this.#ackClipboardHandler?.error(e);
}
else {
this.#clipboard?.close();
this.#ackClipboardHandler?.close();
}
}
createMediaStreamTransformer() {
return createMediaStreamTransformer(this.value);
}
serializeInjectTouchControlMessage(message) {
return serializeInjectTouchControlMessage(message);
}
serializeBackOrScreenOnControlMessage(message) {
return serializeBackOrScreenOnControlMessage(message);
}
serializeSetClipboardControlMessage(message) {
return this.#ackClipboardHandler.serializeSetClipboardControlMessage(message);
}
createScrollController() {
return createScrollController();
}
serializeUHidCreateControlMessage(message) {
return serializeUHidCreateControlMessage(message);
}
}
//# sourceMappingURL=options.js.map