@yume-chan/scrcpy 1.1.0 → 2.0.1
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.md +26 -0
- package/LICENSE +1 -1
- package/esm/1_15/impl/back-or-screen-on.d.ts +1 -1
- package/esm/1_15/impl/clipboard-stream.d.ts +3 -3
- package/esm/1_15/impl/inject-touch.d.ts +9 -9
- package/esm/1_15/impl/inject-touch.d.ts.map +1 -1
- package/esm/1_15/impl/inject-touch.js +14 -18
- package/esm/1_15/impl/inject-touch.js.map +1 -1
- package/esm/1_15/impl/media-stream-transformer.d.ts +3 -3
- package/esm/1_15/impl/scroll-controller.d.ts +5 -5
- package/esm/1_15/impl/scroll-controller.js +2 -2
- package/esm/1_15/impl/scroll-controller.js.map +1 -1
- package/esm/1_15/impl/set-clipboard.d.ts +3 -3
- package/esm/1_15/index.d.ts +0 -1
- package/esm/1_15/index.d.ts.map +1 -1
- package/esm/1_15/index.js +0 -1
- package/esm/1_15/index.js.map +1 -1
- package/esm/1_15/options.d.ts +3 -4
- package/esm/1_15/options.d.ts.map +1 -1
- package/esm/1_15/options.js +1 -3
- package/esm/1_15/options.js.map +1 -1
- package/esm/1_15_1.d.ts +4 -2
- package/esm/1_15_1.d.ts.map +1 -1
- package/esm/1_15_1.js +2 -3
- package/esm/1_15_1.js.map +1 -1
- package/esm/1_16.d.ts +4 -2
- package/esm/1_16.d.ts.map +1 -1
- package/esm/1_16.js +2 -3
- package/esm/1_16.js.map +1 -1
- package/esm/1_17/index.d.ts +0 -1
- package/esm/1_17/index.d.ts.map +1 -1
- package/esm/1_17/index.js +0 -1
- package/esm/1_17/index.js.map +1 -1
- package/esm/1_17/options.d.ts +5 -6
- package/esm/1_17/options.d.ts.map +1 -1
- package/esm/1_17/options.js +1 -3
- package/esm/1_17/options.js.map +1 -1
- package/esm/1_18/impl/back-or-screen-on.d.ts +5 -3
- package/esm/1_18/impl/back-or-screen-on.d.ts.map +1 -1
- package/esm/1_18/impl/back-or-screen-on.js +2 -5
- package/esm/1_18/impl/back-or-screen-on.js.map +1 -1
- package/esm/1_18/index.d.ts +0 -1
- package/esm/1_18/index.d.ts.map +1 -1
- package/esm/1_18/index.js +0 -1
- package/esm/1_18/index.js.map +1 -1
- package/esm/1_18/options.d.ts +5 -6
- package/esm/1_18/options.d.ts.map +1 -1
- package/esm/1_18/options.js +1 -3
- package/esm/1_18/options.js.map +1 -1
- package/esm/1_19.d.ts +4 -2
- package/esm/1_19.d.ts.map +1 -1
- package/esm/1_19.js +2 -3
- package/esm/1_19.js.map +1 -1
- package/esm/1_20.d.ts +4 -2
- package/esm/1_20.d.ts.map +1 -1
- package/esm/1_20.js +2 -3
- package/esm/1_20.js.map +1 -1
- package/esm/1_21/impl/set-clipboard.d.ts +6 -6
- package/esm/1_21/index.d.ts +0 -1
- package/esm/1_21/index.d.ts.map +1 -1
- package/esm/1_21/index.js +0 -1
- package/esm/1_21/index.js.map +1 -1
- package/esm/1_21/options.d.ts +5 -6
- package/esm/1_21/options.d.ts.map +1 -1
- package/esm/1_21/options.js +1 -3
- package/esm/1_21/options.js.map +1 -1
- package/esm/1_22/impl/scroll-controller.d.ts +8 -6
- package/esm/1_22/impl/scroll-controller.d.ts.map +1 -1
- package/esm/1_22/impl/scroll-controller.js +2 -5
- package/esm/1_22/impl/scroll-controller.js.map +1 -1
- package/esm/1_22/index.d.ts +0 -1
- package/esm/1_22/index.d.ts.map +1 -1
- package/esm/1_22/index.js +0 -1
- package/esm/1_22/index.js.map +1 -1
- package/esm/1_22/options.d.ts +5 -6
- package/esm/1_22/options.d.ts.map +1 -1
- package/esm/1_22/options.js +1 -3
- package/esm/1_22/options.js.map +1 -1
- package/esm/1_23/index.d.ts +0 -1
- package/esm/1_23/index.d.ts.map +1 -1
- package/esm/1_23/index.js +0 -1
- package/esm/1_23/index.js.map +1 -1
- package/esm/1_23/options.d.ts +5 -6
- package/esm/1_23/options.d.ts.map +1 -1
- package/esm/1_23/options.js +1 -3
- package/esm/1_23/options.js.map +1 -1
- package/esm/1_24/index.d.ts +0 -1
- package/esm/1_24/index.d.ts.map +1 -1
- package/esm/1_24/index.js +0 -1
- package/esm/1_24/index.js.map +1 -1
- package/esm/1_24/options.d.ts +5 -6
- package/esm/1_24/options.d.ts.map +1 -1
- package/esm/1_24/options.js +1 -3
- package/esm/1_24/options.js.map +1 -1
- package/esm/1_25/impl/scroll-controller.d.ts +11 -11
- package/esm/1_25/impl/scroll-controller.d.ts.map +1 -1
- package/esm/1_25/impl/scroll-controller.js +14 -18
- package/esm/1_25/impl/scroll-controller.js.map +1 -1
- package/esm/1_25/index.d.ts +0 -1
- package/esm/1_25/index.d.ts.map +1 -1
- package/esm/1_25/index.js +0 -1
- package/esm/1_25/index.js.map +1 -1
- package/esm/1_25/options.d.ts +5 -6
- package/esm/1_25/options.d.ts.map +1 -1
- package/esm/1_25/options.js +1 -3
- package/esm/1_25/options.js.map +1 -1
- package/esm/2_0/impl/inject-touch.d.ts +11 -11
- package/esm/2_0/impl/inject-touch.js +2 -2
- package/esm/2_0/impl/inject-touch.js.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
- package/esm/2_0/index.d.ts +0 -1
- package/esm/2_0/index.d.ts.map +1 -1
- package/esm/2_0/index.js +0 -1
- package/esm/2_0/index.js.map +1 -1
- package/esm/2_0/options.d.ts +5 -6
- package/esm/2_0/options.d.ts.map +1 -1
- package/esm/2_0/options.js +1 -3
- package/esm/2_0/options.js.map +1 -1
- package/esm/2_1/impl/defaults.d.ts.map +1 -1
- package/esm/2_1/impl/defaults.js.map +1 -1
- package/esm/2_1/impl/init.d.ts +2 -2
- package/esm/2_1/impl/init.d.ts.map +1 -1
- package/esm/2_1/index.d.ts +0 -1
- package/esm/2_1/index.d.ts.map +1 -1
- package/esm/2_1/index.js +0 -1
- package/esm/2_1/index.js.map +1 -1
- package/esm/2_1/options.d.ts +8 -9
- package/esm/2_1/options.d.ts.map +1 -1
- package/esm/2_1/options.js +1 -3
- package/esm/2_1/options.js.map +1 -1
- package/esm/2_1_1.d.ts +5 -3
- package/esm/2_1_1.d.ts.map +1 -1
- package/esm/2_1_1.js +2 -3
- package/esm/2_1_1.js.map +1 -1
- package/esm/2_2/impl/defaults.d.ts.map +1 -1
- package/esm/2_2/impl/defaults.js.map +1 -1
- package/esm/2_2/impl/init.d.ts +1 -1
- package/esm/2_2/impl/init.d.ts.map +1 -1
- package/esm/2_2/index.d.ts +0 -1
- package/esm/2_2/index.d.ts.map +1 -1
- package/esm/2_2/index.js +0 -1
- package/esm/2_2/index.js.map +1 -1
- package/esm/2_2/options.d.ts +8 -9
- package/esm/2_2/options.d.ts.map +1 -1
- package/esm/2_2/options.js +1 -3
- package/esm/2_2/options.js.map +1 -1
- package/esm/2_3/impl/init.d.ts +2 -2
- package/esm/2_3/impl/init.d.ts.map +1 -1
- package/esm/2_3/index.d.ts +0 -1
- package/esm/2_3/index.d.ts.map +1 -1
- package/esm/2_3/index.js +0 -1
- package/esm/2_3/index.js.map +1 -1
- package/esm/2_3/options.d.ts +8 -9
- package/esm/2_3/options.d.ts.map +1 -1
- package/esm/2_3/options.js +1 -3
- package/esm/2_3/options.js.map +1 -1
- package/esm/2_3_1.d.ts +5 -3
- package/esm/2_3_1.d.ts.map +1 -1
- package/esm/2_3_1.js +2 -3
- package/esm/2_3_1.js.map +1 -1
- package/esm/2_4/impl/serialize-uhid-create.d.ts +3 -3
- package/esm/2_4/impl/uhid-output-stream.d.ts +3 -3
- package/esm/2_4/index.d.ts +0 -1
- package/esm/2_4/index.d.ts.map +1 -1
- package/esm/2_4/index.js +0 -1
- package/esm/2_4/index.js.map +1 -1
- package/esm/2_4/options.d.ts +8 -9
- package/esm/2_4/options.d.ts.map +1 -1
- package/esm/2_4/options.js +1 -3
- package/esm/2_4/options.js.map +1 -1
- package/esm/2_5.d.ts +5 -3
- package/esm/2_5.d.ts.map +1 -1
- package/esm/2_5.js +2 -3
- package/esm/2_5.js.map +1 -1
- package/esm/2_6/impl/defaults.d.ts.map +1 -1
- package/esm/2_6/impl/defaults.js.map +1 -1
- package/esm/2_6/impl/init.d.ts +2 -2
- package/esm/2_6/impl/init.d.ts.map +1 -1
- package/esm/2_6/index.d.ts +0 -1
- package/esm/2_6/index.d.ts.map +1 -1
- package/esm/2_6/index.js +0 -1
- package/esm/2_6/index.js.map +1 -1
- package/esm/2_6/options.d.ts +8 -9
- package/esm/2_6/options.d.ts.map +1 -1
- package/esm/2_6/options.js +1 -3
- package/esm/2_6/options.js.map +1 -1
- package/esm/2_6_1.d.ts +5 -3
- package/esm/2_6_1.d.ts.map +1 -1
- package/esm/2_6_1.js +2 -3
- package/esm/2_6_1.js.map +1 -1
- package/esm/2_7/impl/serialize-uhid-create.d.ts +7 -7
- package/esm/2_7/index.d.ts +0 -1
- package/esm/2_7/index.d.ts.map +1 -1
- package/esm/2_7/index.js +0 -1
- package/esm/2_7/index.js.map +1 -1
- package/esm/2_7/options.d.ts +8 -9
- package/esm/2_7/options.d.ts.map +1 -1
- package/esm/2_7/options.js +1 -3
- package/esm/2_7/options.js.map +1 -1
- package/esm/3_0/impl/defaults.d.ts.map +1 -1
- package/esm/3_0/impl/defaults.js.map +1 -1
- package/esm/3_0/impl/init.d.ts +1 -1
- package/esm/3_0/impl/init.d.ts.map +1 -1
- package/esm/3_0/index.d.ts +0 -1
- package/esm/3_0/index.d.ts.map +1 -1
- package/esm/3_0/index.js +0 -1
- package/esm/3_0/index.js.map +1 -1
- package/esm/3_0/options.d.ts +8 -9
- package/esm/3_0/options.d.ts.map +1 -1
- package/esm/3_0/options.js +1 -3
- package/esm/3_0/options.js.map +1 -1
- package/esm/3_0_1.d.ts +5 -3
- package/esm/3_0_1.d.ts.map +1 -1
- package/esm/3_0_1.js +2 -3
- package/esm/3_0_1.js.map +1 -1
- package/esm/3_0_2.d.ts +5 -3
- package/esm/3_0_2.d.ts.map +1 -1
- package/esm/3_0_2.js +2 -3
- package/esm/3_0_2.js.map +1 -1
- package/esm/3_1/impl/defaults.d.ts.map +1 -1
- package/esm/3_1/impl/defaults.js.map +1 -1
- package/esm/3_1/impl/init.d.ts +1 -1
- package/esm/3_1/impl/init.d.ts.map +1 -1
- package/esm/3_1/impl/serialize-uhid-create.d.ts +7 -7
- package/esm/3_1/index.d.ts +0 -1
- package/esm/3_1/index.d.ts.map +1 -1
- package/esm/3_1/index.js +0 -1
- package/esm/3_1/index.js.map +1 -1
- package/esm/3_1/options.d.ts +8 -9
- package/esm/3_1/options.d.ts.map +1 -1
- package/esm/3_1/options.js +1 -3
- package/esm/3_1/options.js.map +1 -1
- package/esm/android/key-event.d.ts.map +1 -1
- package/esm/android/key-event.js +3 -2
- package/esm/android/key-event.js.map +1 -1
- package/esm/base/options.d.ts +6 -5
- package/esm/base/options.d.ts.map +1 -1
- package/esm/codec/h265.d.ts +23 -2
- package/esm/codec/h265.d.ts.map +1 -1
- package/esm/codec/h265.js +25 -3
- package/esm/codec/h265.js.map +1 -1
- package/esm/control/empty.d.ts +1 -1
- package/esm/control/inject-key-code.d.ts +9 -9
- package/esm/control/inject-text.d.ts +3 -3
- package/esm/control/set-screen-power-mode.d.ts +3 -3
- package/esm/control/start-app.d.ts +3 -3
- package/esm/control/uhid.d.ts +6 -6
- package/esm/latest.d.ts +5 -3
- package/esm/latest.d.ts.map +1 -1
- package/esm/latest.js +2 -3
- package/esm/latest.js.map +1 -1
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/index.js.map +1 -1
- package/package.json +9 -9
- package/src/1_15/impl/inject-touch.ts +13 -12
- package/src/1_15/impl/scroll-controller.ts +2 -2
- package/src/1_15/index.ts +0 -1
- package/src/1_15/options.ts +3 -6
- package/src/1_15_1.ts +5 -3
- package/src/1_16.ts +5 -3
- package/src/1_17/index.ts +0 -1
- package/src/1_17/options.ts +7 -7
- package/src/1_18/impl/back-or-screen-on.ts +5 -9
- package/src/1_18/index.ts +0 -1
- package/src/1_18/options.ts +7 -7
- package/src/1_19.ts +5 -3
- package/src/1_20.ts +5 -3
- package/src/1_21/index.ts +0 -1
- package/src/1_21/options.ts +7 -7
- package/src/1_22/impl/scroll-controller.ts +5 -9
- package/src/1_22/index.ts +0 -1
- package/src/1_22/options.ts +7 -7
- package/src/1_23/index.ts +0 -1
- package/src/1_23/options.ts +7 -7
- package/src/1_24/index.ts +0 -1
- package/src/1_24/options.ts +7 -7
- package/src/1_25/impl/scroll-controller.ts +10 -9
- package/src/1_25/index.ts +0 -1
- package/src/1_25/options.ts +7 -7
- package/src/2_0/impl/inject-touch.ts +2 -2
- package/src/2_0/impl/parse-audio-stream-metadata.ts +1 -1
- package/src/2_0/index.ts +0 -1
- package/src/2_0/options.ts +7 -7
- package/src/2_1/impl/defaults.ts +1 -1
- package/src/2_1/impl/init.ts +2 -2
- package/src/2_1/index.ts +0 -1
- package/src/2_1/options.ts +12 -12
- package/src/2_1_1.ts +9 -4
- package/src/2_2/impl/defaults.ts +1 -1
- package/src/2_2/impl/init.ts +1 -1
- package/src/2_2/index.ts +0 -1
- package/src/2_2/options.ts +12 -12
- package/src/2_3/impl/init.ts +3 -2
- package/src/2_3/index.ts +0 -1
- package/src/2_3/options.ts +12 -12
- package/src/2_3_1.ts +9 -4
- package/src/2_4/index.ts +0 -1
- package/src/2_4/options.ts +12 -12
- package/src/2_5.ts +9 -4
- package/src/2_6/impl/defaults.ts +1 -1
- package/src/2_6/impl/init.ts +3 -2
- package/src/2_6/index.ts +0 -1
- package/src/2_6/options.ts +12 -12
- package/src/2_6_1.ts +9 -4
- package/src/2_7/index.ts +0 -1
- package/src/2_7/options.ts +12 -12
- package/src/3_0/impl/defaults.ts +1 -1
- package/src/3_0/impl/init.ts +2 -1
- package/src/3_0/index.ts +0 -1
- package/src/3_0/options.ts +12 -12
- package/src/3_0_1.ts +9 -4
- package/src/3_0_2.ts +9 -4
- package/src/3_1/impl/defaults.ts +1 -1
- package/src/3_1/impl/init.ts +1 -1
- package/src/3_1/index.ts +0 -1
- package/src/3_1/options.ts +12 -12
- package/src/android/key-event.ts +3 -2
- package/src/base/options.ts +11 -8
- package/src/codec/h265.ts +31 -5
- package/src/latest.ts +9 -4
- package/src/utils/index.ts +0 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/utils/wrapper.d.ts +0 -38
- package/esm/utils/wrapper.d.ts.map +0 -1
- package/esm/utils/wrapper.js +0 -79
- package/esm/utils/wrapper.js.map +0 -1
- package/src/utils/wrapper.ts +0 -135
package/src/2_6/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyAudioStreamMetadata,
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
ScrcpyEncoder,
|
|
10
10
|
ScrcpyMediaStreamPacket,
|
|
11
11
|
ScrcpyOptions,
|
|
12
|
+
ScrcpyOptionsListEncoders,
|
|
12
13
|
ScrcpyScrollController,
|
|
13
14
|
ScrcpyVideoStream,
|
|
14
15
|
} from "../base/index.js";
|
|
@@ -41,12 +42,12 @@ import {
|
|
|
41
42
|
UHidOutputStream,
|
|
42
43
|
} from "./impl/index.js";
|
|
43
44
|
|
|
44
|
-
export class ScrcpyOptions2_6
|
|
45
|
+
export class ScrcpyOptions2_6<TVideo extends boolean>
|
|
46
|
+
implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
|
|
47
|
+
{
|
|
45
48
|
static readonly Defaults = Defaults;
|
|
46
49
|
|
|
47
|
-
readonly
|
|
48
|
-
|
|
49
|
-
readonly value: Required<Init>;
|
|
50
|
+
readonly value: Required<Init<TVideo>>;
|
|
50
51
|
|
|
51
52
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
|
|
52
53
|
return ControlMessageTypes;
|
|
@@ -66,9 +67,8 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
|
|
|
66
67
|
return this.#uHidOutput;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
constructor(init: Init
|
|
70
|
-
this.value = { ...Defaults, ...init };
|
|
71
|
-
this.version = version;
|
|
70
|
+
constructor(init: Init<TVideo>) {
|
|
71
|
+
this.value = { ...Defaults, ...init } as never;
|
|
72
72
|
|
|
73
73
|
if (this.value.videoSource === "camera") {
|
|
74
74
|
this.value.control = false;
|
|
@@ -89,7 +89,7 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
serialize(): string[] {
|
|
92
|
-
return serialize(this.value, Defaults);
|
|
92
|
+
return serialize<Init<boolean>>(this.value, Defaults);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
setListDisplays(): void {
|
|
@@ -122,7 +122,7 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
|
|
|
122
122
|
|
|
123
123
|
async parseDeviceMessage(
|
|
124
124
|
id: number,
|
|
125
|
-
stream: AsyncExactReadable,
|
|
125
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
126
126
|
): Promise<void> {
|
|
127
127
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
128
128
|
return;
|
|
@@ -183,8 +183,8 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
type Init_ = Init
|
|
186
|
+
type Init_<TVideo extends boolean> = Init<TVideo>;
|
|
187
187
|
|
|
188
188
|
export namespace ScrcpyOptions2_6 {
|
|
189
|
-
export type Init = Init_
|
|
189
|
+
export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
|
|
190
190
|
}
|
package/src/2_6_1.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ScrcpyOptions2_6 } from "./2_6/index.js";
|
|
2
2
|
|
|
3
|
-
export class ScrcpyOptions2_6_1
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export class ScrcpyOptions2_6_1<
|
|
4
|
+
TVideo extends boolean,
|
|
5
|
+
> extends ScrcpyOptions2_6<TVideo> {
|
|
6
|
+
constructor(init: ScrcpyOptions2_6.Init<TVideo>) {
|
|
7
|
+
super(init);
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
11
|
+
export namespace ScrcpyOptions2_6_1 {
|
|
12
|
+
export type Init<TVideo extends boolean = boolean> =
|
|
13
|
+
ScrcpyOptions2_6.Init<TVideo>;
|
|
14
|
+
}
|
package/src/2_7/index.ts
CHANGED
package/src/2_7/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyAudioStreamMetadata,
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
ScrcpyEncoder,
|
|
10
10
|
ScrcpyMediaStreamPacket,
|
|
11
11
|
ScrcpyOptions,
|
|
12
|
+
ScrcpyOptionsListEncoders,
|
|
12
13
|
ScrcpyScrollController,
|
|
13
14
|
ScrcpyVideoStream,
|
|
14
15
|
} from "../base/index.js";
|
|
@@ -41,12 +42,12 @@ import {
|
|
|
41
42
|
UHidOutputStream,
|
|
42
43
|
} from "./impl/index.js";
|
|
43
44
|
|
|
44
|
-
export class ScrcpyOptions2_7
|
|
45
|
+
export class ScrcpyOptions2_7<TVideo extends boolean>
|
|
46
|
+
implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
|
|
47
|
+
{
|
|
45
48
|
static readonly Defaults = Defaults;
|
|
46
49
|
|
|
47
|
-
readonly
|
|
48
|
-
|
|
49
|
-
readonly value: Required<Init>;
|
|
50
|
+
readonly value: Required<Init<TVideo>>;
|
|
50
51
|
|
|
51
52
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
|
|
52
53
|
return ControlMessageTypes;
|
|
@@ -66,9 +67,8 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
|
|
|
66
67
|
return this.#uHidOutput;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
constructor(init: Init
|
|
70
|
-
this.value = { ...Defaults, ...init };
|
|
71
|
-
this.version = version;
|
|
70
|
+
constructor(init: Init<TVideo>) {
|
|
71
|
+
this.value = { ...Defaults, ...init } as never;
|
|
72
72
|
|
|
73
73
|
if (this.value.videoSource === "camera") {
|
|
74
74
|
this.value.control = false;
|
|
@@ -89,7 +89,7 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
serialize(): string[] {
|
|
92
|
-
return serialize(this.value, Defaults);
|
|
92
|
+
return serialize<Init<boolean>>(this.value, Defaults);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
setListDisplays(): void {
|
|
@@ -122,7 +122,7 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
|
|
|
122
122
|
|
|
123
123
|
async parseDeviceMessage(
|
|
124
124
|
id: number,
|
|
125
|
-
stream: AsyncExactReadable,
|
|
125
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
126
126
|
): Promise<void> {
|
|
127
127
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
128
128
|
return;
|
|
@@ -183,8 +183,8 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
type Init_ = Init
|
|
186
|
+
type Init_<TVideo extends boolean> = Init<TVideo>;
|
|
187
187
|
|
|
188
188
|
export namespace ScrcpyOptions2_7 {
|
|
189
|
-
export type Init = Init_
|
|
189
|
+
export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
|
|
190
190
|
}
|
package/src/3_0/impl/defaults.ts
CHANGED
package/src/3_0/impl/init.ts
CHANGED
|
@@ -106,7 +106,8 @@ export class NewDisplay implements ScrcpyOptionValue {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
export interface Init extends
|
|
109
|
+
export interface Init<TVideo extends boolean>
|
|
110
|
+
extends Omit<PrevImpl.Init<TVideo>, "lockVideoOrientation"> {
|
|
110
111
|
captureOrientation?: CaptureOrientation | string | undefined;
|
|
111
112
|
angle?: number;
|
|
112
113
|
screenOffTimeout?: number | undefined;
|
package/src/3_0/index.ts
CHANGED
package/src/3_0/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyAudioStreamMetadata,
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
ScrcpyEncoder,
|
|
10
10
|
ScrcpyMediaStreamPacket,
|
|
11
11
|
ScrcpyOptions,
|
|
12
|
+
ScrcpyOptionsListEncoders,
|
|
12
13
|
ScrcpyScrollController,
|
|
13
14
|
ScrcpyVideoStream,
|
|
14
15
|
} from "../base/index.js";
|
|
@@ -41,12 +42,12 @@ import {
|
|
|
41
42
|
UHidOutputStream,
|
|
42
43
|
} from "./impl/index.js";
|
|
43
44
|
|
|
44
|
-
export class ScrcpyOptions3_0
|
|
45
|
+
export class ScrcpyOptions3_0<TVideo extends boolean>
|
|
46
|
+
implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
|
|
47
|
+
{
|
|
45
48
|
static readonly Defaults = Defaults;
|
|
46
49
|
|
|
47
|
-
readonly
|
|
48
|
-
|
|
49
|
-
readonly value: Required<Init>;
|
|
50
|
+
readonly value: Required<Init<TVideo>>;
|
|
50
51
|
|
|
51
52
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
|
|
52
53
|
return ControlMessageTypes;
|
|
@@ -66,9 +67,8 @@ export class ScrcpyOptions3_0 implements ScrcpyOptions<Init> {
|
|
|
66
67
|
return this.#uHidOutput;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
constructor(init: Init
|
|
70
|
-
this.value = { ...Defaults, ...init };
|
|
71
|
-
this.version = version;
|
|
70
|
+
constructor(init: Init<TVideo>) {
|
|
71
|
+
this.value = { ...Defaults, ...init } as never;
|
|
72
72
|
|
|
73
73
|
if (this.value.videoSource === "camera") {
|
|
74
74
|
this.value.control = false;
|
|
@@ -89,7 +89,7 @@ export class ScrcpyOptions3_0 implements ScrcpyOptions<Init> {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
serialize(): string[] {
|
|
92
|
-
return serialize(this.value, Defaults);
|
|
92
|
+
return serialize<Init<boolean>>(this.value, Defaults);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
setListDisplays(): void {
|
|
@@ -122,7 +122,7 @@ export class ScrcpyOptions3_0 implements ScrcpyOptions<Init> {
|
|
|
122
122
|
|
|
123
123
|
async parseDeviceMessage(
|
|
124
124
|
id: number,
|
|
125
|
-
stream: AsyncExactReadable,
|
|
125
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
126
126
|
): Promise<void> {
|
|
127
127
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
128
128
|
return;
|
|
@@ -183,8 +183,8 @@ export class ScrcpyOptions3_0 implements ScrcpyOptions<Init> {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
type Init_ = Init
|
|
186
|
+
type Init_<TVideo extends boolean> = Init<TVideo>;
|
|
187
187
|
|
|
188
188
|
export namespace ScrcpyOptions3_0 {
|
|
189
|
-
export type Init = Init_
|
|
189
|
+
export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
|
|
190
190
|
}
|
package/src/3_0_1.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ScrcpyOptions3_0 } from "./3_0/index.js";
|
|
2
2
|
|
|
3
|
-
export class ScrcpyOptions3_0_1
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export class ScrcpyOptions3_0_1<
|
|
4
|
+
TVideo extends boolean,
|
|
5
|
+
> extends ScrcpyOptions3_0<TVideo> {
|
|
6
|
+
constructor(init: ScrcpyOptions3_0.Init<TVideo>) {
|
|
7
|
+
super(init);
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
11
|
+
export namespace ScrcpyOptions3_0_1 {
|
|
12
|
+
export type Init<TVideo extends boolean = boolean> =
|
|
13
|
+
ScrcpyOptions3_0.Init<TVideo>;
|
|
14
|
+
}
|
package/src/3_0_2.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ScrcpyOptions3_0 } from "./3_0/index.js";
|
|
2
2
|
|
|
3
|
-
export class ScrcpyOptions3_0_2
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export class ScrcpyOptions3_0_2<
|
|
4
|
+
TVideo extends boolean,
|
|
5
|
+
> extends ScrcpyOptions3_0<TVideo> {
|
|
6
|
+
constructor(init: ScrcpyOptions3_0.Init<TVideo>) {
|
|
7
|
+
super(init);
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
11
|
+
export namespace ScrcpyOptions3_0_2 {
|
|
12
|
+
export type Init<TVideo extends boolean = boolean> =
|
|
13
|
+
ScrcpyOptions3_0.Init<TVideo>;
|
|
14
|
+
}
|
package/src/3_1/impl/defaults.ts
CHANGED
package/src/3_1/impl/init.ts
CHANGED
package/src/3_1/index.ts
CHANGED
package/src/3_1/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyAudioStreamMetadata,
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
ScrcpyEncoder,
|
|
10
10
|
ScrcpyMediaStreamPacket,
|
|
11
11
|
ScrcpyOptions,
|
|
12
|
+
ScrcpyOptionsListEncoders,
|
|
12
13
|
ScrcpyScrollController,
|
|
13
14
|
ScrcpyVideoStream,
|
|
14
15
|
} from "../base/index.js";
|
|
@@ -41,12 +42,12 @@ import {
|
|
|
41
42
|
UHidOutputStream,
|
|
42
43
|
} from "./impl/index.js";
|
|
43
44
|
|
|
44
|
-
export class ScrcpyOptions3_1
|
|
45
|
+
export class ScrcpyOptions3_1<TVideo extends boolean>
|
|
46
|
+
implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
|
|
47
|
+
{
|
|
45
48
|
static readonly Defaults = Defaults;
|
|
46
49
|
|
|
47
|
-
readonly
|
|
48
|
-
|
|
49
|
-
readonly value: Required<Init>;
|
|
50
|
+
readonly value: Required<Init<TVideo>>;
|
|
50
51
|
|
|
51
52
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
|
|
52
53
|
return ControlMessageTypes;
|
|
@@ -66,9 +67,8 @@ export class ScrcpyOptions3_1 implements ScrcpyOptions<Init> {
|
|
|
66
67
|
return this.#uHidOutput;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
constructor(init: Init
|
|
70
|
-
this.value = { ...Defaults, ...init };
|
|
71
|
-
this.version = version;
|
|
70
|
+
constructor(init: Init<TVideo>) {
|
|
71
|
+
this.value = { ...Defaults, ...init } as never;
|
|
72
72
|
|
|
73
73
|
if (this.value.videoSource === "camera") {
|
|
74
74
|
this.value.control = false;
|
|
@@ -89,7 +89,7 @@ export class ScrcpyOptions3_1 implements ScrcpyOptions<Init> {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
serialize(): string[] {
|
|
92
|
-
return serialize(this.value, Defaults);
|
|
92
|
+
return serialize<Init<boolean>>(this.value, Defaults);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
setListDisplays(): void {
|
|
@@ -122,7 +122,7 @@ export class ScrcpyOptions3_1 implements ScrcpyOptions<Init> {
|
|
|
122
122
|
|
|
123
123
|
async parseDeviceMessage(
|
|
124
124
|
id: number,
|
|
125
|
-
stream: AsyncExactReadable,
|
|
125
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
126
126
|
): Promise<void> {
|
|
127
127
|
if (await this.#clipboard?.parse(id, stream)) {
|
|
128
128
|
return;
|
|
@@ -183,8 +183,8 @@ export class ScrcpyOptions3_1 implements ScrcpyOptions<Init> {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
type Init_ = Init
|
|
186
|
+
type Init_<TVideo extends boolean> = Init<TVideo>;
|
|
187
187
|
|
|
188
188
|
export namespace ScrcpyOptions3_1 {
|
|
189
|
-
export type Init = Init_
|
|
189
|
+
export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
|
|
190
190
|
}
|
package/src/android/key-event.ts
CHANGED
|
@@ -30,8 +30,9 @@ export type AndroidKeyEventMeta =
|
|
|
30
30
|
(typeof AndroidKeyEventMeta)[keyof typeof AndroidKeyEventMeta];
|
|
31
31
|
|
|
32
32
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/view/KeyEvent.java;l=97;drc=95c1165bb895dd844e1793460710f7163dd330a3
|
|
33
|
-
//
|
|
34
|
-
//
|
|
33
|
+
// Android key code to Chrome key code: https://source.chromium.org/chromium/chromium/src/+/main:ui/events/keycodes/keyboard_code_conversion_android.cc
|
|
34
|
+
// Chrome key code to DOM key code: https://source.chromium.org/chromium/chromium/src/+/main:ui/events/keycodes/dom/dom_code_data.inc
|
|
35
|
+
// Some keys are not mapped to `KeyboardEvent.code`, only to `KeyboardEvent.key`: https://source.chromium.org/chromium/chromium/src/+/main:ui/events/keycodes/dom/dom_key_data.inc
|
|
35
36
|
export const AndroidKeyCode = {
|
|
36
37
|
AndroidHome: 3,
|
|
37
38
|
AndroidBack: 4,
|
package/src/base/options.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
|
|
3
|
-
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
3
|
+
import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ScrcpyBackOrScreenOnControlMessage,
|
|
@@ -19,8 +19,6 @@ import type { ScrcpyScrollController } from "./scroll-controller.js";
|
|
|
19
19
|
import type { ScrcpyVideoStream } from "./video.js";
|
|
20
20
|
|
|
21
21
|
export interface ScrcpyOptions<T extends object> {
|
|
22
|
-
get version(): string;
|
|
23
|
-
|
|
24
22
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[];
|
|
25
23
|
|
|
26
24
|
value: Required<T>;
|
|
@@ -37,10 +35,6 @@ export interface ScrcpyOptions<T extends object> {
|
|
|
37
35
|
|
|
38
36
|
parseDisplay(line: string): ScrcpyDisplay | undefined;
|
|
39
37
|
|
|
40
|
-
setListEncoders?(): void;
|
|
41
|
-
|
|
42
|
-
parseEncoder?(line: string): ScrcpyEncoder | undefined;
|
|
43
|
-
|
|
44
38
|
parseVideoStreamMetadata(
|
|
45
39
|
stream: ReadableStream<Uint8Array>,
|
|
46
40
|
): MaybePromiseLike<ScrcpyVideoStream>;
|
|
@@ -49,7 +43,10 @@ export interface ScrcpyOptions<T extends object> {
|
|
|
49
43
|
stream: ReadableStream<Uint8Array>,
|
|
50
44
|
): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
|
|
51
45
|
|
|
52
|
-
parseDeviceMessage(
|
|
46
|
+
parseDeviceMessage(
|
|
47
|
+
id: number,
|
|
48
|
+
stream: ExactReadable | AsyncExactReadable,
|
|
49
|
+
): Promise<void>;
|
|
53
50
|
|
|
54
51
|
endDeviceMessageStream(e?: unknown): void;
|
|
55
52
|
|
|
@@ -76,3 +73,9 @@ export interface ScrcpyOptions<T extends object> {
|
|
|
76
73
|
message: ScrcpyUHidCreateControlMessage,
|
|
77
74
|
): Uint8Array;
|
|
78
75
|
}
|
|
76
|
+
|
|
77
|
+
export interface ScrcpyOptionsListEncoders {
|
|
78
|
+
setListEncoders(): void;
|
|
79
|
+
|
|
80
|
+
parseEncoder(line: string): ScrcpyEncoder | undefined;
|
|
81
|
+
}
|
package/src/codec/h265.ts
CHANGED
|
@@ -330,8 +330,10 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
330
330
|
if (pcm_enabled_flag) {
|
|
331
331
|
pcm_sample_bit_depth_luma_minus1 = reader.read(4);
|
|
332
332
|
pcm_sample_bit_depth_chroma_minus1 = reader.read(4);
|
|
333
|
-
log2_min_pcm_luma_coding_block_size_minus3 =
|
|
334
|
-
|
|
333
|
+
log2_min_pcm_luma_coding_block_size_minus3 =
|
|
334
|
+
reader.decodeExponentialGolombNumber();
|
|
335
|
+
log2_diff_max_min_pcm_luma_coding_block_size =
|
|
336
|
+
reader.decodeExponentialGolombNumber();
|
|
335
337
|
pcm_loop_filter_disabled_flag = !!reader.next();
|
|
336
338
|
}
|
|
337
339
|
|
|
@@ -894,6 +896,30 @@ export function h265ParseShortTermReferencePictureSet(
|
|
|
894
896
|
};
|
|
895
897
|
}
|
|
896
898
|
|
|
899
|
+
export const H265AspectRatioIndicator = {
|
|
900
|
+
Unspecified: 0,
|
|
901
|
+
Square: 1,
|
|
902
|
+
_12_11: 2,
|
|
903
|
+
_10_11: 3,
|
|
904
|
+
_16_11: 4,
|
|
905
|
+
_40_33: 5,
|
|
906
|
+
_24_11: 6,
|
|
907
|
+
_20_11: 7,
|
|
908
|
+
_32_11: 8,
|
|
909
|
+
_80_33: 9,
|
|
910
|
+
_18_11: 10,
|
|
911
|
+
_15_11: 11,
|
|
912
|
+
_64_33: 12,
|
|
913
|
+
_160_99: 13,
|
|
914
|
+
_4_3: 15,
|
|
915
|
+
_3_2: 16,
|
|
916
|
+
_2_1: 17,
|
|
917
|
+
Extended: 255,
|
|
918
|
+
} as const;
|
|
919
|
+
|
|
920
|
+
export type H265AspectRatioIndicator =
|
|
921
|
+
(typeof H265AspectRatioIndicator)[keyof typeof H265AspectRatioIndicator];
|
|
922
|
+
|
|
897
923
|
/**
|
|
898
924
|
* E.2.1 VUI parameters syntax
|
|
899
925
|
*/
|
|
@@ -902,12 +928,12 @@ export function h265ParseVuiParameters(
|
|
|
902
928
|
sps_max_sub_layers_minus1: number,
|
|
903
929
|
) {
|
|
904
930
|
const aspect_ratio_info_present_flag = !!reader.next();
|
|
905
|
-
let aspect_ratio_idc:
|
|
931
|
+
let aspect_ratio_idc: H265AspectRatioIndicator | undefined;
|
|
906
932
|
let sar_width: number | undefined;
|
|
907
933
|
let sar_height: number | undefined;
|
|
908
934
|
if (aspect_ratio_info_present_flag) {
|
|
909
|
-
aspect_ratio_idc = reader.read(8);
|
|
910
|
-
if (aspect_ratio_idc ===
|
|
935
|
+
aspect_ratio_idc = reader.read(8) as H265AspectRatioIndicator;
|
|
936
|
+
if (aspect_ratio_idc === H265AspectRatioIndicator.Extended) {
|
|
911
937
|
sar_width = reader.read(16);
|
|
912
938
|
sar_height = reader.read(16);
|
|
913
939
|
}
|
package/src/latest.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { ScrcpyOptions3_1 } from "./3_1/options.js";
|
|
2
2
|
|
|
3
|
-
export class ScrcpyOptionsLatest
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export class ScrcpyOptionsLatest<
|
|
4
|
+
TVideo extends boolean,
|
|
5
|
+
> extends ScrcpyOptions3_1<TVideo> {
|
|
6
|
+
constructor(init: ScrcpyOptions3_1.Init<TVideo>) {
|
|
7
|
+
super(init);
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
export
|
|
11
|
+
export namespace ScrcpyOptionsLatest {
|
|
12
|
+
export type Init<TVideo extends boolean = boolean> =
|
|
13
|
+
ScrcpyOptions3_1.Init<TVideo>;
|
|
14
|
+
}
|
|
10
15
|
|
|
11
16
|
export {
|
|
12
17
|
BackOrScreenOnControlMessage as ScrcpyBackOrScreenOnControlMessage,
|
package/src/utils/index.ts
CHANGED