@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.
Files changed (124) hide show
  1. package/CHANGELOG.json +15 -0
  2. package/CHANGELOG.md +9 -1
  3. package/README.md +8 -122
  4. package/esm/codec/av1.js +2 -2
  5. package/esm/codec/av1.js.map +1 -1
  6. package/esm/codec/h264.js +2 -2
  7. package/esm/codec/h264.js.map +1 -1
  8. package/esm/codec/h265.js +2 -2
  9. package/esm/codec/h265.js.map +1 -1
  10. package/esm/codec/nalu.d.ts +1 -8
  11. package/esm/codec/nalu.d.ts.map +1 -1
  12. package/esm/codec/nalu.js +53 -40
  13. package/esm/codec/nalu.js.map +1 -1
  14. package/esm/control/hover-helper.d.ts +1 -1
  15. package/esm/control/hover-helper.d.ts.map +1 -1
  16. package/esm/control/hover-helper.js +8 -9
  17. package/esm/control/hover-helper.js.map +1 -1
  18. package/esm/control/inject-keycode.js +3 -3
  19. package/esm/control/inject-keycode.js.map +1 -1
  20. package/esm/control/inject-touch.js +3 -3
  21. package/esm/control/inject-touch.js.map +1 -1
  22. package/esm/control/serializer.d.ts +1 -3
  23. package/esm/control/serializer.d.ts.map +1 -1
  24. package/esm/control/serializer.js +14 -14
  25. package/esm/control/serializer.js.map +1 -1
  26. package/esm/control/set-screen-power-mode.js +1 -1
  27. package/esm/control/set-screen-power-mode.js.map +1 -1
  28. package/esm/control/type.d.ts +1 -1
  29. package/esm/control/type.d.ts.map +1 -1
  30. package/esm/control/type.js +4 -4
  31. package/esm/control/type.js.map +1 -1
  32. package/esm/control/writer.d.ts +1 -3
  33. package/esm/control/writer.d.ts.map +1 -1
  34. package/esm/control/writer.js +17 -17
  35. package/esm/control/writer.js.map +1 -1
  36. package/esm/device-message/type.js +1 -1
  37. package/esm/device-message/type.js.map +1 -1
  38. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  39. package/esm/options/1_16/codec-options.js.map +1 -1
  40. package/esm/options/1_16/init.js +2 -2
  41. package/esm/options/1_16/init.js.map +1 -1
  42. package/esm/options/1_16/options.d.ts.map +1 -1
  43. package/esm/options/1_16/options.js +1 -2
  44. package/esm/options/1_16/options.js.map +1 -1
  45. package/esm/options/1_16/scroll.d.ts +1 -2
  46. package/esm/options/1_16/scroll.d.ts.map +1 -1
  47. package/esm/options/1_16/scroll.js +12 -12
  48. package/esm/options/1_16/scroll.js.map +1 -1
  49. package/esm/options/1_17.d.ts.map +1 -1
  50. package/esm/options/1_17.js +1 -2
  51. package/esm/options/1_17.js.map +1 -1
  52. package/esm/options/1_18.d.ts.map +1 -1
  53. package/esm/options/1_18.js +3 -4
  54. package/esm/options/1_18.js.map +1 -1
  55. package/esm/options/1_21.d.ts.map +1 -1
  56. package/esm/options/1_21.js +1 -2
  57. package/esm/options/1_21.js.map +1 -1
  58. package/esm/options/1_22/options.d.ts.map +1 -1
  59. package/esm/options/1_22/options.js +1 -2
  60. package/esm/options/1_22/options.js.map +1 -1
  61. package/esm/options/1_22/scroll.d.ts.map +1 -1
  62. package/esm/options/1_22/scroll.js.map +1 -1
  63. package/esm/options/1_23.d.ts.map +1 -1
  64. package/esm/options/1_23.js +1 -2
  65. package/esm/options/1_23.js.map +1 -1
  66. package/esm/options/1_24.d.ts.map +1 -1
  67. package/esm/options/1_24.js +1 -2
  68. package/esm/options/1_24.js.map +1 -1
  69. package/esm/options/1_25/options.d.ts.map +1 -1
  70. package/esm/options/1_25/options.js.map +1 -1
  71. package/esm/options/2_0.d.ts.map +1 -1
  72. package/esm/options/2_0.js +2 -4
  73. package/esm/options/2_0.js.map +1 -1
  74. package/esm/options/2_1.d.ts +48 -0
  75. package/esm/options/2_1.d.ts.map +1 -0
  76. package/esm/options/2_1.js +23 -0
  77. package/esm/options/2_1.js.map +1 -0
  78. package/esm/options/codec.d.ts.map +1 -1
  79. package/esm/options/codec.js +2 -3
  80. package/esm/options/codec.js.map +1 -1
  81. package/esm/options/index.d.ts +1 -0
  82. package/esm/options/index.d.ts.map +1 -1
  83. package/esm/options/index.js +1 -0
  84. package/esm/options/index.js.map +1 -1
  85. package/esm/options/latest.d.ts +4 -5
  86. package/esm/options/latest.d.ts.map +1 -1
  87. package/esm/options/latest.js +2 -3
  88. package/esm/options/latest.js.map +1 -1
  89. package/esm/options/types.d.ts +1 -0
  90. package/esm/options/types.d.ts.map +1 -1
  91. package/esm/options/types.js +10 -0
  92. package/esm/options/types.js.map +1 -1
  93. package/package.json +9 -12
  94. package/src/codec/h265.ts +14 -14
  95. package/src/codec/nalu.ts +73 -55
  96. package/src/control/hover-helper.ts +10 -11
  97. package/src/control/serializer.ts +31 -35
  98. package/src/control/type.ts +7 -7
  99. package/src/control/writer.ts +30 -32
  100. package/src/device-message/stream.ts +2 -2
  101. package/src/options/1_16/codec-options.ts +4 -4
  102. package/src/options/1_16/float-to-uint16.ts +1 -1
  103. package/src/options/1_16/options.ts +31 -35
  104. package/src/options/1_16/scroll.ts +16 -16
  105. package/src/options/1_17.ts +11 -11
  106. package/src/options/1_18.ts +12 -12
  107. package/src/options/1_21.ts +9 -9
  108. package/src/options/1_22/options.ts +7 -7
  109. package/src/options/1_22/scroll.ts +2 -2
  110. package/src/options/1_23.ts +6 -6
  111. package/src/options/1_24.ts +4 -4
  112. package/src/options/1_25/options.ts +4 -4
  113. package/src/options/1_25/scroll.ts +2 -2
  114. package/src/options/2_0.ts +25 -25
  115. package/src/options/2_1.ts +35 -0
  116. package/src/options/codec.ts +13 -13
  117. package/src/options/index.ts +1 -0
  118. package/src/options/latest.ts +4 -6
  119. package/src/options/types.ts +39 -28
  120. package/tsconfig.build.tsbuildinfo +1 -1
  121. package/bin/scrcpy-server +0 -0
  122. package/bin/version.d.ts +0 -1
  123. package/bin/version.js +0 -1
  124. package/scripts/fetch-server.cjs +0 -38
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
@@ -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();
@@ -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,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAEe,KAAK,CAAc;IAEnC,YAAmB,IAAO,EAAE,KAAkB;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAIM,eAAe;QAClB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAEM,YAAY,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACI,wBAAwB,CAC3B,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAEM,wBAAwB,CAC3B,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAEM,4BAA4B;QAI/B,OAAO,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;IACrD,CAAC;IAEM,kCAAkC,CACrC,OAAwC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAEM,qCAAqC,CACxC,OAA2C;QAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAEM,mCAAmC,CACtC,OAAyC;QAEzC,OAAO,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAC/C,CAAC;CACJ"}
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.20",
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.20",
33
- "@yume-chan/struct": "^0.0.20",
34
- "tslib": "^2.5.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.5.0",
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.41.0",
38
+ "eslint": "^8.44.0",
42
39
  "gh-release-fetch": "^3.0.2",
43
40
  "jest": "^29.5.0",
44
- "prettier": "^2.8.8",
45
- "ts-jest": "^29.0.4",
46
- "typescript": "^5.0.3"
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
- private readonly _nalu: Uint8Array;
235
- private readonly _byteLength: number;
236
- private readonly _stopBitIndex: number;
234
+ readonly #nalu: Uint8Array;
235
+ readonly #byteLength: number;
236
+ readonly #stopBitIndex: number;
237
237
 
238
- private _zeroCount = 0;
239
- private _bytePosition = -1;
240
- private _bitPosition = -1;
241
- private _byte = 0;
238
+ #zeroCount = 0;
239
+ #bytePosition = -1;
240
+ #bitPosition = -1;
241
+ #byte = 0;
242
242
 
243
- public get byteLength() {
244
- return this._byteLength;
243
+ get byteLength() {
244
+ return this.#byteLength;
245
245
  }
246
246
 
247
- public get stopBitIndex() {
248
- return this._stopBitIndex;
247
+ get stopBitIndex() {
248
+ return this.#stopBitIndex;
249
249
  }
250
250
 
251
- public get bytePosition() {
252
- return this._bytePosition;
251
+ get bytePosition() {
252
+ return this.#bytePosition;
253
253
  }
254
254
 
255
- public get bitPosition() {
256
- return this._bitPosition;
255
+ get bitPosition() {
256
+ return this.#bitPosition;
257
257
  }
258
258
 
259
- public get ended() {
259
+ get ended() {
260
260
  return (
261
- this._bytePosition === this._byteLength &&
262
- this._bitPosition === this._stopBitIndex
261
+ this.#bytePosition === this.#byteLength &&
262
+ this.#bitPosition === this.#stopBitIndex
263
263
  );
264
264
  }
265
265
 
266
- public constructor(nalu: Uint8Array) {
267
- this._nalu = nalu;
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._nalu[i] === 0) {
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._byteLength = i;
278
- this._stopBitIndex = j;
279
- this.readByte();
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("End bit not found");
285
+ throw new Error("Stop bit not found");
286
286
  }
287
287
 
288
- private 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();
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._byte === 0) {
298
- this._zeroCount += 1;
297
+ if (this.#byte === 0) {
298
+ this.#zeroCount += 1;
299
299
  } else {
300
- this._zeroCount = 0;
300
+ this.#zeroCount = 0;
301
301
  }
302
302
  }
303
303
 
304
- public next() {
305
- if (this._bitPosition === -1) {
306
- this._bitPosition = 7;
307
- this._bytePosition += 1;
308
- this.readByte();
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._byte >> this._bitPosition) & 1;
319
- this._bitPosition -= 1;
315
+ const value = (this.#byte >> this.#bitPosition) & 1;
316
+ this.#bitPosition -= 1;
320
317
  return value;
321
318
  }
322
319
 
323
- public read(length: number): number {
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
- public skip(length: number) {
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
- public decodeExponentialGolombNumber(): number {
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
- public peek(length: number) {
353
- const { _zeroCount, _bytePosition, _bitPosition, _byte } = this;
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
- Object.assign(this, { _zeroCount, _bytePosition, _bitPosition, _byte });
373
+ this.#restore(state);
356
374
  return result;
357
375
  }
358
376
 
359
- public readBytes(length: number): Uint8Array {
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
- public peekBytes(length: number): Uint8Array {
368
- const { _zeroCount, _bytePosition, _bitPosition, _byte } = this;
385
+ peekBytes(length: number): Uint8Array {
386
+ const state = this.#save();
369
387
  const result = this.readBytes(length);
370
- Object.assign(this, { _zeroCount, _bytePosition, _bitPosition, _byte });
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
- // AFAIK, only mouse and pen can have hover state
19
- // and you can't have two mouses or pens.
20
- // So remember the last hovering pointer is enough.
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
- public process(
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.lastHoverMessage &&
32
- this.lastHoverMessage.pointerId !== message.pointerId
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.lastHoverMessage,
36
+ ...this.#lastHoverMessage,
38
37
  action: AndroidMotionEventAction.Up,
39
38
  });
40
- this.lastHoverMessage = undefined;
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.lastHoverMessage = message as ScrcpyInjectTouchControlMessage;
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
- private _options: ScrcpyOptions<object>;
21
- private _typeValues: ScrcpyControlMessageTypeValue;
22
- private _scrollController: ScrcpyScrollController;
20
+ #options: ScrcpyOptions<object>;
21
+ #typeValues: ScrcpyControlMessageTypeValue;
22
+ #scrollController: ScrcpyScrollController;
23
23
 
24
- public constructor(options: ScrcpyOptions<object>) {
25
- this._options = options;
26
- this._typeValues = new ScrcpyControlMessageTypeValue(options);
27
- this._scrollController = options.createScrollController();
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
- public injectKeyCode(
31
- message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">
32
- ) {
30
+ injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">) {
33
31
  return ScrcpyInjectKeyCodeControlMessage.serialize(
34
- this._typeValues.fillMessageType(
32
+ this.#typeValues.fillMessageType(
35
33
  message,
36
- ScrcpyControlMessageType.InjectKeyCode
37
- )
34
+ ScrcpyControlMessageType.InjectKeyCode,
35
+ ),
38
36
  );
39
37
  }
40
38
 
41
- public injectText(text: string) {
39
+ injectText(text: string) {
42
40
  return ScrcpyInjectTextControlMessage.serialize({
43
41
  text,
44
- type: this._typeValues.get(ScrcpyControlMessageType.InjectText),
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
- public injectTouch(message: Omit<ScrcpyInjectTouchControlMessage, "type">) {
52
- return this._options.serializeInjectTouchControlMessage(
53
- this._typeValues.fillMessageType(
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
- public injectScroll(
64
- message: Omit<ScrcpyInjectScrollControlMessage, "type">
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
- public backOrScreenOn(action: AndroidKeyEventAction) {
75
- return this._options.serializeBackOrScreenOnControlMessage({
70
+ backOrScreenOn(action: AndroidKeyEventAction) {
71
+ return this.#options.serializeBackOrScreenOnControlMessage({
76
72
  action,
77
- type: this._typeValues.get(ScrcpyControlMessageType.BackOrScreenOn),
73
+ type: this.#typeValues.get(ScrcpyControlMessageType.BackOrScreenOn),
78
74
  });
79
75
  }
80
76
 
81
- public setScreenPowerMode(mode: AndroidScreenPowerMode) {
77
+ setScreenPowerMode(mode: AndroidScreenPowerMode) {
82
78
  return ScrcpySetScreenPowerModeControlMessage.serialize({
83
79
  mode,
84
- type: this._typeValues.get(
85
- ScrcpyControlMessageType.SetScreenPowerMode
80
+ type: this.#typeValues.get(
81
+ ScrcpyControlMessageType.SetScreenPowerMode,
86
82
  ),
87
83
  });
88
84
  }
89
85
 
90
- public rotateDevice() {
86
+ rotateDevice() {
91
87
  return ScrcpyRotateDeviceControlMessage.serialize({
92
- type: this._typeValues.get(ScrcpyControlMessageType.RotateDevice),
88
+ type: this.#typeValues.get(ScrcpyControlMessageType.RotateDevice),
93
89
  });
94
90
  }
95
91
  }
@@ -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
- private types: readonly ScrcpyControlMessageType[];
28
+ #types: readonly ScrcpyControlMessageType[];
29
29
 
30
- public constructor(options: ScrcpyOptions<object>) {
31
- this.types = options.controlMessageTypes;
30
+ constructor(options: ScrcpyOptions<object>) {
31
+ this.#types = options.controlMessageTypes;
32
32
  }
33
33
 
34
- public get(type: ScrcpyControlMessageType): number {
35
- const value = this.types.indexOf(type);
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
- public fillMessageType<T extends { type: ScrcpyControlMessageType }>(
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;