@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.
Files changed (288) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +18 -1
  3. package/README.md +157 -183
  4. package/bin/scrcpy-server +0 -0
  5. package/bin/version.d.ts +1 -1
  6. package/bin/version.js +1 -1
  7. package/esm/codec/av1.d.ts +33 -0
  8. package/esm/codec/av1.d.ts.map +1 -0
  9. package/esm/codec/av1.js +35 -0
  10. package/esm/codec/av1.js.map +1 -0
  11. package/esm/codec/h264.d.ts +78 -0
  12. package/esm/codec/h264.d.ts.map +1 -0
  13. package/esm/codec/h264.js +256 -0
  14. package/esm/codec/h264.js.map +1 -0
  15. package/esm/codec/h265.d.ts +490 -0
  16. package/esm/codec/h265.d.ts.map +1 -0
  17. package/esm/codec/h265.js +1098 -0
  18. package/esm/codec/h265.js.map +1 -0
  19. package/esm/codec/index.d.ts +5 -0
  20. package/esm/codec/index.d.ts.map +1 -0
  21. package/esm/codec/index.js +5 -0
  22. package/esm/codec/index.js.map +1 -0
  23. package/esm/codec/nalu.d.ts +44 -0
  24. package/esm/codec/nalu.d.ts.map +1 -0
  25. package/esm/codec/nalu.js +310 -0
  26. package/esm/codec/nalu.js.map +1 -0
  27. package/esm/control/back-or-screen-on.d.ts +2 -2
  28. package/esm/control/back-or-screen-on.d.ts.map +1 -1
  29. package/esm/control/back-or-screen-on.js +1 -1
  30. package/esm/control/basic.d.ts +5 -0
  31. package/esm/control/basic.d.ts.map +1 -0
  32. package/esm/control/basic.js +3 -0
  33. package/esm/control/basic.js.map +1 -0
  34. package/esm/control/hover-helper.d.ts +17 -17
  35. package/esm/control/hover-helper.d.ts.map +1 -1
  36. package/esm/control/hover-helper.js +43 -43
  37. package/esm/control/hover-helper.js.map +1 -1
  38. package/esm/control/index.d.ts +13 -11
  39. package/esm/control/index.d.ts.map +1 -1
  40. package/esm/control/index.js +13 -11
  41. package/esm/control/index.js.map +1 -1
  42. package/esm/control/inject-keycode.d.ts +193 -60
  43. package/esm/control/inject-keycode.d.ts.map +1 -1
  44. package/esm/control/inject-keycode.js +198 -61
  45. package/esm/control/inject-keycode.js.map +1 -1
  46. package/esm/control/inject-scroll.d.ts +2 -2
  47. package/esm/control/inject-scroll.d.ts.map +1 -1
  48. package/esm/control/inject-scroll.js +1 -1
  49. package/esm/control/inject-text.d.ts +7 -8
  50. package/esm/control/inject-text.d.ts.map +1 -1
  51. package/esm/control/inject-text.js +5 -6
  52. package/esm/control/inject-text.js.map +1 -1
  53. package/esm/control/inject-touch.d.ts +32 -37
  54. package/esm/control/inject-touch.d.ts.map +1 -1
  55. package/esm/control/inject-touch.js +35 -62
  56. package/esm/control/inject-touch.js.map +1 -1
  57. package/esm/control/rotate-device.d.ts +4 -6
  58. package/esm/control/rotate-device.d.ts.map +1 -1
  59. package/esm/control/rotate-device.js +2 -4
  60. package/esm/control/rotate-device.js.map +1 -1
  61. package/esm/control/serializer.d.ts +25 -33
  62. package/esm/control/serializer.d.ts.map +1 -1
  63. package/esm/control/serializer.js +53 -78
  64. package/esm/control/serializer.js.map +1 -1
  65. package/esm/control/set-clipboard.d.ts +2 -2
  66. package/esm/control/set-clipboard.d.ts.map +1 -1
  67. package/esm/control/set-clipboard.js +1 -1
  68. package/esm/control/set-screen-power-mode.d.ts +10 -11
  69. package/esm/control/set-screen-power-mode.d.ts.map +1 -1
  70. package/esm/control/set-screen-power-mode.js +10 -11
  71. package/esm/control/set-screen-power-mode.js.map +1 -1
  72. package/esm/control/type.d.ts +28 -14
  73. package/esm/control/type.d.ts.map +1 -1
  74. package/esm/control/type.js +40 -18
  75. package/esm/control/type.js.map +1 -1
  76. package/esm/control/writer.d.ts +28 -0
  77. package/esm/control/writer.d.ts.map +1 -0
  78. package/esm/control/writer.js +53 -0
  79. package/esm/control/writer.js.map +1 -0
  80. package/esm/device-message/ack-clipboard.d.ts +8 -8
  81. package/esm/device-message/ack-clipboard.d.ts.map +1 -1
  82. package/esm/device-message/ack-clipboard.js +5 -5
  83. package/esm/device-message/clipboard.d.ts +9 -9
  84. package/esm/device-message/clipboard.d.ts.map +1 -1
  85. package/esm/device-message/clipboard.js +6 -6
  86. package/esm/device-message/index.d.ts +4 -4
  87. package/esm/device-message/index.js +4 -4
  88. package/esm/device-message/stream.d.ts +7 -7
  89. package/esm/device-message/stream.d.ts.map +1 -1
  90. package/esm/device-message/stream.js +34 -19
  91. package/esm/device-message/stream.js.map +1 -1
  92. package/esm/device-message/type.d.ts +4 -4
  93. package/esm/device-message/type.js +6 -6
  94. package/esm/index.d.ts +4 -5
  95. package/esm/index.d.ts.map +1 -1
  96. package/esm/index.js +4 -5
  97. package/esm/index.js.map +1 -1
  98. package/esm/options/1_16/codec-options.d.ts +19 -19
  99. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  100. package/esm/options/1_16/codec-options.js +25 -25
  101. package/esm/options/1_16/codec-options.js.map +1 -1
  102. package/esm/options/1_16/float-to-uint16.d.ts +5 -0
  103. package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
  104. package/esm/options/1_16/float-to-uint16.js +27 -0
  105. package/esm/options/1_16/float-to-uint16.js.map +1 -0
  106. package/esm/options/1_16/index.d.ts +6 -4
  107. package/esm/options/1_16/index.d.ts.map +1 -1
  108. package/esm/options/1_16/index.js +6 -4
  109. package/esm/options/1_16/index.js.map +1 -1
  110. package/esm/options/1_16/init.d.ts +66 -0
  111. package/esm/options/1_16/init.d.ts.map +1 -0
  112. package/esm/options/1_16/init.js +16 -0
  113. package/esm/options/1_16/init.js.map +1 -0
  114. package/esm/options/1_16/message.d.ts +32 -0
  115. package/esm/options/1_16/message.d.ts.map +1 -0
  116. package/esm/options/1_16/message.js +37 -0
  117. package/esm/options/1_16/message.js.map +1 -0
  118. package/esm/options/1_16/options.d.ts +48 -93
  119. package/esm/options/1_16/options.d.ts.map +1 -1
  120. package/esm/options/1_16/options.js +152 -189
  121. package/esm/options/1_16/options.js.map +1 -1
  122. package/esm/options/1_16/scroll.d.ts +26 -26
  123. package/esm/options/1_16/scroll.d.ts.map +1 -1
  124. package/esm/options/1_16/scroll.js +54 -55
  125. package/esm/options/1_16/scroll.js.map +1 -1
  126. package/esm/options/1_17.d.ts +33 -0
  127. package/esm/options/1_17.d.ts.map +1 -0
  128. package/esm/options/1_17.js +42 -0
  129. package/esm/options/1_17.js.map +1 -0
  130. package/esm/options/1_18.d.ts +59 -19
  131. package/esm/options/1_18.d.ts.map +1 -1
  132. package/esm/options/1_18.js +78 -45
  133. package/esm/options/1_18.js.map +1 -1
  134. package/esm/options/1_21.d.ts +41 -20
  135. package/esm/options/1_21.d.ts.map +1 -1
  136. package/esm/options/1_21.js +51 -36
  137. package/esm/options/1_21.js.map +1 -1
  138. package/esm/options/1_22/index.d.ts +3 -2
  139. package/esm/options/1_22/index.d.ts.map +1 -1
  140. package/esm/options/1_22/index.js +3 -2
  141. package/esm/options/1_22/index.js.map +1 -1
  142. package/esm/options/1_22/init.d.ts +17 -0
  143. package/esm/options/1_22/init.d.ts.map +1 -0
  144. package/esm/options/1_22/init.js +2 -0
  145. package/esm/options/1_22/init.js.map +1 -0
  146. package/esm/options/1_22/options.d.ts +35 -28
  147. package/esm/options/1_22/options.d.ts.map +1 -1
  148. package/esm/options/1_22/options.js +36 -25
  149. package/esm/options/1_22/options.js.map +1 -1
  150. package/esm/options/1_22/scroll.d.ts +16 -16
  151. package/esm/options/1_22/scroll.d.ts.map +1 -1
  152. package/esm/options/1_22/scroll.js +14 -14
  153. package/esm/options/1_23.d.ts +36 -11
  154. package/esm/options/1_23.d.ts.map +1 -1
  155. package/esm/options/1_23.js +44 -34
  156. package/esm/options/1_23.js.map +1 -1
  157. package/esm/options/1_24.d.ts +34 -8
  158. package/esm/options/1_24.d.ts.map +1 -1
  159. package/esm/options/1_24.js +22 -12
  160. package/esm/options/1_24.js.map +1 -1
  161. package/esm/options/1_25/index.d.ts +2 -2
  162. package/esm/options/1_25/index.js +2 -2
  163. package/esm/options/1_25/options.d.ts +10 -5
  164. package/esm/options/1_25/options.d.ts.map +1 -1
  165. package/esm/options/1_25/options.js +21 -7
  166. package/esm/options/1_25/options.js.map +1 -1
  167. package/esm/options/1_25/scroll.d.ts +19 -18
  168. package/esm/options/1_25/scroll.d.ts.map +1 -1
  169. package/esm/options/1_25/scroll.js +33 -32
  170. package/esm/options/1_25/scroll.js.map +1 -1
  171. package/esm/options/2_0.d.ts +91 -0
  172. package/esm/options/2_0.d.ts.map +1 -0
  173. package/esm/options/2_0.js +244 -0
  174. package/esm/options/2_0.js.map +1 -0
  175. package/esm/options/codec.d.ts +52 -0
  176. package/esm/options/codec.d.ts.map +1 -0
  177. package/esm/options/codec.js +26 -0
  178. package/esm/options/codec.js.map +1 -0
  179. package/esm/options/index.d.ts +12 -8
  180. package/esm/options/index.d.ts.map +1 -1
  181. package/esm/options/index.js +12 -8
  182. package/esm/options/index.js.map +1 -1
  183. package/esm/options/latest.d.ts +12 -0
  184. package/esm/options/latest.d.ts.map +1 -0
  185. package/esm/options/latest.js +8 -0
  186. package/esm/options/latest.js.map +1 -0
  187. package/esm/options/types.d.ts +86 -46
  188. package/esm/options/types.d.ts.map +1 -1
  189. package/esm/options/types.js +69 -17
  190. package/esm/options/types.js.map +1 -1
  191. package/package.json +10 -16
  192. package/src/codec/av1.ts +33 -0
  193. package/src/codec/h264.ts +317 -0
  194. package/src/codec/h265.ts +1375 -0
  195. package/src/codec/index.ts +4 -0
  196. package/src/codec/nalu.ts +373 -0
  197. package/src/control/back-or-screen-on.ts +1 -1
  198. package/src/control/basic.ts +3 -0
  199. package/src/control/hover-helper.ts +2 -4
  200. package/src/control/index.ts +2 -0
  201. package/src/control/inject-keycode.ts +194 -51
  202. package/src/control/inject-scroll.ts +1 -1
  203. package/src/control/inject-text.ts +6 -9
  204. package/src/control/inject-touch.ts +16 -55
  205. package/src/control/rotate-device.ts +3 -7
  206. package/src/control/serializer.ts +49 -105
  207. package/src/control/set-clipboard.ts +1 -1
  208. package/src/control/set-screen-power-mode.ts +6 -9
  209. package/src/control/type.ts +32 -0
  210. package/src/control/writer.ts +87 -0
  211. package/src/device-message/ack-clipboard.ts +1 -1
  212. package/src/device-message/clipboard.ts +1 -1
  213. package/src/device-message/stream.ts +32 -12
  214. package/src/index.ts +4 -5
  215. package/src/options/1_16/codec-options.ts +5 -8
  216. package/src/options/1_16/float-to-uint16.ts +33 -0
  217. package/src/options/1_16/index.ts +3 -1
  218. package/src/options/1_16/init.ts +80 -0
  219. package/src/options/1_16/message.ts +55 -0
  220. package/src/options/1_16/options.ts +152 -256
  221. package/src/options/1_16/scroll.ts +2 -5
  222. package/src/options/1_17.ts +66 -0
  223. package/src/options/1_18.ts +106 -42
  224. package/src/options/1_21.ts +51 -30
  225. package/src/options/1_22/index.ts +1 -0
  226. package/src/options/1_22/init.ts +19 -0
  227. package/src/options/1_22/options.ts +40 -46
  228. package/src/options/1_22/scroll.ts +2 -2
  229. package/src/options/1_23.ts +33 -23
  230. package/src/options/1_24.ts +25 -11
  231. package/src/options/1_25/options.ts +25 -6
  232. package/src/options/1_25/scroll.ts +5 -7
  233. package/src/options/2_0.ts +342 -0
  234. package/src/options/codec.ts +98 -0
  235. package/src/options/index.ts +7 -3
  236. package/src/options/latest.ts +14 -0
  237. package/src/options/types.ts +158 -48
  238. package/tsconfig.build.json +9 -1
  239. package/tsconfig.build.tsbuildinfo +1 -1
  240. package/esm/adb/client.d.ts +0 -41
  241. package/esm/adb/client.d.ts.map +0 -1
  242. package/esm/adb/client.js +0 -243
  243. package/esm/adb/client.js.map +0 -1
  244. package/esm/adb/connection.d.ts +0 -47
  245. package/esm/adb/connection.d.ts.map +0 -1
  246. package/esm/adb/connection.js +0 -110
  247. package/esm/adb/connection.js.map +0 -1
  248. package/esm/adb/index.d.ts +0 -4
  249. package/esm/adb/index.d.ts.map +0 -1
  250. package/esm/adb/index.js +0 -4
  251. package/esm/adb/index.js.map +0 -1
  252. package/esm/adb/options/1_16.d.ts +0 -8
  253. package/esm/adb/options/1_16.d.ts.map +0 -1
  254. package/esm/adb/options/1_16.js +0 -20
  255. package/esm/adb/options/1_16.js.map +0 -1
  256. package/esm/adb/options/1_22.d.ts +0 -8
  257. package/esm/adb/options/1_22.d.ts.map +0 -1
  258. package/esm/adb/options/1_22.js +0 -17
  259. package/esm/adb/options/1_22.js.map +0 -1
  260. package/esm/adb/options/index.d.ts +0 -4
  261. package/esm/adb/options/index.d.ts.map +0 -1
  262. package/esm/adb/options/index.js +0 -4
  263. package/esm/adb/options/index.js.map +0 -1
  264. package/esm/adb/options/types.d.ts +0 -24
  265. package/esm/adb/options/types.d.ts.map +0 -1
  266. package/esm/adb/options/types.js +0 -37
  267. package/esm/adb/options/types.js.map +0 -1
  268. package/esm/codec.d.ts +0 -34
  269. package/esm/codec.d.ts.map +0 -1
  270. package/esm/codec.js +0 -37
  271. package/esm/codec.js.map +0 -1
  272. package/esm/options/1_16/h264-configuration.d.ts +0 -49
  273. package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
  274. package/esm/options/1_16/h264-configuration.js +0 -414
  275. package/esm/options/1_16/h264-configuration.js.map +0 -1
  276. package/esm/options/1_16/sps.d.ts +0 -22
  277. package/esm/options/1_16/sps.d.ts.map +0 -1
  278. package/esm/options/1_16/sps.js +0 -263
  279. package/esm/options/1_16/sps.js.map +0 -1
  280. package/src/adb/client.ts +0 -345
  281. package/src/adb/connection.ts +0 -192
  282. package/src/adb/index.ts +0 -3
  283. package/src/adb/options/1_16.ts +0 -30
  284. package/src/adb/options/1_22.ts +0 -26
  285. package/src/adb/options/index.ts +0 -3
  286. package/src/adb/options/types.ts +0 -75
  287. package/src/codec.ts +0 -35
  288. package/src/options/1_16/h264-configuration.ts +0 -485
@@ -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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"}