@yume-chan/scrcpy 0.0.20 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +33 -0
- package/CHANGELOG.md +18 -1
- package/README.md +8 -122
- package/esm/codec/av1.js +2 -2
- package/esm/codec/av1.js.map +1 -1
- package/esm/codec/h264.js +2 -2
- package/esm/codec/h264.js.map +1 -1
- package/esm/codec/h265.d.ts +72 -4
- package/esm/codec/h265.d.ts.map +1 -1
- package/esm/codec/h265.js +18 -19
- package/esm/codec/h265.js.map +1 -1
- package/esm/codec/nalu.d.ts +1 -8
- package/esm/codec/nalu.d.ts.map +1 -1
- package/esm/codec/nalu.js +53 -40
- package/esm/codec/nalu.js.map +1 -1
- package/esm/control/hover-helper.d.ts +1 -1
- package/esm/control/hover-helper.d.ts.map +1 -1
- package/esm/control/hover-helper.js +8 -9
- package/esm/control/hover-helper.js.map +1 -1
- package/esm/control/inject-keycode.d.ts +13 -13
- package/esm/control/inject-keycode.d.ts.map +1 -1
- package/esm/control/inject-keycode.js +3 -3
- package/esm/control/inject-keycode.js.map +1 -1
- package/esm/control/inject-touch.d.ts.map +1 -1
- package/esm/control/inject-touch.js +3 -4
- package/esm/control/inject-touch.js.map +1 -1
- package/esm/control/serializer.d.ts +4 -3
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +30 -14
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/set-screen-power-mode.js +1 -1
- package/esm/control/set-screen-power-mode.js.map +1 -1
- package/esm/control/type.d.ts +1 -1
- package/esm/control/type.d.ts.map +1 -1
- package/esm/control/type.js +4 -4
- package/esm/control/type.js.map +1 -1
- package/esm/control/writer.d.ts +5 -3
- package/esm/control/writer.d.ts.map +1 -1
- package/esm/control/writer.js +23 -14
- package/esm/control/writer.js.map +1 -1
- package/esm/device-message/stream.js.map +1 -1
- package/esm/device-message/type.js +1 -1
- package/esm/device-message/type.js.map +1 -1
- package/esm/options/1_16/codec-options.d.ts +2 -2
- package/esm/options/1_16/codec-options.d.ts.map +1 -1
- package/esm/options/1_16/codec-options.js +15 -5
- package/esm/options/1_16/codec-options.js.map +1 -1
- package/esm/options/1_16/float-to-uint16.js.map +1 -1
- package/esm/options/1_16/init.js +2 -2
- package/esm/options/1_16/init.js.map +1 -1
- package/esm/options/1_16/options.d.ts +1 -1
- package/esm/options/1_16/options.d.ts.map +1 -1
- package/esm/options/1_16/options.js +2 -3
- package/esm/options/1_16/options.js.map +1 -1
- package/esm/options/1_16/scroll.d.ts +1 -2
- package/esm/options/1_16/scroll.d.ts.map +1 -1
- package/esm/options/1_16/scroll.js +12 -12
- package/esm/options/1_16/scroll.js.map +1 -1
- package/esm/options/1_17.d.ts +1 -1
- package/esm/options/1_17.d.ts.map +1 -1
- package/esm/options/1_17.js +1 -2
- package/esm/options/1_17.js.map +1 -1
- package/esm/options/1_18.d.ts +1 -1
- package/esm/options/1_18.d.ts.map +1 -1
- package/esm/options/1_18.js +3 -4
- package/esm/options/1_18.js.map +1 -1
- package/esm/options/1_21.d.ts +1 -1
- package/esm/options/1_21.d.ts.map +1 -1
- package/esm/options/1_21.js +1 -2
- package/esm/options/1_21.js.map +1 -1
- package/esm/options/1_22/options.d.ts +1 -1
- package/esm/options/1_22/options.d.ts.map +1 -1
- package/esm/options/1_22/options.js +1 -2
- package/esm/options/1_22/options.js.map +1 -1
- package/esm/options/1_22/scroll.d.ts.map +1 -1
- package/esm/options/1_22/scroll.js.map +1 -1
- package/esm/options/1_23.d.ts +1 -1
- package/esm/options/1_23.d.ts.map +1 -1
- package/esm/options/1_23.js +1 -2
- package/esm/options/1_23.js.map +1 -1
- package/esm/options/1_24.d.ts +1 -1
- package/esm/options/1_24.d.ts.map +1 -1
- package/esm/options/1_24.js +1 -2
- package/esm/options/1_24.js.map +1 -1
- package/esm/options/1_25/options.d.ts.map +1 -1
- package/esm/options/1_25/options.js.map +1 -1
- package/esm/options/2_0.d.ts +1 -1
- package/esm/options/2_0.d.ts.map +1 -1
- package/esm/options/2_0.js +2 -4
- package/esm/options/2_0.js.map +1 -1
- package/esm/options/2_1.d.ts +48 -0
- package/esm/options/2_1.d.ts.map +1 -0
- package/esm/options/2_1.js +23 -0
- package/esm/options/2_1.js.map +1 -0
- package/esm/options/2_2.d.ts +67 -0
- package/esm/options/2_2.d.ts.map +1 -0
- package/esm/options/2_2.js +44 -0
- package/esm/options/2_2.js.map +1 -0
- package/esm/options/codec.d.ts.map +1 -1
- package/esm/options/codec.js +3 -4
- package/esm/options/codec.js.map +1 -1
- package/esm/options/index.d.ts +2 -0
- package/esm/options/index.d.ts.map +1 -1
- package/esm/options/index.js +2 -0
- package/esm/options/index.js.map +1 -1
- package/esm/options/latest.d.ts +4 -5
- package/esm/options/latest.d.ts.map +1 -1
- package/esm/options/latest.js +2 -3
- package/esm/options/latest.js.map +1 -1
- package/esm/options/types.d.ts +1 -0
- package/esm/options/types.d.ts.map +1 -1
- package/esm/options/types.js +15 -0
- package/esm/options/types.js.map +1 -1
- package/package.json +10 -22
- package/src/codec/h265.ts +40 -31
- package/src/codec/nalu.ts +73 -55
- package/src/control/hover-helper.ts +10 -11
- package/src/control/inject-touch.ts +0 -1
- package/src/control/serializer.ts +56 -35
- package/src/control/type.ts +7 -7
- package/src/control/writer.ts +40 -30
- package/src/device-message/stream.ts +2 -2
- package/src/options/1_16/codec-options.ts +22 -7
- package/src/options/1_16/float-to-uint16.ts +1 -1
- package/src/options/1_16/options.ts +32 -36
- package/src/options/1_16/scroll.ts +16 -16
- package/src/options/1_17.ts +11 -11
- package/src/options/1_18.ts +12 -12
- package/src/options/1_21.ts +9 -9
- package/src/options/1_22/options.ts +7 -7
- package/src/options/1_22/scroll.ts +2 -2
- package/src/options/1_23.ts +6 -6
- package/src/options/1_24.ts +4 -4
- package/src/options/1_25/options.ts +4 -4
- package/src/options/1_25/scroll.ts +2 -2
- package/src/options/2_0.ts +25 -25
- package/src/options/2_1.ts +35 -0
- package/src/options/2_2.ts +68 -0
- package/src/options/codec.ts +13 -13
- package/src/options/index.ts +2 -0
- package/src/options/latest.ts +4 -6
- package/src/options/types.ts +47 -28
- package/tsconfig.build.tsbuildinfo +1 -1
- package/bin/scrcpy-server +0 -0
- package/bin/version.d.ts +0 -1
- package/bin/version.js +0 -1
- package/scripts/fetch-server.cjs +0 -38
package/esm/options/codec.js
CHANGED
|
@@ -3,11 +3,11 @@ export var ScrcpyVideoCodecId;
|
|
|
3
3
|
ScrcpyVideoCodecId[ScrcpyVideoCodecId["H264"] = 1748121140] = "H264";
|
|
4
4
|
ScrcpyVideoCodecId[ScrcpyVideoCodecId["H265"] = 1748121141] = "H265";
|
|
5
5
|
ScrcpyVideoCodecId[ScrcpyVideoCodecId["AV1"] = 6387249] = "AV1";
|
|
6
|
-
})(ScrcpyVideoCodecId
|
|
7
|
-
class ScrcpyAudioCodec {
|
|
6
|
+
})(ScrcpyVideoCodecId || (ScrcpyVideoCodecId = {}));
|
|
7
|
+
export class ScrcpyAudioCodec {
|
|
8
8
|
static OPUS = new ScrcpyAudioCodec("opus", 0x6f_70_75_73, "audio/opus", "opus");
|
|
9
9
|
static AAC = new ScrcpyAudioCodec("aac", 0x00_61_61_63, "audio/aac", "mp4a.66");
|
|
10
|
-
static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "
|
|
10
|
+
static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "");
|
|
11
11
|
optionValue;
|
|
12
12
|
metadataValue;
|
|
13
13
|
mimeType;
|
|
@@ -22,5 +22,4 @@ class ScrcpyAudioCodec {
|
|
|
22
22
|
return this.optionValue;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
export { ScrcpyAudioCodec };
|
|
26
25
|
//# sourceMappingURL=codec.js.map
|
package/esm/options/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,EAAE,CACL,CAAC;IAEO,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAE5B,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC"}
|
package/esm/options/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export * from "./1_23.js";
|
|
|
7
7
|
export * from "./1_24.js";
|
|
8
8
|
export * from "./1_25/index.js";
|
|
9
9
|
export * from "./2_0.js";
|
|
10
|
+
export * from "./2_1.js";
|
|
11
|
+
export * from "./2_2.js";
|
|
10
12
|
export * from "./codec.js";
|
|
11
13
|
export * from "./latest.js";
|
|
12
14
|
export * from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/esm/options/index.js
CHANGED
|
@@ -7,6 +7,8 @@ export * from "./1_23.js";
|
|
|
7
7
|
export * from "./1_24.js";
|
|
8
8
|
export * from "./1_25/index.js";
|
|
9
9
|
export * from "./2_0.js";
|
|
10
|
+
export * from "./2_1.js";
|
|
11
|
+
export * from "./2_2.js";
|
|
10
12
|
export * from "./codec.js";
|
|
11
13
|
export * from "./latest.js";
|
|
12
14
|
export * from "./types.js";
|
package/esm/options/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/esm/options/latest.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
2
|
+
import type { ScrcpyOptionsInit2_2 } from "./2_2.js";
|
|
3
|
+
import { ScrcpyOptions2_2 } from "./2_2.js";
|
|
4
4
|
export declare const ScrcpyLogLevel: typeof ScrcpyLogLevel1_18;
|
|
5
5
|
export type ScrcpyLogLevel = ScrcpyLogLevel1_18;
|
|
6
6
|
export declare const ScrcpyVideoOrientation: typeof ScrcpyVideoOrientation1_18;
|
|
7
7
|
export type ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
|
|
8
|
-
export type ScrcpyOptionsInitLatest =
|
|
9
|
-
export declare class ScrcpyOptionsLatest extends
|
|
8
|
+
export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_2;
|
|
9
|
+
export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
|
|
10
10
|
}
|
|
11
|
-
export declare const ScrcpyLatestVersion = "2.0";
|
|
12
11
|
//# sourceMappingURL=latest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,sBAAsB,mCAA6B,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC3D,qBAAa,mBAAoB,SAAQ,gBAAgB;CAAG
|
|
1
|
+
{"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,sBAAsB,mCAA6B,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC3D,qBAAa,mBAAoB,SAAQ,gBAAgB;CAAG"}
|
package/esm/options/latest.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ScrcpyOptions2_2 } from "./2_2.js";
|
|
3
3
|
export const ScrcpyLogLevel = ScrcpyLogLevel1_18;
|
|
4
4
|
export const ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
|
|
5
|
-
export class ScrcpyOptionsLatest extends
|
|
5
|
+
export class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
|
|
6
6
|
}
|
|
7
|
-
export const ScrcpyLatestVersion = "2.0";
|
|
8
7
|
//# sourceMappingURL=latest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest.js","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAGjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAIjE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;CAAG
|
|
1
|
+
{"version":3,"file":"latest.js","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAGjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAIjE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;CAAG"}
|
package/esm/options/types.d.ts
CHANGED
|
@@ -58,6 +58,7 @@ export interface ScrcpyOptions<T extends object> {
|
|
|
58
58
|
createScrollController(): ScrcpyScrollController;
|
|
59
59
|
}
|
|
60
60
|
export declare abstract class ScrcpyOptionsBase<T extends object, B extends ScrcpyOptions<object>> implements ScrcpyOptions<T> {
|
|
61
|
+
#private;
|
|
61
62
|
protected _base: B;
|
|
62
63
|
abstract get defaults(): Required<T>;
|
|
63
64
|
get controlMessageTypes(): readonly ScrcpyControlMessageType[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EACR,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EACR,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAC9B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,OAAO,GACf,KAAK,IAAI,iBAAiB,CAO5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
|
package/esm/options/types.js
CHANGED
|
@@ -13,6 +13,11 @@ export function toScrcpyOptionValue(value, empty) {
|
|
|
13
13
|
if (value === undefined) {
|
|
14
14
|
return empty;
|
|
15
15
|
}
|
|
16
|
+
if (typeof value !== "string" &&
|
|
17
|
+
typeof value !== "number" &&
|
|
18
|
+
typeof value !== "boolean") {
|
|
19
|
+
throw new Error(`Invalid option value: ${String(value)}`);
|
|
20
|
+
}
|
|
16
21
|
return String(value);
|
|
17
22
|
}
|
|
18
23
|
export class ScrcpyOptionsBase {
|
|
@@ -24,6 +29,16 @@ export class ScrcpyOptionsBase {
|
|
|
24
29
|
constructor(base, value) {
|
|
25
30
|
this._base = base;
|
|
26
31
|
this.value = value;
|
|
32
|
+
this.#setValue();
|
|
33
|
+
}
|
|
34
|
+
#setValue() {
|
|
35
|
+
// Share `value` with `_base` class,
|
|
36
|
+
// so updating `_base.value` in `_base.setListEncoders()`/
|
|
37
|
+
// `_base.setListDisplays()` will also update `this.value`.
|
|
38
|
+
Object.assign(this._base, { value: this.value });
|
|
39
|
+
if (this._base instanceof ScrcpyOptionsBase) {
|
|
40
|
+
this._base.#setValue();
|
|
41
|
+
}
|
|
27
42
|
}
|
|
28
43
|
setListEncoders() {
|
|
29
44
|
this._base.setListEncoders();
|
package/esm/options/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAMvE,MAAM,UAAU,mBAAmB,CAC/B,KAAc;IAEd,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,eAAe,IAAI,KAAK;QACxB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,CAC5C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,KAAc,EAAE,KAAQ;IAC3D,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/scrcpy",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"description": "TypeScript implementation of Scrcpy.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -22,36 +22,24 @@
|
|
|
22
22
|
"bugs": {
|
|
23
23
|
"url": "https://github.com/yume-chan/ya-webadb/issues"
|
|
24
24
|
},
|
|
25
|
-
"bin": {
|
|
26
|
-
"fetch-scrcpy-server": "scripts/fetch-server.cjs"
|
|
27
|
-
},
|
|
28
25
|
"type": "module",
|
|
29
26
|
"main": "esm/index.js",
|
|
30
27
|
"types": "esm/index.d.ts",
|
|
31
28
|
"dependencies": {
|
|
32
|
-
"@yume-chan/stream-extra": "^0.0.
|
|
33
|
-
"@yume-chan/struct": "^0.0.
|
|
34
|
-
"tslib": "^2.
|
|
29
|
+
"@yume-chan/stream-extra": "^0.0.22",
|
|
30
|
+
"@yume-chan/struct": "^0.0.22",
|
|
31
|
+
"tslib": "^2.6.2"
|
|
35
32
|
},
|
|
36
33
|
"devDependencies": {
|
|
37
|
-
"@jest/globals": "^29.
|
|
34
|
+
"@jest/globals": "^29.7.0",
|
|
38
35
|
"@yume-chan/eslint-config": "^1.0.0",
|
|
39
36
|
"@yume-chan/tsconfig": "^1.0.0",
|
|
40
37
|
"cross-env": "^7.0.3",
|
|
41
|
-
"eslint": "^8.
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"typescript": "^5.0.3"
|
|
47
|
-
},
|
|
48
|
-
"peerDependencies": {
|
|
49
|
-
"gh-release-fetch": "^3.0.2"
|
|
50
|
-
},
|
|
51
|
-
"peerDependenciesMeta": {
|
|
52
|
-
"gh-release-fetch": {
|
|
53
|
-
"optional": true
|
|
54
|
-
}
|
|
38
|
+
"eslint": "^8.55.0",
|
|
39
|
+
"jest": "^29.7.0",
|
|
40
|
+
"prettier": "^3.1.0",
|
|
41
|
+
"ts-jest": "^29.1.1",
|
|
42
|
+
"typescript": "^5.3.2"
|
|
55
43
|
},
|
|
56
44
|
"scripts": {
|
|
57
45
|
"build": "tsc -b tsconfig.build.json",
|
package/src/codec/h265.ts
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
// cspell: ignore texmc
|
|
15
15
|
// cspell: ignore rbsp
|
|
16
16
|
// cspell: ignore cprms
|
|
17
|
+
// cspell: ignore nalu
|
|
18
|
+
// cspell: ignore sodb
|
|
19
|
+
// cspell: ignore luma
|
|
17
20
|
|
|
18
21
|
import { NaluSodbBitReader, annexBSplitNalu } from "./nalu.js";
|
|
19
22
|
|
|
@@ -130,7 +133,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
|
|
|
130
133
|
const profileTierLevel = h265ParseProfileTierLevel(
|
|
131
134
|
reader,
|
|
132
135
|
true,
|
|
133
|
-
vps_max_sub_layers_minus1
|
|
136
|
+
vps_max_sub_layers_minus1,
|
|
134
137
|
);
|
|
135
138
|
|
|
136
139
|
const vps_sub_layer_ordering_info_present_flag = !!reader.next();
|
|
@@ -193,7 +196,7 @@ export function h265ParseVideoParameterSet(nalu: Uint8Array) {
|
|
|
193
196
|
hrdParameters[i] = h265ParseHrdParameters(
|
|
194
197
|
reader,
|
|
195
198
|
cprms_present_flag[i]!,
|
|
196
|
-
vps_max_sub_layers_minus1
|
|
199
|
+
vps_max_sub_layers_minus1,
|
|
197
200
|
);
|
|
198
201
|
}
|
|
199
202
|
}
|
|
@@ -245,7 +248,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
245
248
|
const profileTierLevel = h265ParseProfileTierLevel(
|
|
246
249
|
reader,
|
|
247
250
|
true,
|
|
248
|
-
sps_max_sub_layers_minus1
|
|
251
|
+
sps_max_sub_layers_minus1,
|
|
249
252
|
);
|
|
250
253
|
|
|
251
254
|
const sps_seq_parameter_set_id = reader.decodeExponentialGolombNumber();
|
|
@@ -275,9 +278,9 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
275
278
|
const log2_max_pic_order_cnt_lsb_minus4 =
|
|
276
279
|
reader.decodeExponentialGolombNumber();
|
|
277
280
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
+
const sps_max_dec_pic_buffering_minus1: number[] = [];
|
|
282
|
+
const sps_max_num_reorder_pics: number[] = [];
|
|
283
|
+
const sps_max_latency_increase_plus1: number[] = [];
|
|
281
284
|
const sps_sub_layer_ordering_info_present_flag = !!reader.next();
|
|
282
285
|
for (
|
|
283
286
|
let i = sps_sub_layer_ordering_info_present_flag
|
|
@@ -286,17 +289,11 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
286
289
|
i <= sps_max_sub_layers_minus1;
|
|
287
290
|
i += 1
|
|
288
291
|
) {
|
|
289
|
-
sps_max_dec_pic_buffering_minus1 =
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
reader.decodeExponentialGolombNumber();
|
|
295
|
-
sps_max_num_reorder_pics[i] =
|
|
296
|
-
reader.decodeExponentialGolombNumber();
|
|
297
|
-
sps_max_latency_increase_plus1[i] =
|
|
298
|
-
reader.decodeExponentialGolombNumber();
|
|
299
|
-
}
|
|
292
|
+
sps_max_dec_pic_buffering_minus1[i] =
|
|
293
|
+
reader.decodeExponentialGolombNumber();
|
|
294
|
+
sps_max_num_reorder_pics[i] = reader.decodeExponentialGolombNumber();
|
|
295
|
+
sps_max_latency_increase_plus1[i] =
|
|
296
|
+
reader.decodeExponentialGolombNumber();
|
|
300
297
|
}
|
|
301
298
|
|
|
302
299
|
const log2_min_luma_coding_block_size_minus3 =
|
|
@@ -345,7 +342,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
345
342
|
reader,
|
|
346
343
|
i,
|
|
347
344
|
num_short_term_ref_pic_sets,
|
|
348
|
-
shortTermRefPicSets
|
|
345
|
+
shortTermRefPicSets,
|
|
349
346
|
);
|
|
350
347
|
}
|
|
351
348
|
|
|
@@ -359,7 +356,7 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
359
356
|
used_by_curr_pic_lt_sps_flag = [];
|
|
360
357
|
for (let i = 0; i < num_long_term_ref_pics_sps; i += 1) {
|
|
361
358
|
lt_ref_pic_poc_lsb_sps[i] = reader.read(
|
|
362
|
-
log2_max_pic_order_cnt_lsb_minus4 + 4
|
|
359
|
+
log2_max_pic_order_cnt_lsb_minus4 + 4,
|
|
363
360
|
);
|
|
364
361
|
used_by_curr_pic_lt_sps_flag[i] = !!reader.next();
|
|
365
362
|
}
|
|
@@ -370,7 +367,10 @@ export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
|
|
|
370
367
|
const vui_parameters_present_flag = !!reader.next();
|
|
371
368
|
let vuiParameters: H265VuiParameters | undefined;
|
|
372
369
|
if (vui_parameters_present_flag) {
|
|
373
|
-
vuiParameters = h265ParseVuiParameters(
|
|
370
|
+
vuiParameters = h265ParseVuiParameters(
|
|
371
|
+
reader,
|
|
372
|
+
sps_max_sub_layers_minus1,
|
|
373
|
+
);
|
|
374
374
|
}
|
|
375
375
|
|
|
376
376
|
const sps_extension_present_flag = !!reader.next();
|
|
@@ -624,22 +624,22 @@ export interface H265ProfileTierLevel {
|
|
|
624
624
|
function h265ParseProfileTierLevel(
|
|
625
625
|
reader: NaluSodbBitReader,
|
|
626
626
|
profilePresentFlag: true,
|
|
627
|
-
maxNumSubLayersMinus1: number
|
|
627
|
+
maxNumSubLayersMinus1: number,
|
|
628
628
|
): H265ProfileTierLevel & { generalProfileTier: H265ProfileTier };
|
|
629
629
|
function h265ParseProfileTierLevel(
|
|
630
630
|
reader: NaluSodbBitReader,
|
|
631
631
|
profilePresentFlag: false,
|
|
632
|
-
maxNumSubLayersMinus1: number
|
|
632
|
+
maxNumSubLayersMinus1: number,
|
|
633
633
|
): H265ProfileTierLevel & { generalProfileTier: undefined };
|
|
634
634
|
function h265ParseProfileTierLevel(
|
|
635
635
|
reader: NaluSodbBitReader,
|
|
636
636
|
profilePresentFlag: boolean,
|
|
637
|
-
maxNumSubLayersMinus1: number
|
|
637
|
+
maxNumSubLayersMinus1: number,
|
|
638
638
|
): H265ProfileTierLevel;
|
|
639
639
|
function h265ParseProfileTierLevel(
|
|
640
640
|
reader: NaluSodbBitReader,
|
|
641
641
|
profilePresentFlag: boolean,
|
|
642
|
-
maxNumSubLayersMinus1: number
|
|
642
|
+
maxNumSubLayersMinus1: number,
|
|
643
643
|
): H265ProfileTierLevel {
|
|
644
644
|
let generalProfileTier: H265ProfileTier | undefined;
|
|
645
645
|
if (profilePresentFlag) {
|
|
@@ -739,7 +739,7 @@ export function h265ParseShortTermReferencePictureSet(
|
|
|
739
739
|
reader: NaluSodbBitReader,
|
|
740
740
|
stRpsIdx: number,
|
|
741
741
|
num_short_term_ref_pic_sets: number,
|
|
742
|
-
sets: ShortTermReferencePictureSet[]
|
|
742
|
+
sets: ShortTermReferencePictureSet[],
|
|
743
743
|
): ShortTermReferencePictureSet {
|
|
744
744
|
let inter_ref_pic_set_prediction_flag = false;
|
|
745
745
|
if (stRpsIdx !== 0) {
|
|
@@ -897,7 +897,10 @@ export function h265ParseShortTermReferencePictureSet(
|
|
|
897
897
|
/**
|
|
898
898
|
* E.2.1 VUI parameters syntax
|
|
899
899
|
*/
|
|
900
|
-
export function h265ParseVuiParameters(
|
|
900
|
+
export function h265ParseVuiParameters(
|
|
901
|
+
reader: NaluSodbBitReader,
|
|
902
|
+
sps_max_sub_layers_minus1: number,
|
|
903
|
+
) {
|
|
901
904
|
const aspect_ratio_info_present_flag = !!reader.next();
|
|
902
905
|
let aspect_ratio_idc: number | undefined;
|
|
903
906
|
let sar_width: number | undefined;
|
|
@@ -966,6 +969,7 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
|
|
|
966
969
|
let vui_poc_proportional_to_timing_flag: boolean | undefined;
|
|
967
970
|
let vui_num_ticks_poc_diff_one_minus1: number | undefined;
|
|
968
971
|
let vui_hrd_parameters_present_flag: boolean | undefined;
|
|
972
|
+
let vui_hrd_parameters: H265HrdParameters | undefined;
|
|
969
973
|
if (vui_timing_info_present_flag) {
|
|
970
974
|
vui_num_units_in_tick = reader.read(32);
|
|
971
975
|
vui_time_scale = reader.read(32);
|
|
@@ -976,7 +980,11 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
|
|
|
976
980
|
}
|
|
977
981
|
vui_hrd_parameters_present_flag = !!reader.next();
|
|
978
982
|
if (vui_hrd_parameters_present_flag) {
|
|
979
|
-
|
|
983
|
+
vui_hrd_parameters = h265ParseHrdParameters(
|
|
984
|
+
reader,
|
|
985
|
+
true,
|
|
986
|
+
sps_max_sub_layers_minus1,
|
|
987
|
+
);
|
|
980
988
|
}
|
|
981
989
|
}
|
|
982
990
|
|
|
@@ -1037,6 +1045,7 @@ export function h265ParseVuiParameters(reader: NaluSodbBitReader) {
|
|
|
1037
1045
|
vui_poc_proportional_to_timing_flag,
|
|
1038
1046
|
vui_num_ticks_poc_diff_one_minus1,
|
|
1039
1047
|
vui_hrd_parameters_present_flag,
|
|
1048
|
+
vui_hrd_parameters,
|
|
1040
1049
|
|
|
1041
1050
|
bitstream_restriction_flag,
|
|
1042
1051
|
tiles_fixed_structure_flag,
|
|
@@ -1058,7 +1067,7 @@ export type H265VuiParameters = ReturnType<typeof h265ParseVuiParameters>;
|
|
|
1058
1067
|
export function h265ParseHrdParameters(
|
|
1059
1068
|
reader: NaluSodbBitReader,
|
|
1060
1069
|
commonInfPresentFlag: boolean,
|
|
1061
|
-
maxNumSubLayersMinus1: number
|
|
1070
|
+
maxNumSubLayersMinus1: number,
|
|
1062
1071
|
) {
|
|
1063
1072
|
let nal_hrd_parameters_present_flag: boolean | undefined;
|
|
1064
1073
|
let vcl_hrd_parameters_present_flag: boolean | undefined;
|
|
@@ -1125,14 +1134,14 @@ export function h265ParseHrdParameters(
|
|
|
1125
1134
|
nalHrdParameters[i] = h265ParseSubLayerHrdParameters(
|
|
1126
1135
|
reader,
|
|
1127
1136
|
i,
|
|
1128
|
-
getCpbCnt(cpb_cnt_minus1[i]!)
|
|
1137
|
+
getCpbCnt(cpb_cnt_minus1[i]!),
|
|
1129
1138
|
);
|
|
1130
1139
|
}
|
|
1131
1140
|
if (vcl_hrd_parameters_present_flag) {
|
|
1132
1141
|
vclHrdParameters[i] = h265ParseSubLayerHrdParameters(
|
|
1133
1142
|
reader,
|
|
1134
1143
|
i,
|
|
1135
|
-
getCpbCnt(cpb_cnt_minus1[i]!)
|
|
1144
|
+
getCpbCnt(cpb_cnt_minus1[i]!),
|
|
1136
1145
|
);
|
|
1137
1146
|
}
|
|
1138
1147
|
}
|
|
@@ -1169,7 +1178,7 @@ export type H265HrdParameters = ReturnType<typeof h265ParseHrdParameters>;
|
|
|
1169
1178
|
export function h265ParseSubLayerHrdParameters(
|
|
1170
1179
|
reader: NaluSodbBitReader,
|
|
1171
1180
|
subLayerId: number,
|
|
1172
|
-
CpbCnt: number
|
|
1181
|
+
CpbCnt: number,
|
|
1173
1182
|
) {
|
|
1174
1183
|
const bit_rate_value_minus1: number[] = [];
|
|
1175
1184
|
const cpb_size_value_minus1: number[] = [];
|
package/src/codec/nalu.ts
CHANGED
|
@@ -231,96 +231,93 @@ export function naluRemoveEmulation(buffer: Uint8Array) {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
export class NaluSodbBitReader {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
readonly #nalu: Uint8Array;
|
|
235
|
+
readonly #byteLength: number;
|
|
236
|
+
readonly #stopBitIndex: number;
|
|
237
237
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
#zeroCount = 0;
|
|
239
|
+
#bytePosition = -1;
|
|
240
|
+
#bitPosition = -1;
|
|
241
|
+
#byte = 0;
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
return this
|
|
243
|
+
get byteLength() {
|
|
244
|
+
return this.#byteLength;
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
|
|
248
|
-
return this
|
|
247
|
+
get stopBitIndex() {
|
|
248
|
+
return this.#stopBitIndex;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
|
|
252
|
-
return this
|
|
251
|
+
get bytePosition() {
|
|
252
|
+
return this.#bytePosition;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
|
|
256
|
-
return this
|
|
255
|
+
get bitPosition() {
|
|
256
|
+
return this.#bitPosition;
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
get ended() {
|
|
260
260
|
return (
|
|
261
|
-
this
|
|
262
|
-
this
|
|
261
|
+
this.#bytePosition === this.#byteLength &&
|
|
262
|
+
this.#bitPosition === this.#stopBitIndex
|
|
263
263
|
);
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
|
|
267
|
-
this
|
|
266
|
+
constructor(nalu: Uint8Array) {
|
|
267
|
+
this.#nalu = nalu;
|
|
268
268
|
|
|
269
269
|
for (let i = nalu.length - 1; i >= 0; i -= 1) {
|
|
270
|
-
if (this
|
|
270
|
+
if (this.#nalu[i] === 0) {
|
|
271
271
|
continue;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
const byte = nalu[i]!;
|
|
275
275
|
for (let j = 0; j < 8; j += 1) {
|
|
276
276
|
if (((byte >> j) & 1) === 1) {
|
|
277
|
-
this
|
|
278
|
-
this
|
|
279
|
-
this
|
|
277
|
+
this.#byteLength = i;
|
|
278
|
+
this.#stopBitIndex = j;
|
|
279
|
+
this.#readByte();
|
|
280
280
|
return;
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
throw new Error("
|
|
285
|
+
throw new Error("Stop bit not found");
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
this
|
|
290
|
-
if (this
|
|
291
|
-
this
|
|
292
|
-
this
|
|
293
|
-
this
|
|
288
|
+
#readByte() {
|
|
289
|
+
this.#byte = this.#nalu[this.#bytePosition]!;
|
|
290
|
+
if (this.#zeroCount === 2 && this.#byte === 3) {
|
|
291
|
+
this.#zeroCount = 0;
|
|
292
|
+
this.#bytePosition += 1;
|
|
293
|
+
this.#readByte();
|
|
294
294
|
return;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
if (this
|
|
298
|
-
this
|
|
297
|
+
if (this.#byte === 0) {
|
|
298
|
+
this.#zeroCount += 1;
|
|
299
299
|
} else {
|
|
300
|
-
this
|
|
300
|
+
this.#zeroCount = 0;
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
-
|
|
305
|
-
if (this
|
|
306
|
-
this
|
|
307
|
-
this
|
|
308
|
-
this
|
|
304
|
+
next() {
|
|
305
|
+
if (this.#bitPosition === -1) {
|
|
306
|
+
this.#bitPosition = 7;
|
|
307
|
+
this.#bytePosition += 1;
|
|
308
|
+
this.#readByte();
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
if (
|
|
312
|
-
this._bytePosition === this._byteLength &&
|
|
313
|
-
this._bitPosition === this._stopBitIndex
|
|
314
|
-
) {
|
|
311
|
+
if (this.ended) {
|
|
315
312
|
throw new Error("Bit index out of bounds");
|
|
316
313
|
}
|
|
317
314
|
|
|
318
|
-
const value = (this
|
|
319
|
-
this
|
|
315
|
+
const value = (this.#byte >> this.#bitPosition) & 1;
|
|
316
|
+
this.#bitPosition -= 1;
|
|
320
317
|
return value;
|
|
321
318
|
}
|
|
322
319
|
|
|
323
|
-
|
|
320
|
+
read(length: number): number {
|
|
324
321
|
if (length > 32) {
|
|
325
322
|
throw new Error("Read length too large");
|
|
326
323
|
}
|
|
@@ -332,13 +329,13 @@ export class NaluSodbBitReader {
|
|
|
332
329
|
return result;
|
|
333
330
|
}
|
|
334
331
|
|
|
335
|
-
|
|
332
|
+
skip(length: number) {
|
|
336
333
|
for (let i = 0; i < length; i += 1) {
|
|
337
334
|
this.next();
|
|
338
335
|
}
|
|
339
336
|
}
|
|
340
337
|
|
|
341
|
-
|
|
338
|
+
decodeExponentialGolombNumber(): number {
|
|
342
339
|
let length = 0;
|
|
343
340
|
while (this.next() === 0) {
|
|
344
341
|
length += 1;
|
|
@@ -349,14 +346,35 @@ export class NaluSodbBitReader {
|
|
|
349
346
|
return ((1 << length) | this.read(length)) - 1;
|
|
350
347
|
}
|
|
351
348
|
|
|
352
|
-
|
|
353
|
-
|
|
349
|
+
#save() {
|
|
350
|
+
return {
|
|
351
|
+
zeroCount: this.#zeroCount,
|
|
352
|
+
bytePosition: this.#bytePosition,
|
|
353
|
+
bitPosition: this.#bitPosition,
|
|
354
|
+
byte: this.#byte,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
#restore(state: {
|
|
359
|
+
zeroCount: number;
|
|
360
|
+
bytePosition: number;
|
|
361
|
+
bitPosition: number;
|
|
362
|
+
byte: number;
|
|
363
|
+
}) {
|
|
364
|
+
this.#zeroCount = state.zeroCount;
|
|
365
|
+
this.#bytePosition = state.bytePosition;
|
|
366
|
+
this.#bitPosition = state.bitPosition;
|
|
367
|
+
this.#byte = state.byte;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
peek(length: number) {
|
|
371
|
+
const state = this.#save();
|
|
354
372
|
const result = this.read(length);
|
|
355
|
-
|
|
373
|
+
this.#restore(state);
|
|
356
374
|
return result;
|
|
357
375
|
}
|
|
358
376
|
|
|
359
|
-
|
|
377
|
+
readBytes(length: number): Uint8Array {
|
|
360
378
|
const result = new Uint8Array(length);
|
|
361
379
|
for (let i = 0; i < length; i += 1) {
|
|
362
380
|
result[i] = this.read(8);
|
|
@@ -364,10 +382,10 @@ export class NaluSodbBitReader {
|
|
|
364
382
|
return result;
|
|
365
383
|
}
|
|
366
384
|
|
|
367
|
-
|
|
368
|
-
const
|
|
385
|
+
peekBytes(length: number): Uint8Array {
|
|
386
|
+
const state = this.#save();
|
|
369
387
|
const result = this.readBytes(length);
|
|
370
|
-
|
|
388
|
+
this.#restore(state);
|
|
371
389
|
return result;
|
|
372
390
|
}
|
|
373
391
|
}
|