@yume-chan/scrcpy 0.0.20 → 0.0.22

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 (147) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +18 -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.d.ts +72 -4
  9. package/esm/codec/h265.d.ts.map +1 -1
  10. package/esm/codec/h265.js +18 -19
  11. package/esm/codec/h265.js.map +1 -1
  12. package/esm/codec/nalu.d.ts +1 -8
  13. package/esm/codec/nalu.d.ts.map +1 -1
  14. package/esm/codec/nalu.js +53 -40
  15. package/esm/codec/nalu.js.map +1 -1
  16. package/esm/control/hover-helper.d.ts +1 -1
  17. package/esm/control/hover-helper.d.ts.map +1 -1
  18. package/esm/control/hover-helper.js +8 -9
  19. package/esm/control/hover-helper.js.map +1 -1
  20. package/esm/control/inject-keycode.d.ts +13 -13
  21. package/esm/control/inject-keycode.d.ts.map +1 -1
  22. package/esm/control/inject-keycode.js +3 -3
  23. package/esm/control/inject-keycode.js.map +1 -1
  24. package/esm/control/inject-touch.d.ts.map +1 -1
  25. package/esm/control/inject-touch.js +3 -4
  26. package/esm/control/inject-touch.js.map +1 -1
  27. package/esm/control/serializer.d.ts +4 -3
  28. package/esm/control/serializer.d.ts.map +1 -1
  29. package/esm/control/serializer.js +30 -14
  30. package/esm/control/serializer.js.map +1 -1
  31. package/esm/control/set-screen-power-mode.js +1 -1
  32. package/esm/control/set-screen-power-mode.js.map +1 -1
  33. package/esm/control/type.d.ts +1 -1
  34. package/esm/control/type.d.ts.map +1 -1
  35. package/esm/control/type.js +4 -4
  36. package/esm/control/type.js.map +1 -1
  37. package/esm/control/writer.d.ts +5 -3
  38. package/esm/control/writer.d.ts.map +1 -1
  39. package/esm/control/writer.js +23 -14
  40. package/esm/control/writer.js.map +1 -1
  41. package/esm/device-message/stream.js.map +1 -1
  42. package/esm/device-message/type.js +1 -1
  43. package/esm/device-message/type.js.map +1 -1
  44. package/esm/options/1_16/codec-options.d.ts +2 -2
  45. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  46. package/esm/options/1_16/codec-options.js +15 -5
  47. package/esm/options/1_16/codec-options.js.map +1 -1
  48. package/esm/options/1_16/float-to-uint16.js.map +1 -1
  49. package/esm/options/1_16/init.js +2 -2
  50. package/esm/options/1_16/init.js.map +1 -1
  51. package/esm/options/1_16/options.d.ts +1 -1
  52. package/esm/options/1_16/options.d.ts.map +1 -1
  53. package/esm/options/1_16/options.js +2 -3
  54. package/esm/options/1_16/options.js.map +1 -1
  55. package/esm/options/1_16/scroll.d.ts +1 -2
  56. package/esm/options/1_16/scroll.d.ts.map +1 -1
  57. package/esm/options/1_16/scroll.js +12 -12
  58. package/esm/options/1_16/scroll.js.map +1 -1
  59. package/esm/options/1_17.d.ts +1 -1
  60. package/esm/options/1_17.d.ts.map +1 -1
  61. package/esm/options/1_17.js +1 -2
  62. package/esm/options/1_17.js.map +1 -1
  63. package/esm/options/1_18.d.ts +1 -1
  64. package/esm/options/1_18.d.ts.map +1 -1
  65. package/esm/options/1_18.js +3 -4
  66. package/esm/options/1_18.js.map +1 -1
  67. package/esm/options/1_21.d.ts +1 -1
  68. package/esm/options/1_21.d.ts.map +1 -1
  69. package/esm/options/1_21.js +1 -2
  70. package/esm/options/1_21.js.map +1 -1
  71. package/esm/options/1_22/options.d.ts +1 -1
  72. package/esm/options/1_22/options.d.ts.map +1 -1
  73. package/esm/options/1_22/options.js +1 -2
  74. package/esm/options/1_22/options.js.map +1 -1
  75. package/esm/options/1_22/scroll.d.ts.map +1 -1
  76. package/esm/options/1_22/scroll.js.map +1 -1
  77. package/esm/options/1_23.d.ts +1 -1
  78. package/esm/options/1_23.d.ts.map +1 -1
  79. package/esm/options/1_23.js +1 -2
  80. package/esm/options/1_23.js.map +1 -1
  81. package/esm/options/1_24.d.ts +1 -1
  82. package/esm/options/1_24.d.ts.map +1 -1
  83. package/esm/options/1_24.js +1 -2
  84. package/esm/options/1_24.js.map +1 -1
  85. package/esm/options/1_25/options.d.ts.map +1 -1
  86. package/esm/options/1_25/options.js.map +1 -1
  87. package/esm/options/2_0.d.ts +1 -1
  88. package/esm/options/2_0.d.ts.map +1 -1
  89. package/esm/options/2_0.js +2 -4
  90. package/esm/options/2_0.js.map +1 -1
  91. package/esm/options/2_1.d.ts +48 -0
  92. package/esm/options/2_1.d.ts.map +1 -0
  93. package/esm/options/2_1.js +23 -0
  94. package/esm/options/2_1.js.map +1 -0
  95. package/esm/options/2_2.d.ts +67 -0
  96. package/esm/options/2_2.d.ts.map +1 -0
  97. package/esm/options/2_2.js +44 -0
  98. package/esm/options/2_2.js.map +1 -0
  99. package/esm/options/codec.d.ts.map +1 -1
  100. package/esm/options/codec.js +3 -4
  101. package/esm/options/codec.js.map +1 -1
  102. package/esm/options/index.d.ts +2 -0
  103. package/esm/options/index.d.ts.map +1 -1
  104. package/esm/options/index.js +2 -0
  105. package/esm/options/index.js.map +1 -1
  106. package/esm/options/latest.d.ts +4 -5
  107. package/esm/options/latest.d.ts.map +1 -1
  108. package/esm/options/latest.js +2 -3
  109. package/esm/options/latest.js.map +1 -1
  110. package/esm/options/types.d.ts +1 -0
  111. package/esm/options/types.d.ts.map +1 -1
  112. package/esm/options/types.js +15 -0
  113. package/esm/options/types.js.map +1 -1
  114. package/package.json +10 -22
  115. package/src/codec/h265.ts +40 -31
  116. package/src/codec/nalu.ts +73 -55
  117. package/src/control/hover-helper.ts +10 -11
  118. package/src/control/inject-touch.ts +0 -1
  119. package/src/control/serializer.ts +56 -35
  120. package/src/control/type.ts +7 -7
  121. package/src/control/writer.ts +40 -30
  122. package/src/device-message/stream.ts +2 -2
  123. package/src/options/1_16/codec-options.ts +22 -7
  124. package/src/options/1_16/float-to-uint16.ts +1 -1
  125. package/src/options/1_16/options.ts +32 -36
  126. package/src/options/1_16/scroll.ts +16 -16
  127. package/src/options/1_17.ts +11 -11
  128. package/src/options/1_18.ts +12 -12
  129. package/src/options/1_21.ts +9 -9
  130. package/src/options/1_22/options.ts +7 -7
  131. package/src/options/1_22/scroll.ts +2 -2
  132. package/src/options/1_23.ts +6 -6
  133. package/src/options/1_24.ts +4 -4
  134. package/src/options/1_25/options.ts +4 -4
  135. package/src/options/1_25/scroll.ts +2 -2
  136. package/src/options/2_0.ts +25 -25
  137. package/src/options/2_1.ts +35 -0
  138. package/src/options/2_2.ts +68 -0
  139. package/src/options/codec.ts +13 -13
  140. package/src/options/index.ts +2 -0
  141. package/src/options/latest.ts +4 -6
  142. package/src/options/types.ts +47 -28
  143. package/tsconfig.build.tsbuildinfo +1 -1
  144. package/bin/scrcpy-server +0 -0
  145. package/bin/version.d.ts +0 -1
  146. package/bin/version.js +0 -1
  147. package/scripts/fetch-server.cjs +0 -38
@@ -3,11 +3,11 @@ export var ScrcpyVideoCodecId;
3
3
  ScrcpyVideoCodecId[ScrcpyVideoCodecId["H264"] = 1748121140] = "H264";
4
4
  ScrcpyVideoCodecId[ScrcpyVideoCodecId["H265"] = 1748121141] = "H265";
5
5
  ScrcpyVideoCodecId[ScrcpyVideoCodecId["AV1"] = 6387249] = "AV1";
6
- })(ScrcpyVideoCodecId = ScrcpyVideoCodecId || (ScrcpyVideoCodecId = {}));
7
- class ScrcpyAudioCodec {
6
+ })(ScrcpyVideoCodecId || (ScrcpyVideoCodecId = {}));
7
+ export class ScrcpyAudioCodec {
8
8
  static OPUS = new ScrcpyAudioCodec("opus", 0x6f_70_75_73, "audio/opus", "opus");
9
9
  static AAC = new ScrcpyAudioCodec("aac", 0x00_61_61_63, "audio/aac", "mp4a.66");
10
- static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "1");
10
+ static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "");
11
11
  optionValue;
12
12
  metadataValue;
13
13
  mimeType;
@@ -22,5 +22,4 @@ class ScrcpyAudioCodec {
22
22
  return this.optionValue;
23
23
  }
24
24
  }
25
- export { ScrcpyAudioCodec };
26
25
  //# sourceMappingURL=codec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,GAAlB,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAa,gBAAgB;IAClB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CAC9C,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACK,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CAC7C,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACK,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CAC7C,KAAK,EACL,aAAa,EACb,WAAW,EACX,GAAG,CACN,CAAC;IAEc,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAEnC,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;;SAvCQ,gBAAgB"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,EAAE,CACL,CAAC;IAEO,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAE5B,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC"}
@@ -7,6 +7,8 @@ export * from "./1_23.js";
7
7
  export * from "./1_24.js";
8
8
  export * from "./1_25/index.js";
9
9
  export * from "./2_0.js";
10
+ export * from "./2_1.js";
11
+ export * from "./2_2.js";
10
12
  export * from "./codec.js";
11
13
  export * from "./latest.js";
12
14
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -7,6 +7,8 @@ export * from "./1_23.js";
7
7
  export * from "./1_24.js";
8
8
  export * from "./1_25/index.js";
9
9
  export * from "./2_0.js";
10
+ export * from "./2_1.js";
11
+ export * from "./2_2.js";
10
12
  export * from "./codec.js";
11
13
  export * from "./latest.js";
12
14
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
- import type { ScrcpyOptionsInit2_0 } from "./2_0.js";
3
- import { ScrcpyOptions2_0 } from "./2_0.js";
2
+ import type { ScrcpyOptionsInit2_2 } from "./2_2.js";
3
+ import { ScrcpyOptions2_2 } from "./2_2.js";
4
4
  export declare const ScrcpyLogLevel: typeof ScrcpyLogLevel1_18;
5
5
  export type ScrcpyLogLevel = ScrcpyLogLevel1_18;
6
6
  export declare const ScrcpyVideoOrientation: typeof ScrcpyVideoOrientation1_18;
7
7
  export type ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
8
- export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_0;
9
- export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_0 {
8
+ export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_2;
9
+ export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
10
10
  }
11
- export declare const ScrcpyLatestVersion = "2.0";
12
11
  //# sourceMappingURL=latest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,sBAAsB,mCAA6B,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC3D,qBAAa,mBAAoB,SAAQ,gBAAgB;CAAG;AAE5D,eAAO,MAAM,mBAAmB,QAAQ,CAAC"}
1
+ {"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,sBAAsB,mCAA6B,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC3D,qBAAa,mBAAoB,SAAQ,gBAAgB;CAAG"}
@@ -1,8 +1,7 @@
1
1
  import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
- import { ScrcpyOptions2_0 } from "./2_0.js";
2
+ import { ScrcpyOptions2_2 } from "./2_2.js";
3
3
  export const ScrcpyLogLevel = ScrcpyLogLevel1_18;
4
4
  export const ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
5
- export class ScrcpyOptionsLatest extends ScrcpyOptions2_0 {
5
+ export class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
6
6
  }
7
- export const ScrcpyLatestVersion = "2.0";
8
7
  //# sourceMappingURL=latest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"latest.js","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAGjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAIjE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;CAAG;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"latest.js","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAGjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAIjE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;CAAG"}
@@ -58,6 +58,7 @@ export interface ScrcpyOptions<T extends object> {
58
58
  createScrollController(): ScrcpyScrollController;
59
59
  }
60
60
  export declare abstract class ScrcpyOptionsBase<T extends object, B extends ScrcpyOptions<object>> implements ScrcpyOptions<T> {
61
+ #private;
61
62
  protected _base: B;
62
63
  abstract get defaults(): Required<T>;
63
64
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
@@ -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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"}
@@ -13,6 +13,11 @@ export function toScrcpyOptionValue(value, empty) {
13
13
  if (value === undefined) {
14
14
  return empty;
15
15
  }
16
+ if (typeof value !== "string" &&
17
+ typeof value !== "number" &&
18
+ typeof value !== "boolean") {
19
+ throw new Error(`Invalid option value: ${String(value)}`);
20
+ }
16
21
  return String(value);
17
22
  }
18
23
  export class ScrcpyOptionsBase {
@@ -24,6 +29,16 @@ export class ScrcpyOptionsBase {
24
29
  constructor(base, value) {
25
30
  this._base = base;
26
31
  this.value = value;
32
+ this.#setValue();
33
+ }
34
+ #setValue() {
35
+ // Share `value` with `_base` class,
36
+ // so updating `_base.value` in `_base.setListEncoders()`/
37
+ // `_base.setListDisplays()` will also update `this.value`.
38
+ Object.assign(this._base, { value: this.value });
39
+ if (this._base instanceof ScrcpyOptionsBase) {
40
+ this._base.#setValue();
41
+ }
27
42
  }
28
43
  setListEncoders() {
29
44
  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,CAAC;QAC7B,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IACI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC5B,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;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,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;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.22",
4
4
  "description": "TypeScript implementation of Scrcpy.",
5
5
  "keywords": [
6
6
  "adb",
@@ -22,36 +22,24 @@
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.22",
30
+ "@yume-chan/struct": "^0.0.22",
31
+ "tslib": "^2.6.2"
35
32
  },
36
33
  "devDependencies": {
37
- "@jest/globals": "^29.5.0",
34
+ "@jest/globals": "^29.7.0",
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",
42
- "gh-release-fetch": "^3.0.2",
43
- "jest": "^29.5.0",
44
- "prettier": "^2.8.8",
45
- "ts-jest": "^29.0.4",
46
- "typescript": "^5.0.3"
47
- },
48
- "peerDependencies": {
49
- "gh-release-fetch": "^3.0.2"
50
- },
51
- "peerDependenciesMeta": {
52
- "gh-release-fetch": {
53
- "optional": true
54
- }
38
+ "eslint": "^8.55.0",
39
+ "jest": "^29.7.0",
40
+ "prettier": "^3.1.0",
41
+ "ts-jest": "^29.1.1",
42
+ "typescript": "^5.3.2"
55
43
  },
56
44
  "scripts": {
57
45
  "build": "tsc -b tsconfig.build.json",
package/src/codec/h265.ts CHANGED
@@ -14,6 +14,9 @@
14
14
  // cspell: ignore texmc
15
15
  // cspell: ignore rbsp
16
16
  // cspell: ignore cprms
17
+ // cspell: ignore nalu
18
+ // cspell: ignore sodb
19
+ // cspell: ignore luma
17
20
 
18
21
  import { NaluSodbBitReader, annexBSplitNalu } from "./nalu.js";
19
22
 
@@ -130,7 +133,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
130
133
  const profileTierLevel = h265ParseProfileTierLevel(
131
134
  reader,
132
135
  true,
133
- vps_max_sub_layers_minus1
136
+ vps_max_sub_layers_minus1,
134
137
  );
135
138
 
136
139
  const vps_sub_layer_ordering_info_present_flag = !!reader.next();
@@ -193,7 +196,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
193
196
  hrdParameters[i] = h265ParseHrdParameters(
194
197
  reader,
195
198
  cprms_present_flag[i]!,
196
- vps_max_sub_layers_minus1
199
+ vps_max_sub_layers_minus1,
197
200
  );
198
201
  }
199
202
  }
@@ -245,7 +248,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
245
248
  const profileTierLevel = h265ParseProfileTierLevel(
246
249
  reader,
247
250
  true,
248
- sps_max_sub_layers_minus1
251
+ sps_max_sub_layers_minus1,
249
252
  );
250
253
 
251
254
  const sps_seq_parameter_set_id = reader.decodeExponentialGolombNumber();
@@ -275,9 +278,9 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
275
278
  const log2_max_pic_order_cnt_lsb_minus4 =
276
279
  reader.decodeExponentialGolombNumber();
277
280
 
278
- let sps_max_dec_pic_buffering_minus1: number[] | undefined;
279
- let sps_max_num_reorder_pics: number[] | undefined;
280
- let sps_max_latency_increase_plus1: number[] | undefined;
281
+ const sps_max_dec_pic_buffering_minus1: number[] = [];
282
+ const sps_max_num_reorder_pics: number[] = [];
283
+ const sps_max_latency_increase_plus1: number[] = [];
281
284
  const sps_sub_layer_ordering_info_present_flag = !!reader.next();
282
285
  for (
283
286
  let i = sps_sub_layer_ordering_info_present_flag
@@ -286,17 +289,11 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
286
289
  i <= sps_max_sub_layers_minus1;
287
290
  i += 1
288
291
  ) {
289
- sps_max_dec_pic_buffering_minus1 = [];
290
- sps_max_num_reorder_pics = [];
291
- sps_max_latency_increase_plus1 = [];
292
- for (let i = 0; i <= sps_max_sub_layers_minus1; i += 1) {
293
- sps_max_dec_pic_buffering_minus1[i] =
294
- reader.decodeExponentialGolombNumber();
295
- sps_max_num_reorder_pics[i] =
296
- reader.decodeExponentialGolombNumber();
297
- sps_max_latency_increase_plus1[i] =
298
- reader.decodeExponentialGolombNumber();
299
- }
292
+ sps_max_dec_pic_buffering_minus1[i] =
293
+ reader.decodeExponentialGolombNumber();
294
+ sps_max_num_reorder_pics[i] = reader.decodeExponentialGolombNumber();
295
+ sps_max_latency_increase_plus1[i] =
296
+ reader.decodeExponentialGolombNumber();
300
297
  }
301
298
 
302
299
  const log2_min_luma_coding_block_size_minus3 =
@@ -345,7 +342,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
345
342
  reader,
346
343
  i,
347
344
  num_short_term_ref_pic_sets,
348
- shortTermRefPicSets
345
+ shortTermRefPicSets,
349
346
  );
350
347
  }
351
348
 
@@ -359,7 +356,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
359
356
  used_by_curr_pic_lt_sps_flag = [];
360
357
  for (let i = 0; i < num_long_term_ref_pics_sps; i += 1) {
361
358
  lt_ref_pic_poc_lsb_sps[i] = reader.read(
362
- log2_max_pic_order_cnt_lsb_minus4 + 4
359
+ log2_max_pic_order_cnt_lsb_minus4 + 4,
363
360
  );
364
361
  used_by_curr_pic_lt_sps_flag[i] = !!reader.next();
365
362
  }
@@ -370,7 +367,10 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
370
367
  const vui_parameters_present_flag = !!reader.next();
371
368
  let vuiParameters: H265VuiParameters | undefined;
372
369
  if (vui_parameters_present_flag) {
373
- vuiParameters = h265ParseVuiParameters(reader);
370
+ vuiParameters = h265ParseVuiParameters(
371
+ reader,
372
+ sps_max_sub_layers_minus1,
373
+ );
374
374
  }
375
375
 
376
376
  const sps_extension_present_flag = !!reader.next();
@@ -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) {
@@ -897,7 +897,10 @@ export function h265ParseShortTermReferencePictureSet(
897
897
  /**
898
898
  * E.2.1 VUI parameters syntax
899
899
  */
900
- export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
900
+ export function h265ParseVuiParameters(
901
+ reader: NaluSodbBitReader,
902
+ sps_max_sub_layers_minus1: number,
903
+ ) {
901
904
  const aspect_ratio_info_present_flag = !!reader.next();
902
905
  let aspect_ratio_idc: number | undefined;
903
906
  let sar_width: number | undefined;
@@ -966,6 +969,7 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
966
969
  let vui_poc_proportional_to_timing_flag: boolean | undefined;
967
970
  let vui_num_ticks_poc_diff_one_minus1: number | undefined;
968
971
  let vui_hrd_parameters_present_flag: boolean | undefined;
972
+ let vui_hrd_parameters: H265HrdParameters | undefined;
969
973
  if (vui_timing_info_present_flag) {
970
974
  vui_num_units_in_tick = reader.read(32);
971
975
  vui_time_scale = reader.read(32);
@@ -976,7 +980,11 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
976
980
  }
977
981
  vui_hrd_parameters_present_flag = !!reader.next();
978
982
  if (vui_hrd_parameters_present_flag) {
979
- throw new Error("Not implemented");
983
+ vui_hrd_parameters = h265ParseHrdParameters(
984
+ reader,
985
+ true,
986
+ sps_max_sub_layers_minus1,
987
+ );
980
988
  }
981
989
  }
982
990
 
@@ -1037,6 +1045,7 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
1037
1045
  vui_poc_proportional_to_timing_flag,
1038
1046
  vui_num_ticks_poc_diff_one_minus1,
1039
1047
  vui_hrd_parameters_present_flag,
1048
+ vui_hrd_parameters,
1040
1049
 
1041
1050
  bitstream_restriction_flag,
1042
1051
  tiles_fixed_structure_flag,
@@ -1058,7 +1067,7 @@ export type H265VuiParameters = ReturnType<typeof h265ParseVuiParameters>;
1058
1067
  export function h265ParseHrdParameters(
1059
1068
  reader: NaluSodbBitReader,
1060
1069
  commonInfPresentFlag: boolean,
1061
- maxNumSubLayersMinus1: number
1070
+ maxNumSubLayersMinus1: number,
1062
1071
  ) {
1063
1072
  let nal_hrd_parameters_present_flag: boolean | undefined;
1064
1073
  let vcl_hrd_parameters_present_flag: boolean | undefined;
@@ -1125,14 +1134,14 @@ export function h265ParseHrdParameters(
1125
1134
  nalHrdParameters[i] = h265ParseSubLayerHrdParameters(
1126
1135
  reader,
1127
1136
  i,
1128
- getCpbCnt(cpb_cnt_minus1[i]!)
1137
+ getCpbCnt(cpb_cnt_minus1[i]!),
1129
1138
  );
1130
1139
  }
1131
1140
  if (vcl_hrd_parameters_present_flag) {
1132
1141
  vclHrdParameters[i] = h265ParseSubLayerHrdParameters(
1133
1142
  reader,
1134
1143
  i,
1135
- getCpbCnt(cpb_cnt_minus1[i]!)
1144
+ getCpbCnt(cpb_cnt_minus1[i]!),
1136
1145
  );
1137
1146
  }
1138
1147
  }
@@ -1169,7 +1178,7 @@ export type H265HrdParameters = ReturnType<typeof h265ParseHrdParameters>;
1169
1178
  export function h265ParseSubLayerHrdParameters(
1170
1179
  reader: NaluSodbBitReader,
1171
1180
  subLayerId: number,
1172
- CpbCnt: number
1181
+ CpbCnt: number,
1173
1182
  ) {
1174
1183
  const bit_rate_value_minus1: number[] = [];
1175
1184
  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
  }