@yume-chan/scrcpy 3.0.0-beta.0 → 3.0.0-beta.1

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 (438) hide show
  1. package/esm/1_15/impl/codec-options.d.ts +12 -11
  2. package/esm/1_15/impl/codec-options.d.ts.map +1 -1
  3. package/esm/1_15/impl/codec-options.js +50 -11
  4. package/esm/1_15/impl/codec-options.js.map +1 -1
  5. package/esm/1_15/impl/compute-option-values.d.ts +7 -0
  6. package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
  7. package/esm/1_15/impl/compute-option-values.js +12 -0
  8. package/esm/1_15/impl/compute-option-values.js.map +1 -0
  9. package/esm/1_15/impl/index.d.ts +2 -0
  10. package/esm/1_15/impl/index.d.ts.map +1 -1
  11. package/esm/1_15/impl/index.js +2 -0
  12. package/esm/1_15/impl/index.js.map +1 -1
  13. package/esm/1_15/impl/init.d.ts +11 -11
  14. package/esm/1_15/impl/init.d.ts.map +1 -1
  15. package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
  16. package/esm/1_15/impl/media-stream-transformer.js +1 -1
  17. package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
  18. package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
  19. package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
  20. package/esm/1_15/impl/set-display-power.d.ts +13 -0
  21. package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
  22. package/esm/1_15/impl/set-display-power.js +16 -0
  23. package/esm/1_15/impl/set-display-power.js.map +1 -0
  24. package/esm/1_15/options.d.ts +12 -9
  25. package/esm/1_15/options.d.ts.map +1 -1
  26. package/esm/1_15/options.js +20 -2
  27. package/esm/1_15/options.js.map +1 -1
  28. package/esm/1_17/options.d.ts +11 -9
  29. package/esm/1_17/options.d.ts.map +1 -1
  30. package/esm/1_17/options.js +20 -2
  31. package/esm/1_17/options.js.map +1 -1
  32. package/esm/1_18/impl/init.d.ts +3 -3
  33. package/esm/1_18/impl/init.d.ts.map +1 -1
  34. package/esm/1_18/options.d.ts +11 -9
  35. package/esm/1_18/options.d.ts.map +1 -1
  36. package/esm/1_18/options.js +20 -2
  37. package/esm/1_18/options.js.map +1 -1
  38. package/esm/1_21/impl/compute-option-values.d.ts +23 -0
  39. package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
  40. package/esm/1_21/impl/compute-option-values.js +12 -0
  41. package/esm/1_21/impl/compute-option-values.js.map +1 -0
  42. package/esm/1_21/impl/index.d.ts +3 -1
  43. package/esm/1_21/impl/index.d.ts.map +1 -1
  44. package/esm/1_21/impl/index.js +2 -1
  45. package/esm/1_21/impl/index.js.map +1 -1
  46. package/esm/1_21/impl/init.d.ts +1 -1
  47. package/esm/1_21/impl/init.d.ts.map +1 -1
  48. package/esm/1_21/impl/serialize.d.ts +1 -1
  49. package/esm/1_21/impl/serialize.d.ts.map +1 -1
  50. package/esm/1_21/impl/serialize.js.map +1 -1
  51. package/esm/1_21/options.d.ts +11 -9
  52. package/esm/1_21/options.d.ts.map +1 -1
  53. package/esm/1_21/options.js +20 -2
  54. package/esm/1_21/options.js.map +1 -1
  55. package/esm/1_22/impl/init.d.ts +3 -3
  56. package/esm/1_22/impl/init.d.ts.map +1 -1
  57. package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
  58. package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
  59. package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
  60. package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
  61. package/esm/1_22/options.d.ts +11 -9
  62. package/esm/1_22/options.d.ts.map +1 -1
  63. package/esm/1_22/options.js +21 -3
  64. package/esm/1_22/options.js.map +1 -1
  65. package/esm/1_23/impl/init.d.ts +1 -1
  66. package/esm/1_23/impl/init.d.ts.map +1 -1
  67. package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
  68. package/esm/1_23/impl/media-stream-transformer.js +1 -1
  69. package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
  70. package/esm/1_23/options.d.ts +11 -9
  71. package/esm/1_23/options.d.ts.map +1 -1
  72. package/esm/1_23/options.js +21 -3
  73. package/esm/1_23/options.js.map +1 -1
  74. package/esm/1_24/impl/init.d.ts +1 -1
  75. package/esm/1_24/impl/init.d.ts.map +1 -1
  76. package/esm/1_24/options.d.ts +11 -9
  77. package/esm/1_24/options.d.ts.map +1 -1
  78. package/esm/1_24/options.js +21 -3
  79. package/esm/1_24/options.js.map +1 -1
  80. package/esm/1_25/options.d.ts +11 -9
  81. package/esm/1_25/options.d.ts.map +1 -1
  82. package/esm/1_25/options.js +21 -3
  83. package/esm/1_25/options.js.map +1 -1
  84. package/esm/2_0/impl/defaults.d.ts +8 -11
  85. package/esm/2_0/impl/defaults.d.ts.map +1 -1
  86. package/esm/2_0/impl/defaults.js +4 -10
  87. package/esm/2_0/impl/defaults.js.map +1 -1
  88. package/esm/2_0/impl/index.d.ts +1 -1
  89. package/esm/2_0/impl/index.d.ts.map +1 -1
  90. package/esm/2_0/impl/index.js +1 -1
  91. package/esm/2_0/impl/index.js.map +1 -1
  92. package/esm/2_0/impl/init.d.ts +8 -8
  93. package/esm/2_0/impl/init.d.ts.map +1 -1
  94. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
  95. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
  96. package/esm/2_0/impl/parse-audio-stream-metadata.js +28 -39
  97. package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
  98. package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
  99. package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
  100. package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
  101. package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
  102. package/esm/2_0/options.d.ts +19 -20
  103. package/esm/2_0/options.d.ts.map +1 -1
  104. package/esm/2_0/options.js +22 -4
  105. package/esm/2_0/options.js.map +1 -1
  106. package/esm/2_1/impl/defaults.d.ts +8 -11
  107. package/esm/2_1/impl/defaults.d.ts.map +1 -1
  108. package/esm/2_1/impl/defaults.js.map +1 -1
  109. package/esm/2_1/impl/init.d.ts +3 -3
  110. package/esm/2_1/impl/init.d.ts.map +1 -1
  111. package/esm/2_1/options.d.ts +21 -22
  112. package/esm/2_1/options.d.ts.map +1 -1
  113. package/esm/2_1/options.js +22 -4
  114. package/esm/2_1/options.js.map +1 -1
  115. package/esm/2_2/impl/compute-option-values.d.ts +22 -0
  116. package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
  117. package/esm/2_2/impl/compute-option-values.js +11 -0
  118. package/esm/2_2/impl/compute-option-values.js.map +1 -0
  119. package/esm/2_2/impl/defaults.d.ts +8 -11
  120. package/esm/2_2/impl/defaults.d.ts.map +1 -1
  121. package/esm/2_2/impl/defaults.js.map +1 -1
  122. package/esm/2_2/impl/index.d.ts +2 -0
  123. package/esm/2_2/impl/index.d.ts.map +1 -1
  124. package/esm/2_2/impl/index.js +1 -0
  125. package/esm/2_2/impl/index.js.map +1 -1
  126. package/esm/2_2/impl/init.d.ts +5 -5
  127. package/esm/2_2/impl/init.d.ts.map +1 -1
  128. package/esm/2_2/options.d.ts +21 -22
  129. package/esm/2_2/options.d.ts.map +1 -1
  130. package/esm/2_2/options.js +22 -7
  131. package/esm/2_2/options.js.map +1 -1
  132. package/esm/2_3/impl/index.d.ts +1 -0
  133. package/esm/2_3/impl/index.d.ts.map +1 -1
  134. package/esm/2_3/impl/index.js +1 -0
  135. package/esm/2_3/impl/index.js.map +1 -1
  136. package/esm/2_3/impl/init.d.ts +2 -2
  137. package/esm/2_3/impl/init.d.ts.map +1 -1
  138. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
  139. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
  140. package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
  141. package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
  142. package/esm/2_3/options.d.ts +21 -22
  143. package/esm/2_3/options.d.ts.map +1 -1
  144. package/esm/2_3/options.js +22 -7
  145. package/esm/2_3/options.js.map +1 -1
  146. package/esm/2_4/options.d.ts +22 -23
  147. package/esm/2_4/options.d.ts.map +1 -1
  148. package/esm/2_4/options.js +25 -7
  149. package/esm/2_4/options.js.map +1 -1
  150. package/esm/2_6/impl/compute-option-values.d.ts +29 -0
  151. package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
  152. package/esm/2_6/impl/compute-option-values.js +12 -0
  153. package/esm/2_6/impl/compute-option-values.js.map +1 -0
  154. package/esm/2_6/impl/defaults.d.ts +8 -11
  155. package/esm/2_6/impl/defaults.d.ts.map +1 -1
  156. package/esm/2_6/impl/defaults.js.map +1 -1
  157. package/esm/2_6/impl/index.d.ts +2 -0
  158. package/esm/2_6/impl/index.d.ts.map +1 -1
  159. package/esm/2_6/impl/index.js +1 -0
  160. package/esm/2_6/impl/index.js.map +1 -1
  161. package/esm/2_6/impl/init.d.ts +3 -3
  162. package/esm/2_6/impl/init.d.ts.map +1 -1
  163. package/esm/2_6/options.d.ts +22 -23
  164. package/esm/2_6/options.d.ts.map +1 -1
  165. package/esm/2_6/options.js +25 -10
  166. package/esm/2_6/options.js.map +1 -1
  167. package/esm/2_7/impl/index.d.ts.map +1 -1
  168. package/esm/2_7/impl/index.js.map +1 -1
  169. package/esm/2_7/options.d.ts +22 -23
  170. package/esm/2_7/options.d.ts.map +1 -1
  171. package/esm/2_7/options.js +25 -10
  172. package/esm/2_7/options.js.map +1 -1
  173. package/esm/3_0/impl/defaults.d.ts +29 -33
  174. package/esm/3_0/impl/defaults.d.ts.map +1 -1
  175. package/esm/3_0/impl/defaults.js +4 -8
  176. package/esm/3_0/impl/defaults.js.map +1 -1
  177. package/esm/3_0/impl/index.d.ts +1 -0
  178. package/esm/3_0/impl/index.d.ts.map +1 -1
  179. package/esm/3_0/impl/index.js +1 -0
  180. package/esm/3_0/impl/index.js.map +1 -1
  181. package/esm/3_0/impl/init.d.ts +4 -4
  182. package/esm/3_0/impl/init.d.ts.map +1 -1
  183. package/esm/3_0/impl/set-display-power.d.ts +12 -0
  184. package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
  185. package/esm/3_0/impl/set-display-power.js +10 -0
  186. package/esm/3_0/impl/set-display-power.js.map +1 -0
  187. package/esm/3_0/options.d.ts +43 -45
  188. package/esm/3_0/options.d.ts.map +1 -1
  189. package/esm/3_0/options.js +25 -10
  190. package/esm/3_0/options.js.map +1 -1
  191. package/esm/3_1/impl/defaults.d.ts +29 -33
  192. package/esm/3_1/impl/defaults.d.ts.map +1 -1
  193. package/esm/3_1/impl/defaults.js.map +1 -1
  194. package/esm/3_1/impl/index.d.ts.map +1 -1
  195. package/esm/3_1/impl/index.js.map +1 -1
  196. package/esm/3_1/impl/init.d.ts +2 -2
  197. package/esm/3_1/impl/init.d.ts.map +1 -1
  198. package/esm/3_1/options.d.ts +43 -45
  199. package/esm/3_1/options.d.ts.map +1 -1
  200. package/esm/3_1/options.js +25 -10
  201. package/esm/3_1/options.js.map +1 -1
  202. package/esm/3_2/impl/defaults.d.ts +29 -33
  203. package/esm/3_2/impl/defaults.d.ts.map +1 -1
  204. package/esm/3_2/impl/defaults.js.map +1 -1
  205. package/esm/3_2/impl/index.d.ts.map +1 -1
  206. package/esm/3_2/impl/index.js.map +1 -1
  207. package/esm/3_2/impl/init.d.ts +2 -2
  208. package/esm/3_2/impl/init.d.ts.map +1 -1
  209. package/esm/3_2/options.d.ts +43 -45
  210. package/esm/3_2/options.d.ts.map +1 -1
  211. package/esm/3_2/options.js +25 -10
  212. package/esm/3_2/options.js.map +1 -1
  213. package/esm/3_3_1/options.d.ts +43 -45
  214. package/esm/3_3_1/options.d.ts.map +1 -1
  215. package/esm/3_3_1/options.js +25 -10
  216. package/esm/3_3_1/options.js.map +1 -1
  217. package/esm/4_0/impl/compute-option-values.d.ts +15 -0
  218. package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
  219. package/esm/4_0/impl/compute-option-values.js +9 -0
  220. package/esm/4_0/impl/compute-option-values.js.map +1 -0
  221. package/esm/4_0/impl/control-message-types.d.ts +25 -0
  222. package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
  223. package/esm/4_0/impl/control-message-types.js +26 -0
  224. package/esm/4_0/impl/control-message-types.js.map +1 -0
  225. package/esm/4_0/impl/defaults.d.ts +58 -0
  226. package/esm/4_0/impl/defaults.d.ts.map +1 -0
  227. package/esm/4_0/impl/defaults.js +12 -0
  228. package/esm/4_0/impl/defaults.js.map +1 -0
  229. package/esm/4_0/impl/index.d.ts +9 -0
  230. package/esm/4_0/impl/index.d.ts.map +1 -0
  231. package/esm/4_0/impl/index.js +7 -0
  232. package/esm/4_0/impl/index.js.map +1 -0
  233. package/esm/4_0/impl/init.d.ts +10 -0
  234. package/esm/4_0/impl/init.d.ts.map +1 -0
  235. package/esm/4_0/impl/init.js +2 -0
  236. package/esm/4_0/impl/init.js.map +1 -0
  237. package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
  238. package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
  239. package/esm/4_0/impl/media-stream-transformer.js +39 -0
  240. package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
  241. package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
  242. package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
  243. package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
  244. package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
  245. package/esm/4_0/impl/prev.d.ts +2 -0
  246. package/esm/4_0/impl/prev.d.ts.map +1 -0
  247. package/esm/4_0/impl/prev.js +2 -0
  248. package/esm/4_0/impl/prev.js.map +1 -0
  249. package/esm/4_0/index.d.ts +100 -0
  250. package/esm/4_0/index.d.ts.map +1 -0
  251. package/esm/4_0/index.js +93 -0
  252. package/esm/4_0/index.js.map +1 -0
  253. package/esm/4_1/impl/control-message-types.d.ts +26 -0
  254. package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
  255. package/esm/4_1/impl/control-message-types.js +27 -0
  256. package/esm/4_1/impl/control-message-types.js.map +1 -0
  257. package/esm/4_1/impl/defaults.d.ts +59 -0
  258. package/esm/4_1/impl/defaults.d.ts.map +1 -0
  259. package/esm/4_1/impl/defaults.js +6 -0
  260. package/esm/4_1/impl/defaults.js.map +1 -0
  261. package/esm/4_1/impl/index.d.ts +6 -0
  262. package/esm/4_1/impl/index.d.ts.map +1 -0
  263. package/esm/4_1/impl/index.js +5 -0
  264. package/esm/4_1/impl/index.js.map +1 -0
  265. package/esm/4_1/impl/init.d.ts +6 -0
  266. package/esm/4_1/impl/init.d.ts.map +1 -0
  267. package/esm/4_1/impl/init.js +2 -0
  268. package/esm/4_1/impl/init.js.map +1 -0
  269. package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
  270. package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
  271. package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
  272. package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
  273. package/esm/4_1/impl/prev.d.ts +2 -0
  274. package/esm/4_1/impl/prev.d.ts.map +1 -0
  275. package/esm/4_1/impl/prev.js +2 -0
  276. package/esm/4_1/impl/prev.js.map +1 -0
  277. package/esm/4_1/index.d.ts +101 -0
  278. package/esm/4_1/index.d.ts.map +1 -0
  279. package/esm/4_1/index.js +93 -0
  280. package/esm/4_1/index.js.map +1 -0
  281. package/esm/base/control-message-type-value.d.ts +5 -0
  282. package/esm/base/control-message-type-value.d.ts.map +1 -1
  283. package/esm/base/control-message-type-value.js +5 -0
  284. package/esm/base/control-message-type-value.js.map +1 -1
  285. package/esm/base/media.d.ts +8 -1
  286. package/esm/base/media.d.ts.map +1 -1
  287. package/esm/base/options.d.ts +6 -4
  288. package/esm/base/options.d.ts.map +1 -1
  289. package/esm/base/video.d.ts +1 -7
  290. package/esm/base/video.d.ts.map +1 -1
  291. package/esm/base/video.js +1 -13
  292. package/esm/base/video.js.map +1 -1
  293. package/esm/control/boolean.d.ts +10 -0
  294. package/esm/control/boolean.d.ts.map +1 -0
  295. package/esm/control/boolean.js +3 -0
  296. package/esm/control/boolean.js.map +1 -0
  297. package/esm/control/index.d.ts +2 -1
  298. package/esm/control/index.d.ts.map +1 -1
  299. package/esm/control/index.js +2 -1
  300. package/esm/control/index.js.map +1 -1
  301. package/esm/control/resize-display.d.ts +12 -0
  302. package/esm/control/resize-display.d.ts.map +1 -0
  303. package/esm/control/resize-display.js +8 -0
  304. package/esm/control/resize-display.js.map +1 -0
  305. package/esm/control/serializer.d.ts +8 -2
  306. package/esm/control/serializer.d.ts.map +1 -1
  307. package/esm/control/serializer.js +30 -4
  308. package/esm/control/serializer.js.map +1 -1
  309. package/esm/control/writer.d.ts +8 -2
  310. package/esm/control/writer.d.ts.map +1 -1
  311. package/esm/control/writer.js +17 -2
  312. package/esm/control/writer.js.map +1 -1
  313. package/esm/index.d.ts +2 -0
  314. package/esm/index.d.ts.map +1 -1
  315. package/esm/index.js +2 -0
  316. package/esm/index.js.map +1 -1
  317. package/esm/latest.d.ts +2 -2
  318. package/esm/latest.d.ts.map +1 -1
  319. package/esm/latest.js +2 -2
  320. package/esm/latest.js.map +1 -1
  321. package/esm/utils/omit.d.ts +1 -1
  322. package/esm/utils/omit.d.ts.map +1 -1
  323. package/esm/video/codec-id.d.ts +6 -0
  324. package/esm/video/codec-id.d.ts.map +1 -0
  325. package/esm/video/codec-id.js +6 -0
  326. package/esm/video/codec-id.js.map +1 -0
  327. package/esm/video/index.d.ts +4 -0
  328. package/esm/video/index.d.ts.map +1 -1
  329. package/esm/video/index.js +12 -0
  330. package/esm/video/index.js.map +1 -1
  331. package/esm/video/size.d.ts +8 -9
  332. package/esm/video/size.d.ts.map +1 -1
  333. package/esm/video/size.js +2 -2
  334. package/esm/video/size.js.map +1 -1
  335. package/package.json +7 -7
  336. package/src/1_15/impl/codec-options.ts +68 -17
  337. package/src/1_15/impl/compute-option-values.ts +26 -0
  338. package/src/1_15/impl/index.ts +2 -0
  339. package/src/1_15/impl/init.ts +11 -11
  340. package/src/1_15/impl/media-stream-transformer.ts +3 -3
  341. package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
  342. package/src/1_15/impl/set-display-power.ts +29 -0
  343. package/src/1_15/options.ts +45 -9
  344. package/src/1_17/options.ts +46 -10
  345. package/src/1_18/impl/init.ts +3 -3
  346. package/src/1_18/options.ts +46 -10
  347. package/src/1_21/impl/compute-option-values.ts +43 -0
  348. package/src/1_21/impl/index.ts +10 -1
  349. package/src/1_21/impl/init.ts +1 -1
  350. package/src/1_21/impl/serialize.ts +3 -3
  351. package/src/1_21/options.ts +46 -10
  352. package/src/1_22/impl/init.ts +3 -3
  353. package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
  354. package/src/1_22/options.ts +47 -11
  355. package/src/1_23/impl/init.ts +1 -1
  356. package/src/1_23/impl/media-stream-transformer.ts +3 -3
  357. package/src/1_23/options.ts +47 -11
  358. package/src/1_24/impl/init.ts +1 -1
  359. package/src/1_24/options.ts +47 -11
  360. package/src/1_25/options.ts +47 -11
  361. package/src/2_0/impl/defaults.ts +19 -23
  362. package/src/2_0/impl/index.ts +5 -1
  363. package/src/2_0/impl/init.ts +8 -8
  364. package/src/2_0/impl/parse-audio-stream-metadata.ts +34 -44
  365. package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
  366. package/src/2_0/options.ts +63 -12
  367. package/src/2_1/impl/defaults.ts +1 -1
  368. package/src/2_1/impl/init.ts +3 -3
  369. package/src/2_1/options.ts +66 -15
  370. package/src/2_2/generate-type-tests.js +106 -0
  371. package/src/2_2/impl/compute-option-values.ts +44 -0
  372. package/src/2_2/impl/defaults.ts +1 -1
  373. package/src/2_2/impl/index.ts +2 -0
  374. package/src/2_2/impl/init.ts +5 -5
  375. package/src/2_2/options.ts +66 -19
  376. package/src/2_3/impl/index.ts +4 -0
  377. package/src/2_3/impl/init.ts +2 -5
  378. package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
  379. package/src/2_3/options.ts +66 -19
  380. package/src/2_4/options.ts +75 -23
  381. package/src/2_6/generate-type-tests.js +119 -0
  382. package/src/2_6/impl/compute-option-values.ts +48 -0
  383. package/src/2_6/impl/defaults.ts +1 -1
  384. package/src/2_6/impl/index.ts +9 -0
  385. package/src/2_6/impl/init.ts +3 -6
  386. package/src/2_6/options.ts +75 -27
  387. package/src/2_7/impl/index.ts +1 -0
  388. package/src/2_7/options.ts +75 -27
  389. package/src/3_0/impl/defaults.ts +12 -14
  390. package/src/3_0/impl/index.ts +5 -0
  391. package/src/3_0/impl/init.ts +4 -7
  392. package/src/3_0/impl/set-display-power.ts +23 -0
  393. package/src/3_0/options.ts +75 -27
  394. package/src/3_1/impl/defaults.ts +1 -1
  395. package/src/3_1/impl/index.ts +1 -0
  396. package/src/3_1/impl/init.ts +2 -2
  397. package/src/3_1/options.ts +75 -27
  398. package/src/3_2/impl/defaults.ts +1 -1
  399. package/src/3_2/impl/index.ts +1 -0
  400. package/src/3_2/impl/init.ts +2 -5
  401. package/src/3_2/options.ts +75 -27
  402. package/src/3_3_1/options.ts +75 -27
  403. package/src/4_0/impl/compute-option-values.ts +31 -0
  404. package/src/4_0/impl/control-message-types.ts +27 -0
  405. package/src/4_0/impl/defaults.ts +20 -0
  406. package/src/4_0/impl/index.ts +9 -0
  407. package/src/4_0/impl/init.ts +14 -0
  408. package/src/4_0/impl/media-stream-transformer.ts +58 -0
  409. package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
  410. package/src/4_0/impl/prev.ts +1 -0
  411. package/src/4_0/index.ts +226 -0
  412. package/src/4_1/impl/control-message-types.ts +28 -0
  413. package/src/4_1/impl/defaults.ts +8 -0
  414. package/src/4_1/impl/index.ts +6 -0
  415. package/src/4_1/impl/init.ts +7 -0
  416. package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
  417. package/src/4_1/impl/prev.ts +1 -0
  418. package/src/4_1/index.ts +226 -0
  419. package/src/base/control-message-type-value.ts +5 -0
  420. package/src/base/media.ts +12 -3
  421. package/src/base/options.ts +15 -5
  422. package/src/base/video.ts +2 -19
  423. package/src/control/boolean.ts +9 -0
  424. package/src/control/index.ts +2 -1
  425. package/src/control/resize-display.ts +16 -0
  426. package/src/control/serializer.ts +38 -8
  427. package/src/control/writer.ts +24 -6
  428. package/src/index.ts +2 -0
  429. package/src/latest.ts +4 -3
  430. package/src/utils/omit.ts +1 -1
  431. package/src/video/codec-id.ts +6 -0
  432. package/src/video/index.ts +19 -0
  433. package/src/video/size.ts +10 -4
  434. package/esm/control/set-screen-power-mode.d.ts +0 -11
  435. package/esm/control/set-screen-power-mode.d.ts.map +0 -1
  436. package/esm/control/set-screen-power-mode.js +0 -7
  437. package/esm/control/set-screen-power-mode.js.map +0 -1
  438. package/src/control/set-screen-power-mode.ts +0 -17
@@ -2,69 +2,85 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyAudioStreamMetadata,
6
7
  ScrcpyDisplay,
7
8
  ScrcpyEncoder,
8
- ScrcpyMediaStreamPacket,
9
9
  ScrcpyOptions,
10
10
  ScrcpyOptionsListEncoders,
11
11
  ScrcpyScrollController,
12
12
  ScrcpyVideoStream,
13
+ ScrcpyVideoStreamPacket,
13
14
  } from "../base/index.js";
14
15
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
15
16
  import type {
16
17
  ScrcpyBackOrScreenOnControlMessage,
17
18
  ScrcpyInjectTouchControlMessage,
18
19
  ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
19
21
  ScrcpyUHidCreateControlMessage,
20
22
  ScrcpyUHidOutputDeviceMessage,
21
23
  } from "../latest.js";
22
24
 
23
- import type { Init } from "./impl/index.js";
25
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
24
26
  import {
25
27
  AckClipboardHandler,
26
28
  ClipboardStream,
29
+ computeOptionValues,
27
30
  ControlMessageTypes,
28
31
  createMediaStreamTransformer,
29
32
  createScrollController,
30
33
  Defaults,
34
+ parseAudioCodecOption,
35
+ parseAudioMetadataCodec,
31
36
  parseAudioStreamMetadata,
32
37
  parseDisplay,
33
38
  parseEncoder,
39
+ parseVideoCodecOption,
34
40
  parseVideoStreamMetadata,
41
+ parseVideoStreamMetadataAsync,
35
42
  serialize,
36
43
  serializeBackOrScreenOnControlMessage,
37
44
  serializeInjectTouchControlMessage,
38
45
  serializeSetClipboardControlMessage,
46
+ serializeSetDisplayPowerControlMessage,
39
47
  serializeUHidCreateControlMessage,
40
48
  setListDisplays,
41
49
  setListEncoders,
42
50
  UHidOutputStream,
43
51
  } from "./impl/index.js";
44
52
 
45
- export class ScrcpyOptions3_2<TVideo extends boolean>
46
- implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
53
+ export class ScrcpyOptions3_2<TInit extends Init = Init>
54
+ implements
55
+ ScrcpyOptions<ScrcpyOptions3_2.Value<TInit>>,
56
+ ScrcpyOptionsListEncoders
47
57
  {
48
58
  static readonly Defaults = Defaults;
49
59
 
50
- readonly value: Required<Init<TVideo>>;
60
+ readonly value: ScrcpyOptions3_2.Value<TInit>;
51
61
 
52
62
  get controlMessageTypes(): typeof ControlMessageTypes {
53
63
  return ControlMessageTypes;
54
64
  }
55
65
 
56
66
  #clipboard: ClipboardStream | undefined;
57
- get clipboard(): ReadableStream<string> | undefined {
58
- return this.#clipboard;
67
+ get clipboard(): MapBoolean<
68
+ this["value"]["clipboardAutosync"],
69
+ ReadableStream<string>,
70
+ undefined
71
+ > {
72
+ return this.#clipboard as never;
59
73
  }
60
74
 
61
75
  #ackClipboardHandler: AckClipboardHandler | undefined;
62
76
 
63
77
  #uHidOutput: UHidOutputStream | undefined;
64
- get uHidOutput():
65
- | ReadableStream<ScrcpyUHidOutputDeviceMessage>
66
- | undefined {
67
- return this.#uHidOutput;
78
+ get uHidOutput(): MapBoolean<
79
+ this["value"]["control"],
80
+ ReadableStream<ScrcpyUHidOutputDeviceMessage>,
81
+ undefined
82
+ > {
83
+ return this.#uHidOutput as never;
68
84
  }
69
85
 
70
86
  #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
@@ -72,16 +88,8 @@ export class ScrcpyOptions3_2<TVideo extends boolean>
72
88
  return this.#deviceMessageParsers;
73
89
  }
74
90
 
75
- constructor(init: Init<TVideo>) {
76
- this.value = { ...Defaults, ...init } as never;
77
-
78
- if (this.value.videoSource === "camera") {
79
- this.value.control = false;
80
- }
81
-
82
- if (this.value.audioDup) {
83
- this.value.audioSource = "playback";
84
- }
91
+ constructor(init: TInit) {
92
+ this.value = computeOptionValues(init, Defaults);
85
93
 
86
94
  if (this.value.control) {
87
95
  if (this.value.clipboardAutosync) {
@@ -101,7 +109,7 @@ export class ScrcpyOptions3_2<TVideo extends boolean>
101
109
  }
102
110
 
103
111
  serialize(): string[] {
104
- return serialize<Init<boolean>>(this.value, Defaults);
112
+ return serialize(this.value, Defaults);
105
113
  }
106
114
 
107
115
  setListDisplays(): void {
@@ -123,18 +131,29 @@ export class ScrcpyOptions3_2<TVideo extends boolean>
123
131
  parseVideoStreamMetadata(
124
132
  stream: ReadableStream<Uint8Array>,
125
133
  ): MaybePromiseLike<ScrcpyVideoStream> {
126
- return parseVideoStreamMetadata(this.value, stream);
134
+ return parseVideoStreamMetadata(
135
+ stream,
136
+ this.value.sendDeviceMeta,
137
+ this.value.sendCodecMeta,
138
+ parseVideoCodecOption(this.value.videoCodec),
139
+ parseVideoStreamMetadataAsync,
140
+ );
127
141
  }
128
142
 
129
143
  parseAudioStreamMetadata(
130
144
  stream: ReadableStream<Uint8Array>,
131
145
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
132
- return parseAudioStreamMetadata(stream, this.value);
146
+ return parseAudioStreamMetadata(
147
+ stream,
148
+ this.value.sendCodecMeta,
149
+ parseAudioMetadataCodec,
150
+ parseAudioCodecOption(this.value.audioCodec),
151
+ );
133
152
  }
134
153
 
135
154
  createMediaStreamTransformer(): TransformStream<
136
155
  Uint8Array,
137
- ScrcpyMediaStreamPacket
156
+ ScrcpyVideoStreamPacket
138
157
  > {
139
158
  return createMediaStreamTransformer(this.value);
140
159
  }
@@ -142,37 +161,66 @@ export class ScrcpyOptions3_2<TVideo extends boolean>
142
161
  serializeInjectTouchControlMessage(
143
162
  message: ScrcpyInjectTouchControlMessage,
144
163
  ): Uint8Array {
164
+ if (!this.value.control) {
165
+ throw new Error("control is disabled");
166
+ }
145
167
  return serializeInjectTouchControlMessage(message);
146
168
  }
147
169
 
148
170
  serializeBackOrScreenOnControlMessage(
149
171
  message: ScrcpyBackOrScreenOnControlMessage,
150
172
  ): Uint8Array | undefined {
173
+ if (!this.value.control) {
174
+ throw new Error("control is disabled");
175
+ }
151
176
  return serializeBackOrScreenOnControlMessage(message);
152
177
  }
153
178
 
154
179
  serializeSetClipboardControlMessage(
155
180
  message: ScrcpySetClipboardControlMessage,
156
181
  ): Uint8Array | [Uint8Array, Promise<void>] {
182
+ if (!this.value.control) {
183
+ throw new Error("control is disabled");
184
+ }
157
185
  return serializeSetClipboardControlMessage(
158
186
  message,
159
187
  this.#ackClipboardHandler,
160
188
  );
161
189
  }
162
190
 
191
+ serializeSetDisplayPowerControlMessage(
192
+ message: ScrcpySetDisplayPowerControlMessage,
193
+ ): Uint8Array {
194
+ if (!this.value.control) {
195
+ throw new Error("control is disabled");
196
+ }
197
+ return serializeSetDisplayPowerControlMessage(message);
198
+ }
199
+
163
200
  createScrollController(): ScrcpyScrollController {
201
+ if (!this.value.control) {
202
+ throw new Error("control is disabled");
203
+ }
164
204
  return createScrollController();
165
205
  }
166
206
 
167
207
  serializeUHidCreateControlMessage(
168
208
  message: ScrcpyUHidCreateControlMessage,
169
209
  ): Uint8Array {
210
+ if (!this.value.control) {
211
+ throw new Error("control is disabled");
212
+ }
170
213
  return serializeUHidCreateControlMessage(message);
171
214
  }
172
215
  }
173
216
 
174
- type Init_<TVideo extends boolean> = Init<TVideo>;
217
+ type Init_ = Init;
175
218
 
176
219
  export namespace ScrcpyOptions3_2 {
177
- export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
220
+ export type Init = Init_;
221
+
222
+ export type Value<TInit extends Init> = ComputeOptionTypes<
223
+ TInit,
224
+ typeof Defaults
225
+ >;
178
226
  }
@@ -2,69 +2,85 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyAudioStreamMetadata,
6
7
  ScrcpyDisplay,
7
8
  ScrcpyEncoder,
8
- ScrcpyMediaStreamPacket,
9
9
  ScrcpyOptions,
10
10
  ScrcpyOptionsListEncoders,
11
11
  ScrcpyScrollController,
12
12
  ScrcpyVideoStream,
13
+ ScrcpyVideoStreamPacket,
13
14
  } from "../base/index.js";
14
15
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
15
16
  import type {
16
17
  ScrcpyBackOrScreenOnControlMessage,
17
18
  ScrcpyInjectTouchControlMessage,
18
19
  ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
19
21
  ScrcpyUHidCreateControlMessage,
20
22
  ScrcpyUHidOutputDeviceMessage,
21
23
  } from "../latest.js";
22
24
 
23
- import type { Init } from "./impl/index.js";
25
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
24
26
  import {
25
27
  AckClipboardHandler,
26
28
  ClipboardStream,
29
+ computeOptionValues,
27
30
  ControlMessageTypes,
28
31
  createMediaStreamTransformer,
29
32
  createScrollController,
30
33
  Defaults,
34
+ parseAudioCodecOption,
35
+ parseAudioMetadataCodec,
31
36
  parseAudioStreamMetadata,
32
37
  parseDisplay,
33
38
  parseEncoder,
39
+ parseVideoCodecOption,
34
40
  parseVideoStreamMetadata,
41
+ parseVideoStreamMetadataAsync,
35
42
  serialize,
36
43
  serializeBackOrScreenOnControlMessage,
37
44
  serializeInjectTouchControlMessage,
38
45
  serializeSetClipboardControlMessage,
46
+ serializeSetDisplayPowerControlMessage,
39
47
  serializeUHidCreateControlMessage,
40
48
  setListDisplays,
41
49
  setListEncoders,
42
50
  UHidOutputStream,
43
51
  } from "./impl/index.js";
44
52
 
45
- export class ScrcpyOptions3_3_1<TVideo extends boolean>
46
- implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
53
+ export class ScrcpyOptions3_3_1<TInit extends Init = Init>
54
+ implements
55
+ ScrcpyOptions<ScrcpyOptions3_3_1.Value<TInit>>,
56
+ ScrcpyOptionsListEncoders
47
57
  {
48
58
  static readonly Defaults = Defaults;
49
59
 
50
- readonly value: Required<Init<TVideo>>;
60
+ readonly value: ScrcpyOptions3_3_1.Value<TInit>;
51
61
 
52
62
  get controlMessageTypes(): typeof ControlMessageTypes {
53
63
  return ControlMessageTypes;
54
64
  }
55
65
 
56
66
  #clipboard: ClipboardStream | undefined;
57
- get clipboard(): ReadableStream<string> | undefined {
58
- return this.#clipboard;
67
+ get clipboard(): MapBoolean<
68
+ this["value"]["clipboardAutosync"],
69
+ ReadableStream<string>,
70
+ undefined
71
+ > {
72
+ return this.#clipboard as never;
59
73
  }
60
74
 
61
75
  #ackClipboardHandler: AckClipboardHandler | undefined;
62
76
 
63
77
  #uHidOutput: UHidOutputStream | undefined;
64
- get uHidOutput():
65
- | ReadableStream<ScrcpyUHidOutputDeviceMessage>
66
- | undefined {
67
- return this.#uHidOutput;
78
+ get uHidOutput(): MapBoolean<
79
+ this["value"]["control"],
80
+ ReadableStream<ScrcpyUHidOutputDeviceMessage>,
81
+ undefined
82
+ > {
83
+ return this.#uHidOutput as never;
68
84
  }
69
85
 
70
86
  #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
@@ -72,16 +88,8 @@ export class ScrcpyOptions3_3_1<TVideo extends boolean>
72
88
  return this.#deviceMessageParsers;
73
89
  }
74
90
 
75
- constructor(init: Init<TVideo>) {
76
- this.value = { ...Defaults, ...init } as never;
77
-
78
- if (this.value.videoSource === "camera") {
79
- this.value.control = false;
80
- }
81
-
82
- if (this.value.audioDup) {
83
- this.value.audioSource = "playback";
84
- }
91
+ constructor(init: TInit) {
92
+ this.value = computeOptionValues(init, Defaults);
85
93
 
86
94
  if (this.value.control) {
87
95
  if (this.value.clipboardAutosync) {
@@ -101,7 +109,7 @@ export class ScrcpyOptions3_3_1<TVideo extends boolean>
101
109
  }
102
110
 
103
111
  serialize(): string[] {
104
- return serialize<Init<boolean>>(this.value, Defaults);
112
+ return serialize(this.value, Defaults);
105
113
  }
106
114
 
107
115
  setListDisplays(): void {
@@ -123,18 +131,29 @@ export class ScrcpyOptions3_3_1<TVideo extends boolean>
123
131
  parseVideoStreamMetadata(
124
132
  stream: ReadableStream<Uint8Array>,
125
133
  ): MaybePromiseLike<ScrcpyVideoStream> {
126
- return parseVideoStreamMetadata(this.value, stream);
134
+ return parseVideoStreamMetadata(
135
+ stream,
136
+ this.value.sendDeviceMeta,
137
+ this.value.sendCodecMeta,
138
+ parseVideoCodecOption(this.value.videoCodec),
139
+ parseVideoStreamMetadataAsync,
140
+ );
127
141
  }
128
142
 
129
143
  parseAudioStreamMetadata(
130
144
  stream: ReadableStream<Uint8Array>,
131
145
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
132
- return parseAudioStreamMetadata(stream, this.value);
146
+ return parseAudioStreamMetadata(
147
+ stream,
148
+ this.value.sendCodecMeta,
149
+ parseAudioMetadataCodec,
150
+ parseAudioCodecOption(this.value.audioCodec),
151
+ );
133
152
  }
134
153
 
135
154
  createMediaStreamTransformer(): TransformStream<
136
155
  Uint8Array,
137
- ScrcpyMediaStreamPacket
156
+ ScrcpyVideoStreamPacket
138
157
  > {
139
158
  return createMediaStreamTransformer(this.value);
140
159
  }
@@ -142,37 +161,66 @@ export class ScrcpyOptions3_3_1<TVideo extends boolean>
142
161
  serializeInjectTouchControlMessage(
143
162
  message: ScrcpyInjectTouchControlMessage,
144
163
  ): Uint8Array {
164
+ if (!this.value.control) {
165
+ throw new Error("control is disabled");
166
+ }
145
167
  return serializeInjectTouchControlMessage(message);
146
168
  }
147
169
 
148
170
  serializeBackOrScreenOnControlMessage(
149
171
  message: ScrcpyBackOrScreenOnControlMessage,
150
172
  ): Uint8Array | undefined {
173
+ if (!this.value.control) {
174
+ throw new Error("control is disabled");
175
+ }
151
176
  return serializeBackOrScreenOnControlMessage(message);
152
177
  }
153
178
 
154
179
  serializeSetClipboardControlMessage(
155
180
  message: ScrcpySetClipboardControlMessage,
156
181
  ): Uint8Array | [Uint8Array, Promise<void>] {
182
+ if (!this.value.control) {
183
+ throw new Error("control is disabled");
184
+ }
157
185
  return serializeSetClipboardControlMessage(
158
186
  message,
159
187
  this.#ackClipboardHandler,
160
188
  );
161
189
  }
162
190
 
191
+ serializeSetDisplayPowerControlMessage(
192
+ message: ScrcpySetDisplayPowerControlMessage,
193
+ ): Uint8Array {
194
+ if (!this.value.control) {
195
+ throw new Error("control is disabled");
196
+ }
197
+ return serializeSetDisplayPowerControlMessage(message);
198
+ }
199
+
163
200
  createScrollController(): ScrcpyScrollController {
201
+ if (!this.value.control) {
202
+ throw new Error("control is disabled");
203
+ }
164
204
  return createScrollController();
165
205
  }
166
206
 
167
207
  serializeUHidCreateControlMessage(
168
208
  message: ScrcpyUHidCreateControlMessage,
169
209
  ): Uint8Array {
210
+ if (!this.value.control) {
211
+ throw new Error("control is disabled");
212
+ }
170
213
  return serializeUHidCreateControlMessage(message);
171
214
  }
172
215
  }
173
216
 
174
- type Init_<TVideo extends boolean> = Init<TVideo>;
217
+ type Init_ = Init;
175
218
 
176
219
  export namespace ScrcpyOptions3_3_1 {
177
- export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
220
+ export type Init = Init_;
221
+
222
+ export type Value<TInit extends Init> = ComputeOptionTypes<
223
+ TInit,
224
+ typeof Defaults
225
+ >;
178
226
  }
@@ -0,0 +1,31 @@
1
+ import type { ComputeOptionTypes as ComputeOptionTypes1_15 } from "../../1_15/impl/index.js";
2
+ import { computeOptionValues as computeOptionValues1_15 } from "../../1_15/impl/index.js";
3
+
4
+ import { PrevImpl } from "./prev.js";
5
+
6
+ export type ComputeOptionTypes<
7
+ T extends object,
8
+ TDefaults extends object,
9
+ > = PrevImpl.OverrideAudioSource<
10
+ PrevImpl.OverrideClipboardAutosync<ComputeOptionTypes1_15<T, TDefaults>>
11
+ >;
12
+
13
+ export function computeOptionValues<
14
+ T extends {
15
+ videoSource?: string | undefined;
16
+ control?: boolean | undefined;
17
+ audioDup?: boolean | undefined;
18
+ audioSource?: string | undefined;
19
+ },
20
+ TDefaults extends {
21
+ videoSource: string;
22
+ control: boolean;
23
+ audioDup: boolean;
24
+ audioSource: string;
25
+ },
26
+ >(options: T, defaults: TDefaults): ComputeOptionTypes<T, TDefaults> {
27
+ const value = computeOptionValues1_15(options, defaults);
28
+ PrevImpl.overrideClipboardAutosync(value as never);
29
+ PrevImpl.overrideAudioSource(value as never);
30
+ return value as never;
31
+ }
@@ -0,0 +1,27 @@
1
+ import type { ScrcpyControlMessageTypeMap } from "../../base/index.js";
2
+ import { ScrcpyControlMessageType } from "../../base/index.js";
3
+
4
+ export const ControlMessageTypes = {
5
+ [ScrcpyControlMessageType.InjectKeyCode]: 0,
6
+ [ScrcpyControlMessageType.InjectText]: 1,
7
+ [ScrcpyControlMessageType.InjectTouch]: 2,
8
+ [ScrcpyControlMessageType.InjectScroll]: 3,
9
+ [ScrcpyControlMessageType.BackOrScreenOn]: 4,
10
+ [ScrcpyControlMessageType.ExpandNotificationPanel]: 5,
11
+ [ScrcpyControlMessageType.ExpandSettingPanel]: 6,
12
+ [ScrcpyControlMessageType.CollapseNotificationPanel]: 7,
13
+ [ScrcpyControlMessageType.GetClipboard]: 8,
14
+ [ScrcpyControlMessageType.SetClipboard]: 9,
15
+ [ScrcpyControlMessageType.SetDisplayPower]: 10,
16
+ [ScrcpyControlMessageType.RotateDevice]: 11,
17
+ [ScrcpyControlMessageType.UHidCreate]: 12,
18
+ [ScrcpyControlMessageType.UHidInput]: 13,
19
+ [ScrcpyControlMessageType.UHidDestroy]: 14,
20
+ [ScrcpyControlMessageType.OpenHardKeyboardSettings]: 15,
21
+ [ScrcpyControlMessageType.StartApp]: 16,
22
+ [ScrcpyControlMessageType.ResetVideo]: 17,
23
+ [ScrcpyControlMessageType.CameraSetTorch]: 18,
24
+ [ScrcpyControlMessageType.CameraZoomIn]: 19,
25
+ [ScrcpyControlMessageType.CameraZoomOut]: 20,
26
+ [ScrcpyControlMessageType.ResizeDisplay]: 21,
27
+ } as const satisfies ScrcpyControlMessageTypeMap;
@@ -0,0 +1,20 @@
1
+ import { omit } from "../../utils/omit.js";
2
+
3
+ import type { Init } from "./init.js";
4
+ import { PrevImpl } from "./prev.js";
5
+
6
+ export const Defaults = /* #__PURE__*/ (() =>
7
+ ({
8
+ ...omit(PrevImpl.Defaults, "sendCodecMeta"),
9
+
10
+ minSizeAlignment: 1,
11
+
12
+ cameraZoom: 1,
13
+ cameraTorch: false,
14
+
15
+ flexDisplay: false,
16
+
17
+ keepActive: false,
18
+
19
+ sendStreamMeta: true,
20
+ }) as const satisfies Required<Init>)();
@@ -0,0 +1,9 @@
1
+ export * from "../../3_2/impl/index.js";
2
+
3
+ export { computeOptionValues } from "./compute-option-values.js";
4
+ export type { ComputeOptionTypes } from "./compute-option-values.js";
5
+ export { ControlMessageTypes } from "./control-message-types.js";
6
+ export { Defaults } from "./defaults.js";
7
+ export type { Init } from "./init.js";
8
+ export { createMediaStreamTransformer } from "./media-stream-transformer.js";
9
+ export { parseVideoStreamMetadataAsync } from "./parse-video-stream-metadata.js";
@@ -0,0 +1,14 @@
1
+ import type { PrevImpl } from "./prev.js";
2
+
3
+ export interface Init extends Omit<PrevImpl.Init, "sendCodecMeta"> {
4
+ minSizeAlignment?: 1 | 2 | 4 | 8 | 16 | undefined;
5
+
6
+ cameraZoom?: number | undefined;
7
+ cameraTorch?: boolean | undefined;
8
+
9
+ flexDisplay?: boolean | undefined;
10
+
11
+ keepActive?: boolean | undefined;
12
+
13
+ sendStreamMeta?: boolean | undefined;
14
+ }
@@ -0,0 +1,58 @@
1
+ import {
2
+ getUint32BigEndian,
3
+ getUint64BigEndian,
4
+ } from "@yume-chan/no-data-view";
5
+ import {
6
+ BufferedTransformStream,
7
+ TransformStream,
8
+ } from "@yume-chan/stream-extra";
9
+
10
+ import type { ScrcpyVideoStreamPacket } from "../../base/index.js";
11
+
12
+ import type { Init } from "./init.js";
13
+
14
+ export function createMediaStreamTransformer(
15
+ options: Pick<Init, "sendFrameMeta">,
16
+ ): TransformStream<Uint8Array, ScrcpyVideoStreamPacket> {
17
+ // Quick path for raw stream without frame meta
18
+ if (!options.sendFrameMeta) {
19
+ return new TransformStream({
20
+ transform(chunk, controller) {
21
+ controller.enqueue({
22
+ type: "data",
23
+ data: chunk,
24
+ });
25
+ },
26
+ });
27
+ }
28
+
29
+ return new BufferedTransformStream<ScrcpyVideoStreamPacket>(
30
+ async (buffered) => {
31
+ const header = await buffered.readExactly(12);
32
+ if (header[0]! & 0x80) {
33
+ return {
34
+ type: "session",
35
+ isClientResize: !!(header[0]! & 1),
36
+ width: getUint32BigEndian(header, 4),
37
+ height: getUint32BigEndian(header, 8),
38
+ };
39
+ }
40
+
41
+ if (header[0]! & 0x40) {
42
+ return {
43
+ type: "configuration",
44
+ data: await buffered.readExactly(
45
+ getUint32BigEndian(header, 8),
46
+ ),
47
+ };
48
+ }
49
+
50
+ return {
51
+ type: "data",
52
+ keyframe: !!(header[0]! & 0x20),
53
+ pts: getUint64BigEndian(header, 0) & 0x1fffffffffffffffn,
54
+ data: await buffered.readExactly(getUint32BigEndian(header, 8)),
55
+ };
56
+ },
57
+ );
58
+ }
@@ -0,0 +1,34 @@
1
+ import type { ReadableStream } from "@yume-chan/stream-extra";
2
+ import { BufferedReadableStream } from "@yume-chan/stream-extra";
3
+
4
+ import type { ScrcpyVideoStream } from "../../base/video.js";
5
+ import type { ScrcpyVideoCodecId } from "../../video/index.js";
6
+
7
+ import type { Init } from "./init.js";
8
+ import { PrevImpl } from "./prev.js";
9
+
10
+ export async function parseVideoStreamMetadataAsync(
11
+ stream: ReadableStream<Uint8Array>,
12
+ sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
13
+ sendStreamMeta: Exclude<Init["sendStreamMeta"], undefined>,
14
+ fallbackCodec: ScrcpyVideoCodecId,
15
+ ): Promise<ScrcpyVideoStream> {
16
+ const buffered = new BufferedReadableStream(stream);
17
+
18
+ let deviceName: string | undefined;
19
+ if (sendDeviceMeta) {
20
+ deviceName = await PrevImpl.readString(buffered, 64);
21
+ }
22
+
23
+ let codec: ScrcpyVideoCodecId;
24
+ if (sendStreamMeta) {
25
+ codec = (await PrevImpl.readU32(buffered)) as ScrcpyVideoCodecId;
26
+ } else {
27
+ codec = fallbackCodec;
28
+ }
29
+
30
+ return {
31
+ stream: buffered.release(),
32
+ metadata: { deviceName, codec },
33
+ };
34
+ }
@@ -0,0 +1 @@
1
+ export * as PrevImpl from "../../3_3_1/impl/index.js";