@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
@@ -0,0 +1,226 @@
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
+ import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
+
4
+ import type { ScrcpyAudioStreamMetadata } from "../base/audio.js";
5
+ import { ScrcpyDeviceMessageParsers } from "../base/device-message.js";
6
+ import type { ScrcpyDisplay } from "../base/display.js";
7
+ import type { ScrcpyEncoder } from "../base/encoder.js";
8
+ import type { ScrcpyVideoStreamPacket } from "../base/media.js";
9
+ import type {
10
+ MapBoolean,
11
+ ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
13
+ } from "../base/options.js";
14
+ import type { ScrcpyScrollController } from "../base/scroll-controller.js";
15
+ import type { ScrcpyVideoStream } from "../base/video.js";
16
+ import type {
17
+ ScrcpyBackOrScreenOnControlMessage,
18
+ ScrcpyInjectTouchControlMessage,
19
+ ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
21
+ ScrcpyUHidCreateControlMessage,
22
+ ScrcpyUHidOutputDeviceMessage,
23
+ } from "../latest.js";
24
+
25
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
26
+ import {
27
+ AckClipboardHandler,
28
+ ClipboardStream,
29
+ computeOptionValues,
30
+ ControlMessageTypes,
31
+ createMediaStreamTransformer,
32
+ createScrollController,
33
+ Defaults,
34
+ parseAudioCodecOption,
35
+ parseAudioMetadataCodec,
36
+ parseAudioStreamMetadata,
37
+ parseDisplay,
38
+ parseEncoder,
39
+ parseVideoCodecOption,
40
+ parseVideoStreamMetadata,
41
+ parseVideoStreamMetadataAsync,
42
+ serialize,
43
+ serializeBackOrScreenOnControlMessage,
44
+ serializeInjectTouchControlMessage,
45
+ serializeSetClipboardControlMessage,
46
+ serializeSetDisplayPowerControlMessage,
47
+ serializeUHidCreateControlMessage,
48
+ setListDisplays,
49
+ setListEncoders,
50
+ UHidOutputStream,
51
+ } from "./impl/index.js";
52
+
53
+ export class ScrcpyOptions4_0<TInit extends Init = Init>
54
+ implements
55
+ ScrcpyOptions<ComputeOptionTypes<TInit, typeof Defaults>>,
56
+ ScrcpyOptionsListEncoders
57
+ {
58
+ static readonly Defaults = Defaults;
59
+
60
+ readonly value: ComputeOptionTypes<TInit, typeof Defaults>;
61
+
62
+ get controlMessageTypes(): typeof ControlMessageTypes {
63
+ return ControlMessageTypes;
64
+ }
65
+
66
+ #clipboard: ClipboardStream | undefined;
67
+ get clipboard(): MapBoolean<
68
+ this["value"]["clipboardAutosync"],
69
+ ReadableStream<string>,
70
+ undefined
71
+ > {
72
+ return this.#clipboard as never;
73
+ }
74
+
75
+ #ackClipboardHandler: AckClipboardHandler | undefined;
76
+
77
+ #uHidOutput: UHidOutputStream | undefined;
78
+ get uHidOutput(): MapBoolean<
79
+ this["value"]["control"],
80
+ ReadableStream<ScrcpyUHidOutputDeviceMessage>,
81
+ undefined
82
+ > {
83
+ return this.#uHidOutput as never;
84
+ }
85
+
86
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
87
+ get deviceMessageParsers() {
88
+ return this.#deviceMessageParsers;
89
+ }
90
+
91
+ constructor(init: TInit) {
92
+ this.value = computeOptionValues(init, Defaults);
93
+
94
+ if (this.value.control) {
95
+ if (this.value.clipboardAutosync) {
96
+ this.#clipboard = this.#deviceMessageParsers.add(
97
+ new ClipboardStream(),
98
+ );
99
+ }
100
+
101
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(
102
+ new AckClipboardHandler(),
103
+ );
104
+
105
+ this.#uHidOutput = this.#deviceMessageParsers.add(
106
+ new UHidOutputStream(),
107
+ );
108
+ }
109
+ }
110
+
111
+ serialize(): string[] {
112
+ return serialize(this.value, Defaults);
113
+ }
114
+
115
+ setListDisplays(): void {
116
+ setListDisplays(this.value);
117
+ }
118
+
119
+ parseDisplay(line: string): ScrcpyDisplay | undefined {
120
+ return parseDisplay(line);
121
+ }
122
+
123
+ setListEncoders() {
124
+ setListEncoders(this.value);
125
+ }
126
+
127
+ parseEncoder(line: string): ScrcpyEncoder | undefined {
128
+ return parseEncoder(line);
129
+ }
130
+
131
+ parseVideoStreamMetadata(
132
+ stream: ReadableStream<Uint8Array>,
133
+ ): MaybePromiseLike<ScrcpyVideoStream> {
134
+ return parseVideoStreamMetadata(
135
+ stream,
136
+ this.value.sendDeviceMeta,
137
+ this.value.sendStreamMeta,
138
+ parseVideoCodecOption(this.value.videoCodec),
139
+ parseVideoStreamMetadataAsync,
140
+ );
141
+ }
142
+
143
+ parseAudioStreamMetadata(
144
+ stream: ReadableStream<Uint8Array>,
145
+ ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
146
+ return parseAudioStreamMetadata(
147
+ stream,
148
+ this.value.sendStreamMeta,
149
+ parseAudioMetadataCodec,
150
+ parseAudioCodecOption(this.value.audioCodec),
151
+ );
152
+ }
153
+
154
+ createMediaStreamTransformer(): TransformStream<
155
+ Uint8Array,
156
+ ScrcpyVideoStreamPacket
157
+ > {
158
+ return createMediaStreamTransformer(this.value);
159
+ }
160
+
161
+ serializeInjectTouchControlMessage(
162
+ message: ScrcpyInjectTouchControlMessage,
163
+ ): Uint8Array {
164
+ if (!this.value.control) {
165
+ throw new Error("control is disabled");
166
+ }
167
+ return serializeInjectTouchControlMessage(message);
168
+ }
169
+
170
+ serializeBackOrScreenOnControlMessage(
171
+ message: ScrcpyBackOrScreenOnControlMessage,
172
+ ): Uint8Array | undefined {
173
+ if (!this.value.control) {
174
+ throw new Error("control is disabled");
175
+ }
176
+ return serializeBackOrScreenOnControlMessage(message);
177
+ }
178
+
179
+ serializeSetClipboardControlMessage(
180
+ message: ScrcpySetClipboardControlMessage,
181
+ ): Uint8Array | [Uint8Array, Promise<void>] {
182
+ if (!this.value.control) {
183
+ throw new Error("control is disabled");
184
+ }
185
+ return serializeSetClipboardControlMessage(
186
+ message,
187
+ this.#ackClipboardHandler,
188
+ );
189
+ }
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
+
200
+ createScrollController(): ScrcpyScrollController {
201
+ if (!this.value.control) {
202
+ throw new Error("control is disabled");
203
+ }
204
+ return createScrollController();
205
+ }
206
+
207
+ serializeUHidCreateControlMessage(
208
+ message: ScrcpyUHidCreateControlMessage,
209
+ ): Uint8Array {
210
+ if (!this.value.control) {
211
+ throw new Error("control is disabled");
212
+ }
213
+ return serializeUHidCreateControlMessage(message);
214
+ }
215
+ }
216
+
217
+ type Init_ = Init;
218
+
219
+ export namespace ScrcpyOptions4_0 {
220
+ export type Init = Init_;
221
+
222
+ export type Value<TInit extends Init> = ComputeOptionTypes<
223
+ TInit,
224
+ typeof Defaults
225
+ >;
226
+ }
@@ -0,0 +1,28 @@
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
+ [ScrcpyControlMessageType.ScanFile]: 22,
28
+ } as const satisfies ScrcpyControlMessageTypeMap;
@@ -0,0 +1,8 @@
1
+ import type { Init } from "./init.js";
2
+ import { PrevImpl } from "./prev.js";
3
+
4
+ export const Defaults = {
5
+ ...PrevImpl.Defaults,
6
+
7
+ ignoreVideoEncoderConstraints: false,
8
+ } as const satisfies Required<Init>;
@@ -0,0 +1,6 @@
1
+ export * from "../../4_0/impl/index.js";
2
+
3
+ export { ControlMessageTypes } from "./control-message-types.js";
4
+ export { Defaults } from "./defaults.js";
5
+ export type { Init } from "./init.js";
6
+ export { parseVideoCodecOption } from "./parse-video-stream-metadata.js";
@@ -0,0 +1,7 @@
1
+ import type { PrevImpl } from "./prev.js";
2
+
3
+ export interface Init extends Omit<PrevImpl.Init, "videoCodec"> {
4
+ videoCodec: PrevImpl.Init["videoCodec"] | "vp8" | "vp9";
5
+
6
+ ignoreVideoEncoderConstraints?: boolean | undefined;
7
+ }
@@ -0,0 +1,23 @@
1
+ import { ScrcpyVideoCodecId } from "../../video/index.js";
2
+
3
+ import type { Init } from "./init.js";
4
+
5
+ export function parseVideoCodecOption(
6
+ codec: Exclude<Init["videoCodec"], undefined>,
7
+ ): ScrcpyVideoCodecId {
8
+ switch (codec) {
9
+ case "h264":
10
+ return ScrcpyVideoCodecId.H264;
11
+ case "h265":
12
+ return ScrcpyVideoCodecId.H265;
13
+ case "av1":
14
+ return ScrcpyVideoCodecId.Av1;
15
+ case "vp8":
16
+ return ScrcpyVideoCodecId.Vp8;
17
+ case "vp9":
18
+ return ScrcpyVideoCodecId.Vp9;
19
+ default:
20
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
21
+ throw new Error(`Unknown video codec: ${codec}`);
22
+ }
23
+ }
@@ -0,0 +1 @@
1
+ export * as PrevImpl from "../../4_0/impl/index.js";
@@ -0,0 +1,226 @@
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
+ import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
+
4
+ import type { ScrcpyAudioStreamMetadata } from "../base/audio.js";
5
+ import { ScrcpyDeviceMessageParsers } from "../base/device-message.js";
6
+ import type { ScrcpyDisplay } from "../base/display.js";
7
+ import type { ScrcpyEncoder } from "../base/encoder.js";
8
+ import type { ScrcpyVideoStreamPacket } from "../base/media.js";
9
+ import type {
10
+ MapBoolean,
11
+ ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
13
+ } from "../base/options.js";
14
+ import type { ScrcpyScrollController } from "../base/scroll-controller.js";
15
+ import type { ScrcpyVideoStream } from "../base/video.js";
16
+ import type {
17
+ ScrcpyBackOrScreenOnControlMessage,
18
+ ScrcpyInjectTouchControlMessage,
19
+ ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
21
+ ScrcpyUHidCreateControlMessage,
22
+ ScrcpyUHidOutputDeviceMessage,
23
+ } from "../latest.js";
24
+
25
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
26
+ import {
27
+ AckClipboardHandler,
28
+ ClipboardStream,
29
+ computeOptionValues,
30
+ ControlMessageTypes,
31
+ createMediaStreamTransformer,
32
+ createScrollController,
33
+ Defaults,
34
+ parseAudioCodecOption,
35
+ parseAudioMetadataCodec,
36
+ parseAudioStreamMetadata,
37
+ parseDisplay,
38
+ parseEncoder,
39
+ parseVideoCodecOption,
40
+ parseVideoStreamMetadata,
41
+ parseVideoStreamMetadataAsync,
42
+ serialize,
43
+ serializeBackOrScreenOnControlMessage,
44
+ serializeInjectTouchControlMessage,
45
+ serializeSetClipboardControlMessage,
46
+ serializeSetDisplayPowerControlMessage,
47
+ serializeUHidCreateControlMessage,
48
+ setListDisplays,
49
+ setListEncoders,
50
+ UHidOutputStream,
51
+ } from "./impl/index.js";
52
+
53
+ export class ScrcpyOptions4_1<TInit extends Init = Init>
54
+ implements
55
+ ScrcpyOptions<ComputeOptionTypes<TInit, typeof Defaults>>,
56
+ ScrcpyOptionsListEncoders
57
+ {
58
+ static readonly Defaults = Defaults;
59
+
60
+ readonly value: ComputeOptionTypes<TInit, typeof Defaults>;
61
+
62
+ get controlMessageTypes(): typeof ControlMessageTypes {
63
+ return ControlMessageTypes;
64
+ }
65
+
66
+ #clipboard: ClipboardStream | undefined;
67
+ get clipboard(): MapBoolean<
68
+ this["value"]["clipboardAutosync"],
69
+ ReadableStream<string>,
70
+ undefined
71
+ > {
72
+ return this.#clipboard as never;
73
+ }
74
+
75
+ #ackClipboardHandler: AckClipboardHandler | undefined;
76
+
77
+ #uHidOutput: UHidOutputStream | undefined;
78
+ get uHidOutput(): MapBoolean<
79
+ this["value"]["control"],
80
+ ReadableStream<ScrcpyUHidOutputDeviceMessage>,
81
+ undefined
82
+ > {
83
+ return this.#uHidOutput as never;
84
+ }
85
+
86
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
87
+ get deviceMessageParsers() {
88
+ return this.#deviceMessageParsers;
89
+ }
90
+
91
+ constructor(init: TInit) {
92
+ this.value = computeOptionValues(init, Defaults);
93
+
94
+ if (this.value.control) {
95
+ if (this.value.clipboardAutosync) {
96
+ this.#clipboard = this.#deviceMessageParsers.add(
97
+ new ClipboardStream(),
98
+ );
99
+ }
100
+
101
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(
102
+ new AckClipboardHandler(),
103
+ );
104
+
105
+ this.#uHidOutput = this.#deviceMessageParsers.add(
106
+ new UHidOutputStream(),
107
+ );
108
+ }
109
+ }
110
+
111
+ serialize(): string[] {
112
+ return serialize(this.value, Defaults);
113
+ }
114
+
115
+ setListDisplays(): void {
116
+ setListDisplays(this.value);
117
+ }
118
+
119
+ parseDisplay(line: string): ScrcpyDisplay | undefined {
120
+ return parseDisplay(line);
121
+ }
122
+
123
+ setListEncoders() {
124
+ setListEncoders(this.value);
125
+ }
126
+
127
+ parseEncoder(line: string): ScrcpyEncoder | undefined {
128
+ return parseEncoder(line);
129
+ }
130
+
131
+ parseVideoStreamMetadata(
132
+ stream: ReadableStream<Uint8Array>,
133
+ ): MaybePromiseLike<ScrcpyVideoStream> {
134
+ return parseVideoStreamMetadata(
135
+ stream,
136
+ this.value.sendDeviceMeta,
137
+ this.value.sendStreamMeta,
138
+ parseVideoCodecOption(this.value.videoCodec),
139
+ parseVideoStreamMetadataAsync,
140
+ );
141
+ }
142
+
143
+ parseAudioStreamMetadata(
144
+ stream: ReadableStream<Uint8Array>,
145
+ ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
146
+ return parseAudioStreamMetadata(
147
+ stream,
148
+ this.value.sendStreamMeta,
149
+ parseAudioMetadataCodec,
150
+ parseAudioCodecOption(this.value.audioCodec),
151
+ );
152
+ }
153
+
154
+ createMediaStreamTransformer(): TransformStream<
155
+ Uint8Array,
156
+ ScrcpyVideoStreamPacket
157
+ > {
158
+ return createMediaStreamTransformer(this.value);
159
+ }
160
+
161
+ serializeInjectTouchControlMessage(
162
+ message: ScrcpyInjectTouchControlMessage,
163
+ ): Uint8Array {
164
+ if (!this.value.control) {
165
+ throw new Error("control is disabled");
166
+ }
167
+ return serializeInjectTouchControlMessage(message);
168
+ }
169
+
170
+ serializeBackOrScreenOnControlMessage(
171
+ message: ScrcpyBackOrScreenOnControlMessage,
172
+ ): Uint8Array | undefined {
173
+ if (!this.value.control) {
174
+ throw new Error("control is disabled");
175
+ }
176
+ return serializeBackOrScreenOnControlMessage(message);
177
+ }
178
+
179
+ serializeSetClipboardControlMessage(
180
+ message: ScrcpySetClipboardControlMessage,
181
+ ): Uint8Array | [Uint8Array, Promise<void>] {
182
+ if (!this.value.control) {
183
+ throw new Error("control is disabled");
184
+ }
185
+ return serializeSetClipboardControlMessage(
186
+ message,
187
+ this.#ackClipboardHandler,
188
+ );
189
+ }
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
+
200
+ createScrollController(): ScrcpyScrollController {
201
+ if (!this.value.control) {
202
+ throw new Error("control is disabled");
203
+ }
204
+ return createScrollController();
205
+ }
206
+
207
+ serializeUHidCreateControlMessage(
208
+ message: ScrcpyUHidCreateControlMessage,
209
+ ): Uint8Array {
210
+ if (!this.value.control) {
211
+ throw new Error("control is disabled");
212
+ }
213
+ return serializeUHidCreateControlMessage(message);
214
+ }
215
+ }
216
+
217
+ type Init_ = Init;
218
+
219
+ export namespace ScrcpyOptions4_1 {
220
+ export type Init = Init_;
221
+
222
+ export type Value<TInit extends Init> = ComputeOptionTypes<
223
+ TInit,
224
+ typeof Defaults
225
+ >;
226
+ }
@@ -16,3 +16,8 @@ export const UHidDestroy = 14;
16
16
  export const OpenHardKeyboardSettings = 15;
17
17
  export const StartApp = 16;
18
18
  export const ResetVideo = 17;
19
+ export const CameraSetTorch = 18;
20
+ export const CameraZoomIn = 19;
21
+ export const CameraZoomOut = 20;
22
+ export const ResizeDisplay = 21;
23
+ export const ScanFile = 22;
package/src/base/media.ts CHANGED
@@ -10,6 +10,15 @@ export interface ScrcpyMediaStreamDataPacket {
10
10
  data: Uint8Array;
11
11
  }
12
12
 
13
- export type ScrcpyMediaStreamPacket =
14
- | ScrcpyMediaStreamConfigurationPacket
15
- | ScrcpyMediaStreamDataPacket;
13
+ export interface ScrcpyVideoStreamSessionPacket {
14
+ type: "session";
15
+ isClientResize: boolean;
16
+ width: number;
17
+ height: number;
18
+ }
19
+
20
+ export type ScrcpyAudioStreamPacket =
21
+ ScrcpyMediaStreamConfigurationPacket | ScrcpyMediaStreamDataPacket;
22
+
23
+ export type ScrcpyVideoStreamPacket =
24
+ ScrcpyAudioStreamPacket | ScrcpyVideoStreamSessionPacket;
@@ -5,6 +5,7 @@ import type {
5
5
  ScrcpyBackOrScreenOnControlMessage,
6
6
  ScrcpyInjectTouchControlMessage,
7
7
  ScrcpySetClipboardControlMessage,
8
+ ScrcpySetDisplayPowerControlMessage,
8
9
  ScrcpyUHidCreateControlMessage,
9
10
  ScrcpyUHidOutputDeviceMessage,
10
11
  } from "../latest.js";
@@ -14,7 +15,7 @@ import type { ScrcpyControlMessageType } from "./control-message-type.js";
14
15
  import type { ScrcpyDeviceMessageParsers } from "./device-message.js";
15
16
  import type { ScrcpyDisplay } from "./display.js";
16
17
  import type { ScrcpyEncoder } from "./encoder.js";
17
- import type { ScrcpyMediaStreamPacket } from "./media.js";
18
+ import type { ScrcpyVideoStreamPacket } from "./media.js";
18
19
  import type { ScrcpyScrollController } from "./scroll-controller.js";
19
20
  import type { ScrcpyVideoStream } from "./video.js";
20
21
 
@@ -22,16 +23,21 @@ export type ScrcpyControlMessageTypeMap = Partial<
22
23
  Record<ScrcpyControlMessageType, number>
23
24
  >;
24
25
 
26
+ // Distributive Conditional Types
27
+ // (https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types)
28
+ export type MapBoolean<T extends boolean, TTrue, TFalse> = T extends true
29
+ ? TTrue
30
+ : TFalse;
31
+
25
32
  export interface ScrcpyOptions<T extends object> {
26
33
  get controlMessageTypes(): ScrcpyControlMessageTypeMap;
27
34
 
28
- value: Required<T>;
35
+ value: T;
29
36
 
30
37
  readonly clipboard?: ReadableStream<string> | undefined;
31
38
 
32
39
  readonly uHidOutput?:
33
- | ReadableStream<ScrcpyUHidOutputDeviceMessage>
34
- | undefined;
40
+ ReadableStream<ScrcpyUHidOutputDeviceMessage> | undefined;
35
41
 
36
42
  readonly deviceMessageParsers: ScrcpyDeviceMessageParsers;
37
43
 
@@ -51,7 +57,7 @@ export interface ScrcpyOptions<T extends object> {
51
57
 
52
58
  createMediaStreamTransformer(): TransformStream<
53
59
  Uint8Array,
54
- ScrcpyMediaStreamPacket
60
+ ScrcpyVideoStreamPacket
55
61
  >;
56
62
 
57
63
  serializeInjectTouchControlMessage(
@@ -66,6 +72,10 @@ export interface ScrcpyOptions<T extends object> {
66
72
  message: ScrcpySetClipboardControlMessage,
67
73
  ): Uint8Array | [Uint8Array, Promise<void>];
68
74
 
75
+ serializeSetDisplayPowerControlMessage(
76
+ message: ScrcpySetDisplayPowerControlMessage,
77
+ ): Uint8Array;
78
+
69
79
  createScrollController(): ScrcpyScrollController;
70
80
 
71
81
  serializeUHidCreateControlMessage?(
package/src/base/video.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { ReadableStream } from "@yume-chan/stream-extra";
2
2
 
3
+ import type { ScrcpyVideoCodecId } from "../video/index.js";
4
+
3
5
  export interface ScrcpyVideoStream {
4
6
  readonly stream: ReadableStream<Uint8Array>;
5
7
  readonly metadata: ScrcpyVideoStreamMetadata;
@@ -11,22 +13,3 @@ export interface ScrcpyVideoStreamMetadata {
11
13
  height?: number | undefined;
12
14
  codec: ScrcpyVideoCodecId;
13
15
  }
14
-
15
- export const ScrcpyVideoCodecId = {
16
- H264: 0x68_32_36_34,
17
- H265: 0x68_32_36_35,
18
- AV1: 0x00_61_76_31,
19
- } as const;
20
-
21
- export type ScrcpyVideoCodecId =
22
- (typeof ScrcpyVideoCodecId)[keyof typeof ScrcpyVideoCodecId];
23
-
24
- export const ScrcpyVideoCodecNameMap = /* #__PURE__ */ (() => {
25
- const result = new Map<number, string>();
26
- for (const key in ScrcpyVideoCodecId) {
27
- const value =
28
- ScrcpyVideoCodecId[key as keyof typeof ScrcpyVideoCodecId];
29
- result.set(value, key);
30
- }
31
- return result;
32
- })();
@@ -0,0 +1,9 @@
1
+ import type { StructInit } from "@yume-chan/struct";
2
+ import { struct, u8 } from "@yume-chan/struct";
3
+
4
+ export const BooleanControlMessage = struct(
5
+ { type: u8, value: u8<boolean>() },
6
+ { littleEndian: false },
7
+ );
8
+
9
+ export type BooleanControlMessage = StructInit<typeof BooleanControlMessage>;
@@ -1,6 +1,7 @@
1
+ export * from "./boolean.js";
1
2
  export * from "./empty.js";
2
3
  export * from "./inject-key-code.js";
3
4
  export * from "./inject-text.js";
5
+ export * from "./resize-display.js";
4
6
  export * from "./serializer.js";
5
- export * from "./set-screen-power-mode.js";
6
7
  export * from "./writer.js";
@@ -0,0 +1,16 @@
1
+ import type { StructInit } from "@yume-chan/struct";
2
+ import { struct, u16, u8 } from "@yume-chan/struct";
3
+
4
+ export const ScrcpyResizeDisplayControlMessage = struct(
5
+ {
6
+ // value of `type` can change between versions
7
+ type: u8,
8
+ width: u16,
9
+ height: u16,
10
+ },
11
+ { littleEndian: false },
12
+ );
13
+
14
+ export type ScrcpyResizeDisplayControlMessage = StructInit<
15
+ typeof ScrcpyResizeDisplayControlMessage
16
+ >;