@yume-chan/scrcpy 0.0.14 → 0.0.15

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 (51) hide show
  1. package/CHANGELOG.json +15 -0
  2. package/CHANGELOG.md +9 -1
  3. package/esm/client.d.ts +14 -2
  4. package/esm/client.d.ts.map +1 -1
  5. package/esm/client.js +275 -143
  6. package/esm/client.js.map +1 -1
  7. package/esm/connection.js +74 -85
  8. package/esm/connection.js.map +1 -1
  9. package/esm/decoder/tinyh264/index.js +48 -48
  10. package/esm/decoder/tinyh264/index.js.map +1 -1
  11. package/esm/decoder/tinyh264/wrapper.js +3 -2
  12. package/esm/decoder/tinyh264/wrapper.js.map +1 -1
  13. package/esm/decoder/web-codecs/index.js +26 -21
  14. package/esm/decoder/web-codecs/index.js.map +1 -1
  15. package/esm/message.d.ts +12 -8
  16. package/esm/message.d.ts.map +1 -1
  17. package/esm/message.js +13 -8
  18. package/esm/message.js.map +1 -1
  19. package/esm/options/1_16/index.d.ts +5 -4
  20. package/esm/options/1_16/index.d.ts.map +1 -1
  21. package/esm/options/1_16/index.js +33 -17
  22. package/esm/options/1_16/index.js.map +1 -1
  23. package/esm/options/1_16/sps.js +3 -2
  24. package/esm/options/1_16/sps.js.map +1 -1
  25. package/esm/options/1_18.d.ts +3 -2
  26. package/esm/options/1_18.d.ts.map +1 -1
  27. package/esm/options/1_18.js +24 -1
  28. package/esm/options/1_18.js.map +1 -1
  29. package/esm/options/1_21.js +4 -1
  30. package/esm/options/1_21.js.map +1 -1
  31. package/esm/options/1_22.d.ts +3 -3
  32. package/esm/options/1_22.d.ts.map +1 -1
  33. package/esm/options/1_22.js +9 -6
  34. package/esm/options/1_22.js.map +1 -1
  35. package/esm/options/1_23.js +4 -1
  36. package/esm/options/1_23.js.map +1 -1
  37. package/esm/options/1_24.js +4 -1
  38. package/esm/options/1_24.js.map +1 -1
  39. package/esm/options/common.d.ts +2 -0
  40. package/esm/options/common.d.ts.map +1 -1
  41. package/esm/options/common.js.map +1 -1
  42. package/esm/push-server.js +5 -10
  43. package/esm/push-server.js.map +1 -1
  44. package/package.json +4 -4
  45. package/src/client.ts +181 -21
  46. package/src/connection.ts +1 -1
  47. package/src/message.ts +10 -3
  48. package/src/options/1_16/index.ts +25 -10
  49. package/src/options/1_18.ts +21 -1
  50. package/src/options/1_22.ts +6 -8
  51. package/src/options/common.ts +3 -0
package/esm/connection.js CHANGED
@@ -1,6 +1,7 @@
1
- import { __awaiter } from "tslib";
2
1
  import { delay } from "./utils.js";
3
2
  export class ScrcpyClientConnection {
3
+ device;
4
+ options;
4
5
  constructor(device, options) {
5
6
  this.device = device;
6
7
  this.options = options;
@@ -9,103 +10,91 @@ export class ScrcpyClientConnection {
9
10
  dispose() { }
10
11
  }
11
12
  export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
12
- connect() {
13
- return __awaiter(this, void 0, void 0, function* () {
14
- return yield this.device.createSocket('localabstract:scrcpy');
15
- });
13
+ async connect() {
14
+ return await this.device.createSocket('localabstract:scrcpy');
16
15
  }
17
- connectAndRetry() {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- for (let i = 0; i < 100; i++) {
20
- try {
21
- return yield this.connect();
22
- }
23
- catch (e) {
24
- yield delay(100);
25
- }
16
+ async connectAndRetry() {
17
+ for (let i = 0; i < 100; i++) {
18
+ try {
19
+ return await this.connect();
26
20
  }
27
- throw new Error(`Can't connect to server after 100 retries`);
28
- });
29
- }
30
- connectVideoStream() {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- const stream = yield this.connectAndRetry();
33
- if (this.options.sendDummyByte) {
34
- const reader = stream.readable.getReader();
35
- const { done, value } = yield reader.read();
36
- // server will write a `0` to signal connection success
37
- if (done || value.byteLength !== 1 || value[0] !== 0) {
38
- throw new Error('Unexpected response from server');
39
- }
40
- reader.releaseLock();
21
+ catch (e) {
22
+ await delay(100);
41
23
  }
42
- return stream;
43
- });
24
+ }
25
+ throw new Error(`Can't connect to server after 100 retries`);
44
26
  }
45
- getStreams() {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const videoStream = yield this.connectVideoStream();
48
- let controlStream;
49
- if (this.options.control) {
50
- controlStream = yield this.connectAndRetry();
27
+ async connectVideoStream() {
28
+ const stream = await this.connectAndRetry();
29
+ if (this.options.sendDummyByte) {
30
+ const reader = stream.readable.getReader();
31
+ const { done, value } = await reader.read();
32
+ // server will write a `0` to signal connection success
33
+ if (done || value.byteLength !== 1 || value[0] !== 0) {
34
+ throw new Error('Unexpected response from server');
51
35
  }
52
- // Server only writes device meta after control socket is connected (if enabled)
53
- if (this.options.sendDeviceMeta) {
54
- const reader = videoStream.readable.getReader();
55
- const { done, value } = yield reader.read();
56
- // 64 bytes device name + 2 bytes video width + 2 bytes video height
57
- if (done || value.byteLength !== 64 + 2 + 2) {
58
- throw new Error('Unexpected response from server');
59
- }
60
- reader.releaseLock();
36
+ reader.releaseLock();
37
+ }
38
+ return stream;
39
+ }
40
+ async getStreams() {
41
+ const videoStream = await this.connectVideoStream();
42
+ let controlStream;
43
+ if (this.options.control) {
44
+ controlStream = await this.connectAndRetry();
45
+ }
46
+ // Server only writes device meta after control socket is connected (if enabled)
47
+ if (this.options.sendDeviceMeta) {
48
+ const reader = videoStream.readable.getReader();
49
+ const { done, value } = await reader.read();
50
+ // 64 bytes device name + 2 bytes video width + 2 bytes video height
51
+ if (done || value.byteLength !== 64 + 2 + 2) {
52
+ throw new Error('Unexpected response from server');
61
53
  }
62
- return [videoStream, controlStream];
63
- });
54
+ reader.releaseLock();
55
+ }
56
+ return [videoStream, controlStream];
64
57
  }
65
58
  }
66
59
  export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
67
- initialize() {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- try {
70
- // try to unbind first
71
- yield this.device.reverse.remove('localabstract:scrcpy');
72
- }
73
- catch (_a) {
74
- // ignore error
75
- }
76
- const queue = new TransformStream();
77
- this.streams = queue.readable.getReader();
78
- const writer = queue.writable.getWriter();
79
- this.address = yield this.device.reverse.add('localabstract:scrcpy', 27183, socket => {
80
- writer.write(socket);
81
- return true;
82
- });
60
+ streams;
61
+ address;
62
+ async initialize() {
63
+ try {
64
+ // try to unbind first
65
+ await this.device.reverse.remove('localabstract:scrcpy');
66
+ }
67
+ catch {
68
+ // ignore error
69
+ }
70
+ const queue = new TransformStream();
71
+ this.streams = queue.readable.getReader();
72
+ const writer = queue.writable.getWriter();
73
+ this.address = await this.device.reverse.add('localabstract:scrcpy', 'tcp:27183', socket => {
74
+ writer.write(socket);
75
+ return true;
83
76
  });
84
77
  }
85
- accept() {
86
- return __awaiter(this, void 0, void 0, function* () {
87
- return (yield this.streams.read()).value;
88
- });
78
+ async accept() {
79
+ return (await this.streams.read()).value;
89
80
  }
90
- getStreams() {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const videoStream = yield this.accept();
93
- let controlStream;
94
- if (this.options.control) {
95
- controlStream = yield this.accept();
96
- }
97
- // Server only writes device meta after control socket is connected (if enabled)
98
- if (this.options.sendDeviceMeta) {
99
- const reader = videoStream.readable.getReader();
100
- const { done, value } = yield reader.read();
101
- // 64 bytes device name + 2 bytes video width + 2 bytes video height
102
- if (done || value.byteLength !== 64 + 2 + 2) {
103
- throw new Error('Unexpected response from server');
104
- }
105
- reader.releaseLock();
81
+ async getStreams() {
82
+ const videoStream = await this.accept();
83
+ let controlStream;
84
+ if (this.options.control) {
85
+ controlStream = await this.accept();
86
+ }
87
+ // Server only writes device meta after control socket is connected (if enabled)
88
+ if (this.options.sendDeviceMeta) {
89
+ const reader = videoStream.readable.getReader();
90
+ const { done, value } = await reader.read();
91
+ // 64 bytes device name + 2 bytes video width + 2 bytes video height
92
+ if (done || value.byteLength !== 64 + 2 + 2) {
93
+ throw new Error('Unexpected response from server');
106
94
  }
107
- return [videoStream, controlStream];
108
- });
95
+ reader.releaseLock();
96
+ }
97
+ return [videoStream, controlStream];
109
98
  }
110
99
  dispose() {
111
100
  // Don't await this!
@@ -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,4 +1,3 @@
1
- import { __awaiter } from "tslib";
2
1
  import { WritableStream } from "@yume-chan/adb";
3
2
  import { PromiseResolver } from "@yume-chan/async";
4
3
  import { AndroidCodecLevel, AndroidCodecProfile } from "../../codec.js";
@@ -13,14 +12,21 @@ function initialize() {
13
12
  return cachedInitializePromise;
14
13
  }
15
14
  export class TinyH264Decoder {
15
+ maxProfile = AndroidCodecProfile.Baseline;
16
+ maxLevel = AndroidCodecLevel.Level4;
17
+ _renderer;
18
+ get renderer() { return this._renderer; }
19
+ _frameRendered = 0;
20
+ get frameRendered() { return this._frameRendered; }
21
+ _writable;
22
+ get writable() { return this._writable; }
23
+ _yuvCanvas;
24
+ _initializer;
16
25
  constructor() {
17
- this.maxProfile = AndroidCodecProfile.Baseline;
18
- this.maxLevel = AndroidCodecLevel.Level4;
19
- this._frameRendered = 0;
20
26
  initialize();
21
27
  this._renderer = document.createElement('canvas');
22
28
  this._writable = new WritableStream({
23
- write: (packet) => __awaiter(this, void 0, void 0, function* () {
29
+ write: async (packet) => {
24
30
  switch (packet.type) {
25
31
  case 'configuration':
26
32
  this.configure(packet.data);
@@ -29,57 +35,51 @@ export class TinyH264Decoder {
29
35
  if (!this._initializer) {
30
36
  throw new Error('Decoder not initialized');
31
37
  }
32
- const wrapper = yield this._initializer.promise;
38
+ const wrapper = await this._initializer.promise;
33
39
  wrapper.feed(packet.data.slice().buffer);
34
40
  break;
35
41
  }
36
- })
42
+ }
37
43
  });
38
44
  }
39
- get renderer() { return this._renderer; }
40
- get frameRendered() { return this._frameRendered; }
41
- get writable() { return this._writable; }
42
- configure(config) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- this.dispose();
45
- this._initializer = new PromiseResolver();
46
- const { YuvBuffer, YuvCanvas } = yield initialize();
47
- if (!this._yuvCanvas) {
48
- this._yuvCanvas = YuvCanvas.attach(this._renderer);
49
- ;
50
- }
51
- const { encodedWidth, encodedHeight } = config;
52
- const chromaWidth = encodedWidth / 2;
53
- const chromaHeight = encodedHeight / 2;
54
- this._renderer.width = config.croppedWidth;
55
- this._renderer.height = config.croppedHeight;
56
- const format = YuvBuffer.format({
57
- width: encodedWidth,
58
- height: encodedHeight,
59
- chromaWidth,
60
- chromaHeight,
61
- cropLeft: config.cropLeft,
62
- cropTop: config.cropTop,
63
- cropWidth: config.croppedWidth,
64
- cropHeight: config.croppedHeight,
65
- displayWidth: config.croppedWidth,
66
- displayHeight: config.croppedHeight,
67
- });
68
- const wrapper = yield createTinyH264Wrapper();
69
- this._initializer.resolve(wrapper);
70
- const uPlaneOffset = encodedWidth * encodedHeight;
71
- const vPlaneOffset = uPlaneOffset + chromaWidth * chromaHeight;
72
- wrapper.onPictureReady(({ data }) => {
73
- this._frameRendered += 1;
74
- const array = new Uint8Array(data);
75
- const frame = YuvBuffer.frame(format, YuvBuffer.lumaPlane(format, array, encodedWidth, 0), YuvBuffer.chromaPlane(format, array, chromaWidth, uPlaneOffset), YuvBuffer.chromaPlane(format, array, chromaWidth, vPlaneOffset));
76
- this._yuvCanvas.drawFrame(frame);
77
- });
45
+ async configure(config) {
46
+ this.dispose();
47
+ this._initializer = new PromiseResolver();
48
+ const { YuvBuffer, YuvCanvas } = await initialize();
49
+ if (!this._yuvCanvas) {
50
+ this._yuvCanvas = YuvCanvas.attach(this._renderer);
51
+ ;
52
+ }
53
+ const { encodedWidth, encodedHeight } = config;
54
+ const chromaWidth = encodedWidth / 2;
55
+ const chromaHeight = encodedHeight / 2;
56
+ this._renderer.width = config.croppedWidth;
57
+ this._renderer.height = config.croppedHeight;
58
+ const format = YuvBuffer.format({
59
+ width: encodedWidth,
60
+ height: encodedHeight,
61
+ chromaWidth,
62
+ chromaHeight,
63
+ cropLeft: config.cropLeft,
64
+ cropTop: config.cropTop,
65
+ cropWidth: config.croppedWidth,
66
+ cropHeight: config.croppedHeight,
67
+ displayWidth: config.croppedWidth,
68
+ displayHeight: config.croppedHeight,
69
+ });
70
+ const wrapper = await createTinyH264Wrapper();
71
+ this._initializer.resolve(wrapper);
72
+ const uPlaneOffset = encodedWidth * encodedHeight;
73
+ const vPlaneOffset = uPlaneOffset + chromaWidth * chromaHeight;
74
+ wrapper.onPictureReady(({ data }) => {
75
+ this._frameRendered += 1;
76
+ const array = new Uint8Array(data);
77
+ const frame = YuvBuffer.frame(format, YuvBuffer.lumaPlane(format, array, encodedWidth, 0), YuvBuffer.chromaPlane(format, array, chromaWidth, uPlaneOffset), YuvBuffer.chromaPlane(format, array, chromaWidth, vPlaneOffset));
78
+ this._yuvCanvas.drawFrame(frame);
78
79
  });
79
80
  }
80
81
  dispose() {
81
- var _a;
82
- (_a = this._initializer) === null || _a === void 0 ? void 0 : _a.promise.then(wrapper => wrapper.dispose());
82
+ this._initializer?.promise.then(wrapper => wrapper.dispose());
83
83
  this._initializer = undefined;
84
84
  }
85
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoder/tinyh264/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decoder/tinyh264/index.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,14 @@ const pendingResolvers = [];
6
6
  let streamId = 0;
7
7
  const pictureReadyEvent = new EventEmitter();
8
8
  export class TinyH264Wrapper extends AutoDisposable {
9
+ streamId;
10
+ pictureReadyEvent = new EventEmitter();
11
+ get onPictureReady() { return this.pictureReadyEvent.event; }
9
12
  constructor(streamId) {
10
13
  super();
11
- this.pictureReadyEvent = new EventEmitter();
12
14
  this.streamId = streamId;
13
15
  this.addDisposable(pictureReadyEvent.event(this.handlePictureReady, this));
14
16
  }
15
- get onPictureReady() { return this.pictureReadyEvent.event; }
16
17
  handlePictureReady(e) {
17
18
  if (e.renderStateId === this.streamId) {
18
19
  this.pictureReadyEvent.fire(e);
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/decoder/tinyh264/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhE,IAAI,MAA0B,CAAC;AAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,MAAM,gBAAgB,GAAuC,EAAE,CAAC;AAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;AAYjB,MAAM,iBAAiB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAEpE,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAM/C,YAAmB,QAAgB;QAC/B,KAAK,EAAE,CAAC;QAJK,sBAAiB,GAAG,IAAI,YAAY,EAAyB,CAAC;QAM3E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAPD,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAS5D,kBAAkB,CAAC,CAAwB;QAC/C,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAClC;IACL,CAAC;IAEM,IAAI,CAAC,IAAiB;QACzB,MAAO,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC/B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAO,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,UAAU,qBAAqB;IACjC,IAAI,CAAC,MAAM,EAAE;QACT,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACnB,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACf,KAAK,cAAc;oBACf,WAAW,GAAG,IAAI,CAAC;oBACnB,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;wBACrC,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAChD,QAAQ,IAAI,CAAC,CAAC;qBACjB;oBACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,cAAc;oBACf,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM;aACb;QACL,CAAC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,WAAW,EAAE;QACd,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAmB,CAAC;QACxD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,CAAC;KAC3B;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/decoder/tinyh264/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhE,IAAI,MAA0B,CAAC;AAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,MAAM,gBAAgB,GAAuC,EAAE,CAAC;AAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;AAYjB,MAAM,iBAAiB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAEpE,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAC/B,QAAQ,CAAS;IAEhB,iBAAiB,GAAG,IAAI,YAAY,EAAyB,CAAC;IAC/E,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE,YAAmB,QAAgB;QAC/B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEO,kBAAkB,CAAC,CAAwB;QAC/C,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAClC;IACL,CAAC;IAEM,IAAI,CAAC,IAAiB;QACzB,MAAO,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC/B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAO,CAAC,WAAW,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,UAAU,qBAAqB;IACjC,IAAI,CAAC,MAAM,EAAE;QACT,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACnB,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACf,KAAK,cAAc;oBACf,WAAW,GAAG,IAAI,CAAC;oBACnB,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;wBACrC,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAChD,QAAQ,IAAI,CAAC,CAAC;qBACjB;oBACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,cAAc;oBACf,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM;aACb;QACL,CAAC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,WAAW,EAAE;QACd,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAmB,CAAC;QACxD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,CAAC;KAC3B;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -1,25 +1,24 @@
1
- import { __awaiter } from "tslib";
2
1
  import { WritableStream } from '@yume-chan/adb';
3
2
  function toHex(value) {
4
3
  return value.toString(16).padStart(2, '0').toUpperCase();
5
4
  }
6
5
  export class WebCodecsDecoder {
6
+ // Usually, browsers can decode most configurations,
7
+ // So let device choose best profile and level for itself.
8
+ maxProfile = undefined;
9
+ maxLevel = undefined;
10
+ _writable;
11
+ get writable() { return this._writable; }
12
+ _renderer;
13
+ get renderer() { return this._renderer; }
14
+ _frameRendered = 0;
15
+ get frameRendered() { return this._frameRendered; }
16
+ context;
17
+ decoder;
18
+ // Limit FPS to system refresh rate
19
+ lastFrame;
20
+ animationFrame = 0;
7
21
  constructor() {
8
- // Usually, browsers can decode most configurations,
9
- // So let device choose best profile and level for itself.
10
- this.maxProfile = undefined;
11
- this.maxLevel = undefined;
12
- this._frameRendered = 0;
13
- this.animationFrame = 0;
14
- this.render = () => {
15
- if (this.lastFrame) {
16
- this._frameRendered += 1;
17
- this.context.drawImage(this.lastFrame, 0, 0);
18
- this.lastFrame.close();
19
- this.lastFrame = undefined;
20
- }
21
- this.animationFrame = requestAnimationFrame(this.render);
22
- };
23
22
  this._renderer = document.createElement('canvas');
24
23
  this.context = this._renderer.getContext('2d');
25
24
  this.decoder = new VideoDecoder({
@@ -36,7 +35,7 @@ export class WebCodecsDecoder {
36
35
  error() { },
37
36
  });
38
37
  this._writable = new WritableStream({
39
- write: (packet) => __awaiter(this, void 0, void 0, function* () {
38
+ write: async (packet) => {
40
39
  switch (packet.type) {
41
40
  case 'configuration':
42
41
  this.configure(packet.data);
@@ -50,12 +49,18 @@ export class WebCodecsDecoder {
50
49
  }));
51
50
  break;
52
51
  }
53
- })
52
+ }
54
53
  });
55
54
  }
56
- get writable() { return this._writable; }
57
- get renderer() { return this._renderer; }
58
- get frameRendered() { return this._frameRendered; }
55
+ render = () => {
56
+ if (this.lastFrame) {
57
+ this._frameRendered += 1;
58
+ this.context.drawImage(this.lastFrame, 0, 0);
59
+ this.lastFrame.close();
60
+ this.lastFrame = undefined;
61
+ }
62
+ this.animationFrame = requestAnimationFrame(this.render);
63
+ };
59
64
  configure(config) {
60
65
  const { profileIndex, constraintSet, levelIndex } = config;
61
66
  this._renderer.width = config.croppedWidth;
@@ -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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"}
package/esm/message.d.ts CHANGED
@@ -6,11 +6,12 @@ export declare enum ScrcpyControlMessageType {
6
6
  InjectScroll = 3,
7
7
  BackOrScreenOn = 4,
8
8
  ExpandNotificationPanel = 5,
9
- CollapseNotificationPanel = 6,
10
- GetClipboard = 7,
11
- SetClipboard = 8,
12
- SetScreenPowerMode = 9,
13
- RotateDevice = 10
9
+ ExpandSettingPanel = 6,
10
+ CollapseNotificationPanel = 7,
11
+ GetClipboard = 8,
12
+ SetClipboard = 9,
13
+ SetScreenPowerMode = 10,
14
+ RotateDevice = 11
14
15
  }
15
16
  export declare enum AndroidMotionEventAction {
16
17
  Down = 0,
@@ -27,8 +28,11 @@ export declare enum AndroidMotionEventAction {
27
28
  ButtonPress = 11,
28
29
  ButtonRelease = 12
29
30
  }
31
+ export declare const ScrcpySimpleControlMessage: Struct<{
32
+ type: number;
33
+ }, never, {}, undefined>;
30
34
  export declare const ScrcpyInjectTouchControlMessage: Struct<{
31
- type: ScrcpyControlMessageType.InjectTouch;
35
+ type: number;
32
36
  action: AndroidMotionEventAction;
33
37
  pointerId: bigint;
34
38
  pointerX: number;
@@ -40,7 +44,7 @@ export declare const ScrcpyInjectTouchControlMessage: Struct<{
40
44
  }, never, {}, undefined>;
41
45
  export declare type ScrcpyInjectTouchControlMessage = typeof ScrcpyInjectTouchControlMessage['TInit'];
42
46
  export declare const ScrcpyInjectTextControlMessage: Struct<{
43
- type: ScrcpyControlMessageType.InjectText;
47
+ type: number;
44
48
  length: number;
45
49
  text: string;
46
50
  }, "length", {}, undefined>;
@@ -83,7 +87,7 @@ export declare enum AndroidKeyCode {
83
87
  AppSwitch = 187
84
88
  }
85
89
  export declare const ScrcpyInjectKeyCodeControlMessage: Struct<{
86
- type: ScrcpyControlMessageType.InjectKeycode;
90
+ type: number;
87
91
  action: AndroidKeyEventAction;
88
92
  keyCode: number;
89
93
  repeat: number;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AAExD,oBAAY,wBAAwB;IAChC,aAAa,IAAA;IACb,UAAU,IAAA;IACV,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,uBAAuB,IAAA;IACvB,yBAAyB,IAAA;IACzB,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,kBAAkB,IAAA;IAClB,YAAY,KAAA;CACf;AAGD,oBAAY,wBAAwB;IAChC,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,WAAW,IAAA;IACX,SAAS,IAAA;IACT,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;IACV,SAAS,KAAA;IACT,WAAW,KAAA;IACX,aAAa,KAAA;CAChB;AAED,eAAO,MAAM,+BAA+B;;;;;;;;;;wBAUlB,CAAC;AAE3B,oBAAY,+BAA+B,GAAG,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAE9F,eAAO,MAAM,8BAA8B;;;;2BAIO,CAAC;AAEnD,oBAAY,8BAA8B,GACtC,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAEnD,oBAAY,qBAAqB;IAC7B,IAAI,IAAI;IACR,EAAE,IAAI;CACT;AAED,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,CAAC,KAAK;IACN,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,KAAK,KAAK;IACV,MAAM,KAAK;IACX,SAAS,MAAM;CAClB;AAED,eAAO,MAAM,iCAAiC;;;;;;wBAMlB,CAAC;AAE7B,oBAAY,iCAAiC,GACzC,OAAO,iCAAiC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AAIxD,oBAAY,wBAAwB;IAChC,aAAa,IAAA;IACb,UAAU,IAAA;IACV,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,uBAAuB,IAAA;IACvB,kBAAkB,IAAA;IAClB,yBAAyB,IAAA;IACzB,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,kBAAkB,KAAA;IAClB,YAAY,KAAA;CACf;AAGD,oBAAY,wBAAwB;IAChC,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,WAAW,IAAA;IACX,SAAS,IAAA;IACT,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;IACV,SAAS,KAAA;IACT,WAAW,KAAA;IACX,aAAa,KAAA;CAChB;AAED,eAAO,MAAM,0BAA0B;;wBAEjB,CAAC;AAEvB,eAAO,MAAM,+BAA+B;;;;;;;;;;wBAUlB,CAAC;AAE3B,oBAAY,+BAA+B,GAAG,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAE9F,eAAO,MAAM,8BAA8B;;;;2BAIO,CAAC;AAEnD,oBAAY,8BAA8B,GACtC,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAEnD,oBAAY,qBAAqB;IAC7B,IAAI,IAAI;IACR,EAAE,IAAI;CACT;AAED,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,CAAC,KAAK;IACN,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,CAAC,KAAA;IACD,KAAK,KAAK;IACV,MAAM,KAAK;IACX,SAAS,MAAM;CAClB;AAED,eAAO,MAAM,iCAAiC;;;;;;wBAMlB,CAAC;AAE7B,oBAAY,iCAAiC,GACzC,OAAO,iCAAiC,CAAC,OAAO,CAAC,CAAC"}
package/esm/message.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import Struct, { placeholder } from '@yume-chan/struct';
2
+ // https://github.com/Genymobile/scrcpy/blob/fa5b2a29e983a46b49531def9cf3d80c40c3de37/app/src/control_msg.h#L23
3
+ // For their message bodies, see https://github.com/Genymobile/scrcpy/blob/5c62f3419d252d10cd8c9cbb7c918b358b81f2d0/app/src/control_msg.c#L92
2
4
  export var ScrcpyControlMessageType;
3
5
  (function (ScrcpyControlMessageType) {
4
6
  ScrcpyControlMessageType[ScrcpyControlMessageType["InjectKeycode"] = 0] = "InjectKeycode";
@@ -7,11 +9,12 @@ export var ScrcpyControlMessageType;
7
9
  ScrcpyControlMessageType[ScrcpyControlMessageType["InjectScroll"] = 3] = "InjectScroll";
8
10
  ScrcpyControlMessageType[ScrcpyControlMessageType["BackOrScreenOn"] = 4] = "BackOrScreenOn";
9
11
  ScrcpyControlMessageType[ScrcpyControlMessageType["ExpandNotificationPanel"] = 5] = "ExpandNotificationPanel";
10
- ScrcpyControlMessageType[ScrcpyControlMessageType["CollapseNotificationPanel"] = 6] = "CollapseNotificationPanel";
11
- ScrcpyControlMessageType[ScrcpyControlMessageType["GetClipboard"] = 7] = "GetClipboard";
12
- ScrcpyControlMessageType[ScrcpyControlMessageType["SetClipboard"] = 8] = "SetClipboard";
13
- ScrcpyControlMessageType[ScrcpyControlMessageType["SetScreenPowerMode"] = 9] = "SetScreenPowerMode";
14
- ScrcpyControlMessageType[ScrcpyControlMessageType["RotateDevice"] = 10] = "RotateDevice";
12
+ ScrcpyControlMessageType[ScrcpyControlMessageType["ExpandSettingPanel"] = 6] = "ExpandSettingPanel";
13
+ ScrcpyControlMessageType[ScrcpyControlMessageType["CollapseNotificationPanel"] = 7] = "CollapseNotificationPanel";
14
+ ScrcpyControlMessageType[ScrcpyControlMessageType["GetClipboard"] = 8] = "GetClipboard";
15
+ ScrcpyControlMessageType[ScrcpyControlMessageType["SetClipboard"] = 9] = "SetClipboard";
16
+ ScrcpyControlMessageType[ScrcpyControlMessageType["SetScreenPowerMode"] = 10] = "SetScreenPowerMode";
17
+ ScrcpyControlMessageType[ScrcpyControlMessageType["RotateDevice"] = 11] = "RotateDevice";
15
18
  })(ScrcpyControlMessageType || (ScrcpyControlMessageType = {}));
16
19
  // https://developer.android.com/reference/android/view/MotionEvent#constants_1
17
20
  export var AndroidMotionEventAction;
@@ -30,8 +33,10 @@ export var AndroidMotionEventAction;
30
33
  AndroidMotionEventAction[AndroidMotionEventAction["ButtonPress"] = 11] = "ButtonPress";
31
34
  AndroidMotionEventAction[AndroidMotionEventAction["ButtonRelease"] = 12] = "ButtonRelease";
32
35
  })(AndroidMotionEventAction || (AndroidMotionEventAction = {}));
36
+ export const ScrcpySimpleControlMessage = new Struct()
37
+ .uint8('type');
33
38
  export const ScrcpyInjectTouchControlMessage = new Struct()
34
- .uint8('type', ScrcpyControlMessageType.InjectTouch)
39
+ .fields(ScrcpySimpleControlMessage)
35
40
  .uint8('action', placeholder())
36
41
  .uint64('pointerId')
37
42
  .uint32('pointerX')
@@ -41,7 +46,7 @@ export const ScrcpyInjectTouchControlMessage = new Struct()
41
46
  .uint16('pressure')
42
47
  .uint32('buttons');
43
48
  export const ScrcpyInjectTextControlMessage = new Struct()
44
- .uint8('type', ScrcpyControlMessageType.InjectText)
49
+ .fields(ScrcpySimpleControlMessage)
45
50
  .uint32('length')
46
51
  .string('text', { lengthField: 'length' });
47
52
  export var AndroidKeyEventAction;
@@ -84,7 +89,7 @@ export var AndroidKeyCode;
84
89
  AndroidKeyCode[AndroidKeyCode["AppSwitch"] = 187] = "AppSwitch";
85
90
  })(AndroidKeyCode || (AndroidKeyCode = {}));
86
91
  export const ScrcpyInjectKeyCodeControlMessage = new Struct()
87
- .uint8('type', ScrcpyControlMessageType.InjectKeycode)
92
+ .fields(ScrcpySimpleControlMessage)
88
93
  .uint8('action', placeholder())
89
94
  .uint32('keyCode')
90
95
  .uint32('repeat')
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}