@yume-chan/scrcpy 0.0.18 → 0.0.20
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 +157 -183
- package/bin/scrcpy-server +0 -0
- package/bin/version.d.ts +1 -1
- package/bin/version.js +1 -1
- package/esm/codec/av1.d.ts +33 -0
- package/esm/codec/av1.d.ts.map +1 -0
- package/esm/codec/av1.js +35 -0
- package/esm/codec/av1.js.map +1 -0
- package/esm/codec/h264.d.ts +78 -0
- package/esm/codec/h264.d.ts.map +1 -0
- package/esm/codec/h264.js +256 -0
- package/esm/codec/h264.js.map +1 -0
- package/esm/codec/h265.d.ts +490 -0
- package/esm/codec/h265.d.ts.map +1 -0
- package/esm/codec/h265.js +1098 -0
- package/esm/codec/h265.js.map +1 -0
- package/esm/codec/index.d.ts +5 -0
- package/esm/codec/index.d.ts.map +1 -0
- package/esm/codec/index.js +5 -0
- package/esm/codec/index.js.map +1 -0
- package/esm/codec/nalu.d.ts +44 -0
- package/esm/codec/nalu.d.ts.map +1 -0
- package/esm/codec/nalu.js +310 -0
- package/esm/codec/nalu.js.map +1 -0
- package/esm/control/back-or-screen-on.d.ts +2 -2
- package/esm/control/back-or-screen-on.d.ts.map +1 -1
- package/esm/control/back-or-screen-on.js +1 -1
- package/esm/control/basic.d.ts +5 -0
- package/esm/control/basic.d.ts.map +1 -0
- package/esm/control/basic.js +3 -0
- package/esm/control/basic.js.map +1 -0
- package/esm/control/hover-helper.d.ts +17 -17
- package/esm/control/hover-helper.d.ts.map +1 -1
- package/esm/control/hover-helper.js +43 -43
- package/esm/control/hover-helper.js.map +1 -1
- package/esm/control/index.d.ts +13 -11
- package/esm/control/index.d.ts.map +1 -1
- package/esm/control/index.js +13 -11
- package/esm/control/index.js.map +1 -1
- package/esm/control/inject-keycode.d.ts +193 -60
- package/esm/control/inject-keycode.d.ts.map +1 -1
- package/esm/control/inject-keycode.js +198 -61
- package/esm/control/inject-keycode.js.map +1 -1
- package/esm/control/inject-scroll.d.ts +2 -2
- package/esm/control/inject-scroll.d.ts.map +1 -1
- package/esm/control/inject-scroll.js +1 -1
- package/esm/control/inject-text.d.ts +7 -8
- package/esm/control/inject-text.d.ts.map +1 -1
- package/esm/control/inject-text.js +5 -6
- package/esm/control/inject-text.js.map +1 -1
- package/esm/control/inject-touch.d.ts +32 -37
- package/esm/control/inject-touch.d.ts.map +1 -1
- package/esm/control/inject-touch.js +35 -62
- package/esm/control/inject-touch.js.map +1 -1
- package/esm/control/rotate-device.d.ts +4 -6
- package/esm/control/rotate-device.d.ts.map +1 -1
- package/esm/control/rotate-device.js +2 -4
- package/esm/control/rotate-device.js.map +1 -1
- package/esm/control/serializer.d.ts +25 -33
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +53 -78
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/set-clipboard.d.ts +2 -2
- package/esm/control/set-clipboard.d.ts.map +1 -1
- package/esm/control/set-clipboard.js +1 -1
- package/esm/control/set-screen-power-mode.d.ts +10 -11
- package/esm/control/set-screen-power-mode.d.ts.map +1 -1
- package/esm/control/set-screen-power-mode.js +10 -11
- package/esm/control/set-screen-power-mode.js.map +1 -1
- package/esm/control/type.d.ts +28 -14
- package/esm/control/type.d.ts.map +1 -1
- package/esm/control/type.js +40 -18
- package/esm/control/type.js.map +1 -1
- package/esm/control/writer.d.ts +28 -0
- package/esm/control/writer.d.ts.map +1 -0
- package/esm/control/writer.js +53 -0
- package/esm/control/writer.js.map +1 -0
- package/esm/device-message/ack-clipboard.d.ts +8 -8
- package/esm/device-message/ack-clipboard.d.ts.map +1 -1
- package/esm/device-message/ack-clipboard.js +5 -5
- package/esm/device-message/clipboard.d.ts +9 -9
- package/esm/device-message/clipboard.d.ts.map +1 -1
- package/esm/device-message/clipboard.js +6 -6
- package/esm/device-message/index.d.ts +4 -4
- package/esm/device-message/index.js +4 -4
- package/esm/device-message/stream.d.ts +7 -7
- package/esm/device-message/stream.d.ts.map +1 -1
- package/esm/device-message/stream.js +34 -19
- package/esm/device-message/stream.js.map +1 -1
- package/esm/device-message/type.d.ts +4 -4
- package/esm/device-message/type.js +6 -6
- package/esm/index.d.ts +4 -5
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -5
- package/esm/index.js.map +1 -1
- package/esm/options/1_16/codec-options.d.ts +19 -19
- package/esm/options/1_16/codec-options.d.ts.map +1 -1
- package/esm/options/1_16/codec-options.js +25 -25
- package/esm/options/1_16/codec-options.js.map +1 -1
- package/esm/options/1_16/float-to-uint16.d.ts +5 -0
- package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
- package/esm/options/1_16/float-to-uint16.js +27 -0
- package/esm/options/1_16/float-to-uint16.js.map +1 -0
- package/esm/options/1_16/index.d.ts +6 -4
- package/esm/options/1_16/index.d.ts.map +1 -1
- package/esm/options/1_16/index.js +6 -4
- package/esm/options/1_16/index.js.map +1 -1
- package/esm/options/1_16/init.d.ts +66 -0
- package/esm/options/1_16/init.d.ts.map +1 -0
- package/esm/options/1_16/init.js +16 -0
- package/esm/options/1_16/init.js.map +1 -0
- package/esm/options/1_16/message.d.ts +32 -0
- package/esm/options/1_16/message.d.ts.map +1 -0
- package/esm/options/1_16/message.js +37 -0
- package/esm/options/1_16/message.js.map +1 -0
- package/esm/options/1_16/options.d.ts +48 -93
- package/esm/options/1_16/options.d.ts.map +1 -1
- package/esm/options/1_16/options.js +152 -189
- package/esm/options/1_16/options.js.map +1 -1
- package/esm/options/1_16/scroll.d.ts +26 -26
- package/esm/options/1_16/scroll.d.ts.map +1 -1
- package/esm/options/1_16/scroll.js +54 -55
- package/esm/options/1_16/scroll.js.map +1 -1
- package/esm/options/1_17.d.ts +33 -0
- package/esm/options/1_17.d.ts.map +1 -0
- package/esm/options/1_17.js +42 -0
- package/esm/options/1_17.js.map +1 -0
- package/esm/options/1_18.d.ts +59 -19
- package/esm/options/1_18.d.ts.map +1 -1
- package/esm/options/1_18.js +78 -45
- package/esm/options/1_18.js.map +1 -1
- package/esm/options/1_21.d.ts +41 -20
- package/esm/options/1_21.d.ts.map +1 -1
- package/esm/options/1_21.js +51 -36
- package/esm/options/1_21.js.map +1 -1
- package/esm/options/1_22/index.d.ts +3 -2
- package/esm/options/1_22/index.d.ts.map +1 -1
- package/esm/options/1_22/index.js +3 -2
- package/esm/options/1_22/index.js.map +1 -1
- package/esm/options/1_22/init.d.ts +17 -0
- package/esm/options/1_22/init.d.ts.map +1 -0
- package/esm/options/1_22/init.js +2 -0
- package/esm/options/1_22/init.js.map +1 -0
- package/esm/options/1_22/options.d.ts +35 -28
- package/esm/options/1_22/options.d.ts.map +1 -1
- package/esm/options/1_22/options.js +36 -25
- package/esm/options/1_22/options.js.map +1 -1
- package/esm/options/1_22/scroll.d.ts +16 -16
- package/esm/options/1_22/scroll.d.ts.map +1 -1
- package/esm/options/1_22/scroll.js +14 -14
- package/esm/options/1_23.d.ts +36 -11
- package/esm/options/1_23.d.ts.map +1 -1
- package/esm/options/1_23.js +44 -34
- package/esm/options/1_23.js.map +1 -1
- package/esm/options/1_24.d.ts +34 -8
- package/esm/options/1_24.d.ts.map +1 -1
- package/esm/options/1_24.js +22 -12
- package/esm/options/1_24.js.map +1 -1
- package/esm/options/1_25/index.d.ts +2 -2
- package/esm/options/1_25/index.js +2 -2
- package/esm/options/1_25/options.d.ts +10 -5
- package/esm/options/1_25/options.d.ts.map +1 -1
- package/esm/options/1_25/options.js +21 -7
- package/esm/options/1_25/options.js.map +1 -1
- package/esm/options/1_25/scroll.d.ts +19 -18
- package/esm/options/1_25/scroll.d.ts.map +1 -1
- package/esm/options/1_25/scroll.js +33 -32
- package/esm/options/1_25/scroll.js.map +1 -1
- package/esm/options/2_0.d.ts +91 -0
- package/esm/options/2_0.d.ts.map +1 -0
- package/esm/options/2_0.js +244 -0
- package/esm/options/2_0.js.map +1 -0
- package/esm/options/codec.d.ts +52 -0
- package/esm/options/codec.d.ts.map +1 -0
- package/esm/options/codec.js +26 -0
- package/esm/options/codec.js.map +1 -0
- package/esm/options/index.d.ts +12 -8
- package/esm/options/index.d.ts.map +1 -1
- package/esm/options/index.js +12 -8
- package/esm/options/index.js.map +1 -1
- package/esm/options/latest.d.ts +12 -0
- package/esm/options/latest.d.ts.map +1 -0
- package/esm/options/latest.js +8 -0
- package/esm/options/latest.js.map +1 -0
- package/esm/options/types.d.ts +86 -46
- package/esm/options/types.d.ts.map +1 -1
- package/esm/options/types.js +69 -17
- package/esm/options/types.js.map +1 -1
- package/package.json +10 -16
- package/src/codec/av1.ts +33 -0
- package/src/codec/h264.ts +317 -0
- package/src/codec/h265.ts +1375 -0
- package/src/codec/index.ts +4 -0
- package/src/codec/nalu.ts +373 -0
- package/src/control/back-or-screen-on.ts +1 -1
- package/src/control/basic.ts +3 -0
- package/src/control/hover-helper.ts +2 -4
- package/src/control/index.ts +2 -0
- package/src/control/inject-keycode.ts +194 -51
- package/src/control/inject-scroll.ts +1 -1
- package/src/control/inject-text.ts +6 -9
- package/src/control/inject-touch.ts +16 -55
- package/src/control/rotate-device.ts +3 -7
- package/src/control/serializer.ts +49 -105
- package/src/control/set-clipboard.ts +1 -1
- package/src/control/set-screen-power-mode.ts +6 -9
- package/src/control/type.ts +32 -0
- package/src/control/writer.ts +87 -0
- package/src/device-message/ack-clipboard.ts +1 -1
- package/src/device-message/clipboard.ts +1 -1
- package/src/device-message/stream.ts +32 -12
- package/src/index.ts +4 -5
- package/src/options/1_16/codec-options.ts +5 -8
- package/src/options/1_16/float-to-uint16.ts +33 -0
- package/src/options/1_16/index.ts +3 -1
- package/src/options/1_16/init.ts +80 -0
- package/src/options/1_16/message.ts +55 -0
- package/src/options/1_16/options.ts +152 -256
- package/src/options/1_16/scroll.ts +2 -5
- package/src/options/1_17.ts +66 -0
- package/src/options/1_18.ts +106 -42
- package/src/options/1_21.ts +51 -30
- package/src/options/1_22/index.ts +1 -0
- package/src/options/1_22/init.ts +19 -0
- package/src/options/1_22/options.ts +40 -46
- package/src/options/1_22/scroll.ts +2 -2
- package/src/options/1_23.ts +33 -23
- package/src/options/1_24.ts +25 -11
- package/src/options/1_25/options.ts +25 -6
- package/src/options/1_25/scroll.ts +5 -7
- package/src/options/2_0.ts +342 -0
- package/src/options/codec.ts +98 -0
- package/src/options/index.ts +7 -3
- package/src/options/latest.ts +14 -0
- package/src/options/types.ts +158 -48
- package/tsconfig.build.json +9 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/adb/client.d.ts +0 -41
- package/esm/adb/client.d.ts.map +0 -1
- package/esm/adb/client.js +0 -243
- package/esm/adb/client.js.map +0 -1
- package/esm/adb/connection.d.ts +0 -47
- package/esm/adb/connection.d.ts.map +0 -1
- package/esm/adb/connection.js +0 -110
- package/esm/adb/connection.js.map +0 -1
- package/esm/adb/index.d.ts +0 -4
- package/esm/adb/index.d.ts.map +0 -1
- package/esm/adb/index.js +0 -4
- package/esm/adb/index.js.map +0 -1
- package/esm/adb/options/1_16.d.ts +0 -8
- package/esm/adb/options/1_16.d.ts.map +0 -1
- package/esm/adb/options/1_16.js +0 -20
- package/esm/adb/options/1_16.js.map +0 -1
- package/esm/adb/options/1_22.d.ts +0 -8
- package/esm/adb/options/1_22.d.ts.map +0 -1
- package/esm/adb/options/1_22.js +0 -17
- package/esm/adb/options/1_22.js.map +0 -1
- package/esm/adb/options/index.d.ts +0 -4
- package/esm/adb/options/index.d.ts.map +0 -1
- package/esm/adb/options/index.js +0 -4
- package/esm/adb/options/index.js.map +0 -1
- package/esm/adb/options/types.d.ts +0 -24
- package/esm/adb/options/types.d.ts.map +0 -1
- package/esm/adb/options/types.js +0 -37
- package/esm/adb/options/types.js.map +0 -1
- package/esm/codec.d.ts +0 -34
- package/esm/codec.d.ts.map +0 -1
- package/esm/codec.js +0 -37
- package/esm/codec.js.map +0 -1
- package/esm/options/1_16/h264-configuration.d.ts +0 -49
- package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
- package/esm/options/1_16/h264-configuration.js +0 -414
- package/esm/options/1_16/h264-configuration.js.map +0 -1
- package/esm/options/1_16/sps.d.ts +0 -22
- package/esm/options/1_16/sps.d.ts.map +0 -1
- package/esm/options/1_16/sps.js +0 -263
- package/esm/options/1_16/sps.js.map +0 -1
- package/src/adb/client.ts +0 -345
- package/src/adb/connection.ts +0 -192
- package/src/adb/index.ts +0 -3
- package/src/adb/options/1_16.ts +0 -30
- package/src/adb/options/1_22.ts +0 -26
- package/src/adb/options/index.ts +0 -3
- package/src/adb/options/types.ts +0 -75
- package/src/codec.ts +0 -35
- package/src/options/1_16/h264-configuration.ts +0 -485
package/esm/codec/av1.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export var AndroidAv1Profile;
|
|
2
|
+
(function (AndroidAv1Profile) {
|
|
3
|
+
AndroidAv1Profile[AndroidAv1Profile["Main8"] = 1] = "Main8";
|
|
4
|
+
AndroidAv1Profile[AndroidAv1Profile["Main10"] = 2] = "Main10";
|
|
5
|
+
AndroidAv1Profile[AndroidAv1Profile["Main10Hdr10"] = 4096] = "Main10Hdr10";
|
|
6
|
+
AndroidAv1Profile[AndroidAv1Profile["Main10Hdr10Plus"] = 8192] = "Main10Hdr10Plus";
|
|
7
|
+
})(AndroidAv1Profile = AndroidAv1Profile || (AndroidAv1Profile = {}));
|
|
8
|
+
export var AndroidAv1Level;
|
|
9
|
+
(function (AndroidAv1Level) {
|
|
10
|
+
AndroidAv1Level[AndroidAv1Level["Level2"] = 1] = "Level2";
|
|
11
|
+
AndroidAv1Level[AndroidAv1Level["Level21"] = 2] = "Level21";
|
|
12
|
+
AndroidAv1Level[AndroidAv1Level["Level22"] = 4] = "Level22";
|
|
13
|
+
AndroidAv1Level[AndroidAv1Level["Level23"] = 8] = "Level23";
|
|
14
|
+
AndroidAv1Level[AndroidAv1Level["Level3"] = 16] = "Level3";
|
|
15
|
+
AndroidAv1Level[AndroidAv1Level["Level31"] = 32] = "Level31";
|
|
16
|
+
AndroidAv1Level[AndroidAv1Level["Level32"] = 64] = "Level32";
|
|
17
|
+
AndroidAv1Level[AndroidAv1Level["Level33"] = 128] = "Level33";
|
|
18
|
+
AndroidAv1Level[AndroidAv1Level["Level4"] = 256] = "Level4";
|
|
19
|
+
AndroidAv1Level[AndroidAv1Level["Level41"] = 512] = "Level41";
|
|
20
|
+
AndroidAv1Level[AndroidAv1Level["Level42"] = 1024] = "Level42";
|
|
21
|
+
AndroidAv1Level[AndroidAv1Level["Level43"] = 2048] = "Level43";
|
|
22
|
+
AndroidAv1Level[AndroidAv1Level["Level5"] = 4096] = "Level5";
|
|
23
|
+
AndroidAv1Level[AndroidAv1Level["Level51"] = 8192] = "Level51";
|
|
24
|
+
AndroidAv1Level[AndroidAv1Level["Level52"] = 16384] = "Level52";
|
|
25
|
+
AndroidAv1Level[AndroidAv1Level["Level53"] = 32768] = "Level53";
|
|
26
|
+
AndroidAv1Level[AndroidAv1Level["Level6"] = 65536] = "Level6";
|
|
27
|
+
AndroidAv1Level[AndroidAv1Level["Level61"] = 131072] = "Level61";
|
|
28
|
+
AndroidAv1Level[AndroidAv1Level["Level62"] = 262144] = "Level62";
|
|
29
|
+
AndroidAv1Level[AndroidAv1Level["Level63"] = 524288] = "Level63";
|
|
30
|
+
AndroidAv1Level[AndroidAv1Level["Level7"] = 1048576] = "Level7";
|
|
31
|
+
AndroidAv1Level[AndroidAv1Level["Level71"] = 2097152] = "Level71";
|
|
32
|
+
AndroidAv1Level[AndroidAv1Level["Level72"] = 4194304] = "Level72";
|
|
33
|
+
AndroidAv1Level[AndroidAv1Level["Level73"] = 8388608] = "Level73";
|
|
34
|
+
})(AndroidAv1Level = AndroidAv1Level || (AndroidAv1Level = {}));
|
|
35
|
+
//# sourceMappingURL=av1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"av1.js","sourceRoot":"","sources":["../../src/codec/av1.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,2DAAc,CAAA;IACd,6DAAe,CAAA;IACf,0EAAqB,CAAA;IACrB,kFAAyB,CAAA;AAC7B,CAAC,EALW,iBAAiB,GAAjB,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAN,IAAY,eAyBX;AAzBD,WAAY,eAAe;IACvB,yDAAe,CAAA;IACf,2DAAgB,CAAA;IAChB,2DAAgB,CAAA;IAChB,2DAAgB,CAAA;IAChB,0DAAe,CAAA;IACf,4DAAgB,CAAA;IAChB,4DAAgB,CAAA;IAChB,6DAAgB,CAAA;IAChB,2DAAe,CAAA;IACf,6DAAgB,CAAA;IAChB,8DAAiB,CAAA;IACjB,8DAAiB,CAAA;IACjB,4DAAgB,CAAA;IAChB,8DAAiB,CAAA;IACjB,+DAAiB,CAAA;IACjB,+DAAiB,CAAA;IACjB,6DAAgB,CAAA;IAChB,gEAAiB,CAAA;IACjB,gEAAiB,CAAA;IACjB,gEAAiB,CAAA;IACjB,+DAAgB,CAAA;IAChB,iEAAiB,CAAA;IACjB,iEAAiB,CAAA;IACjB,iEAAiB,CAAA;AACrB,CAAC,EAzBW,eAAe,GAAf,eAAe,KAAf,eAAe,QAyB1B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export declare enum AndroidAvcProfile {
|
|
2
|
+
Baseline = 1,
|
|
3
|
+
Main = 2,
|
|
4
|
+
Extended = 4,
|
|
5
|
+
High = 8,
|
|
6
|
+
High10 = 16,
|
|
7
|
+
High422 = 32,
|
|
8
|
+
High444 = 64,
|
|
9
|
+
ConstrainedBaseline = 65536,
|
|
10
|
+
ConstrainedHigh = 524288
|
|
11
|
+
}
|
|
12
|
+
export declare enum AndroidAvcLevel {
|
|
13
|
+
Level1 = 1,
|
|
14
|
+
Level1b = 2,
|
|
15
|
+
Level11 = 4,
|
|
16
|
+
Level12 = 8,
|
|
17
|
+
Level13 = 16,
|
|
18
|
+
Level2 = 32,
|
|
19
|
+
Level21 = 64,
|
|
20
|
+
Level22 = 128,
|
|
21
|
+
Level3 = 256,
|
|
22
|
+
Level31 = 512,
|
|
23
|
+
Level32 = 1024,
|
|
24
|
+
Level4 = 2048,
|
|
25
|
+
Level41 = 4096,
|
|
26
|
+
Level42 = 8192,
|
|
27
|
+
Level5 = 16384,
|
|
28
|
+
Level51 = 32768,
|
|
29
|
+
Level52 = 65536,
|
|
30
|
+
Level6 = 131072,
|
|
31
|
+
Level61 = 262144,
|
|
32
|
+
Level62 = 524288
|
|
33
|
+
}
|
|
34
|
+
export declare function h264ParseSequenceParameterSet(nalu: Uint8Array): {
|
|
35
|
+
profile_idc: number;
|
|
36
|
+
constraint_set: number;
|
|
37
|
+
constraint_set0_flag: boolean;
|
|
38
|
+
constraint_set1_flag: boolean;
|
|
39
|
+
constraint_set2_flag: boolean;
|
|
40
|
+
constraint_set3_flag: boolean;
|
|
41
|
+
constraint_set4_flag: boolean;
|
|
42
|
+
constraint_set5_flag: boolean;
|
|
43
|
+
level_idc: number;
|
|
44
|
+
seq_parameter_set_id: number;
|
|
45
|
+
pic_width_in_mbs_minus1: number;
|
|
46
|
+
pic_height_in_map_units_minus1: number;
|
|
47
|
+
frame_mbs_only_flag: number;
|
|
48
|
+
frame_cropping_flag: boolean;
|
|
49
|
+
frame_crop_left_offset: number;
|
|
50
|
+
frame_crop_right_offset: number;
|
|
51
|
+
frame_crop_top_offset: number;
|
|
52
|
+
frame_crop_bottom_offset: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Find Sequence Parameter Set (SPS) and Picture Parameter Set (PPS)
|
|
56
|
+
* from H.264 Annex B formatted data.
|
|
57
|
+
*/
|
|
58
|
+
export declare function h264SearchConfiguration(buffer: Uint8Array): {
|
|
59
|
+
sequenceParameterSet: Uint8Array;
|
|
60
|
+
pictureParameterSet: Uint8Array;
|
|
61
|
+
};
|
|
62
|
+
export interface H264Configuration {
|
|
63
|
+
pictureParameterSet: Uint8Array;
|
|
64
|
+
sequenceParameterSet: Uint8Array;
|
|
65
|
+
profileIndex: number;
|
|
66
|
+
constraintSet: number;
|
|
67
|
+
levelIndex: number;
|
|
68
|
+
encodedWidth: number;
|
|
69
|
+
encodedHeight: number;
|
|
70
|
+
cropLeft: number;
|
|
71
|
+
cropRight: number;
|
|
72
|
+
cropTop: number;
|
|
73
|
+
cropBottom: number;
|
|
74
|
+
croppedWidth: number;
|
|
75
|
+
croppedHeight: number;
|
|
76
|
+
}
|
|
77
|
+
export declare function h264ParseConfiguration(data: Uint8Array): H264Configuration;
|
|
78
|
+
//# sourceMappingURL=h264.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../src/codec/h264.ts"],"names":[],"mappings":"AAOA,oBAAY,iBAAiB;IACzB,QAAQ,IAAS;IACjB,IAAI,IAAS;IACb,QAAQ,IAAS;IACjB,IAAI,IAAS;IACb,MAAM,KAAS;IACf,OAAO,KAAS;IAChB,OAAO,KAAS;IAChB,mBAAmB,QAAU;IAC7B,eAAe,SAAU;CAC5B;AAED,oBAAY,eAAe;IACvB,MAAM,IAAS;IACf,OAAO,IAAS;IAChB,OAAO,IAAS;IAChB,OAAO,IAAS;IAChB,OAAO,KAAS;IAChB,MAAM,KAAS;IACf,OAAO,KAAS;IAChB,OAAO,MAAS;IAChB,MAAM,MAAS;IACf,OAAO,MAAS;IAChB,OAAO,OAAU;IACjB,MAAM,OAAU;IAChB,OAAO,OAAU;IACjB,OAAO,OAAU;IACjB,MAAM,QAAU;IAChB,OAAO,QAAU;IACjB,OAAO,QAAU;IACjB,MAAM,SAAU;IAChB,OAAO,SAAU;IACjB,OAAO,SAAU;CACpB;AAWD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;EAmK7D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU;;;EAgCzD;AAED,MAAM,WAAW,iBAAiB;IAC9B,mBAAmB,EAAE,UAAU,CAAC;IAChC,oBAAoB,EAAE,UAAU,CAAC;IAEjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CA2C1E"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
// cspell: ignore golomb
|
|
2
|
+
// cspell: ignore qpprime
|
|
3
|
+
// cspell: ignore colour
|
|
4
|
+
import { NaluSodbBitReader, annexBSplitNalu } from "./nalu.js";
|
|
5
|
+
// From https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel
|
|
6
|
+
export var AndroidAvcProfile;
|
|
7
|
+
(function (AndroidAvcProfile) {
|
|
8
|
+
AndroidAvcProfile[AndroidAvcProfile["Baseline"] = 1] = "Baseline";
|
|
9
|
+
AndroidAvcProfile[AndroidAvcProfile["Main"] = 2] = "Main";
|
|
10
|
+
AndroidAvcProfile[AndroidAvcProfile["Extended"] = 4] = "Extended";
|
|
11
|
+
AndroidAvcProfile[AndroidAvcProfile["High"] = 8] = "High";
|
|
12
|
+
AndroidAvcProfile[AndroidAvcProfile["High10"] = 16] = "High10";
|
|
13
|
+
AndroidAvcProfile[AndroidAvcProfile["High422"] = 32] = "High422";
|
|
14
|
+
AndroidAvcProfile[AndroidAvcProfile["High444"] = 64] = "High444";
|
|
15
|
+
AndroidAvcProfile[AndroidAvcProfile["ConstrainedBaseline"] = 65536] = "ConstrainedBaseline";
|
|
16
|
+
AndroidAvcProfile[AndroidAvcProfile["ConstrainedHigh"] = 524288] = "ConstrainedHigh";
|
|
17
|
+
})(AndroidAvcProfile = AndroidAvcProfile || (AndroidAvcProfile = {}));
|
|
18
|
+
export var AndroidAvcLevel;
|
|
19
|
+
(function (AndroidAvcLevel) {
|
|
20
|
+
AndroidAvcLevel[AndroidAvcLevel["Level1"] = 1] = "Level1";
|
|
21
|
+
AndroidAvcLevel[AndroidAvcLevel["Level1b"] = 2] = "Level1b";
|
|
22
|
+
AndroidAvcLevel[AndroidAvcLevel["Level11"] = 4] = "Level11";
|
|
23
|
+
AndroidAvcLevel[AndroidAvcLevel["Level12"] = 8] = "Level12";
|
|
24
|
+
AndroidAvcLevel[AndroidAvcLevel["Level13"] = 16] = "Level13";
|
|
25
|
+
AndroidAvcLevel[AndroidAvcLevel["Level2"] = 32] = "Level2";
|
|
26
|
+
AndroidAvcLevel[AndroidAvcLevel["Level21"] = 64] = "Level21";
|
|
27
|
+
AndroidAvcLevel[AndroidAvcLevel["Level22"] = 128] = "Level22";
|
|
28
|
+
AndroidAvcLevel[AndroidAvcLevel["Level3"] = 256] = "Level3";
|
|
29
|
+
AndroidAvcLevel[AndroidAvcLevel["Level31"] = 512] = "Level31";
|
|
30
|
+
AndroidAvcLevel[AndroidAvcLevel["Level32"] = 1024] = "Level32";
|
|
31
|
+
AndroidAvcLevel[AndroidAvcLevel["Level4"] = 2048] = "Level4";
|
|
32
|
+
AndroidAvcLevel[AndroidAvcLevel["Level41"] = 4096] = "Level41";
|
|
33
|
+
AndroidAvcLevel[AndroidAvcLevel["Level42"] = 8192] = "Level42";
|
|
34
|
+
AndroidAvcLevel[AndroidAvcLevel["Level5"] = 16384] = "Level5";
|
|
35
|
+
AndroidAvcLevel[AndroidAvcLevel["Level51"] = 32768] = "Level51";
|
|
36
|
+
AndroidAvcLevel[AndroidAvcLevel["Level52"] = 65536] = "Level52";
|
|
37
|
+
AndroidAvcLevel[AndroidAvcLevel["Level6"] = 131072] = "Level6";
|
|
38
|
+
AndroidAvcLevel[AndroidAvcLevel["Level61"] = 262144] = "Level61";
|
|
39
|
+
AndroidAvcLevel[AndroidAvcLevel["Level62"] = 524288] = "Level62";
|
|
40
|
+
})(AndroidAvcLevel = AndroidAvcLevel || (AndroidAvcLevel = {}));
|
|
41
|
+
// H.264 has two standards: ITU-T H.264 and ISO/IEC 14496-10
|
|
42
|
+
// they have the same content, and refer themselves as "H.264".
|
|
43
|
+
// The name "AVC" (Advanced Video Coding) is only used in ISO spec name,
|
|
44
|
+
// and other ISO specs referring to H.264.
|
|
45
|
+
// Because this module parses H.264 Annex B format,
|
|
46
|
+
// it's named "h264" instead of "avc".
|
|
47
|
+
// 7.3.2.1.1 Sequence parameter set data syntax
|
|
48
|
+
// Variable names in this method uses the snake_case convention as in the spec for easier referencing.
|
|
49
|
+
export function h264ParseSequenceParameterSet(nalu) {
|
|
50
|
+
const reader = new NaluSodbBitReader(nalu);
|
|
51
|
+
if (reader.next() !== 0) {
|
|
52
|
+
throw new Error("Invalid data");
|
|
53
|
+
}
|
|
54
|
+
const nal_ref_idc = reader.read(2);
|
|
55
|
+
const nal_unit_type = reader.read(5);
|
|
56
|
+
if (nal_unit_type !== 7) {
|
|
57
|
+
throw new Error("Invalid data");
|
|
58
|
+
}
|
|
59
|
+
if (nal_ref_idc === 0) {
|
|
60
|
+
throw new Error("Invalid data");
|
|
61
|
+
}
|
|
62
|
+
const profile_idc = reader.read(8);
|
|
63
|
+
const constraint_set = reader.peek(8);
|
|
64
|
+
const constraint_set0_flag = !!reader.next();
|
|
65
|
+
const constraint_set1_flag = !!reader.next();
|
|
66
|
+
const constraint_set2_flag = !!reader.next();
|
|
67
|
+
const constraint_set3_flag = !!reader.next();
|
|
68
|
+
const constraint_set4_flag = !!reader.next();
|
|
69
|
+
const constraint_set5_flag = !!reader.next();
|
|
70
|
+
// reserved_zero_2bits
|
|
71
|
+
if (reader.read(2) !== 0) {
|
|
72
|
+
throw new Error("Invalid data");
|
|
73
|
+
}
|
|
74
|
+
const level_idc = reader.read(8);
|
|
75
|
+
const seq_parameter_set_id = reader.decodeExponentialGolombNumber();
|
|
76
|
+
if (profile_idc === 100 ||
|
|
77
|
+
profile_idc === 110 ||
|
|
78
|
+
profile_idc === 122 ||
|
|
79
|
+
profile_idc === 244 ||
|
|
80
|
+
profile_idc === 44 ||
|
|
81
|
+
profile_idc === 83 ||
|
|
82
|
+
profile_idc === 86 ||
|
|
83
|
+
profile_idc === 118 ||
|
|
84
|
+
profile_idc === 128 ||
|
|
85
|
+
profile_idc === 138 ||
|
|
86
|
+
profile_idc === 139 ||
|
|
87
|
+
profile_idc === 134) {
|
|
88
|
+
const chroma_format_idc = reader.decodeExponentialGolombNumber();
|
|
89
|
+
if (chroma_format_idc === 3) {
|
|
90
|
+
// separate_colour_plane_flag
|
|
91
|
+
reader.next();
|
|
92
|
+
}
|
|
93
|
+
// bit_depth_luma_minus8
|
|
94
|
+
reader.decodeExponentialGolombNumber();
|
|
95
|
+
// bit_depth_chroma_minus8
|
|
96
|
+
reader.decodeExponentialGolombNumber();
|
|
97
|
+
// qpprime_y_zero_transform_bypass_flag
|
|
98
|
+
reader.next();
|
|
99
|
+
const seq_scaling_matrix_present_flag = !!reader.next();
|
|
100
|
+
if (seq_scaling_matrix_present_flag) {
|
|
101
|
+
const seq_scaling_list_present_flag = [];
|
|
102
|
+
for (let i = 0; i < (chroma_format_idc !== 3 ? 8 : 12); i += 1) {
|
|
103
|
+
seq_scaling_list_present_flag[i] = !!reader.next();
|
|
104
|
+
if (seq_scaling_list_present_flag[i])
|
|
105
|
+
if (i < 6) {
|
|
106
|
+
// TODO
|
|
107
|
+
// scaling_list( ScalingList4x4[ i ], 16,
|
|
108
|
+
// UseDefaultScalingMatrix4x4Flag[ i ])
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// TODO
|
|
112
|
+
// scaling_list( ScalingList8x8[ i − 6 ], 64,
|
|
113
|
+
// UseDefaultScalingMatrix8x8Flag[ i − 6 ] )
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// log2_max_frame_num_minus4
|
|
119
|
+
reader.decodeExponentialGolombNumber();
|
|
120
|
+
const pic_order_cnt_type = reader.decodeExponentialGolombNumber();
|
|
121
|
+
if (pic_order_cnt_type === 0) {
|
|
122
|
+
// log2_max_pic_order_cnt_lsb_minus4
|
|
123
|
+
reader.decodeExponentialGolombNumber();
|
|
124
|
+
}
|
|
125
|
+
else if (pic_order_cnt_type === 1) {
|
|
126
|
+
// delta_pic_order_always_zero_flag
|
|
127
|
+
reader.next();
|
|
128
|
+
// offset_for_non_ref_pic
|
|
129
|
+
reader.decodeExponentialGolombNumber();
|
|
130
|
+
// offset_for_top_to_bottom_field
|
|
131
|
+
reader.decodeExponentialGolombNumber();
|
|
132
|
+
const num_ref_frames_in_pic_order_cnt_cycle = reader.decodeExponentialGolombNumber();
|
|
133
|
+
const offset_for_ref_frame = [];
|
|
134
|
+
for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i += 1) {
|
|
135
|
+
offset_for_ref_frame[i] = reader.decodeExponentialGolombNumber();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// max_num_ref_frames
|
|
139
|
+
reader.decodeExponentialGolombNumber();
|
|
140
|
+
// gaps_in_frame_num_value_allowed_flag
|
|
141
|
+
reader.next();
|
|
142
|
+
const pic_width_in_mbs_minus1 = reader.decodeExponentialGolombNumber();
|
|
143
|
+
const pic_height_in_map_units_minus1 = reader.decodeExponentialGolombNumber();
|
|
144
|
+
const frame_mbs_only_flag = reader.next();
|
|
145
|
+
if (!frame_mbs_only_flag) {
|
|
146
|
+
// mb_adaptive_frame_field_flag
|
|
147
|
+
reader.next();
|
|
148
|
+
}
|
|
149
|
+
// direct_8x8_inference_flag
|
|
150
|
+
reader.next();
|
|
151
|
+
const frame_cropping_flag = !!reader.next();
|
|
152
|
+
let frame_crop_left_offset;
|
|
153
|
+
let frame_crop_right_offset;
|
|
154
|
+
let frame_crop_top_offset;
|
|
155
|
+
let frame_crop_bottom_offset;
|
|
156
|
+
if (frame_cropping_flag) {
|
|
157
|
+
frame_crop_left_offset = reader.decodeExponentialGolombNumber();
|
|
158
|
+
frame_crop_right_offset = reader.decodeExponentialGolombNumber();
|
|
159
|
+
frame_crop_top_offset = reader.decodeExponentialGolombNumber();
|
|
160
|
+
frame_crop_bottom_offset = reader.decodeExponentialGolombNumber();
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
frame_crop_left_offset = 0;
|
|
164
|
+
frame_crop_right_offset = 0;
|
|
165
|
+
frame_crop_top_offset = 0;
|
|
166
|
+
frame_crop_bottom_offset = 0;
|
|
167
|
+
}
|
|
168
|
+
const vui_parameters_present_flag = !!reader.next();
|
|
169
|
+
if (vui_parameters_present_flag) {
|
|
170
|
+
// TODO
|
|
171
|
+
// vui_parameters( )
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
profile_idc,
|
|
175
|
+
constraint_set,
|
|
176
|
+
constraint_set0_flag,
|
|
177
|
+
constraint_set1_flag,
|
|
178
|
+
constraint_set2_flag,
|
|
179
|
+
constraint_set3_flag,
|
|
180
|
+
constraint_set4_flag,
|
|
181
|
+
constraint_set5_flag,
|
|
182
|
+
level_idc,
|
|
183
|
+
seq_parameter_set_id,
|
|
184
|
+
pic_width_in_mbs_minus1,
|
|
185
|
+
pic_height_in_map_units_minus1,
|
|
186
|
+
frame_mbs_only_flag,
|
|
187
|
+
frame_cropping_flag,
|
|
188
|
+
frame_crop_left_offset,
|
|
189
|
+
frame_crop_right_offset,
|
|
190
|
+
frame_crop_top_offset,
|
|
191
|
+
frame_crop_bottom_offset,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Find Sequence Parameter Set (SPS) and Picture Parameter Set (PPS)
|
|
196
|
+
* from H.264 Annex B formatted data.
|
|
197
|
+
*/
|
|
198
|
+
export function h264SearchConfiguration(buffer) {
|
|
199
|
+
let sequenceParameterSet;
|
|
200
|
+
let pictureParameterSet;
|
|
201
|
+
for (const nalu of annexBSplitNalu(buffer)) {
|
|
202
|
+
const naluType = nalu[0] & 0x1f;
|
|
203
|
+
switch (naluType) {
|
|
204
|
+
case 7: // Sequence parameter set
|
|
205
|
+
sequenceParameterSet = nalu;
|
|
206
|
+
if (pictureParameterSet) {
|
|
207
|
+
return {
|
|
208
|
+
sequenceParameterSet,
|
|
209
|
+
pictureParameterSet,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
break;
|
|
213
|
+
case 8: // Picture parameter set
|
|
214
|
+
pictureParameterSet = nalu;
|
|
215
|
+
if (sequenceParameterSet) {
|
|
216
|
+
return {
|
|
217
|
+
sequenceParameterSet,
|
|
218
|
+
pictureParameterSet,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
default:
|
|
223
|
+
// ignore
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
throw new Error("Invalid data");
|
|
228
|
+
}
|
|
229
|
+
export function h264ParseConfiguration(data) {
|
|
230
|
+
const { sequenceParameterSet, pictureParameterSet } = h264SearchConfiguration(data);
|
|
231
|
+
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, } = h264ParseSequenceParameterSet(sequenceParameterSet);
|
|
232
|
+
const encodedWidth = (pic_width_in_mbs_minus1 + 1) * 16;
|
|
233
|
+
const encodedHeight = (pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag) * 16;
|
|
234
|
+
const cropLeft = frame_crop_left_offset * 2;
|
|
235
|
+
const cropRight = frame_crop_right_offset * 2;
|
|
236
|
+
const cropTop = frame_crop_top_offset * 2;
|
|
237
|
+
const cropBottom = frame_crop_bottom_offset * 2;
|
|
238
|
+
const croppedWidth = encodedWidth - cropLeft - cropRight;
|
|
239
|
+
const croppedHeight = encodedHeight - cropTop - cropBottom;
|
|
240
|
+
return {
|
|
241
|
+
pictureParameterSet,
|
|
242
|
+
sequenceParameterSet,
|
|
243
|
+
profileIndex,
|
|
244
|
+
constraintSet,
|
|
245
|
+
levelIndex,
|
|
246
|
+
encodedWidth,
|
|
247
|
+
encodedHeight,
|
|
248
|
+
cropLeft,
|
|
249
|
+
cropRight,
|
|
250
|
+
cropTop,
|
|
251
|
+
cropBottom,
|
|
252
|
+
croppedWidth,
|
|
253
|
+
croppedHeight,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=h264.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../src/codec/h264.ts"],"names":[],"mappings":"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"}
|