@yume-chan/scrcpy 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +33 -0
- package/CHANGELOG.md +18 -1
- package/README.md +157 -183
- package/bin/scrcpy-server +0 -0
- package/bin/version.d.ts +1 -1
- package/bin/version.js +1 -1
- package/esm/codec/av1.d.ts +33 -0
- package/esm/codec/av1.d.ts.map +1 -0
- package/esm/codec/av1.js +35 -0
- package/esm/codec/av1.js.map +1 -0
- package/esm/codec/h264.d.ts +78 -0
- package/esm/codec/h264.d.ts.map +1 -0
- package/esm/codec/h264.js +256 -0
- package/esm/codec/h264.js.map +1 -0
- package/esm/codec/h265.d.ts +490 -0
- package/esm/codec/h265.d.ts.map +1 -0
- package/esm/codec/h265.js +1098 -0
- package/esm/codec/h265.js.map +1 -0
- package/esm/codec/index.d.ts +5 -0
- package/esm/codec/index.d.ts.map +1 -0
- package/esm/codec/index.js +5 -0
- package/esm/codec/index.js.map +1 -0
- package/esm/codec/nalu.d.ts +44 -0
- package/esm/codec/nalu.d.ts.map +1 -0
- package/esm/codec/nalu.js +310 -0
- package/esm/codec/nalu.js.map +1 -0
- package/esm/control/back-or-screen-on.d.ts +2 -2
- package/esm/control/back-or-screen-on.d.ts.map +1 -1
- package/esm/control/back-or-screen-on.js +1 -1
- package/esm/control/basic.d.ts +5 -0
- package/esm/control/basic.d.ts.map +1 -0
- package/esm/control/basic.js +3 -0
- package/esm/control/basic.js.map +1 -0
- package/esm/control/hover-helper.d.ts +17 -17
- package/esm/control/hover-helper.d.ts.map +1 -1
- package/esm/control/hover-helper.js +43 -43
- package/esm/control/hover-helper.js.map +1 -1
- package/esm/control/index.d.ts +13 -11
- package/esm/control/index.d.ts.map +1 -1
- package/esm/control/index.js +13 -11
- package/esm/control/index.js.map +1 -1
- package/esm/control/inject-keycode.d.ts +193 -60
- package/esm/control/inject-keycode.d.ts.map +1 -1
- package/esm/control/inject-keycode.js +198 -61
- package/esm/control/inject-keycode.js.map +1 -1
- package/esm/control/inject-scroll.d.ts +2 -2
- package/esm/control/inject-scroll.d.ts.map +1 -1
- package/esm/control/inject-scroll.js +1 -1
- package/esm/control/inject-text.d.ts +7 -8
- package/esm/control/inject-text.d.ts.map +1 -1
- package/esm/control/inject-text.js +5 -6
- package/esm/control/inject-text.js.map +1 -1
- package/esm/control/inject-touch.d.ts +32 -37
- package/esm/control/inject-touch.d.ts.map +1 -1
- package/esm/control/inject-touch.js +35 -62
- package/esm/control/inject-touch.js.map +1 -1
- package/esm/control/rotate-device.d.ts +4 -6
- package/esm/control/rotate-device.d.ts.map +1 -1
- package/esm/control/rotate-device.js +2 -4
- package/esm/control/rotate-device.js.map +1 -1
- package/esm/control/serializer.d.ts +25 -33
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +53 -78
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/set-clipboard.d.ts +2 -2
- package/esm/control/set-clipboard.d.ts.map +1 -1
- package/esm/control/set-clipboard.js +1 -1
- package/esm/control/set-screen-power-mode.d.ts +10 -11
- package/esm/control/set-screen-power-mode.d.ts.map +1 -1
- package/esm/control/set-screen-power-mode.js +10 -11
- package/esm/control/set-screen-power-mode.js.map +1 -1
- package/esm/control/type.d.ts +28 -14
- package/esm/control/type.d.ts.map +1 -1
- package/esm/control/type.js +40 -18
- package/esm/control/type.js.map +1 -1
- package/esm/control/writer.d.ts +28 -0
- package/esm/control/writer.d.ts.map +1 -0
- package/esm/control/writer.js +53 -0
- package/esm/control/writer.js.map +1 -0
- package/esm/device-message/ack-clipboard.d.ts +8 -8
- package/esm/device-message/ack-clipboard.d.ts.map +1 -1
- package/esm/device-message/ack-clipboard.js +5 -5
- package/esm/device-message/clipboard.d.ts +9 -9
- package/esm/device-message/clipboard.d.ts.map +1 -1
- package/esm/device-message/clipboard.js +6 -6
- package/esm/device-message/index.d.ts +4 -4
- package/esm/device-message/index.js +4 -4
- package/esm/device-message/stream.d.ts +7 -7
- package/esm/device-message/stream.d.ts.map +1 -1
- package/esm/device-message/stream.js +34 -19
- package/esm/device-message/stream.js.map +1 -1
- package/esm/device-message/type.d.ts +4 -4
- package/esm/device-message/type.js +6 -6
- package/esm/index.d.ts +4 -5
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -5
- package/esm/index.js.map +1 -1
- package/esm/options/1_16/codec-options.d.ts +19 -19
- package/esm/options/1_16/codec-options.d.ts.map +1 -1
- package/esm/options/1_16/codec-options.js +25 -25
- package/esm/options/1_16/codec-options.js.map +1 -1
- package/esm/options/1_16/float-to-uint16.d.ts +5 -0
- package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
- package/esm/options/1_16/float-to-uint16.js +27 -0
- package/esm/options/1_16/float-to-uint16.js.map +1 -0
- package/esm/options/1_16/index.d.ts +6 -4
- package/esm/options/1_16/index.d.ts.map +1 -1
- package/esm/options/1_16/index.js +6 -4
- package/esm/options/1_16/index.js.map +1 -1
- package/esm/options/1_16/init.d.ts +66 -0
- package/esm/options/1_16/init.d.ts.map +1 -0
- package/esm/options/1_16/init.js +16 -0
- package/esm/options/1_16/init.js.map +1 -0
- package/esm/options/1_16/message.d.ts +32 -0
- package/esm/options/1_16/message.d.ts.map +1 -0
- package/esm/options/1_16/message.js +37 -0
- package/esm/options/1_16/message.js.map +1 -0
- package/esm/options/1_16/options.d.ts +48 -93
- package/esm/options/1_16/options.d.ts.map +1 -1
- package/esm/options/1_16/options.js +152 -189
- package/esm/options/1_16/options.js.map +1 -1
- package/esm/options/1_16/scroll.d.ts +26 -26
- package/esm/options/1_16/scroll.d.ts.map +1 -1
- package/esm/options/1_16/scroll.js +54 -55
- package/esm/options/1_16/scroll.js.map +1 -1
- package/esm/options/1_17.d.ts +33 -0
- package/esm/options/1_17.d.ts.map +1 -0
- package/esm/options/1_17.js +42 -0
- package/esm/options/1_17.js.map +1 -0
- package/esm/options/1_18.d.ts +59 -19
- package/esm/options/1_18.d.ts.map +1 -1
- package/esm/options/1_18.js +78 -45
- package/esm/options/1_18.js.map +1 -1
- package/esm/options/1_21.d.ts +41 -20
- package/esm/options/1_21.d.ts.map +1 -1
- package/esm/options/1_21.js +51 -36
- package/esm/options/1_21.js.map +1 -1
- package/esm/options/1_22/index.d.ts +3 -2
- package/esm/options/1_22/index.d.ts.map +1 -1
- package/esm/options/1_22/index.js +3 -2
- package/esm/options/1_22/index.js.map +1 -1
- package/esm/options/1_22/init.d.ts +17 -0
- package/esm/options/1_22/init.d.ts.map +1 -0
- package/esm/options/1_22/init.js +2 -0
- package/esm/options/1_22/init.js.map +1 -0
- package/esm/options/1_22/options.d.ts +35 -28
- package/esm/options/1_22/options.d.ts.map +1 -1
- package/esm/options/1_22/options.js +36 -25
- package/esm/options/1_22/options.js.map +1 -1
- package/esm/options/1_22/scroll.d.ts +16 -16
- package/esm/options/1_22/scroll.d.ts.map +1 -1
- package/esm/options/1_22/scroll.js +14 -14
- package/esm/options/1_23.d.ts +36 -11
- package/esm/options/1_23.d.ts.map +1 -1
- package/esm/options/1_23.js +44 -34
- package/esm/options/1_23.js.map +1 -1
- package/esm/options/1_24.d.ts +34 -8
- package/esm/options/1_24.d.ts.map +1 -1
- package/esm/options/1_24.js +22 -12
- package/esm/options/1_24.js.map +1 -1
- package/esm/options/1_25/index.d.ts +2 -2
- package/esm/options/1_25/index.js +2 -2
- package/esm/options/1_25/options.d.ts +10 -5
- package/esm/options/1_25/options.d.ts.map +1 -1
- package/esm/options/1_25/options.js +21 -7
- package/esm/options/1_25/options.js.map +1 -1
- package/esm/options/1_25/scroll.d.ts +19 -18
- package/esm/options/1_25/scroll.d.ts.map +1 -1
- package/esm/options/1_25/scroll.js +33 -32
- package/esm/options/1_25/scroll.js.map +1 -1
- package/esm/options/2_0.d.ts +91 -0
- package/esm/options/2_0.d.ts.map +1 -0
- package/esm/options/2_0.js +244 -0
- package/esm/options/2_0.js.map +1 -0
- package/esm/options/codec.d.ts +52 -0
- package/esm/options/codec.d.ts.map +1 -0
- package/esm/options/codec.js +26 -0
- package/esm/options/codec.js.map +1 -0
- package/esm/options/index.d.ts +12 -8
- package/esm/options/index.d.ts.map +1 -1
- package/esm/options/index.js +12 -8
- package/esm/options/index.js.map +1 -1
- package/esm/options/latest.d.ts +12 -0
- package/esm/options/latest.d.ts.map +1 -0
- package/esm/options/latest.js +8 -0
- package/esm/options/latest.js.map +1 -0
- package/esm/options/types.d.ts +86 -46
- package/esm/options/types.d.ts.map +1 -1
- package/esm/options/types.js +69 -17
- package/esm/options/types.js.map +1 -1
- package/package.json +10 -16
- package/src/codec/av1.ts +33 -0
- package/src/codec/h264.ts +317 -0
- package/src/codec/h265.ts +1375 -0
- package/src/codec/index.ts +4 -0
- package/src/codec/nalu.ts +373 -0
- package/src/control/back-or-screen-on.ts +1 -1
- package/src/control/basic.ts +3 -0
- package/src/control/hover-helper.ts +2 -4
- package/src/control/index.ts +2 -0
- package/src/control/inject-keycode.ts +194 -51
- package/src/control/inject-scroll.ts +1 -1
- package/src/control/inject-text.ts +6 -9
- package/src/control/inject-touch.ts +16 -55
- package/src/control/rotate-device.ts +3 -7
- package/src/control/serializer.ts +49 -105
- package/src/control/set-clipboard.ts +1 -1
- package/src/control/set-screen-power-mode.ts +6 -9
- package/src/control/type.ts +32 -0
- package/src/control/writer.ts +87 -0
- package/src/device-message/ack-clipboard.ts +1 -1
- package/src/device-message/clipboard.ts +1 -1
- package/src/device-message/stream.ts +32 -12
- package/src/index.ts +4 -5
- package/src/options/1_16/codec-options.ts +5 -8
- package/src/options/1_16/float-to-uint16.ts +33 -0
- package/src/options/1_16/index.ts +3 -1
- package/src/options/1_16/init.ts +80 -0
- package/src/options/1_16/message.ts +55 -0
- package/src/options/1_16/options.ts +152 -256
- package/src/options/1_16/scroll.ts +2 -5
- package/src/options/1_17.ts +66 -0
- package/src/options/1_18.ts +106 -42
- package/src/options/1_21.ts +51 -30
- package/src/options/1_22/index.ts +1 -0
- package/src/options/1_22/init.ts +19 -0
- package/src/options/1_22/options.ts +40 -46
- package/src/options/1_22/scroll.ts +2 -2
- package/src/options/1_23.ts +33 -23
- package/src/options/1_24.ts +25 -11
- package/src/options/1_25/options.ts +25 -6
- package/src/options/1_25/scroll.ts +5 -7
- package/src/options/2_0.ts +342 -0
- package/src/options/codec.ts +98 -0
- package/src/options/index.ts +7 -3
- package/src/options/latest.ts +14 -0
- package/src/options/types.ts +158 -48
- package/tsconfig.build.json +9 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/adb/client.d.ts +0 -41
- package/esm/adb/client.d.ts.map +0 -1
- package/esm/adb/client.js +0 -243
- package/esm/adb/client.js.map +0 -1
- package/esm/adb/connection.d.ts +0 -47
- package/esm/adb/connection.d.ts.map +0 -1
- package/esm/adb/connection.js +0 -110
- package/esm/adb/connection.js.map +0 -1
- package/esm/adb/index.d.ts +0 -4
- package/esm/adb/index.d.ts.map +0 -1
- package/esm/adb/index.js +0 -4
- package/esm/adb/index.js.map +0 -1
- package/esm/adb/options/1_16.d.ts +0 -8
- package/esm/adb/options/1_16.d.ts.map +0 -1
- package/esm/adb/options/1_16.js +0 -20
- package/esm/adb/options/1_16.js.map +0 -1
- package/esm/adb/options/1_22.d.ts +0 -8
- package/esm/adb/options/1_22.d.ts.map +0 -1
- package/esm/adb/options/1_22.js +0 -17
- package/esm/adb/options/1_22.js.map +0 -1
- package/esm/adb/options/index.d.ts +0 -4
- package/esm/adb/options/index.d.ts.map +0 -1
- package/esm/adb/options/index.js +0 -4
- package/esm/adb/options/index.js.map +0 -1
- package/esm/adb/options/types.d.ts +0 -24
- package/esm/adb/options/types.d.ts.map +0 -1
- package/esm/adb/options/types.js +0 -37
- package/esm/adb/options/types.js.map +0 -1
- package/esm/codec.d.ts +0 -34
- package/esm/codec.d.ts.map +0 -1
- package/esm/codec.js +0 -37
- package/esm/codec.js.map +0 -1
- package/esm/options/1_16/h264-configuration.d.ts +0 -49
- package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
- package/esm/options/1_16/h264-configuration.js +0 -414
- package/esm/options/1_16/h264-configuration.js.map +0 -1
- package/esm/options/1_16/sps.d.ts +0 -22
- package/esm/options/1_16/sps.d.ts.map +0 -1
- package/esm/options/1_16/sps.js +0 -263
- package/esm/options/1_16/sps.js.map +0 -1
- package/src/adb/client.ts +0 -345
- package/src/adb/connection.ts +0 -192
- package/src/adb/index.ts +0 -3
- package/src/adb/options/1_16.ts +0 -30
- package/src/adb/options/1_22.ts +0 -26
- package/src/adb/options/index.ts +0 -3
- package/src/adb/options/types.ts +0 -75
- package/src/codec.ts +0 -35
- package/src/options/1_16/h264-configuration.ts +0 -485
package/src/adb/connection.ts
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { type Adb } from "@yume-chan/adb";
|
|
2
|
-
import { delay } from "@yume-chan/async";
|
|
3
|
-
import { type Disposable } from "@yume-chan/event";
|
|
4
|
-
import {
|
|
5
|
-
TransformStream,
|
|
6
|
-
type ReadableStream,
|
|
7
|
-
type ReadableStreamDefaultReader,
|
|
8
|
-
type ReadableWritablePair,
|
|
9
|
-
} from "@yume-chan/stream-extra";
|
|
10
|
-
import { type ValueOrPromise } from "@yume-chan/struct";
|
|
11
|
-
|
|
12
|
-
export interface AdbScrcpyConnectionOptions {
|
|
13
|
-
control: boolean;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Write a byte on start to detect connection issues
|
|
17
|
-
*/
|
|
18
|
-
sendDummyByte: boolean;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Send device name and size
|
|
22
|
-
*/
|
|
23
|
-
sendDeviceMeta: boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export abstract class AdbScrcpyConnection implements Disposable {
|
|
27
|
-
protected adb: Adb;
|
|
28
|
-
|
|
29
|
-
protected options: AdbScrcpyConnectionOptions;
|
|
30
|
-
|
|
31
|
-
public constructor(adb: Adb, options: AdbScrcpyConnectionOptions) {
|
|
32
|
-
this.adb = adb;
|
|
33
|
-
this.options = options;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public initialize(): ValueOrPromise<void> {
|
|
37
|
-
// do nothing
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public abstract getStreams(): ValueOrPromise<
|
|
41
|
-
[
|
|
42
|
-
videoSteam: ReadableStream<Uint8Array>,
|
|
43
|
-
controlStream:
|
|
44
|
-
| ReadableWritablePair<Uint8Array, Uint8Array>
|
|
45
|
-
| undefined
|
|
46
|
-
]
|
|
47
|
-
>;
|
|
48
|
-
|
|
49
|
-
public dispose(): void {
|
|
50
|
-
// do nothing
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export class AdbScrcpyForwardConnection extends AdbScrcpyConnection {
|
|
55
|
-
private connect(): Promise<ReadableWritablePair<Uint8Array, Uint8Array>> {
|
|
56
|
-
return this.adb.createSocket("localabstract:scrcpy");
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
private async connectAndRetry(): Promise<
|
|
60
|
-
ReadableWritablePair<Uint8Array, Uint8Array>
|
|
61
|
-
> {
|
|
62
|
-
for (let i = 0; i < 100; i += 1) {
|
|
63
|
-
try {
|
|
64
|
-
return await this.connect();
|
|
65
|
-
} catch (e) {
|
|
66
|
-
await delay(100);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
throw new Error(`Can't connect to server after 100 retries`);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private async connectVideoStream(): Promise<ReadableStream<Uint8Array>> {
|
|
73
|
-
const { readable: videoStream } = await this.connectAndRetry();
|
|
74
|
-
if (this.options.sendDummyByte) {
|
|
75
|
-
const reader = videoStream.getReader();
|
|
76
|
-
const { done, value } = await reader.read();
|
|
77
|
-
// server will write a `0` to signal connection success
|
|
78
|
-
if (done || value.byteLength !== 1 || value[0] !== 0) {
|
|
79
|
-
throw new Error("Unexpected response from server");
|
|
80
|
-
}
|
|
81
|
-
reader.releaseLock();
|
|
82
|
-
}
|
|
83
|
-
return videoStream;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public async getStreams(): Promise<
|
|
87
|
-
[
|
|
88
|
-
videoSteam: ReadableStream<Uint8Array>,
|
|
89
|
-
controlStream:
|
|
90
|
-
| ReadableWritablePair<Uint8Array, Uint8Array>
|
|
91
|
-
| undefined
|
|
92
|
-
]
|
|
93
|
-
> {
|
|
94
|
-
const videoStream = await this.connectVideoStream();
|
|
95
|
-
|
|
96
|
-
let controlStream:
|
|
97
|
-
| ReadableWritablePair<Uint8Array, Uint8Array>
|
|
98
|
-
| undefined;
|
|
99
|
-
if (this.options.control) {
|
|
100
|
-
controlStream = await this.connectAndRetry();
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Server only writes device meta after control socket is connected (if enabled)
|
|
104
|
-
if (this.options.sendDeviceMeta) {
|
|
105
|
-
const reader = videoStream.getReader();
|
|
106
|
-
const { done, value } = await reader.read();
|
|
107
|
-
// 64 bytes device name + 2 bytes video width + 2 bytes video height
|
|
108
|
-
if (done || value.byteLength !== 64 + 2 + 2) {
|
|
109
|
-
throw new Error("Unexpected response from server");
|
|
110
|
-
}
|
|
111
|
-
reader.releaseLock();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return [videoStream, controlStream];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export class AdbScrcpyReverseConnection extends AdbScrcpyConnection {
|
|
119
|
-
private streams!: ReadableStreamDefaultReader<
|
|
120
|
-
ReadableWritablePair<Uint8Array, Uint8Array>
|
|
121
|
-
>;
|
|
122
|
-
|
|
123
|
-
private address!: string;
|
|
124
|
-
|
|
125
|
-
public override async initialize(): Promise<void> {
|
|
126
|
-
// try to unbind first, ignore errors
|
|
127
|
-
await this.adb.reverse.remove("localabstract:scrcpy").catch((e) => {
|
|
128
|
-
void e;
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
const queue = new TransformStream<
|
|
132
|
-
ReadableWritablePair<Uint8Array, Uint8Array>,
|
|
133
|
-
ReadableWritablePair<Uint8Array, Uint8Array>
|
|
134
|
-
>();
|
|
135
|
-
this.streams = queue.readable.getReader();
|
|
136
|
-
const writer = queue.writable.getWriter();
|
|
137
|
-
this.address = await this.adb.reverse.add(
|
|
138
|
-
"localabstract:scrcpy",
|
|
139
|
-
"tcp:27183",
|
|
140
|
-
(socket) => {
|
|
141
|
-
void writer.write(socket);
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
private async accept(): Promise<
|
|
148
|
-
ReadableWritablePair<Uint8Array, Uint8Array>
|
|
149
|
-
> {
|
|
150
|
-
return (await this.streams.read()).value!;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
public async getStreams(): Promise<
|
|
154
|
-
[
|
|
155
|
-
videoSteam: ReadableStream<Uint8Array>,
|
|
156
|
-
controlStream:
|
|
157
|
-
| ReadableWritablePair<Uint8Array, Uint8Array>
|
|
158
|
-
| undefined
|
|
159
|
-
]
|
|
160
|
-
> {
|
|
161
|
-
const { readable: videoStream } = await this.accept();
|
|
162
|
-
|
|
163
|
-
let controlStream:
|
|
164
|
-
| ReadableWritablePair<Uint8Array, Uint8Array>
|
|
165
|
-
| undefined;
|
|
166
|
-
if (this.options.control) {
|
|
167
|
-
controlStream = await this.accept();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Server only writes device meta after control socket is connected (if enabled)
|
|
171
|
-
if (this.options.sendDeviceMeta) {
|
|
172
|
-
const reader = videoStream.getReader();
|
|
173
|
-
const { done, value } = await reader.read();
|
|
174
|
-
// 64 bytes device name + 2 bytes video width + 2 bytes video height
|
|
175
|
-
if (done || value.byteLength !== 64 + 2 + 2) {
|
|
176
|
-
throw new Error("Unexpected response from server");
|
|
177
|
-
}
|
|
178
|
-
reader.releaseLock();
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
return [videoStream, controlStream];
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
public override dispose() {
|
|
185
|
-
// Don't await this!
|
|
186
|
-
// `reverse.remove`'s response will never arrive
|
|
187
|
-
// before we read all pending data from `videoStream`
|
|
188
|
-
this.adb.reverse.remove(this.address).catch((e) => {
|
|
189
|
-
void e;
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
package/src/adb/index.ts
DELETED
package/src/adb/options/1_16.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { type Adb } from "@yume-chan/adb";
|
|
2
|
-
|
|
3
|
-
import { type ScrcpyOptionsInit1_16 } from "../../options/index.js";
|
|
4
|
-
import {
|
|
5
|
-
AdbScrcpyForwardConnection,
|
|
6
|
-
AdbScrcpyReverseConnection,
|
|
7
|
-
type AdbScrcpyConnection,
|
|
8
|
-
type AdbScrcpyConnectionOptions,
|
|
9
|
-
} from "../connection.js";
|
|
10
|
-
|
|
11
|
-
import { AdbScrcpyOptionsBase } from "./types.js";
|
|
12
|
-
|
|
13
|
-
export class AdbScrcpyOptions1_16<
|
|
14
|
-
T extends ScrcpyOptionsInit1_16 = ScrcpyOptionsInit1_16
|
|
15
|
-
> extends AdbScrcpyOptionsBase<T> {
|
|
16
|
-
public override createConnection(adb: Adb): AdbScrcpyConnection {
|
|
17
|
-
const options: AdbScrcpyConnectionOptions = {
|
|
18
|
-
// Old versions always have control stream no matter what the option is
|
|
19
|
-
// Pass `control: false` to `Connection` will disable the control stream
|
|
20
|
-
control: true,
|
|
21
|
-
sendDummyByte: true,
|
|
22
|
-
sendDeviceMeta: true,
|
|
23
|
-
};
|
|
24
|
-
if (this.value.tunnelForward) {
|
|
25
|
-
return new AdbScrcpyForwardConnection(adb, options);
|
|
26
|
-
} else {
|
|
27
|
-
return new AdbScrcpyReverseConnection(adb, options);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
package/src/adb/options/1_22.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type Adb } from "@yume-chan/adb";
|
|
2
|
-
|
|
3
|
-
import { type ScrcpyOptionsInit1_22 } from "../../options/index.js";
|
|
4
|
-
import {
|
|
5
|
-
type AdbScrcpyConnection,
|
|
6
|
-
AdbScrcpyForwardConnection,
|
|
7
|
-
AdbScrcpyReverseConnection,
|
|
8
|
-
} from "../connection.js";
|
|
9
|
-
|
|
10
|
-
import { AdbScrcpyOptions1_16 } from "./1_16.js";
|
|
11
|
-
|
|
12
|
-
export class AdbScrcpyOptions1_22<
|
|
13
|
-
T extends ScrcpyOptionsInit1_22 = ScrcpyOptionsInit1_22
|
|
14
|
-
> extends AdbScrcpyOptions1_16<T> {
|
|
15
|
-
public override createConnection(adb: Adb): AdbScrcpyConnection {
|
|
16
|
-
const options = {
|
|
17
|
-
...this.getDefaultValue(),
|
|
18
|
-
...this.value,
|
|
19
|
-
};
|
|
20
|
-
if (this.value.tunnelForward) {
|
|
21
|
-
return new AdbScrcpyForwardConnection(adb, options);
|
|
22
|
-
} else {
|
|
23
|
-
return new AdbScrcpyReverseConnection(adb, options);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
package/src/adb/options/index.ts
DELETED
package/src/adb/options/types.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { type Adb } from "@yume-chan/adb";
|
|
2
|
-
import { type TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
type ScrcpyBackOrScreenOnControlMessage,
|
|
6
|
-
type ScrcpyControlMessageType,
|
|
7
|
-
type ScrcpySetClipboardControlMessage,
|
|
8
|
-
} from "../../control/index.js";
|
|
9
|
-
import {
|
|
10
|
-
type ScrcpyOptions,
|
|
11
|
-
type ScrcpyVideoStreamPacket,
|
|
12
|
-
} from "../../options/index.js";
|
|
13
|
-
import { type AdbScrcpyConnection } from "../connection.js";
|
|
14
|
-
|
|
15
|
-
export interface AdbScrcpyOptions<T extends object> extends ScrcpyOptions<T> {
|
|
16
|
-
createConnection(adb: Adb): AdbScrcpyConnection;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export abstract class AdbScrcpyOptionsBase<T extends object>
|
|
20
|
-
implements ScrcpyOptions<T>
|
|
21
|
-
{
|
|
22
|
-
private raw: ScrcpyOptions<T>;
|
|
23
|
-
|
|
24
|
-
public get value(): Partial<T> {
|
|
25
|
-
return this.raw.value;
|
|
26
|
-
}
|
|
27
|
-
public set value(value: Partial<T>) {
|
|
28
|
-
this.raw.value = value;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public constructor(raw: ScrcpyOptions<T>) {
|
|
32
|
-
this.raw = raw;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public getDefaultValue(): T {
|
|
36
|
-
return this.raw.getDefaultValue();
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
public formatServerArguments(): string[] {
|
|
40
|
-
return this.raw.formatServerArguments();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public getOutputEncoderNameRegex(): RegExp {
|
|
44
|
-
return this.raw.getOutputEncoderNameRegex();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public createVideoStreamTransformer(): TransformStream<
|
|
48
|
-
Uint8Array,
|
|
49
|
-
ScrcpyVideoStreamPacket
|
|
50
|
-
> {
|
|
51
|
-
return this.raw.createVideoStreamTransformer();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public getControlMessageTypes(): ScrcpyControlMessageType[] {
|
|
55
|
-
return this.raw.getControlMessageTypes();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public serializeBackOrScreenOnControlMessage(
|
|
59
|
-
message: ScrcpyBackOrScreenOnControlMessage
|
|
60
|
-
): Uint8Array | undefined {
|
|
61
|
-
return this.raw.serializeBackOrScreenOnControlMessage(message);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public serializeSetClipboardControlMessage(
|
|
65
|
-
message: ScrcpySetClipboardControlMessage
|
|
66
|
-
): Uint8Array {
|
|
67
|
-
return this.raw.serializeSetClipboardControlMessage(message);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public getScrollController() {
|
|
71
|
-
return this.raw.getScrollController();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public abstract createConnection(adb: Adb): AdbScrcpyConnection;
|
|
75
|
-
}
|
package/src/codec.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// From https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel
|
|
2
|
-
export enum AndroidCodecProfile {
|
|
3
|
-
Baseline = 0x01,
|
|
4
|
-
Main = 0x02,
|
|
5
|
-
Extended = 0x04,
|
|
6
|
-
High = 0x08,
|
|
7
|
-
High10 = 0x10,
|
|
8
|
-
High422 = 0x20,
|
|
9
|
-
High444 = 0x40,
|
|
10
|
-
ConstrainedBaseline = 0x10000,
|
|
11
|
-
ConstrainedHigh = 0x80000,
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export enum AndroidCodecLevel {
|
|
15
|
-
Level1 = 0x01,
|
|
16
|
-
Level1b = 0x02,
|
|
17
|
-
Level11 = 0x04,
|
|
18
|
-
Level12 = 0x08,
|
|
19
|
-
Level13 = 0x10,
|
|
20
|
-
Level2 = 0x20,
|
|
21
|
-
Level21 = 0x40,
|
|
22
|
-
Level22 = 0x80,
|
|
23
|
-
Level3 = 0x100,
|
|
24
|
-
Level31 = 0x200,
|
|
25
|
-
Level32 = 0x400,
|
|
26
|
-
Level4 = 0x800,
|
|
27
|
-
Level41 = 0x1000,
|
|
28
|
-
Level42 = 0x2000,
|
|
29
|
-
Level5 = 0x4000,
|
|
30
|
-
Level51 = 0x8000,
|
|
31
|
-
Level52 = 0x10000,
|
|
32
|
-
Level6 = 0x20000,
|
|
33
|
-
Level61 = 0x40000,
|
|
34
|
-
Level62 = 0x80000,
|
|
35
|
-
}
|