@yume-chan/scrcpy 0.0.20 → 0.0.21
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 +15 -0
- package/CHANGELOG.md +9 -1
- package/README.md +8 -122
- package/esm/codec/av1.js +2 -2
- package/esm/codec/av1.js.map +1 -1
- package/esm/codec/h264.js +2 -2
- package/esm/codec/h264.js.map +1 -1
- package/esm/codec/h265.js +2 -2
- package/esm/codec/h265.js.map +1 -1
- package/esm/codec/nalu.d.ts +1 -8
- package/esm/codec/nalu.d.ts.map +1 -1
- package/esm/codec/nalu.js +53 -40
- package/esm/codec/nalu.js.map +1 -1
- package/esm/control/hover-helper.d.ts +1 -1
- package/esm/control/hover-helper.d.ts.map +1 -1
- package/esm/control/hover-helper.js +8 -9
- package/esm/control/hover-helper.js.map +1 -1
- package/esm/control/inject-keycode.js +3 -3
- package/esm/control/inject-keycode.js.map +1 -1
- package/esm/control/inject-touch.js +3 -3
- package/esm/control/inject-touch.js.map +1 -1
- package/esm/control/serializer.d.ts +1 -3
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +14 -14
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/set-screen-power-mode.js +1 -1
- package/esm/control/set-screen-power-mode.js.map +1 -1
- package/esm/control/type.d.ts +1 -1
- package/esm/control/type.d.ts.map +1 -1
- package/esm/control/type.js +4 -4
- package/esm/control/type.js.map +1 -1
- package/esm/control/writer.d.ts +1 -3
- package/esm/control/writer.d.ts.map +1 -1
- package/esm/control/writer.js +17 -17
- package/esm/control/writer.js.map +1 -1
- package/esm/device-message/type.js +1 -1
- package/esm/device-message/type.js.map +1 -1
- package/esm/options/1_16/codec-options.d.ts.map +1 -1
- package/esm/options/1_16/codec-options.js.map +1 -1
- package/esm/options/1_16/init.js +2 -2
- package/esm/options/1_16/init.js.map +1 -1
- package/esm/options/1_16/options.d.ts.map +1 -1
- package/esm/options/1_16/options.js +1 -2
- package/esm/options/1_16/options.js.map +1 -1
- package/esm/options/1_16/scroll.d.ts +1 -2
- package/esm/options/1_16/scroll.d.ts.map +1 -1
- package/esm/options/1_16/scroll.js +12 -12
- package/esm/options/1_16/scroll.js.map +1 -1
- package/esm/options/1_17.d.ts.map +1 -1
- package/esm/options/1_17.js +1 -2
- package/esm/options/1_17.js.map +1 -1
- package/esm/options/1_18.d.ts.map +1 -1
- package/esm/options/1_18.js +3 -4
- package/esm/options/1_18.js.map +1 -1
- package/esm/options/1_21.d.ts.map +1 -1
- package/esm/options/1_21.js +1 -2
- package/esm/options/1_21.js.map +1 -1
- package/esm/options/1_22/options.d.ts.map +1 -1
- package/esm/options/1_22/options.js +1 -2
- package/esm/options/1_22/options.js.map +1 -1
- package/esm/options/1_22/scroll.d.ts.map +1 -1
- package/esm/options/1_22/scroll.js.map +1 -1
- package/esm/options/1_23.d.ts.map +1 -1
- package/esm/options/1_23.js +1 -2
- package/esm/options/1_23.js.map +1 -1
- package/esm/options/1_24.d.ts.map +1 -1
- package/esm/options/1_24.js +1 -2
- package/esm/options/1_24.js.map +1 -1
- package/esm/options/1_25/options.d.ts.map +1 -1
- package/esm/options/1_25/options.js.map +1 -1
- package/esm/options/2_0.d.ts.map +1 -1
- package/esm/options/2_0.js +2 -4
- package/esm/options/2_0.js.map +1 -1
- package/esm/options/2_1.d.ts +48 -0
- package/esm/options/2_1.d.ts.map +1 -0
- package/esm/options/2_1.js +23 -0
- package/esm/options/2_1.js.map +1 -0
- package/esm/options/codec.d.ts.map +1 -1
- package/esm/options/codec.js +2 -3
- package/esm/options/codec.js.map +1 -1
- package/esm/options/index.d.ts +1 -0
- package/esm/options/index.d.ts.map +1 -1
- package/esm/options/index.js +1 -0
- package/esm/options/index.js.map +1 -1
- package/esm/options/latest.d.ts +4 -5
- package/esm/options/latest.d.ts.map +1 -1
- package/esm/options/latest.js +2 -3
- package/esm/options/latest.js.map +1 -1
- package/esm/options/types.d.ts +1 -0
- package/esm/options/types.d.ts.map +1 -1
- package/esm/options/types.js +10 -0
- package/esm/options/types.js.map +1 -1
- package/package.json +9 -12
- package/src/codec/h265.ts +14 -14
- package/src/codec/nalu.ts +73 -55
- package/src/control/hover-helper.ts +10 -11
- package/src/control/serializer.ts +31 -35
- package/src/control/type.ts +7 -7
- package/src/control/writer.ts +30 -32
- package/src/device-message/stream.ts +2 -2
- package/src/options/1_16/codec-options.ts +4 -4
- package/src/options/1_16/float-to-uint16.ts +1 -1
- package/src/options/1_16/options.ts +31 -35
- package/src/options/1_16/scroll.ts +16 -16
- package/src/options/1_17.ts +11 -11
- package/src/options/1_18.ts +12 -12
- package/src/options/1_21.ts +9 -9
- package/src/options/1_22/options.ts +7 -7
- package/src/options/1_22/scroll.ts +2 -2
- package/src/options/1_23.ts +6 -6
- package/src/options/1_24.ts +4 -4
- package/src/options/1_25/options.ts +4 -4
- package/src/options/1_25/scroll.ts +2 -2
- package/src/options/2_0.ts +25 -25
- package/src/options/2_1.ts +35 -0
- package/src/options/codec.ts +13 -13
- package/src/options/index.ts +1 -0
- package/src/options/latest.ts +4 -6
- package/src/options/types.ts +39 -28
- package/tsconfig.build.tsbuildinfo +1 -1
- package/bin/scrcpy-server +0 -0
- package/bin/version.d.ts +0 -1
- package/bin/version.js +0 -1
- package/scripts/fetch-server.cjs +0 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EACR,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EACR,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAC9B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,OAAO,GACf,KAAK,IAAI,iBAAiB,CAO5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAW3E;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAElE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5B,SAAS,IAAI,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAEtD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAEtD;;;;;;;OAOG;IACH,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAErC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAE7C,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B,CAAC;IAEF,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU,CAAC;IAEd,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS,CAAC;IAE1B,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,CAAC;IAEd,sBAAsB,IAAI,sBAAsB,CAAC;CACpD;AAED,8BAAsB,iBAAiB,CACnC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CACjC,YAAW,aAAa,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
|
package/esm/options/types.js
CHANGED
|
@@ -24,6 +24,16 @@ export class ScrcpyOptionsBase {
|
|
|
24
24
|
constructor(base, value) {
|
|
25
25
|
this._base = base;
|
|
26
26
|
this.value = value;
|
|
27
|
+
this.#setValue();
|
|
28
|
+
}
|
|
29
|
+
#setValue() {
|
|
30
|
+
// Share `value` with `_base` class,
|
|
31
|
+
// so updating `_base.value` in `_base.setListEncoders()`/
|
|
32
|
+
// `_base.setListDisplays()` will also update `this.value`.
|
|
33
|
+
Object.assign(this._base, { value: this.value });
|
|
34
|
+
if (this._base instanceof ScrcpyOptionsBase) {
|
|
35
|
+
this._base.#setValue();
|
|
36
|
+
}
|
|
27
37
|
}
|
|
28
38
|
setListEncoders() {
|
|
29
39
|
this._base.setListEncoders();
|
package/esm/options/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAMvE,MAAM,UAAU,mBAAmB,CAC/B,KAAc;IAEd,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,eAAe,IAAI,KAAK;QACxB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,CAC5C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,KAAc,EAAE,KAAQ;IAC3D,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;QAC5B,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;KACjC;IAED,uDAAuD;IACvD,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAgFD,MAAM,OAAgB,iBAAiB;IAKzB,KAAK,CAAI;IAInB,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAMvE,MAAM,UAAU,mBAAmB,CAC/B,KAAc;IAEd,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,eAAe,IAAI,KAAK;QACxB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,CAC5C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,KAAc,EAAE,KAAQ;IAC3D,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;QAC5B,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;KACjC;IAED,uDAAuD;IACvD,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAgFD,MAAM,OAAgB,iBAAiB;IAKzB,KAAK,CAAI;IAInB,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAEQ,KAAK,CAAc;IAE5B,YAAY,IAAO,EAAE,KAAkB;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,SAAS;QACL,oCAAoC;QACpC,0DAA0D;QAC1D,2DAA2D;QAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,YAAY,iBAAiB,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;SAC1B;IACL,CAAC;IAID,eAAe;QACX,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAED,eAAe;QACX,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,wBAAwB,CACpB,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,4BAA4B;QAIxB,OAAO,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;IACrD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAC/C,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/scrcpy",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "TypeScript implementation of Scrcpy.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -22,28 +22,25 @@
|
|
|
22
22
|
"bugs": {
|
|
23
23
|
"url": "https://github.com/yume-chan/ya-webadb/issues"
|
|
24
24
|
},
|
|
25
|
-
"bin": {
|
|
26
|
-
"fetch-scrcpy-server": "scripts/fetch-server.cjs"
|
|
27
|
-
},
|
|
28
25
|
"type": "module",
|
|
29
26
|
"main": "esm/index.js",
|
|
30
27
|
"types": "esm/index.d.ts",
|
|
31
28
|
"dependencies": {
|
|
32
|
-
"@yume-chan/stream-extra": "^0.0.
|
|
33
|
-
"@yume-chan/struct": "^0.0.
|
|
34
|
-
"tslib": "^2.
|
|
29
|
+
"@yume-chan/stream-extra": "^0.0.21",
|
|
30
|
+
"@yume-chan/struct": "^0.0.21",
|
|
31
|
+
"tslib": "^2.6.0"
|
|
35
32
|
},
|
|
36
33
|
"devDependencies": {
|
|
37
|
-
"@jest/globals": "^29.
|
|
34
|
+
"@jest/globals": "^29.6.1",
|
|
38
35
|
"@yume-chan/eslint-config": "^1.0.0",
|
|
39
36
|
"@yume-chan/tsconfig": "^1.0.0",
|
|
40
37
|
"cross-env": "^7.0.3",
|
|
41
|
-
"eslint": "^8.
|
|
38
|
+
"eslint": "^8.44.0",
|
|
42
39
|
"gh-release-fetch": "^3.0.2",
|
|
43
40
|
"jest": "^29.5.0",
|
|
44
|
-
"prettier": "^
|
|
45
|
-
"ts-jest": "^29.
|
|
46
|
-
"typescript": "^5.
|
|
41
|
+
"prettier": "^3.0.0",
|
|
42
|
+
"ts-jest": "^29.1.1",
|
|
43
|
+
"typescript": "^5.1.6"
|
|
47
44
|
},
|
|
48
45
|
"peerDependencies": {
|
|
49
46
|
"gh-release-fetch": "^3.0.2"
|
package/src/codec/h265.ts
CHANGED
|
@@ -130,7 +130,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
|
|
|
130
130
|
const profileTierLevel = h265ParseProfileTierLevel(
|
|
131
131
|
reader,
|
|
132
132
|
true,
|
|
133
|
-
vps_max_sub_layers_minus1
|
|
133
|
+
vps_max_sub_layers_minus1,
|
|
134
134
|
);
|
|
135
135
|
|
|
136
136
|
const vps_sub_layer_ordering_info_present_flag = !!reader.next();
|
|
@@ -193,7 +193,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
|
|
|
193
193
|
hrdParameters[i] = h265ParseHrdParameters(
|
|
194
194
|
reader,
|
|
195
195
|
cprms_present_flag[i]!,
|
|
196
|
-
vps_max_sub_layers_minus1
|
|
196
|
+
vps_max_sub_layers_minus1,
|
|
197
197
|
);
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -245,7 +245,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
245
245
|
const profileTierLevel = h265ParseProfileTierLevel(
|
|
246
246
|
reader,
|
|
247
247
|
true,
|
|
248
|
-
sps_max_sub_layers_minus1
|
|
248
|
+
sps_max_sub_layers_minus1,
|
|
249
249
|
);
|
|
250
250
|
|
|
251
251
|
const sps_seq_parameter_set_id = reader.decodeExponentialGolombNumber();
|
|
@@ -345,7 +345,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
345
345
|
reader,
|
|
346
346
|
i,
|
|
347
347
|
num_short_term_ref_pic_sets,
|
|
348
|
-
shortTermRefPicSets
|
|
348
|
+
shortTermRefPicSets,
|
|
349
349
|
);
|
|
350
350
|
}
|
|
351
351
|
|
|
@@ -359,7 +359,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
359
359
|
used_by_curr_pic_lt_sps_flag = [];
|
|
360
360
|
for (let i = 0; i < num_long_term_ref_pics_sps; i += 1) {
|
|
361
361
|
lt_ref_pic_poc_lsb_sps[i] = reader.read(
|
|
362
|
-
log2_max_pic_order_cnt_lsb_minus4 + 4
|
|
362
|
+
log2_max_pic_order_cnt_lsb_minus4 + 4,
|
|
363
363
|
);
|
|
364
364
|
used_by_curr_pic_lt_sps_flag[i] = !!reader.next();
|
|
365
365
|
}
|
|
@@ -624,22 +624,22 @@ export interface H265ProfileTierLevel {
|
|
|
624
624
|
function h265ParseProfileTierLevel(
|
|
625
625
|
reader: NaluSodbBitReader,
|
|
626
626
|
profilePresentFlag: true,
|
|
627
|
-
maxNumSubLayersMinus1: number
|
|
627
|
+
maxNumSubLayersMinus1: number,
|
|
628
628
|
): H265ProfileTierLevel & { generalProfileTier: H265ProfileTier };
|
|
629
629
|
function h265ParseProfileTierLevel(
|
|
630
630
|
reader: NaluSodbBitReader,
|
|
631
631
|
profilePresentFlag: false,
|
|
632
|
-
maxNumSubLayersMinus1: number
|
|
632
|
+
maxNumSubLayersMinus1: number,
|
|
633
633
|
): H265ProfileTierLevel & { generalProfileTier: undefined };
|
|
634
634
|
function h265ParseProfileTierLevel(
|
|
635
635
|
reader: NaluSodbBitReader,
|
|
636
636
|
profilePresentFlag: boolean,
|
|
637
|
-
maxNumSubLayersMinus1: number
|
|
637
|
+
maxNumSubLayersMinus1: number,
|
|
638
638
|
): H265ProfileTierLevel;
|
|
639
639
|
function h265ParseProfileTierLevel(
|
|
640
640
|
reader: NaluSodbBitReader,
|
|
641
641
|
profilePresentFlag: boolean,
|
|
642
|
-
maxNumSubLayersMinus1: number
|
|
642
|
+
maxNumSubLayersMinus1: number,
|
|
643
643
|
): H265ProfileTierLevel {
|
|
644
644
|
let generalProfileTier: H265ProfileTier | undefined;
|
|
645
645
|
if (profilePresentFlag) {
|
|
@@ -739,7 +739,7 @@ export function h265ParseShortTermReferencePictureSet(
|
|
|
739
739
|
reader: NaluSodbBitReader,
|
|
740
740
|
stRpsIdx: number,
|
|
741
741
|
num_short_term_ref_pic_sets: number,
|
|
742
|
-
sets: ShortTermReferencePictureSet[]
|
|
742
|
+
sets: ShortTermReferencePictureSet[],
|
|
743
743
|
): ShortTermReferencePictureSet {
|
|
744
744
|
let inter_ref_pic_set_prediction_flag = false;
|
|
745
745
|
if (stRpsIdx !== 0) {
|
|
@@ -1058,7 +1058,7 @@ export type H265VuiParameters = ReturnType<typeof h265ParseVuiParameters>;
|
|
|
1058
1058
|
export function h265ParseHrdParameters(
|
|
1059
1059
|
reader: NaluSodbBitReader,
|
|
1060
1060
|
commonInfPresentFlag: boolean,
|
|
1061
|
-
maxNumSubLayersMinus1: number
|
|
1061
|
+
maxNumSubLayersMinus1: number,
|
|
1062
1062
|
) {
|
|
1063
1063
|
let nal_hrd_parameters_present_flag: boolean | undefined;
|
|
1064
1064
|
let vcl_hrd_parameters_present_flag: boolean | undefined;
|
|
@@ -1125,14 +1125,14 @@ export function h265ParseHrdParameters(
|
|
|
1125
1125
|
nalHrdParameters[i] = h265ParseSubLayerHrdParameters(
|
|
1126
1126
|
reader,
|
|
1127
1127
|
i,
|
|
1128
|
-
getCpbCnt(cpb_cnt_minus1[i]!)
|
|
1128
|
+
getCpbCnt(cpb_cnt_minus1[i]!),
|
|
1129
1129
|
);
|
|
1130
1130
|
}
|
|
1131
1131
|
if (vcl_hrd_parameters_present_flag) {
|
|
1132
1132
|
vclHrdParameters[i] = h265ParseSubLayerHrdParameters(
|
|
1133
1133
|
reader,
|
|
1134
1134
|
i,
|
|
1135
|
-
getCpbCnt(cpb_cnt_minus1[i]!)
|
|
1135
|
+
getCpbCnt(cpb_cnt_minus1[i]!),
|
|
1136
1136
|
);
|
|
1137
1137
|
}
|
|
1138
1138
|
}
|
|
@@ -1169,7 +1169,7 @@ export type H265HrdParameters = ReturnType<typeof h265ParseHrdParameters>;
|
|
|
1169
1169
|
export function h265ParseSubLayerHrdParameters(
|
|
1170
1170
|
reader: NaluSodbBitReader,
|
|
1171
1171
|
subLayerId: number,
|
|
1172
|
-
CpbCnt: number
|
|
1172
|
+
CpbCnt: number,
|
|
1173
1173
|
) {
|
|
1174
1174
|
const bit_rate_value_minus1: number[] = [];
|
|
1175
1175
|
const cpb_size_value_minus1: number[] = [];
|
package/src/codec/nalu.ts
CHANGED
|
@@ -231,96 +231,93 @@ export function naluRemoveEmulation(buffer: Uint8Array) {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
export class NaluSodbBitReader {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
readonly #nalu: Uint8Array;
|
|
235
|
+
readonly #byteLength: number;
|
|
236
|
+
readonly #stopBitIndex: number;
|
|
237
237
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
#zeroCount = 0;
|
|
239
|
+
#bytePosition = -1;
|
|
240
|
+
#bitPosition = -1;
|
|
241
|
+
#byte = 0;
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
return this
|
|
243
|
+
get byteLength() {
|
|
244
|
+
return this.#byteLength;
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
|
|
248
|
-
return this
|
|
247
|
+
get stopBitIndex() {
|
|
248
|
+
return this.#stopBitIndex;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
|
|
252
|
-
return this
|
|
251
|
+
get bytePosition() {
|
|
252
|
+
return this.#bytePosition;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
|
|
256
|
-
return this
|
|
255
|
+
get bitPosition() {
|
|
256
|
+
return this.#bitPosition;
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
get ended() {
|
|
260
260
|
return (
|
|
261
|
-
this
|
|
262
|
-
this
|
|
261
|
+
this.#bytePosition === this.#byteLength &&
|
|
262
|
+
this.#bitPosition === this.#stopBitIndex
|
|
263
263
|
);
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
|
|
267
|
-
this
|
|
266
|
+
constructor(nalu: Uint8Array) {
|
|
267
|
+
this.#nalu = nalu;
|
|
268
268
|
|
|
269
269
|
for (let i = nalu.length - 1; i >= 0; i -= 1) {
|
|
270
|
-
if (this
|
|
270
|
+
if (this.#nalu[i] === 0) {
|
|
271
271
|
continue;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
const byte = nalu[i]!;
|
|
275
275
|
for (let j = 0; j < 8; j += 1) {
|
|
276
276
|
if (((byte >> j) & 1) === 1) {
|
|
277
|
-
this
|
|
278
|
-
this
|
|
279
|
-
this
|
|
277
|
+
this.#byteLength = i;
|
|
278
|
+
this.#stopBitIndex = j;
|
|
279
|
+
this.#readByte();
|
|
280
280
|
return;
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
throw new Error("
|
|
285
|
+
throw new Error("Stop bit not found");
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
this
|
|
290
|
-
if (this
|
|
291
|
-
this
|
|
292
|
-
this
|
|
293
|
-
this
|
|
288
|
+
#readByte() {
|
|
289
|
+
this.#byte = this.#nalu[this.#bytePosition]!;
|
|
290
|
+
if (this.#zeroCount === 2 && this.#byte === 3) {
|
|
291
|
+
this.#zeroCount = 0;
|
|
292
|
+
this.#bytePosition += 1;
|
|
293
|
+
this.#readByte();
|
|
294
294
|
return;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
if (this
|
|
298
|
-
this
|
|
297
|
+
if (this.#byte === 0) {
|
|
298
|
+
this.#zeroCount += 1;
|
|
299
299
|
} else {
|
|
300
|
-
this
|
|
300
|
+
this.#zeroCount = 0;
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
-
|
|
305
|
-
if (this
|
|
306
|
-
this
|
|
307
|
-
this
|
|
308
|
-
this
|
|
304
|
+
next() {
|
|
305
|
+
if (this.#bitPosition === -1) {
|
|
306
|
+
this.#bitPosition = 7;
|
|
307
|
+
this.#bytePosition += 1;
|
|
308
|
+
this.#readByte();
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
if (
|
|
312
|
-
this._bytePosition === this._byteLength &&
|
|
313
|
-
this._bitPosition === this._stopBitIndex
|
|
314
|
-
) {
|
|
311
|
+
if (this.ended) {
|
|
315
312
|
throw new Error("Bit index out of bounds");
|
|
316
313
|
}
|
|
317
314
|
|
|
318
|
-
const value = (this
|
|
319
|
-
this
|
|
315
|
+
const value = (this.#byte >> this.#bitPosition) & 1;
|
|
316
|
+
this.#bitPosition -= 1;
|
|
320
317
|
return value;
|
|
321
318
|
}
|
|
322
319
|
|
|
323
|
-
|
|
320
|
+
read(length: number): number {
|
|
324
321
|
if (length > 32) {
|
|
325
322
|
throw new Error("Read length too large");
|
|
326
323
|
}
|
|
@@ -332,13 +329,13 @@ export class NaluSodbBitReader {
|
|
|
332
329
|
return result;
|
|
333
330
|
}
|
|
334
331
|
|
|
335
|
-
|
|
332
|
+
skip(length: number) {
|
|
336
333
|
for (let i = 0; i < length; i += 1) {
|
|
337
334
|
this.next();
|
|
338
335
|
}
|
|
339
336
|
}
|
|
340
337
|
|
|
341
|
-
|
|
338
|
+
decodeExponentialGolombNumber(): number {
|
|
342
339
|
let length = 0;
|
|
343
340
|
while (this.next() === 0) {
|
|
344
341
|
length += 1;
|
|
@@ -349,14 +346,35 @@ export class NaluSodbBitReader {
|
|
|
349
346
|
return ((1 << length) | this.read(length)) - 1;
|
|
350
347
|
}
|
|
351
348
|
|
|
352
|
-
|
|
353
|
-
|
|
349
|
+
#save() {
|
|
350
|
+
return {
|
|
351
|
+
zeroCount: this.#zeroCount,
|
|
352
|
+
bytePosition: this.#bytePosition,
|
|
353
|
+
bitPosition: this.#bitPosition,
|
|
354
|
+
byte: this.#byte,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
#restore(state: {
|
|
359
|
+
zeroCount: number;
|
|
360
|
+
bytePosition: number;
|
|
361
|
+
bitPosition: number;
|
|
362
|
+
byte: number;
|
|
363
|
+
}) {
|
|
364
|
+
this.#zeroCount = state.zeroCount;
|
|
365
|
+
this.#bytePosition = state.bytePosition;
|
|
366
|
+
this.#bitPosition = state.bitPosition;
|
|
367
|
+
this.#byte = state.byte;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
peek(length: number) {
|
|
371
|
+
const state = this.#save();
|
|
354
372
|
const result = this.read(length);
|
|
355
|
-
|
|
373
|
+
this.#restore(state);
|
|
356
374
|
return result;
|
|
357
375
|
}
|
|
358
376
|
|
|
359
|
-
|
|
377
|
+
readBytes(length: number): Uint8Array {
|
|
360
378
|
const result = new Uint8Array(length);
|
|
361
379
|
for (let i = 0; i < length; i += 1) {
|
|
362
380
|
result[i] = this.read(8);
|
|
@@ -364,10 +382,10 @@ export class NaluSodbBitReader {
|
|
|
364
382
|
return result;
|
|
365
383
|
}
|
|
366
384
|
|
|
367
|
-
|
|
368
|
-
const
|
|
385
|
+
peekBytes(length: number): Uint8Array {
|
|
386
|
+
const state = this.#save();
|
|
369
387
|
const result = this.readBytes(length);
|
|
370
|
-
|
|
388
|
+
this.#restore(state);
|
|
371
389
|
return result;
|
|
372
390
|
}
|
|
373
391
|
}
|
|
@@ -15,34 +15,33 @@ import { ScrcpyControlMessageType } from "./type.js";
|
|
|
15
15
|
* so Scrcpy server can remove the previously hovering pointer.
|
|
16
16
|
*/
|
|
17
17
|
export class ScrcpyHoverHelper {
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
private lastHoverMessage: ScrcpyInjectTouchControlMessage | undefined;
|
|
18
|
+
// There can be only one hovering pointer (either mouse or pen,
|
|
19
|
+
// touch can have multiple pointers but no hovering state).
|
|
20
|
+
#lastHoverMessage: ScrcpyInjectTouchControlMessage | undefined;
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
message: Omit<ScrcpyInjectTouchControlMessage, "type"
|
|
22
|
+
process(
|
|
23
|
+
message: Omit<ScrcpyInjectTouchControlMessage, "type">,
|
|
25
24
|
): ScrcpyInjectTouchControlMessage[] {
|
|
26
25
|
const result: ScrcpyInjectTouchControlMessage[] = [];
|
|
27
26
|
|
|
28
27
|
// A different pointer appeared,
|
|
29
28
|
// Cancel previously hovering pointer so Scrcpy server can free up the pointer ID.
|
|
30
29
|
if (
|
|
31
|
-
this
|
|
32
|
-
this
|
|
30
|
+
this.#lastHoverMessage &&
|
|
31
|
+
this.#lastHoverMessage.pointerId !== message.pointerId
|
|
33
32
|
) {
|
|
34
33
|
// TODO: Inject MotionEvent.ACTION_HOVER_EXIT
|
|
35
34
|
// From testing, it seems no App cares about this event.
|
|
36
35
|
result.push({
|
|
37
|
-
...this
|
|
36
|
+
...this.#lastHoverMessage,
|
|
38
37
|
action: AndroidMotionEventAction.Up,
|
|
39
38
|
});
|
|
40
|
-
this
|
|
39
|
+
this.#lastHoverMessage = undefined;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
if (message.action === AndroidMotionEventAction.HoverMove) {
|
|
44
43
|
// TODO: Inject MotionEvent.ACTION_HOVER_ENTER
|
|
45
|
-
this
|
|
44
|
+
this.#lastHoverMessage = message as ScrcpyInjectTouchControlMessage;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
(message as ScrcpyInjectTouchControlMessage).type =
|
|
@@ -17,79 +17,75 @@ import {
|
|
|
17
17
|
} from "./type.js";
|
|
18
18
|
|
|
19
19
|
export class ScrcpyControlMessageSerializer {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
#options: ScrcpyOptions<object>;
|
|
21
|
+
#typeValues: ScrcpyControlMessageTypeValue;
|
|
22
|
+
#scrollController: ScrcpyScrollController;
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
this
|
|
26
|
-
this
|
|
27
|
-
this
|
|
24
|
+
constructor(options: ScrcpyOptions<object>) {
|
|
25
|
+
this.#options = options;
|
|
26
|
+
this.#typeValues = new ScrcpyControlMessageTypeValue(options);
|
|
27
|
+
this.#scrollController = options.createScrollController();
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">
|
|
32
|
-
) {
|
|
30
|
+
injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">) {
|
|
33
31
|
return ScrcpyInjectKeyCodeControlMessage.serialize(
|
|
34
|
-
this.
|
|
32
|
+
this.#typeValues.fillMessageType(
|
|
35
33
|
message,
|
|
36
|
-
ScrcpyControlMessageType.InjectKeyCode
|
|
37
|
-
)
|
|
34
|
+
ScrcpyControlMessageType.InjectKeyCode,
|
|
35
|
+
),
|
|
38
36
|
);
|
|
39
37
|
}
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
injectText(text: string) {
|
|
42
40
|
return ScrcpyInjectTextControlMessage.serialize({
|
|
43
41
|
text,
|
|
44
|
-
type: this.
|
|
42
|
+
type: this.#typeValues.get(ScrcpyControlMessageType.InjectText),
|
|
45
43
|
});
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
47
|
* `pressure` is a float value between 0 and 1.
|
|
50
48
|
*/
|
|
51
|
-
|
|
52
|
-
return this.
|
|
53
|
-
this.
|
|
49
|
+
injectTouch(message: Omit<ScrcpyInjectTouchControlMessage, "type">) {
|
|
50
|
+
return this.#options.serializeInjectTouchControlMessage(
|
|
51
|
+
this.#typeValues.fillMessageType(
|
|
54
52
|
message,
|
|
55
|
-
ScrcpyControlMessageType.InjectTouch
|
|
56
|
-
)
|
|
53
|
+
ScrcpyControlMessageType.InjectTouch,
|
|
54
|
+
),
|
|
57
55
|
);
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
/**
|
|
61
59
|
* `scrollX` and `scrollY` are float values between 0 and 1.
|
|
62
60
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return this._scrollController.serializeScrollMessage(
|
|
67
|
-
this._typeValues.fillMessageType(
|
|
61
|
+
injectScroll(message: Omit<ScrcpyInjectScrollControlMessage, "type">) {
|
|
62
|
+
return this.#scrollController.serializeScrollMessage(
|
|
63
|
+
this.#typeValues.fillMessageType(
|
|
68
64
|
message,
|
|
69
|
-
ScrcpyControlMessageType.InjectScroll
|
|
70
|
-
)
|
|
65
|
+
ScrcpyControlMessageType.InjectScroll,
|
|
66
|
+
),
|
|
71
67
|
);
|
|
72
68
|
}
|
|
73
69
|
|
|
74
|
-
|
|
75
|
-
return this.
|
|
70
|
+
backOrScreenOn(action: AndroidKeyEventAction) {
|
|
71
|
+
return this.#options.serializeBackOrScreenOnControlMessage({
|
|
76
72
|
action,
|
|
77
|
-
type: this.
|
|
73
|
+
type: this.#typeValues.get(ScrcpyControlMessageType.BackOrScreenOn),
|
|
78
74
|
});
|
|
79
75
|
}
|
|
80
76
|
|
|
81
|
-
|
|
77
|
+
setScreenPowerMode(mode: AndroidScreenPowerMode) {
|
|
82
78
|
return ScrcpySetScreenPowerModeControlMessage.serialize({
|
|
83
79
|
mode,
|
|
84
|
-
type: this.
|
|
85
|
-
ScrcpyControlMessageType.SetScreenPowerMode
|
|
80
|
+
type: this.#typeValues.get(
|
|
81
|
+
ScrcpyControlMessageType.SetScreenPowerMode,
|
|
86
82
|
),
|
|
87
83
|
});
|
|
88
84
|
}
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
rotateDevice() {
|
|
91
87
|
return ScrcpyRotateDeviceControlMessage.serialize({
|
|
92
|
-
type: this.
|
|
88
|
+
type: this.#typeValues.get(ScrcpyControlMessageType.RotateDevice),
|
|
93
89
|
});
|
|
94
90
|
}
|
|
95
91
|
}
|
package/src/control/type.ts
CHANGED
|
@@ -25,23 +25,23 @@ export enum ScrcpyControlMessageType {
|
|
|
25
25
|
* This class provides a way to get the actual value for a given type.
|
|
26
26
|
*/
|
|
27
27
|
export class ScrcpyControlMessageTypeValue {
|
|
28
|
-
|
|
28
|
+
#types: readonly ScrcpyControlMessageType[];
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
this
|
|
30
|
+
constructor(options: ScrcpyOptions<object>) {
|
|
31
|
+
this.#types = options.controlMessageTypes;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
const value = this
|
|
34
|
+
get(type: ScrcpyControlMessageType): number {
|
|
35
|
+
const value = this.#types.indexOf(type);
|
|
36
36
|
if (value === -1) {
|
|
37
37
|
throw new Error("Not supported");
|
|
38
38
|
}
|
|
39
39
|
return value;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
fillMessageType<T extends { type: ScrcpyControlMessageType }>(
|
|
43
43
|
message: Omit<T, "type">,
|
|
44
|
-
type: T["type"]
|
|
44
|
+
type: T["type"],
|
|
45
45
|
): T {
|
|
46
46
|
(message as T).type = this.get(type);
|
|
47
47
|
return message as T;
|