@yume-chan/scrcpy 0.0.12 → 0.0.13

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 (49) hide show
  1. package/CHANGELOG.json +12 -0
  2. package/CHANGELOG.md +8 -1
  3. package/README.md +1 -0
  4. package/bin/scrcpy-server +0 -0
  5. package/bin/version.d.ts +1 -1
  6. package/bin/version.js +1 -1
  7. package/esm/client.d.ts +2 -2
  8. package/esm/client.d.ts.map +1 -1
  9. package/esm/client.js +4 -4
  10. package/esm/client.js.map +1 -1
  11. package/esm/connection.d.ts +4 -4
  12. package/esm/connection.d.ts.map +1 -1
  13. package/esm/connection.js +22 -7
  14. package/esm/connection.js.map +1 -1
  15. package/esm/decoder/web-codecs/index.d.ts.map +1 -1
  16. package/esm/decoder/web-codecs/index.js +2 -1
  17. package/esm/decoder/web-codecs/index.js.map +1 -1
  18. package/esm/options/1_16/index.d.ts +3 -3
  19. package/esm/options/1_16/index.d.ts.map +1 -1
  20. package/esm/options/1_16/index.js +55 -65
  21. package/esm/options/1_16/index.js.map +1 -1
  22. package/esm/options/1_23.d.ts +12 -0
  23. package/esm/options/1_23.d.ts.map +1 -0
  24. package/esm/options/1_23.js +31 -0
  25. package/esm/options/1_23.js.map +1 -0
  26. package/esm/options/common.d.ts +4 -2
  27. package/esm/options/common.d.ts.map +1 -1
  28. package/esm/options/index.d.ts +1 -0
  29. package/esm/options/index.d.ts.map +1 -1
  30. package/esm/options/index.js +1 -0
  31. package/esm/options/index.js.map +1 -1
  32. package/esm/push-server.d.ts +2 -2
  33. package/esm/push-server.d.ts.map +1 -1
  34. package/esm/push-server.js +4 -6
  35. package/esm/push-server.js.map +1 -1
  36. package/esm/utils.d.ts +0 -2
  37. package/esm/utils.d.ts.map +1 -1
  38. package/esm/utils.js +0 -8
  39. package/esm/utils.js.map +1 -1
  40. package/package.json +6 -6
  41. package/src/client.ts +5 -5
  42. package/src/connection.ts +33 -11
  43. package/src/decoder/web-codecs/index.ts +2 -1
  44. package/src/options/1_16/index.ts +26 -33
  45. package/src/options/1_23.ts +44 -0
  46. package/src/options/common.ts +4 -2
  47. package/src/options/index.ts +1 -0
  48. package/src/push-server.ts +6 -8
  49. package/src/utils.ts +0 -11
package/CHANGELOG.json CHANGED
@@ -1,6 +1,18 @@
1
1
  {
2
2
  "name": "@yume-chan/scrcpy",
3
3
  "entries": [
4
+ {
5
+ "version": "0.0.13",
6
+ "tag": "@yume-chan/scrcpy_v0.0.13",
7
+ "date": "Thu, 28 Apr 2022 01:23:53 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Add support for 1.23"
12
+ }
13
+ ]
14
+ }
15
+ },
4
16
  {
5
17
  "version": "0.0.12",
6
18
  "tag": "@yume-chan/scrcpy_v0.0.12",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @yume-chan/scrcpy
2
2
 
3
- This log was last generated on Sun, 03 Apr 2022 11:18:47 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 28 Apr 2022 01:23:53 GMT and should not be manually modified.
4
+
5
+ ## 0.0.13
6
+ Thu, 28 Apr 2022 01:23:53 GMT
7
+
8
+ ### Updates
9
+
10
+ - Add support for 1.23
4
11
 
5
12
  ## 0.0.12
6
13
  Sun, 03 Apr 2022 11:18:47 GMT
package/README.md CHANGED
@@ -50,6 +50,7 @@ Scrcpy server has no backward compatibility on options input format. Currently t
50
50
  | 1.18~1.20 | `ScrcpyOptions1_18` |
51
51
  | 1.21 | `ScrcpyOptions1_21` |
52
52
  | 1.22 | `ScrcpyOptions1_22` |
53
+ | 1.23 | `ScrcpyOptions1_23` |
53
54
 
54
55
  You must use the correct type according to the server version.
55
56
 
package/bin/scrcpy-server CHANGED
Binary file
package/bin/version.d.ts CHANGED
@@ -1 +1 @@
1
- export default '1.22';
1
+ export default '1.23';
package/bin/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.22';
1
+ export default '1.23';
package/esm/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AdbBufferedStream, type Adb, type AdbSocket, type AdbSubprocessProtocol, type ReadableStream } from '@yume-chan/adb';
1
+ import { type Adb, type AdbSocket, type AdbSubprocessProtocol, type ReadableStream } from '@yume-chan/adb';
2
2
  import { ScrcpyInjectKeyCodeControlMessage, ScrcpyInjectTouchControlMessage, type AndroidKeyEventAction } from './message.js';
3
3
  import type { ScrcpyInjectScrollControlMessage1_22, ScrcpyOptions, VideoStreamPacket } from "./options/index.js";
4
4
  export declare class ScrcpyClient {
@@ -24,7 +24,7 @@ export declare class ScrcpyClient {
24
24
  <TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<string, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
25
25
  };
26
26
  private lastTouchMessage;
27
- constructor(adb: Adb, options: ScrcpyOptions<any>, process: AdbSubprocessProtocol, videoStream: AdbBufferedStream, controlStream: AdbSocket | undefined);
27
+ constructor(adb: Adb, options: ScrcpyOptions<any>, process: AdbSubprocessProtocol, videoStream: AdbSocket, controlStream: AdbSocket | undefined);
28
28
  private checkControlStream;
29
29
  injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, 'type'>): Promise<void>;
30
30
  injectText(text: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA+F,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAoC,MAAM,gBAAgB,CAAC;AAG7P,OAAO,EAAsD,iCAAiC,EAAkC,+BAA+B,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAClN,OAAO,KAAK,EAAE,oCAAoC,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAuBjH,qBAAa,YAAY;WACD,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;WAyBA,KAAK,CACrB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC;IA4C/B,OAAO,CAAC,IAAI,CAAM;IAClB,IAAW,GAAG,QAAwB;IAEtC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAW,MAAM,2BAA2B;IAE5C,IAAW,IAAI,oBAAgC;IAE/C,OAAO,CAAC,YAAY,CAAqB;IACzC,IAAW,WAAW,uBAAgC;IAEtD,OAAO,CAAC,aAAa,CAAqB;IAC1C,IAAW,YAAY,uBAAiC;IAExD,OAAO,CAAC,YAAY,CAAoC;IACxD,IAAW,WAAW,sCAAgC;IAEtD,OAAO,CAAC,oBAAoB,CAAsD;IAElF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8B;IACnE,IAAW,iBAAiB;;;MAA8C;IAE1E,OAAO,CAAC,gBAAgB,CAAK;gBAGzB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAC3B,OAAO,EAAE,qBAAqB,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,SAAS,GAAG,SAAS;IAmDxC,OAAO,CAAC,kBAAkB;IAQb,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC;IAStE,UAAU,CAAC,IAAI,EAAE,MAAM;IASvB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;IA2BnG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,oCAAoC,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;IAgBzG,uBAAuB,CAAC,MAAM,EAAE,qBAAqB;IAYrD,KAAK;CAIrB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkH,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAoC,MAAM,gBAAgB,CAAC;AAG7P,OAAO,EAAsD,iCAAiC,EAAkC,+BAA+B,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAClN,OAAO,KAAK,EAAE,oCAAoC,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAuBjH,qBAAa,YAAY;WACD,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;WAyBA,KAAK,CACrB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC;IA4C/B,OAAO,CAAC,IAAI,CAAM;IAClB,IAAW,GAAG,QAAwB;IAEtC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAW,MAAM,2BAA2B;IAE5C,IAAW,IAAI,oBAAgC;IAE/C,OAAO,CAAC,YAAY,CAAqB;IACzC,IAAW,WAAW,uBAAgC;IAEtD,OAAO,CAAC,aAAa,CAAqB;IAC1C,IAAW,YAAY,uBAAiC;IAExD,OAAO,CAAC,YAAY,CAAoC;IACxD,IAAW,WAAW,sCAAgC;IAEtD,OAAO,CAAC,oBAAoB,CAAsD;IAElF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8B;IACnE,IAAW,iBAAiB;;;MAA8C;IAE1E,OAAO,CAAC,gBAAgB,CAAK;gBAGzB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAC3B,OAAO,EAAE,qBAAqB,EAC9B,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,SAAS,GAAG,SAAS;IAmDxC,OAAO,CAAC,kBAAkB;IAQb,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC;IAStE,UAAU,CAAC,IAAI,EAAE,MAAM;IASvB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;IA2BnG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,oCAAoC,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;IAgBzG,uBAAuB,CAAC,MAAM,EAAE,qBAAqB;IAYrD,KAAK;CAIrB"}
package/esm/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { AdbBufferedStream, AdbNoneSubprocessProtocol, DecodeUtf8Stream, InspectStream, TransformStream, WritableStream } from '@yume-chan/adb';
2
+ import { AdbBufferedStream, AdbSubprocessNoneProtocol, DecodeUtf8Stream, InspectStream, TransformStream, WritableStream } from '@yume-chan/adb';
3
3
  import { EventEmitter } from '@yume-chan/event';
4
4
  import Struct from '@yume-chan/struct';
5
5
  import { AndroidMotionEventAction, ScrcpyControlMessageType, ScrcpyInjectKeyCodeControlMessage, ScrcpyInjectTextControlMessage, ScrcpyInjectTouchControlMessage } from './message.js';
@@ -37,8 +37,8 @@ export class ScrcpyClient {
37
37
  }
38
38
  },
39
39
  }));
40
- this._videoStream = options
41
- .parseVideoStream(videoStream)
40
+ this._videoStream = videoStream.readable
41
+ .pipeThrough(options.createVideoStreamTransformer())
42
42
  .pipeThrough(new InspectStream(packet => {
43
43
  if (packet.type === 'configuration') {
44
44
  this._screenWidth = packet.data.croppedWidth;
@@ -108,7 +108,7 @@ export class ScrcpyClient {
108
108
  ], {
109
109
  // Scrcpy server doesn't split stdout and stderr,
110
110
  // so disable Shell Protocol to simplify processing
111
- protocols: [AdbNoneSubprocessProtocol],
111
+ protocols: [AdbSubprocessNoneProtocol],
112
112
  });
113
113
  const result = yield Promise.race([
114
114
  process.exit,
package/esm/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Adb, AdbBufferedStream, AdbSocket } from "@yume-chan/adb";
1
+ import type { Adb, AdbSocket } from "@yume-chan/adb";
2
2
  import type { Disposable } from "@yume-chan/event";
3
3
  import type { ValueOrPromise } from "@yume-chan/struct";
4
4
  export interface ScrcpyClientConnectionOptions {
@@ -17,21 +17,21 @@ export declare abstract class ScrcpyClientConnection implements Disposable {
17
17
  protected options: ScrcpyClientConnectionOptions;
18
18
  constructor(device: Adb, options: ScrcpyClientConnectionOptions);
19
19
  initialize(): ValueOrPromise<void>;
20
- abstract getStreams(): ValueOrPromise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]>;
20
+ abstract getStreams(): ValueOrPromise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]>;
21
21
  dispose(): void;
22
22
  }
23
23
  export declare class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
24
24
  private connect;
25
25
  private connectAndRetry;
26
26
  private connectVideoStream;
27
- getStreams(): Promise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]>;
27
+ getStreams(): Promise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]>;
28
28
  }
29
29
  export declare class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
30
30
  private streams;
31
31
  private address;
32
32
  initialize(): Promise<void>;
33
33
  private accept;
34
- getStreams(): Promise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]>;
34
+ getStreams(): Promise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]>;
35
35
  dispose(): void;
36
36
  }
37
37
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED,8BAAsB,sBAAuB,YAAW,UAAU;IAC9D,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAEtB,SAAS,CAAC,OAAO,EAAE,6BAA6B,CAAC;gBAE9B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B;IAK/D,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC;aAEzB,UAAU,IAAI,cAAc,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAE5G,OAAO,IAAI,IAAI;CACzB;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;YACvD,OAAO;YAIP,eAAe;YAWf,kBAAkB;IAUnB,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;CAY5G;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;IACrE,OAAO,CAAC,OAAO,CAA0C;IAEzD,OAAO,CAAC,OAAO,CAAU;IAEH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBnC,MAAM;IAIP,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAazF,OAAO;CAM1B"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED,8BAAsB,sBAAuB,YAAW,UAAU;IAC9D,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAEtB,SAAS,CAAC,OAAO,EAAE,6BAA6B,CAAC;gBAE9B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B;IAK/D,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC;aAEzB,UAAU,IAAI,cAAc,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAEpG,OAAO,IAAI,IAAI;CACzB;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;YACvD,OAAO;YAIP,eAAe;YAWf,kBAAkB;IAcnB,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;CAqBpG;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;IACrE,OAAO,CAAC,OAAO,CAA0C;IAEzD,OAAO,CAAC,OAAO,CAAU;IAEH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBnC,MAAM;IAIP,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAsBjF,OAAO;CAM1B"}
package/esm/connection.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { __awaiter } from "tslib";
2
- import { AdbBufferedStream } from "@yume-chan/adb";
3
2
  import { delay } from "./utils.js";
4
3
  export class ScrcpyClientConnection {
5
4
  constructor(device, options) {
@@ -30,11 +29,15 @@ export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
30
29
  }
31
30
  connectVideoStream() {
32
31
  return __awaiter(this, void 0, void 0, function* () {
33
- const socket = yield this.connectAndRetry();
34
- const stream = new AdbBufferedStream(socket);
32
+ const stream = yield this.connectAndRetry();
35
33
  if (this.options.sendDummyByte) {
34
+ const reader = stream.readable.getReader();
35
+ const { done, value } = yield reader.read();
36
36
  // server will write a `0` to signal connection success
37
- yield stream.read(1);
37
+ if (done || value.byteLength !== 1 || value[0] !== 0) {
38
+ throw new Error('Unexpected response from server');
39
+ }
40
+ reader.releaseLock();
38
41
  }
39
42
  return stream;
40
43
  });
@@ -46,9 +49,15 @@ export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
46
49
  if (this.options.control) {
47
50
  controlStream = yield this.connectAndRetry();
48
51
  }
52
+ // Server only writes device meta after control socket is connected (if enabled)
49
53
  if (this.options.sendDeviceMeta) {
54
+ const reader = videoStream.readable.getReader();
55
+ const { done, value } = yield reader.read();
50
56
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
51
- yield videoStream.read(64 + 2 + 2);
57
+ if (done || value.byteLength !== 64 + 2 + 2) {
58
+ throw new Error('Unexpected response from server');
59
+ }
60
+ reader.releaseLock();
52
61
  }
53
62
  return [videoStream, controlStream];
54
63
  });
@@ -81,14 +90,20 @@ export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
81
90
  }
82
91
  getStreams() {
83
92
  return __awaiter(this, void 0, void 0, function* () {
84
- const videoStream = new AdbBufferedStream(yield this.accept());
93
+ const videoStream = yield this.accept();
85
94
  let controlStream;
86
95
  if (this.options.control) {
87
96
  controlStream = yield this.accept();
88
97
  }
98
+ // Server only writes device meta after control socket is connected (if enabled)
89
99
  if (this.options.sendDeviceMeta) {
100
+ const reader = videoStream.readable.getReader();
101
+ const { done, value } = yield reader.read();
90
102
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
91
- yield videoStream.read(64 + 2 + 2);
103
+ if (done || value.byteLength !== 64 + 2 + 2) {
104
+ throw new Error('Unexpected response from server');
105
+ }
106
+ reader.releaseLock();
92
107
  }
93
108
  return [videoStream, controlStream];
94
109
  });
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decoder/web-codecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,aAAa,CAAC;AAMlE,qBAAa,gBAAiB,YAAW,WAAW;IAGhD,SAAgB,UAAU,YAAa;IACvC,SAAgB,QAAQ,YAAa;IAErC,OAAO,CAAC,SAAS,CAAoC;IACrD,IAAW,QAAQ,sCAA6B;IAEhD,OAAO,CAAC,SAAS,CAAoB;IACrC,IAAW,QAAQ,sBAA6B;IAEhD,OAAO,CAAC,cAAc,CAAK;IAC3B,IAAW,aAAa,WAAkC;IAE1D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAe;IAG9B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAa;;IAuCnC,OAAO,CAAC,MAAM,CASZ;IAEF,OAAO,CAAC,SAAS;IAeV,OAAO;CAIjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decoder/web-codecs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,aAAa,CAAC;AAMlE,qBAAa,gBAAiB,YAAW,WAAW;IAGhD,SAAgB,UAAU,YAAa;IACvC,SAAgB,QAAQ,YAAa;IAErC,OAAO,CAAC,SAAS,CAAoC;IACrD,IAAW,QAAQ,sCAA6B;IAEhD,OAAO,CAAC,SAAS,CAAoB;IACrC,IAAW,QAAQ,sBAA6B;IAEhD,OAAO,CAAC,cAAc,CAAK;IAC3B,IAAW,aAAa,WAAkC;IAE1D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAe;IAG9B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAa;;IAwCnC,OAAO,CAAC,MAAM,CASZ;IAEF,OAAO,CAAC,SAAS;IAeV,OAAO;CAIjB"}
@@ -43,7 +43,8 @@ export class WebCodecsDecoder {
43
43
  break;
44
44
  case 'frame':
45
45
  this.decoder.decode(new EncodedVideoChunk({
46
- type: 'key',
46
+ // Treat `undefined` as `key`, otherwise won't decode.
47
+ type: packet.keyframe === false ? 'delta' : 'key',
47
48
  timestamp: 0,
48
49
  data: packet.data,
49
50
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoder/web-codecs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoder/web-codecs/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReadableStream, type Adb, type AdbBufferedStream } from "@yume-chan/adb";
1
+ import { TransformStream, type Adb } from "@yume-chan/adb";
2
2
  import Struct from "@yume-chan/struct";
3
3
  import type { AndroidCodecLevel, AndroidCodecProfile } from "../../codec.js";
4
4
  import { ScrcpyClientConnection } from "../../connection.js";
@@ -79,7 +79,7 @@ export declare const VideoPacket: Struct<{
79
79
  size: number;
80
80
  data: Uint8Array;
81
81
  }, "size", {}, undefined>;
82
- export declare const NoPts: bigint;
82
+ export declare const NO_PTS: bigint;
83
83
  export declare const ScrcpyBackOrScreenOnEvent1_16: Struct<{
84
84
  type: ScrcpyControlMessageType.BackOrScreenOn;
85
85
  }, never, {}, undefined>;
@@ -100,7 +100,7 @@ export declare class ScrcpyOptions1_16<T extends ScrcpyOptionsInit1_16 = ScrcpyO
100
100
  formatServerArguments(): string[];
101
101
  createConnection(adb: Adb): ScrcpyClientConnection;
102
102
  getOutputEncoderNameRegex(): RegExp;
103
- parseVideoStream(stream: AdbBufferedStream): ReadableStream<VideoStreamPacket>;
103
+ createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket>;
104
104
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnEvent1_18): Uint8Array | undefined;
105
105
  serializeInjectScrollControlMessage(message: ScrcpyInjectScrollControlMessage1_22): Uint8Array;
106
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/1_16/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,cAAc,EAAmB,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7H,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAoG,MAAM,qBAAqB,CAAC;AAC/J,OAAO,EAAyB,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGvH,oBAAY,cAAc;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAClB;AAED,oBAAY,uBAAuB;IAC/B,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,eAAe,IAAI;IACnB,gBAAgB,IAAI;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,mBAAmB,CAAC;IAE7B,KAAK,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,iBAAiB;IAC3C,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAErB,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAI5C,aAAa,IAAI,MAAM,GAAG,SAAS;CAY7C;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,oBAAoB,EAAE,uBAAuB,CAAC;IAE9C,aAAa,EAAE,OAAO,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,OAAO,CAAC;IAErB,SAAS,EAAE,OAAO,CAAC;IAEnB,YAAY,EAAE,YAAY,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,WAAW;;;;yBAI4B,CAAC;AAErD,eAAO,MAAM,KAAK,QAAa,CAAC;AAEhC,eAAO,MAAM,6BAA6B;;wBAEoC,CAAC;AAE/E,eAAO,MAAM,oCAAoC;;;;;;;;wBAQxB,CAAC;AAE1B,qBAAa,iBAAiB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACxG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEN,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAcxD,SAAS,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;IAmBzC,SAAS,CAAC,eAAe,IAAI,CAAC;IAmBvB,qBAAqB,IAAI,MAAM,EAAE;IAMjC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB;IAclD,yBAAyB,IAAI,MAAM;IAInC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;IA6F9E,qCAAqC,CACxC,OAAO,EAAE,6BAA6B;IASnC,mCAAmC,CACtC,OAAO,EAAE,oCAAoC,GAC9C,UAAU;CAGhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/1_16/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,eAAe,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAoG,MAAM,qBAAqB,CAAC;AAC/J,OAAO,EAAyB,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGvH,oBAAY,cAAc;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAClB;AAED,oBAAY,uBAAuB;IAC/B,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,eAAe,IAAI;IACnB,gBAAgB,IAAI;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,mBAAmB,CAAC;IAE7B,KAAK,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,iBAAiB;IAC3C,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAErB,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAI5C,aAAa,IAAI,MAAM,GAAG,SAAS;CAY7C;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,oBAAoB,EAAE,uBAAuB,CAAC;IAE9C,aAAa,EAAE,OAAO,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,OAAO,CAAC;IAErB,SAAS,EAAE,OAAO,CAAC;IAEnB,YAAY,EAAE,YAAY,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,WAAW;;;;yBAI4B,CAAC;AAErD,eAAO,MAAM,MAAM,QAA0B,CAAC;AAE9C,eAAO,MAAM,6BAA6B;;wBAEoC,CAAC;AAE/E,eAAO,MAAM,oCAAoC;;;;;;;;wBAQxB,CAAC;AAE1B,qBAAa,iBAAiB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACxG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEN,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAcxD,SAAS,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;IAmBzC,SAAS,CAAC,eAAe,IAAI,CAAC;IAmBvB,qBAAqB,IAAI,MAAM,EAAE;IAMjC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB;IAclD,yBAAyB,IAAI,MAAM;IAInC,4BAA4B,IAAI,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAsF9E,qCAAqC,CACxC,OAAO,EAAE,6BAA6B;IASnC,mCAAmC,CACtC,OAAO,EAAE,oCAAoC,GAC9C,UAAU;CAGhB"}
@@ -1,5 +1,4 @@
1
- import { __awaiter } from "tslib";
2
- import { BufferedStreamEndedError, ReadableStream, TransformStream } from "@yume-chan/adb";
1
+ import { StructDeserializeStream, TransformStream } from "@yume-chan/adb";
3
2
  import Struct, { placeholder } from "@yume-chan/struct";
4
3
  import { ScrcpyClientForwardConnection, ScrcpyClientReverseConnection } from "../../connection.js";
5
4
  import { AndroidKeyEventAction, ScrcpyControlMessageType } from "../../message.js";
@@ -38,10 +37,10 @@ export class CodecOptions {
38
37
  }
39
38
  }
40
39
  export const VideoPacket = new Struct()
41
- .int64('pts')
40
+ .uint64('pts')
42
41
  .uint32('size')
43
42
  .uint8Array('data', { lengthField: 'size' });
44
- export const NoPts = BigInt(-1);
43
+ export const NO_PTS = BigInt(1) << BigInt(63);
45
44
  export const ScrcpyBackOrScreenOnEvent1_16 = new Struct()
46
45
  .uint8('type', placeholder());
47
46
  export const ScrcpyInjectScrollControlMessage1_16 = new Struct()
@@ -122,81 +121,72 @@ export class ScrcpyOptions1_16 {
122
121
  getOutputEncoderNameRegex() {
123
122
  return /\s+scrcpy --encoder-name '(.*?)'/;
124
123
  }
125
- parseVideoStream(stream) {
124
+ createVideoStreamTransformer() {
126
125
  // Optimized path for video frames only
127
126
  if (this.value.sendFrameMeta === false) {
128
- return stream
129
- .release()
130
- .pipeThrough(new TransformStream({
127
+ return new TransformStream({
131
128
  transform(chunk, controller) {
132
129
  controller.enqueue({
133
130
  type: 'frame',
134
131
  data: chunk,
135
132
  });
136
133
  },
137
- }));
134
+ });
138
135
  }
139
136
  let header;
140
- return new ReadableStream({
141
- pull(controller) {
142
- return __awaiter(this, void 0, void 0, function* () {
143
- try {
144
- const { pts, data } = yield VideoPacket.deserialize(stream);
145
- if (pts === NoPts) {
146
- const sequenceParameterSet = parse_sequence_parameter_set(data.slice().buffer);
147
- const { profile_idc: profileIndex, constraint_set: constraintSet, level_idc: levelIndex, pic_width_in_mbs_minus1, pic_height_in_map_units_minus1, frame_mbs_only_flag, frame_crop_left_offset, frame_crop_right_offset, frame_crop_top_offset, frame_crop_bottom_offset, } = sequenceParameterSet;
148
- const encodedWidth = (pic_width_in_mbs_minus1 + 1) * 16;
149
- const encodedHeight = (pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag) * 16;
150
- const cropLeft = frame_crop_left_offset * 2;
151
- const cropRight = frame_crop_right_offset * 2;
152
- const cropTop = frame_crop_top_offset * 2;
153
- const cropBottom = frame_crop_bottom_offset * 2;
154
- const croppedWidth = encodedWidth - cropLeft - cropRight;
155
- const croppedHeight = encodedHeight - cropTop - cropBottom;
156
- header = data;
157
- controller.enqueue({
158
- type: 'configuration',
159
- data: {
160
- profileIndex,
161
- constraintSet,
162
- levelIndex,
163
- encodedWidth,
164
- encodedHeight,
165
- cropLeft,
166
- cropRight,
167
- cropTop,
168
- cropBottom,
169
- croppedWidth,
170
- croppedHeight,
171
- }
172
- });
173
- return;
174
- }
175
- let frameData;
176
- if (header) {
177
- frameData = new Uint8Array(header.byteLength + data.byteLength);
178
- frameData.set(header);
179
- frameData.set(data, header.byteLength);
180
- header = undefined;
181
- }
182
- else {
183
- frameData = data;
184
- }
137
+ let deserializeStream = new StructDeserializeStream(VideoPacket);
138
+ return {
139
+ writable: deserializeStream.writable,
140
+ readable: deserializeStream.readable.pipeThrough(new TransformStream({
141
+ transform(packet, controller) {
142
+ if (packet.pts === NO_PTS) {
143
+ const sequenceParameterSet = parse_sequence_parameter_set(packet.data.slice().buffer);
144
+ const { profile_idc: profileIndex, constraint_set: constraintSet, level_idc: levelIndex, pic_width_in_mbs_minus1, pic_height_in_map_units_minus1, frame_mbs_only_flag, frame_crop_left_offset, frame_crop_right_offset, frame_crop_top_offset, frame_crop_bottom_offset, } = sequenceParameterSet;
145
+ const encodedWidth = (pic_width_in_mbs_minus1 + 1) * 16;
146
+ const encodedHeight = (pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag) * 16;
147
+ const cropLeft = frame_crop_left_offset * 2;
148
+ const cropRight = frame_crop_right_offset * 2;
149
+ const cropTop = frame_crop_top_offset * 2;
150
+ const cropBottom = frame_crop_bottom_offset * 2;
151
+ const croppedWidth = encodedWidth - cropLeft - cropRight;
152
+ const croppedHeight = encodedHeight - cropTop - cropBottom;
153
+ header = packet.data;
185
154
  controller.enqueue({
186
- type: 'frame',
187
- data: frameData,
155
+ type: 'configuration',
156
+ data: {
157
+ profileIndex,
158
+ constraintSet,
159
+ levelIndex,
160
+ encodedWidth,
161
+ encodedHeight,
162
+ cropLeft,
163
+ cropRight,
164
+ cropTop,
165
+ cropBottom,
166
+ croppedWidth,
167
+ croppedHeight,
168
+ }
188
169
  });
170
+ return;
171
+ }
172
+ let frameData;
173
+ if (header) {
174
+ frameData = new Uint8Array(header.byteLength + packet.data.byteLength);
175
+ frameData.set(header);
176
+ frameData.set(packet.data, header.byteLength);
177
+ header = undefined;
189
178
  }
190
- catch (e) {
191
- if (e instanceof BufferedStreamEndedError) {
192
- controller.close();
193
- return;
194
- }
195
- throw e;
179
+ else {
180
+ frameData = packet.data;
196
181
  }
197
- });
198
- }
199
- });
182
+ controller.enqueue({
183
+ type: 'frame',
184
+ pts: packet.pts,
185
+ data: frameData,
186
+ });
187
+ }
188
+ }))
189
+ };
200
190
  }
201
191
  serializeBackOrScreenOnControlMessage(message) {
202
192
  if (message.action === AndroidKeyEventAction.Down) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/1_16/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/1_16/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { TransformStream } from "@yume-chan/adb";
2
+ import { ScrcpyOptions1_22, type ScrcpyOptionsInit1_22 } from './1_22.js';
3
+ import type { VideoStreamPacket } from "./common.js";
4
+ export interface ScrcpyOptionsInit1_23 extends ScrcpyOptionsInit1_22 {
5
+ cleanup: boolean;
6
+ }
7
+ export declare class ScrcpyOptions1_23<T extends ScrcpyOptionsInit1_23 = ScrcpyOptionsInit1_23> extends ScrcpyOptions1_22<T> {
8
+ constructor(init: Partial<ScrcpyOptionsInit1_23>);
9
+ protected getDefaultValue(): T;
10
+ createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket>;
11
+ }
12
+ //# sourceMappingURL=1_23.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_23.d.ts","sourceRoot":"","sources":["../../src/options/1_23.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAChE,OAAO,EAAE,OAAO,CAAC;CACpB;AAID,qBAAa,iBAAiB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;gBAC7F,IAAI,EAAE,OAAO,CAAC,qBAAqB,CAAC;cAIpC,eAAe,IAAI,CAAC;IAOvB,4BAA4B,IAAI,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;CAqBjG"}
@@ -0,0 +1,31 @@
1
+ import { TransformStream } from "@yume-chan/adb";
2
+ import { ScrcpyOptions1_22 } from './1_22.js';
3
+ const KEYFRAME_PTS = BigInt(1) << BigInt(62);
4
+ export class ScrcpyOptions1_23 extends ScrcpyOptions1_22 {
5
+ constructor(init) {
6
+ super(init);
7
+ }
8
+ getDefaultValue() {
9
+ return Object.assign(Object.assign({}, super.getDefaultValue()), { cleanup: true });
10
+ }
11
+ createVideoStreamTransformer() {
12
+ const superStream = super.createVideoStreamTransformer();
13
+ return {
14
+ writable: superStream.writable,
15
+ readable: superStream.readable.pipeThrough(new TransformStream({
16
+ transform(packet, controller) {
17
+ if (packet.type !== 'frame') {
18
+ controller.enqueue(packet);
19
+ return;
20
+ }
21
+ if (packet.pts !== undefined && packet.pts & KEYFRAME_PTS) {
22
+ packet.keyframe = true;
23
+ packet.pts &= ~KEYFRAME_PTS;
24
+ }
25
+ controller.enqueue(packet);
26
+ }
27
+ }))
28
+ };
29
+ }
30
+ }
31
+ //# sourceMappingURL=1_23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_23.js","sourceRoot":"","sources":["../../src/options/1_23.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,WAAW,CAAC;AAO1E,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7C,MAAM,OAAO,iBAA2E,SAAQ,iBAAoB;IAChH,YAAmB,IAAoC;QACnD,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEkB,eAAe;QAC9B,uCACO,KAAK,CAAC,eAAe,EAAE,KAC1B,OAAO,EAAE,IAAI,IACf;IACN,CAAC;IAEe,4BAA4B;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,4BAA4B,EAAE,CAAC;QACzD,OAAO;YACH,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC;gBAC3D,SAAS,CAAC,MAAM,EAAE,UAAU;oBACxB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;wBACzB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC3B,OAAO;qBACV;oBAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,EAAE;wBACvD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACvB,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;qBAC/B;oBAED,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;aACJ,CAAC,CAAC;SACN,CAAC;IACN,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- import type { Adb, AdbBufferedStream, ReadableStream } from "@yume-chan/adb";
1
+ import type { Adb, TransformStream } from "@yume-chan/adb";
2
2
  import type { ScrcpyClientConnection } from "../connection.js";
3
3
  import type { H264Configuration } from "../decoder/index.js";
4
4
  import type { ScrcpyBackOrScreenOnEvent1_18 } from "./1_18.js";
@@ -15,6 +15,8 @@ export interface VideoStreamConfigurationPacket {
15
15
  }
16
16
  export interface VideoStreamFramePacket {
17
17
  type: 'frame';
18
+ keyframe?: boolean | undefined;
19
+ pts?: bigint | undefined;
18
20
  data: Uint8Array;
19
21
  }
20
22
  export declare type VideoStreamPacket = VideoStreamConfigurationPacket | VideoStreamFramePacket;
@@ -23,7 +25,7 @@ export interface ScrcpyOptions<T> {
23
25
  formatServerArguments(): string[];
24
26
  getOutputEncoderNameRegex(): RegExp;
25
27
  createConnection(adb: Adb): ScrcpyClientConnection;
26
- parseVideoStream(stream: AdbBufferedStream): ReadableStream<VideoStreamPacket>;
28
+ createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket>;
27
29
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnEvent1_18): Uint8Array | undefined;
28
30
  serializeInjectScrollControlMessage(message: ScrcpyInjectScrollControlMessage1_22): Uint8Array;
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/options/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,WAAW,CAAC;AAEtE,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAC9B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAUvE;AAED,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,oBAAY,iBAAiB,GAAG,8BAA8B,GAAG,sBAAsB,CAAC;AAExF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAElB,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC,yBAAyB,IAAI,MAAM,CAAC;IAEpC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB,CAAC;IAEnD,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAE/E,qCAAqC,CACjC,OAAO,EAAE,6BAA6B,GACvC,UAAU,GAAG,SAAS,CAAC;IAE1B,mCAAmC,CAC/B,OAAO,EAAE,oCAAoC,GAC9C,UAAU,CAAC;CACjB"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/options/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,WAAW,CAAC;AAEtE,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAC9B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAUvE;AAED,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,oBAAY,iBAAiB,GAAG,8BAA8B,GAAG,sBAAsB,CAAC;AAExF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAElB,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC,yBAAyB,IAAI,MAAM,CAAC;IAEpC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB,CAAC;IAEnD,4BAA4B,IAAI,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAE/E,qCAAqC,CACjC,OAAO,EAAE,6BAA6B,GACvC,UAAU,GAAG,SAAS,CAAC;IAE1B,mCAAmC,CAC/B,OAAO,EAAE,oCAAoC,GAC9C,UAAU,CAAC;CACjB"}
@@ -2,5 +2,6 @@ export * from './1_16/index.js';
2
2
  export * from './1_18.js';
3
3
  export * from './1_21.js';
4
4
  export * from './1_22.js';
5
+ export * from './1_23.js';
5
6
  export * from './common.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -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,aAAa,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,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -2,5 +2,6 @@ export * from './1_16/index.js';
2
2
  export * from './1_18.js';
3
3
  export * from './1_21.js';
4
4
  export * from './1_22.js';
5
+ export * from './1_23.js';
5
6
  export * from './common.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -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,aAAa,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,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -1,6 +1,6 @@
1
- import { Adb, AdbSync, WrapWritableStream, WritableStream } from "@yume-chan/adb";
1
+ import { WrapWritableStream, type Adb } from "@yume-chan/adb";
2
2
  export interface PushServerOptions {
3
3
  path?: string;
4
4
  }
5
- export declare function pushServer(device: Adb, options?: PushServerOptions): WrapWritableStream<Uint8Array, WritableStream<Uint8Array>, AdbSync>;
5
+ export declare function pushServer(device: Adb, options?: PushServerOptions): WrapWritableStream<Uint8Array>;
6
6
  //# sourceMappingURL=push-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push-server.d.ts","sourceRoot":"","sources":["../src/push-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGlF,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CACtB,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,iBAAsB,uEAgBlC"}
1
+ {"version":3,"file":"push-server.d.ts","sourceRoot":"","sources":["../src/push-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,GAAG,EAAgB,MAAM,gBAAgB,CAAC;AAG5E,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CACtB,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,iBAAsB,kCAclC"}
@@ -3,17 +3,15 @@ import { WrapWritableStream } from "@yume-chan/adb";
3
3
  import { DEFAULT_SERVER_PATH } from "./options/index.js";
4
4
  export function pushServer(device, options = {}) {
5
5
  const { path = DEFAULT_SERVER_PATH } = options;
6
+ let sync;
6
7
  return new WrapWritableStream({
7
8
  start() {
8
9
  return __awaiter(this, void 0, void 0, function* () {
9
- const sync = yield device.sync();
10
- return {
11
- writable: sync.write(path),
12
- state: sync,
13
- };
10
+ sync = yield device.sync();
11
+ return sync.write(path);
14
12
  });
15
13
  },
16
- close(sync) {
14
+ close() {
17
15
  return __awaiter(this, void 0, void 0, function* () {
18
16
  yield sync.dispose();
19
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"push-server.js","sourceRoot":"","sources":["../src/push-server.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,kBAAkB,EAAkB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,UAAU,UAAU,CACtB,MAAW,EACX,UAA6B,EAAE;IAE/B,MAAM,EAAE,IAAI,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAE/C,OAAO,IAAI,kBAAkB,CAAkD;QACrE,KAAK;;gBACP,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO;oBACH,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC1B,KAAK,EAAE,IAAI;iBACd,CAAC;YACN,CAAC;SAAA;QACK,KAAK,CAAC,IAAI;;gBACZ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;SAAA;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"push-server.js","sourceRoot":"","sources":["../src/push-server.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,UAAU,UAAU,CACtB,MAAW,EACX,UAA6B,EAAE;IAE/B,MAAM,EAAE,IAAI,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAE/C,IAAI,IAAc,CAAC;IACnB,OAAO,IAAI,kBAAkB,CAAa;QAChC,KAAK;;gBACP,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;SAAA;QACK,KAAK;;gBACP,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;SAAA;KACJ,CAAC,CAAC;AACP,CAAC"}
package/esm/utils.d.ts CHANGED
@@ -1,4 +1,2 @@
1
1
  export declare function delay(time: number): Promise<void>;
2
- export declare function encodeUtf8(input: string): ArrayBuffer;
3
- export declare function decodeUtf8(buffer: ArrayBuffer): string;
4
2
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjD;AAKD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAErD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjD"}
package/esm/utils.js CHANGED
@@ -3,12 +3,4 @@ export function delay(time) {
3
3
  globalThis.setTimeout(resolve, time);
4
4
  });
5
5
  }
6
- const Utf8Encoder = new TextEncoder();
7
- const Utf8Decoder = new TextDecoder();
8
- export function encodeUtf8(input) {
9
- return Utf8Encoder.encode(input).buffer;
10
- }
11
- export function decodeUtf8(buffer) {
12
- return Utf8Decoder.decode(buffer);
13
- }
14
6
  //# sourceMappingURL=utils.js.map
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,IAAY;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACxB,UAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC1C,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,IAAY;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACxB,UAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yume-chan/scrcpy",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "TypeScript implementation of Scrcpy.",
5
5
  "keywords": [
6
6
  "adb",
@@ -29,10 +29,10 @@
29
29
  "main": "esm/index.js",
30
30
  "types": "esm/index.d.ts",
31
31
  "dependencies": {
32
- "@yume-chan/adb": "^0.0.12",
32
+ "@yume-chan/adb": "^0.0.13",
33
33
  "@yume-chan/async": "^2.1.4",
34
- "@yume-chan/event": "^0.0.12",
35
- "@yume-chan/struct": "^0.0.12",
34
+ "@yume-chan/event": "^0.0.13",
35
+ "@yume-chan/struct": "^0.0.13",
36
36
  "tslib": "^2.3.1"
37
37
  },
38
38
  "devDependencies": {
@@ -42,7 +42,7 @@
42
42
  "gh-release-fetch": "^2.0.4",
43
43
  "jest": "^27.5.1",
44
44
  "tinyh264": "^0.0.7",
45
- "typescript": "next",
45
+ "typescript": "4.7.0-beta",
46
46
  "yuv-buffer": "^1.0.0",
47
47
  "yuv-canvas": "^1.2.7"
48
48
  },
@@ -57,5 +57,5 @@
57
57
  "build:watch": "build-ts-package --incremental",
58
58
  "test": "jest --coverage"
59
59
  },
60
- "readme": "# @yume-chan/scrcpy\r\n\r\nTypeScript implementation of [Scrcpy](https://github.com/Genymobile/scrcpy) client.\r\n\r\nIt uses the official Scrcpy server releases.\r\n\r\n**WARNING:** The public API is UNSTABLE. If you have any questions, please open an issue.\r\n\r\n## Download Server Binary\r\n\r\nThis package has a script `fetch-scrcpy-server` to help you download the official server binary.\r\n\r\nThe server binary is subject to [Apache License 2.0](https://github.com/Genymobile/scrcpy/blob/master/LICENSE).\r\n\r\nUsage:\r\n\r\n```\r\n$ npx fetch-scrcpy-server <version>\r\n```\r\n\r\nFor example:\r\n\r\n```\r\n$ npx fetch-scrcpy-server 1.21\r\n```\r\n\r\nYou can also add it to the `postinstall` script of your `package.json` so it will run automatically when you do `npm install`:\r\n\r\n```json\r\n\"scripts\": {\r\n \"postinstall\": \"fetch-scrcpy-server 1.21\",\r\n},\r\n```\r\n\r\nIt will download the binary to `bin/scrcpy` and write the version string to `bin/version.js`. You can import the version string with\r\n\r\n```js\r\nimport SCRCPY_SERVER_VERSION from '@yume-chan/scrcpy/bin/version';\r\n```\r\n\r\nAnd import the server binary with [file-loader](https://v4.webpack.js.org/loaders/file-loader/) (Webpack 4) or [Asset Modules](https://webpack.js.org/guides/asset-modules/) (Webpack 5).\r\n\r\n## Option versions\r\n\r\nScrcpy server has no backward compatibility on options input format. Currently the following versions are supported:\r\n\r\n| versions | type |\r\n| --------- | ------------------- |\r\n| 1.16~1.17 | `ScrcpyOptions1_16` |\r\n| 1.18~1.20 | `ScrcpyOptions1_18` |\r\n| 1.21 | `ScrcpyOptions1_21` |\r\n| 1.22 | `ScrcpyOptions1_22` |\r\n\r\nYou must use the correct type according to the server version.\r\n\r\n## Video stream\r\n\r\nThe data from `onVideoData` event is a raw H.264 stream. You can process it as you want, or use the following built-in decoders to render it in browsers:\r\n\r\n* WebCodecs decoder: Uses the [WebCodecs API](https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_API). The video stream will be decoded into `VideoFrame`s and drawn on a 2D canvas.\r\n* TinyH264 decoder: TinyH264 compiles the old Android H.264 software decoder (now deprecated and removed) into WebAssembly, and wrap it in Web Worker to prevent blocking the main thread. The video stream will be decoded into YUV frames, then converted to RGB using a WebGL shader.\r\n\r\n| Name | Chrome | Firefox | Safari | Performance | Supported H.264 profile/level |\r\n| ----------------- | ------ | ------- | ------ | ------------------------------- | ----------------------------- |\r\n| WebCodecs decoder | 94 | No | No | High with Hardware acceleration | High level 5 |\r\n| TinyH264 decoder | 57 | 52 | 11 | Poor | Baseline level 4 |\r\n\r\nTinyH264 decoder needs some extra setup:\r\n\r\n1. `tinyh264`, `yuv-buffer` and `yuv-canvas` packages are peer dependencies. You must install them separately.\r\n2. The bundler you use must support the `new Worker(new URL('./worker.js', import.meta.url))` syntax. It's known to work with Webpack 5.\r\n\r\nExample usage:\r\n\r\n```ts\r\nconst client = new ScrcpyClient(adb);\r\nconst decoder = new WebCodecsDecoder(); // Or `new TinyH264Decoder()`\r\nclient.onSizeChanged(size => decoder.setSize(size));\r\nclient.onVideoData(data => decoder.feed(data));\r\nclient.start(serverPath, serverVersion, new ScrcpyOptionsX_XX({\r\n ...options,\r\n codecOptions: new CodecOptions({\r\n profile: decoder.maxProfile,\r\n level: decoder.maxLevel,\r\n }),\r\n}));\r\ndocument.body.appendChild(decoder.element);\r\n```\r\n"
60
+ "readme": "# @yume-chan/scrcpy\r\n\r\nTypeScript implementation of [Scrcpy](https://github.com/Genymobile/scrcpy) client.\r\n\r\nIt uses the official Scrcpy server releases.\r\n\r\n**WARNING:** The public API is UNSTABLE. If you have any questions, please open an issue.\r\n\r\n## Download Server Binary\r\n\r\nThis package has a script `fetch-scrcpy-server` to help you download the official server binary.\r\n\r\nThe server binary is subject to [Apache License 2.0](https://github.com/Genymobile/scrcpy/blob/master/LICENSE).\r\n\r\nUsage:\r\n\r\n```\r\n$ npx fetch-scrcpy-server <version>\r\n```\r\n\r\nFor example:\r\n\r\n```\r\n$ npx fetch-scrcpy-server 1.21\r\n```\r\n\r\nYou can also add it to the `postinstall` script of your `package.json` so it will run automatically when you do `npm install`:\r\n\r\n```json\r\n\"scripts\": {\r\n \"postinstall\": \"fetch-scrcpy-server 1.21\",\r\n},\r\n```\r\n\r\nIt will download the binary to `bin/scrcpy` and write the version string to `bin/version.js`. You can import the version string with\r\n\r\n```js\r\nimport SCRCPY_SERVER_VERSION from '@yume-chan/scrcpy/bin/version';\r\n```\r\n\r\nAnd import the server binary with [file-loader](https://v4.webpack.js.org/loaders/file-loader/) (Webpack 4) or [Asset Modules](https://webpack.js.org/guides/asset-modules/) (Webpack 5).\r\n\r\n## Option versions\r\n\r\nScrcpy server has no backward compatibility on options input format. Currently the following versions are supported:\r\n\r\n| versions | type |\r\n| --------- | ------------------- |\r\n| 1.16~1.17 | `ScrcpyOptions1_16` |\r\n| 1.18~1.20 | `ScrcpyOptions1_18` |\r\n| 1.21 | `ScrcpyOptions1_21` |\r\n| 1.22 | `ScrcpyOptions1_22` |\r\n| 1.23 | `ScrcpyOptions1_23` |\r\n\r\nYou must use the correct type according to the server version.\r\n\r\n## Video stream\r\n\r\nThe data from `onVideoData` event is a raw H.264 stream. You can process it as you want, or use the following built-in decoders to render it in browsers:\r\n\r\n* WebCodecs decoder: Uses the [WebCodecs API](https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_API). The video stream will be decoded into `VideoFrame`s and drawn on a 2D canvas.\r\n* TinyH264 decoder: TinyH264 compiles the old Android H.264 software decoder (now deprecated and removed) into WebAssembly, and wrap it in Web Worker to prevent blocking the main thread. The video stream will be decoded into YUV frames, then converted to RGB using a WebGL shader.\r\n\r\n| Name | Chrome | Firefox | Safari | Performance | Supported H.264 profile/level |\r\n| ----------------- | ------ | ------- | ------ | ------------------------------- | ----------------------------- |\r\n| WebCodecs decoder | 94 | No | No | High with Hardware acceleration | High level 5 |\r\n| TinyH264 decoder | 57 | 52 | 11 | Poor | Baseline level 4 |\r\n\r\nTinyH264 decoder needs some extra setup:\r\n\r\n1. `tinyh264`, `yuv-buffer` and `yuv-canvas` packages are peer dependencies. You must install them separately.\r\n2. The bundler you use must support the `new Worker(new URL('./worker.js', import.meta.url))` syntax. It's known to work with Webpack 5.\r\n\r\nExample usage:\r\n\r\n```ts\r\nconst client = new ScrcpyClient(adb);\r\nconst decoder = new WebCodecsDecoder(); // Or `new TinyH264Decoder()`\r\nclient.onSizeChanged(size => decoder.setSize(size));\r\nclient.onVideoData(data => decoder.feed(data));\r\nclient.start(serverPath, serverVersion, new ScrcpyOptionsX_XX({\r\n ...options,\r\n codecOptions: new CodecOptions({\r\n profile: decoder.maxProfile,\r\n level: decoder.maxLevel,\r\n }),\r\n}));\r\ndocument.body.appendChild(decoder.element);\r\n```\r\n"
61
61
  }
package/src/client.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AdbBufferedStream, AdbNoneSubprocessProtocol, DecodeUtf8Stream, InspectStream, TransformStream, WritableStream, type Adb, type AdbSocket, type AdbSubprocessProtocol, type ReadableStream, type WritableStreamDefaultWriter } from '@yume-chan/adb';
1
+ import { AdbBufferedStream, AdbSubprocessNoneProtocol, DecodeUtf8Stream, InspectStream, TransformStream, WritableStream, type Adb, type AdbSocket, type AdbSubprocessProtocol, type ReadableStream, type WritableStreamDefaultWriter } from '@yume-chan/adb';
2
2
  import { EventEmitter } from '@yume-chan/event';
3
3
  import Struct from '@yume-chan/struct';
4
4
  import { AndroidMotionEventAction, ScrcpyControlMessageType, ScrcpyInjectKeyCodeControlMessage, ScrcpyInjectTextControlMessage, ScrcpyInjectTouchControlMessage, type AndroidKeyEventAction } from './message.js';
@@ -81,7 +81,7 @@ export class ScrcpyClient {
81
81
  {
82
82
  // Scrcpy server doesn't split stdout and stderr,
83
83
  // so disable Shell Protocol to simplify processing
84
- protocols: [AdbNoneSubprocessProtocol],
84
+ protocols: [AdbSubprocessNoneProtocol],
85
85
  }
86
86
  );
87
87
 
@@ -135,7 +135,7 @@ export class ScrcpyClient {
135
135
  adb: Adb,
136
136
  options: ScrcpyOptions<any>,
137
137
  process: AdbSubprocessProtocol,
138
- videoStream: AdbBufferedStream,
138
+ videoStream: AdbSocket,
139
139
  controlStream: AdbSocket | undefined,
140
140
  ) {
141
141
  this._adb = adb;
@@ -155,8 +155,8 @@ export class ScrcpyClient {
155
155
  },
156
156
  }));
157
157
 
158
- this._videoStream = options
159
- .parseVideoStream(videoStream)
158
+ this._videoStream = videoStream.readable
159
+ .pipeThrough(options.createVideoStreamTransformer())
160
160
  .pipeThrough(new InspectStream(packet => {
161
161
  if (packet.type === 'configuration') {
162
162
  this._screenWidth = packet.data.croppedWidth;
package/src/connection.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Adb, AdbBufferedStream, AdbSocket } from "@yume-chan/adb";
1
+ import type { Adb, AdbSocket } from "@yume-chan/adb";
2
2
  import type { Disposable } from "@yume-chan/event";
3
3
  import type { ValueOrPromise } from "@yume-chan/struct";
4
4
  import { delay } from "./utils.js";
@@ -29,7 +29,7 @@ export abstract class ScrcpyClientConnection implements Disposable {
29
29
 
30
30
  public initialize(): ValueOrPromise<void> { }
31
31
 
32
- public abstract getStreams(): ValueOrPromise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]>;
32
+ public abstract getStreams(): ValueOrPromise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]>;
33
33
 
34
34
  public dispose(): void { }
35
35
  }
@@ -50,26 +50,39 @@ export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
50
50
  throw new Error(`Can't connect to server after 100 retries`);
51
51
  }
52
52
 
53
- private async connectVideoStream(): Promise<AdbBufferedStream> {
54
- const socket = await this.connectAndRetry();
55
- const stream = new AdbBufferedStream(socket);
53
+ private async connectVideoStream(): Promise<AdbSocket> {
54
+ const stream = await this.connectAndRetry();
56
55
  if (this.options.sendDummyByte) {
56
+ const reader = stream.readable.getReader();
57
+ const { done, value } = await reader.read();
57
58
  // server will write a `0` to signal connection success
58
- await stream.read(1);
59
+ if (done || value.byteLength !== 1 || value[0] !== 0) {
60
+ throw new Error('Unexpected response from server');
61
+ }
62
+ reader.releaseLock();
59
63
  }
60
64
  return stream;
61
65
  }
62
66
 
63
- public async getStreams(): Promise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]> {
67
+ public async getStreams(): Promise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]> {
64
68
  const videoStream = await this.connectVideoStream();
69
+
65
70
  let controlStream: AdbSocket | undefined;
66
71
  if (this.options.control) {
67
72
  controlStream = await this.connectAndRetry();
68
73
  }
74
+
75
+ // Server only writes device meta after control socket is connected (if enabled)
69
76
  if (this.options.sendDeviceMeta) {
77
+ const reader = videoStream.readable.getReader();
78
+ const { done, value } = await reader.read();
70
79
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
71
- await videoStream.read(64 + 2 + 2);
80
+ if (done || value.byteLength !== 64 + 2 + 2) {
81
+ throw new Error('Unexpected response from server');
82
+ }
83
+ reader.releaseLock();
72
84
  }
85
+
73
86
  return [videoStream, controlStream];
74
87
  }
75
88
  }
@@ -101,16 +114,25 @@ export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
101
114
  return (await this.streams.read()).value!;
102
115
  }
103
116
 
104
- public async getStreams(): Promise<[videoSteam: AdbBufferedStream, controlStream: AdbSocket | undefined]> {
105
- const videoStream = new AdbBufferedStream(await this.accept());
117
+ public async getStreams(): Promise<[videoSteam: AdbSocket, controlStream: AdbSocket | undefined]> {
118
+ const videoStream = await this.accept();
119
+
106
120
  let controlStream: AdbSocket | undefined;
107
121
  if (this.options.control) {
108
122
  controlStream = await this.accept();
109
123
  }
124
+
125
+ // Server only writes device meta after control socket is connected (if enabled)
110
126
  if (this.options.sendDeviceMeta) {
127
+ const reader = videoStream.readable.getReader();
128
+ const { done, value } = await reader.read();
111
129
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
112
- await videoStream.read(64 + 2 + 2);
130
+ if (done || value.byteLength !== 64 + 2 + 2) {
131
+ throw new Error('Unexpected response from server');
132
+ }
133
+ reader.releaseLock();
113
134
  }
135
+
114
136
  return [videoStream, controlStream];
115
137
  }
116
138
 
@@ -55,7 +55,8 @@ export class WebCodecsDecoder implements H264Decoder {
55
55
  break;
56
56
  case 'frame':
57
57
  this.decoder.decode(new EncodedVideoChunk({
58
- type: 'key',
58
+ // Treat `undefined` as `key`, otherwise won't decode.
59
+ type: packet.keyframe === false ? 'delta' : 'key',
59
60
  timestamp: 0,
60
61
  data: packet.data,
61
62
  }));
@@ -1,4 +1,4 @@
1
- import { BufferedStreamEndedError, ReadableStream, TransformStream, type Adb, type AdbBufferedStream } from "@yume-chan/adb";
1
+ import { StructDeserializeStream, TransformStream, type Adb } from "@yume-chan/adb";
2
2
  import Struct, { placeholder } from "@yume-chan/struct";
3
3
  import type { AndroidCodecLevel, AndroidCodecProfile } from "../../codec.js";
4
4
  import { ScrcpyClientConnection, ScrcpyClientForwardConnection, ScrcpyClientReverseConnection, type ScrcpyClientConnectionOptions } from "../../connection.js";
@@ -112,11 +112,11 @@ export interface ScrcpyOptionsInit1_16 {
112
112
 
113
113
  export const VideoPacket =
114
114
  new Struct()
115
- .int64('pts')
115
+ .uint64('pts')
116
116
  .uint32('size')
117
117
  .uint8Array('data', { lengthField: 'size' });
118
118
 
119
- export const NoPts = BigInt(-1);
119
+ export const NO_PTS = BigInt(1) << BigInt(63);
120
120
 
121
121
  export const ScrcpyBackOrScreenOnEvent1_16 =
122
122
  new Struct()
@@ -211,29 +211,28 @@ export class ScrcpyOptions1_16<T extends ScrcpyOptionsInit1_16 = ScrcpyOptionsIn
211
211
  return /\s+scrcpy --encoder-name '(.*?)'/;
212
212
  }
213
213
 
214
- public parseVideoStream(stream: AdbBufferedStream): ReadableStream<VideoStreamPacket> {
214
+ public createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket> {
215
215
  // Optimized path for video frames only
216
216
  if (this.value.sendFrameMeta === false) {
217
- return stream
218
- .release()
219
- .pipeThrough(new TransformStream<Uint8Array, VideoStreamPacket>({
220
- transform(chunk, controller) {
221
- controller.enqueue({
222
- type: 'frame',
223
- data: chunk,
224
- });
225
- },
226
- }));
217
+ return new TransformStream({
218
+ transform(chunk, controller) {
219
+ controller.enqueue({
220
+ type: 'frame',
221
+ data: chunk,
222
+ });
223
+ },
224
+ });
227
225
  }
228
226
 
229
227
  let header: Uint8Array | undefined;
230
228
 
231
- return new ReadableStream<VideoStreamPacket>({
232
- async pull(controller) {
233
- try {
234
- const { pts, data } = await VideoPacket.deserialize(stream);
235
- if (pts === NoPts) {
236
- const sequenceParameterSet = parse_sequence_parameter_set(data.slice().buffer);
229
+ let deserializeStream = new StructDeserializeStream(VideoPacket);
230
+ return {
231
+ writable: deserializeStream.writable,
232
+ readable: deserializeStream.readable.pipeThrough(new TransformStream({
233
+ transform(packet, controller) {
234
+ if (packet.pts === NO_PTS) {
235
+ const sequenceParameterSet = parse_sequence_parameter_set(packet.data.slice().buffer);
237
236
 
238
237
  const {
239
238
  profile_idc: profileIndex,
@@ -258,7 +257,7 @@ export class ScrcpyOptions1_16<T extends ScrcpyOptionsInit1_16 = ScrcpyOptionsIn
258
257
  const croppedWidth = encodedWidth - cropLeft - cropRight;
259
258
  const croppedHeight = encodedHeight - cropTop - cropBottom;
260
259
 
261
- header = data;
260
+ header = packet.data;
262
261
  controller.enqueue({
263
262
  type: 'configuration',
264
263
  data: {
@@ -280,28 +279,22 @@ export class ScrcpyOptions1_16<T extends ScrcpyOptionsInit1_16 = ScrcpyOptionsIn
280
279
 
281
280
  let frameData: Uint8Array;
282
281
  if (header) {
283
- frameData = new Uint8Array(header.byteLength + data.byteLength);
282
+ frameData = new Uint8Array(header.byteLength + packet.data.byteLength);
284
283
  frameData.set(header);
285
- frameData.set(data!, header.byteLength);
284
+ frameData.set(packet.data, header.byteLength);
286
285
  header = undefined;
287
286
  } else {
288
- frameData = data;
287
+ frameData = packet.data;
289
288
  }
290
289
 
291
290
  controller.enqueue({
292
291
  type: 'frame',
292
+ pts: packet.pts,
293
293
  data: frameData,
294
294
  });
295
- } catch (e) {
296
- if (e instanceof BufferedStreamEndedError) {
297
- controller.close();
298
- return;
299
- }
300
-
301
- throw e;
302
295
  }
303
- }
304
- });
296
+ }))
297
+ };
305
298
  }
306
299
 
307
300
  public serializeBackOrScreenOnControlMessage(
@@ -0,0 +1,44 @@
1
+ import { TransformStream } from "@yume-chan/adb";
2
+ import { ScrcpyOptions1_22, type ScrcpyOptionsInit1_22 } from './1_22.js';
3
+ import type { VideoStreamPacket } from "./common.js";
4
+
5
+ export interface ScrcpyOptionsInit1_23 extends ScrcpyOptionsInit1_22 {
6
+ cleanup: boolean;
7
+ }
8
+
9
+ const KEYFRAME_PTS = BigInt(1) << BigInt(62);
10
+
11
+ export class ScrcpyOptions1_23<T extends ScrcpyOptionsInit1_23 = ScrcpyOptionsInit1_23> extends ScrcpyOptions1_22<T> {
12
+ public constructor(init: Partial<ScrcpyOptionsInit1_23>) {
13
+ super(init);
14
+ }
15
+
16
+ protected override getDefaultValue(): T {
17
+ return {
18
+ ...super.getDefaultValue(),
19
+ cleanup: true,
20
+ };
21
+ }
22
+
23
+ public override createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket> {
24
+ const superStream = super.createVideoStreamTransformer();
25
+ return {
26
+ writable: superStream.writable,
27
+ readable: superStream.readable.pipeThrough(new TransformStream({
28
+ transform(packet, controller): void {
29
+ if (packet.type !== 'frame') {
30
+ controller.enqueue(packet);
31
+ return;
32
+ }
33
+
34
+ if (packet.pts !== undefined && packet.pts & KEYFRAME_PTS) {
35
+ packet.keyframe = true;
36
+ packet.pts &= ~KEYFRAME_PTS;
37
+ }
38
+
39
+ controller.enqueue(packet);
40
+ }
41
+ }))
42
+ };
43
+ }
44
+ }
@@ -1,4 +1,4 @@
1
- import type { Adb, AdbBufferedStream, ReadableStream } from "@yume-chan/adb";
1
+ import type { Adb, TransformStream } from "@yume-chan/adb";
2
2
  import type { ScrcpyClientConnection } from "../connection.js";
3
3
  import type { H264Configuration } from "../decoder/index.js";
4
4
  import type { ScrcpyBackOrScreenOnEvent1_18 } from "./1_18.js";
@@ -35,6 +35,8 @@ export interface VideoStreamConfigurationPacket {
35
35
 
36
36
  export interface VideoStreamFramePacket {
37
37
  type: 'frame';
38
+ keyframe?: boolean | undefined;
39
+ pts?: bigint | undefined;
38
40
  data: Uint8Array;
39
41
  }
40
42
 
@@ -49,7 +51,7 @@ export interface ScrcpyOptions<T> {
49
51
 
50
52
  createConnection(adb: Adb): ScrcpyClientConnection;
51
53
 
52
- parseVideoStream(stream: AdbBufferedStream): ReadableStream<VideoStreamPacket>;
54
+ createVideoStreamTransformer(): TransformStream<Uint8Array, VideoStreamPacket>;
53
55
 
54
56
  serializeBackOrScreenOnControlMessage(
55
57
  message: ScrcpyBackOrScreenOnEvent1_18,
@@ -2,4 +2,5 @@ export * from './1_16/index.js';
2
2
  export * from './1_18.js';
3
3
  export * from './1_21.js';
4
4
  export * from './1_22.js';
5
+ export * from './1_23.js';
5
6
  export * from './common.js';
@@ -1,4 +1,4 @@
1
- import { Adb, AdbSync, WrapWritableStream, WritableStream } from "@yume-chan/adb";
1
+ import { WrapWritableStream, type Adb, type AdbSync } from "@yume-chan/adb";
2
2
  import { DEFAULT_SERVER_PATH } from "./options/index.js";
3
3
 
4
4
  export interface PushServerOptions {
@@ -11,15 +11,13 @@ export function pushServer(
11
11
  ) {
12
12
  const { path = DEFAULT_SERVER_PATH } = options;
13
13
 
14
- return new WrapWritableStream<Uint8Array, WritableStream<Uint8Array>, AdbSync>({
14
+ let sync!: AdbSync;
15
+ return new WrapWritableStream<Uint8Array>({
15
16
  async start() {
16
- const sync = await device.sync();
17
- return {
18
- writable: sync.write(path),
19
- state: sync,
20
- };
17
+ sync = await device.sync();
18
+ return sync.write(path);
21
19
  },
22
- async close(sync) {
20
+ async close() {
23
21
  await sync.dispose();
24
22
  },
25
23
  });
package/src/utils.ts CHANGED
@@ -3,14 +3,3 @@ export function delay(time: number): Promise<void> {
3
3
  (globalThis as any).setTimeout(resolve, time);
4
4
  });
5
5
  }
6
-
7
- const Utf8Encoder = new TextEncoder();
8
- const Utf8Decoder = new TextDecoder();
9
-
10
- export function encodeUtf8(input: string): ArrayBuffer {
11
- return Utf8Encoder.encode(input).buffer;
12
- }
13
-
14
- export function decodeUtf8(buffer: ArrayBuffer): string {
15
- return Utf8Decoder.decode(buffer);
16
- }