@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.
- package/esm/1_15/impl/codec-options.d.ts +12 -11
- package/esm/1_15/impl/codec-options.d.ts.map +1 -1
- package/esm/1_15/impl/codec-options.js +50 -11
- package/esm/1_15/impl/codec-options.js.map +1 -1
- package/esm/1_15/impl/compute-option-values.d.ts +7 -0
- package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
- package/esm/1_15/impl/compute-option-values.js +12 -0
- package/esm/1_15/impl/compute-option-values.js.map +1 -0
- package/esm/1_15/impl/index.d.ts +2 -0
- package/esm/1_15/impl/index.d.ts.map +1 -1
- package/esm/1_15/impl/index.js +2 -0
- package/esm/1_15/impl/index.js.map +1 -1
- package/esm/1_15/impl/init.d.ts +11 -11
- package/esm/1_15/impl/init.d.ts.map +1 -1
- package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
- package/esm/1_15/impl/media-stream-transformer.js +1 -1
- package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
- package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
- package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/1_15/impl/set-display-power.d.ts +13 -0
- package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
- package/esm/1_15/impl/set-display-power.js +16 -0
- package/esm/1_15/impl/set-display-power.js.map +1 -0
- package/esm/1_15/options.d.ts +12 -9
- package/esm/1_15/options.d.ts.map +1 -1
- package/esm/1_15/options.js +20 -2
- package/esm/1_15/options.js.map +1 -1
- package/esm/1_17/options.d.ts +11 -9
- package/esm/1_17/options.d.ts.map +1 -1
- package/esm/1_17/options.js +20 -2
- package/esm/1_17/options.js.map +1 -1
- package/esm/1_18/impl/init.d.ts +3 -3
- package/esm/1_18/impl/init.d.ts.map +1 -1
- package/esm/1_18/options.d.ts +11 -9
- package/esm/1_18/options.d.ts.map +1 -1
- package/esm/1_18/options.js +20 -2
- package/esm/1_18/options.js.map +1 -1
- package/esm/1_21/impl/compute-option-values.d.ts +23 -0
- package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
- package/esm/1_21/impl/compute-option-values.js +12 -0
- package/esm/1_21/impl/compute-option-values.js.map +1 -0
- package/esm/1_21/impl/index.d.ts +3 -1
- package/esm/1_21/impl/index.d.ts.map +1 -1
- package/esm/1_21/impl/index.js +2 -1
- package/esm/1_21/impl/index.js.map +1 -1
- package/esm/1_21/impl/init.d.ts +1 -1
- package/esm/1_21/impl/init.d.ts.map +1 -1
- package/esm/1_21/impl/serialize.d.ts +1 -1
- package/esm/1_21/impl/serialize.d.ts.map +1 -1
- package/esm/1_21/impl/serialize.js.map +1 -1
- package/esm/1_21/options.d.ts +11 -9
- package/esm/1_21/options.d.ts.map +1 -1
- package/esm/1_21/options.js +20 -2
- package/esm/1_21/options.js.map +1 -1
- package/esm/1_22/impl/init.d.ts +3 -3
- package/esm/1_22/impl/init.d.ts.map +1 -1
- package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
- package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
- package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
- package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/1_22/options.d.ts +11 -9
- package/esm/1_22/options.d.ts.map +1 -1
- package/esm/1_22/options.js +21 -3
- package/esm/1_22/options.js.map +1 -1
- package/esm/1_23/impl/init.d.ts +1 -1
- package/esm/1_23/impl/init.d.ts.map +1 -1
- package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
- package/esm/1_23/impl/media-stream-transformer.js +1 -1
- package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
- package/esm/1_23/options.d.ts +11 -9
- package/esm/1_23/options.d.ts.map +1 -1
- package/esm/1_23/options.js +21 -3
- package/esm/1_23/options.js.map +1 -1
- package/esm/1_24/impl/init.d.ts +1 -1
- package/esm/1_24/impl/init.d.ts.map +1 -1
- package/esm/1_24/options.d.ts +11 -9
- package/esm/1_24/options.d.ts.map +1 -1
- package/esm/1_24/options.js +21 -3
- package/esm/1_24/options.js.map +1 -1
- package/esm/1_25/options.d.ts +11 -9
- package/esm/1_25/options.d.ts.map +1 -1
- package/esm/1_25/options.js +21 -3
- package/esm/1_25/options.js.map +1 -1
- package/esm/2_0/impl/defaults.d.ts +8 -11
- package/esm/2_0/impl/defaults.d.ts.map +1 -1
- package/esm/2_0/impl/defaults.js +4 -10
- package/esm/2_0/impl/defaults.js.map +1 -1
- package/esm/2_0/impl/index.d.ts +1 -1
- package/esm/2_0/impl/index.d.ts.map +1 -1
- package/esm/2_0/impl/index.js +1 -1
- package/esm/2_0/impl/index.js.map +1 -1
- package/esm/2_0/impl/init.d.ts +8 -8
- package/esm/2_0/impl/init.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.js +28 -39
- package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
- package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
- package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
- package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/2_0/options.d.ts +19 -20
- package/esm/2_0/options.d.ts.map +1 -1
- package/esm/2_0/options.js +22 -4
- package/esm/2_0/options.js.map +1 -1
- package/esm/2_1/impl/defaults.d.ts +8 -11
- package/esm/2_1/impl/defaults.d.ts.map +1 -1
- package/esm/2_1/impl/defaults.js.map +1 -1
- package/esm/2_1/impl/init.d.ts +3 -3
- package/esm/2_1/impl/init.d.ts.map +1 -1
- package/esm/2_1/options.d.ts +21 -22
- package/esm/2_1/options.d.ts.map +1 -1
- package/esm/2_1/options.js +22 -4
- package/esm/2_1/options.js.map +1 -1
- package/esm/2_2/impl/compute-option-values.d.ts +22 -0
- package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
- package/esm/2_2/impl/compute-option-values.js +11 -0
- package/esm/2_2/impl/compute-option-values.js.map +1 -0
- package/esm/2_2/impl/defaults.d.ts +8 -11
- package/esm/2_2/impl/defaults.d.ts.map +1 -1
- package/esm/2_2/impl/defaults.js.map +1 -1
- package/esm/2_2/impl/index.d.ts +2 -0
- package/esm/2_2/impl/index.d.ts.map +1 -1
- package/esm/2_2/impl/index.js +1 -0
- package/esm/2_2/impl/index.js.map +1 -1
- package/esm/2_2/impl/init.d.ts +5 -5
- package/esm/2_2/impl/init.d.ts.map +1 -1
- package/esm/2_2/options.d.ts +21 -22
- package/esm/2_2/options.d.ts.map +1 -1
- package/esm/2_2/options.js +22 -7
- package/esm/2_2/options.js.map +1 -1
- package/esm/2_3/impl/index.d.ts +1 -0
- package/esm/2_3/impl/index.d.ts.map +1 -1
- package/esm/2_3/impl/index.js +1 -0
- package/esm/2_3/impl/index.js.map +1 -1
- package/esm/2_3/impl/init.d.ts +2 -2
- package/esm/2_3/impl/init.d.ts.map +1 -1
- package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
- package/esm/2_3/options.d.ts +21 -22
- package/esm/2_3/options.d.ts.map +1 -1
- package/esm/2_3/options.js +22 -7
- package/esm/2_3/options.js.map +1 -1
- package/esm/2_4/options.d.ts +22 -23
- package/esm/2_4/options.d.ts.map +1 -1
- package/esm/2_4/options.js +25 -7
- package/esm/2_4/options.js.map +1 -1
- package/esm/2_6/impl/compute-option-values.d.ts +29 -0
- package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
- package/esm/2_6/impl/compute-option-values.js +12 -0
- package/esm/2_6/impl/compute-option-values.js.map +1 -0
- package/esm/2_6/impl/defaults.d.ts +8 -11
- package/esm/2_6/impl/defaults.d.ts.map +1 -1
- package/esm/2_6/impl/defaults.js.map +1 -1
- package/esm/2_6/impl/index.d.ts +2 -0
- package/esm/2_6/impl/index.d.ts.map +1 -1
- package/esm/2_6/impl/index.js +1 -0
- package/esm/2_6/impl/index.js.map +1 -1
- package/esm/2_6/impl/init.d.ts +3 -3
- package/esm/2_6/impl/init.d.ts.map +1 -1
- package/esm/2_6/options.d.ts +22 -23
- package/esm/2_6/options.d.ts.map +1 -1
- package/esm/2_6/options.js +25 -10
- package/esm/2_6/options.js.map +1 -1
- package/esm/2_7/impl/index.d.ts.map +1 -1
- package/esm/2_7/impl/index.js.map +1 -1
- package/esm/2_7/options.d.ts +22 -23
- package/esm/2_7/options.d.ts.map +1 -1
- package/esm/2_7/options.js +25 -10
- package/esm/2_7/options.js.map +1 -1
- package/esm/3_0/impl/defaults.d.ts +29 -33
- package/esm/3_0/impl/defaults.d.ts.map +1 -1
- package/esm/3_0/impl/defaults.js +4 -8
- package/esm/3_0/impl/defaults.js.map +1 -1
- package/esm/3_0/impl/index.d.ts +1 -0
- package/esm/3_0/impl/index.d.ts.map +1 -1
- package/esm/3_0/impl/index.js +1 -0
- package/esm/3_0/impl/index.js.map +1 -1
- package/esm/3_0/impl/init.d.ts +4 -4
- package/esm/3_0/impl/init.d.ts.map +1 -1
- package/esm/3_0/impl/set-display-power.d.ts +12 -0
- package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
- package/esm/3_0/impl/set-display-power.js +10 -0
- package/esm/3_0/impl/set-display-power.js.map +1 -0
- package/esm/3_0/options.d.ts +43 -45
- package/esm/3_0/options.d.ts.map +1 -1
- package/esm/3_0/options.js +25 -10
- package/esm/3_0/options.js.map +1 -1
- package/esm/3_1/impl/defaults.d.ts +29 -33
- package/esm/3_1/impl/defaults.d.ts.map +1 -1
- package/esm/3_1/impl/defaults.js.map +1 -1
- package/esm/3_1/impl/index.d.ts.map +1 -1
- package/esm/3_1/impl/index.js.map +1 -1
- package/esm/3_1/impl/init.d.ts +2 -2
- package/esm/3_1/impl/init.d.ts.map +1 -1
- package/esm/3_1/options.d.ts +43 -45
- package/esm/3_1/options.d.ts.map +1 -1
- package/esm/3_1/options.js +25 -10
- package/esm/3_1/options.js.map +1 -1
- package/esm/3_2/impl/defaults.d.ts +29 -33
- package/esm/3_2/impl/defaults.d.ts.map +1 -1
- package/esm/3_2/impl/defaults.js.map +1 -1
- package/esm/3_2/impl/index.d.ts.map +1 -1
- package/esm/3_2/impl/index.js.map +1 -1
- package/esm/3_2/impl/init.d.ts +2 -2
- package/esm/3_2/impl/init.d.ts.map +1 -1
- package/esm/3_2/options.d.ts +43 -45
- package/esm/3_2/options.d.ts.map +1 -1
- package/esm/3_2/options.js +25 -10
- package/esm/3_2/options.js.map +1 -1
- package/esm/3_3_1/options.d.ts +43 -45
- package/esm/3_3_1/options.d.ts.map +1 -1
- package/esm/3_3_1/options.js +25 -10
- package/esm/3_3_1/options.js.map +1 -1
- package/esm/4_0/impl/compute-option-values.d.ts +15 -0
- package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
- package/esm/4_0/impl/compute-option-values.js +9 -0
- package/esm/4_0/impl/compute-option-values.js.map +1 -0
- package/esm/4_0/impl/control-message-types.d.ts +25 -0
- package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
- package/esm/4_0/impl/control-message-types.js +26 -0
- package/esm/4_0/impl/control-message-types.js.map +1 -0
- package/esm/4_0/impl/defaults.d.ts +58 -0
- package/esm/4_0/impl/defaults.d.ts.map +1 -0
- package/esm/4_0/impl/defaults.js +12 -0
- package/esm/4_0/impl/defaults.js.map +1 -0
- package/esm/4_0/impl/index.d.ts +9 -0
- package/esm/4_0/impl/index.d.ts.map +1 -0
- package/esm/4_0/impl/index.js +7 -0
- package/esm/4_0/impl/index.js.map +1 -0
- package/esm/4_0/impl/init.d.ts +10 -0
- package/esm/4_0/impl/init.d.ts.map +1 -0
- package/esm/4_0/impl/init.js +2 -0
- package/esm/4_0/impl/init.js.map +1 -0
- package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
- package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
- package/esm/4_0/impl/media-stream-transformer.js +39 -0
- package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
- package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
- package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
- package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
- package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
- package/esm/4_0/impl/prev.d.ts +2 -0
- package/esm/4_0/impl/prev.d.ts.map +1 -0
- package/esm/4_0/impl/prev.js +2 -0
- package/esm/4_0/impl/prev.js.map +1 -0
- package/esm/4_0/index.d.ts +100 -0
- package/esm/4_0/index.d.ts.map +1 -0
- package/esm/4_0/index.js +93 -0
- package/esm/4_0/index.js.map +1 -0
- package/esm/4_1/impl/control-message-types.d.ts +26 -0
- package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
- package/esm/4_1/impl/control-message-types.js +27 -0
- package/esm/4_1/impl/control-message-types.js.map +1 -0
- package/esm/4_1/impl/defaults.d.ts +59 -0
- package/esm/4_1/impl/defaults.d.ts.map +1 -0
- package/esm/4_1/impl/defaults.js +6 -0
- package/esm/4_1/impl/defaults.js.map +1 -0
- package/esm/4_1/impl/index.d.ts +6 -0
- package/esm/4_1/impl/index.d.ts.map +1 -0
- package/esm/4_1/impl/index.js +5 -0
- package/esm/4_1/impl/index.js.map +1 -0
- package/esm/4_1/impl/init.d.ts +6 -0
- package/esm/4_1/impl/init.d.ts.map +1 -0
- package/esm/4_1/impl/init.js +2 -0
- package/esm/4_1/impl/init.js.map +1 -0
- package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
- package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
- package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
- package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
- package/esm/4_1/impl/prev.d.ts +2 -0
- package/esm/4_1/impl/prev.d.ts.map +1 -0
- package/esm/4_1/impl/prev.js +2 -0
- package/esm/4_1/impl/prev.js.map +1 -0
- package/esm/4_1/index.d.ts +101 -0
- package/esm/4_1/index.d.ts.map +1 -0
- package/esm/4_1/index.js +93 -0
- package/esm/4_1/index.js.map +1 -0
- package/esm/base/control-message-type-value.d.ts +5 -0
- package/esm/base/control-message-type-value.d.ts.map +1 -1
- package/esm/base/control-message-type-value.js +5 -0
- package/esm/base/control-message-type-value.js.map +1 -1
- package/esm/base/media.d.ts +8 -1
- package/esm/base/media.d.ts.map +1 -1
- package/esm/base/options.d.ts +6 -4
- package/esm/base/options.d.ts.map +1 -1
- package/esm/base/video.d.ts +1 -7
- package/esm/base/video.d.ts.map +1 -1
- package/esm/base/video.js +1 -13
- package/esm/base/video.js.map +1 -1
- package/esm/control/boolean.d.ts +10 -0
- package/esm/control/boolean.d.ts.map +1 -0
- package/esm/control/boolean.js +3 -0
- package/esm/control/boolean.js.map +1 -0
- package/esm/control/index.d.ts +2 -1
- package/esm/control/index.d.ts.map +1 -1
- package/esm/control/index.js +2 -1
- package/esm/control/index.js.map +1 -1
- package/esm/control/resize-display.d.ts +12 -0
- package/esm/control/resize-display.d.ts.map +1 -0
- package/esm/control/resize-display.js +8 -0
- package/esm/control/resize-display.js.map +1 -0
- package/esm/control/serializer.d.ts +8 -2
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +30 -4
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/writer.d.ts +8 -2
- package/esm/control/writer.d.ts.map +1 -1
- package/esm/control/writer.js +17 -2
- package/esm/control/writer.js.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/latest.d.ts +2 -2
- package/esm/latest.d.ts.map +1 -1
- package/esm/latest.js +2 -2
- package/esm/latest.js.map +1 -1
- package/esm/utils/omit.d.ts +1 -1
- package/esm/utils/omit.d.ts.map +1 -1
- package/esm/video/codec-id.d.ts +6 -0
- package/esm/video/codec-id.d.ts.map +1 -0
- package/esm/video/codec-id.js +6 -0
- package/esm/video/codec-id.js.map +1 -0
- package/esm/video/index.d.ts +4 -0
- package/esm/video/index.d.ts.map +1 -1
- package/esm/video/index.js +12 -0
- package/esm/video/index.js.map +1 -1
- package/esm/video/size.d.ts +8 -9
- package/esm/video/size.d.ts.map +1 -1
- package/esm/video/size.js +2 -2
- package/esm/video/size.js.map +1 -1
- package/package.json +7 -7
- package/src/1_15/impl/codec-options.ts +68 -17
- package/src/1_15/impl/compute-option-values.ts +26 -0
- package/src/1_15/impl/index.ts +2 -0
- package/src/1_15/impl/init.ts +11 -11
- package/src/1_15/impl/media-stream-transformer.ts +3 -3
- package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
- package/src/1_15/impl/set-display-power.ts +29 -0
- package/src/1_15/options.ts +45 -9
- package/src/1_17/options.ts +46 -10
- package/src/1_18/impl/init.ts +3 -3
- package/src/1_18/options.ts +46 -10
- package/src/1_21/impl/compute-option-values.ts +43 -0
- package/src/1_21/impl/index.ts +10 -1
- package/src/1_21/impl/init.ts +1 -1
- package/src/1_21/impl/serialize.ts +3 -3
- package/src/1_21/options.ts +46 -10
- package/src/1_22/impl/init.ts +3 -3
- package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
- package/src/1_22/options.ts +47 -11
- package/src/1_23/impl/init.ts +1 -1
- package/src/1_23/impl/media-stream-transformer.ts +3 -3
- package/src/1_23/options.ts +47 -11
- package/src/1_24/impl/init.ts +1 -1
- package/src/1_24/options.ts +47 -11
- package/src/1_25/options.ts +47 -11
- package/src/2_0/impl/defaults.ts +19 -23
- package/src/2_0/impl/index.ts +5 -1
- package/src/2_0/impl/init.ts +8 -8
- package/src/2_0/impl/parse-audio-stream-metadata.ts +34 -44
- package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
- package/src/2_0/options.ts +63 -12
- package/src/2_1/impl/defaults.ts +1 -1
- package/src/2_1/impl/init.ts +3 -3
- package/src/2_1/options.ts +66 -15
- package/src/2_2/generate-type-tests.js +106 -0
- package/src/2_2/impl/compute-option-values.ts +44 -0
- package/src/2_2/impl/defaults.ts +1 -1
- package/src/2_2/impl/index.ts +2 -0
- package/src/2_2/impl/init.ts +5 -5
- package/src/2_2/options.ts +66 -19
- package/src/2_3/impl/index.ts +4 -0
- package/src/2_3/impl/init.ts +2 -5
- package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
- package/src/2_3/options.ts +66 -19
- package/src/2_4/options.ts +75 -23
- package/src/2_6/generate-type-tests.js +119 -0
- package/src/2_6/impl/compute-option-values.ts +48 -0
- package/src/2_6/impl/defaults.ts +1 -1
- package/src/2_6/impl/index.ts +9 -0
- package/src/2_6/impl/init.ts +3 -6
- package/src/2_6/options.ts +75 -27
- package/src/2_7/impl/index.ts +1 -0
- package/src/2_7/options.ts +75 -27
- package/src/3_0/impl/defaults.ts +12 -14
- package/src/3_0/impl/index.ts +5 -0
- package/src/3_0/impl/init.ts +4 -7
- package/src/3_0/impl/set-display-power.ts +23 -0
- package/src/3_0/options.ts +75 -27
- package/src/3_1/impl/defaults.ts +1 -1
- package/src/3_1/impl/index.ts +1 -0
- package/src/3_1/impl/init.ts +2 -2
- package/src/3_1/options.ts +75 -27
- package/src/3_2/impl/defaults.ts +1 -1
- package/src/3_2/impl/index.ts +1 -0
- package/src/3_2/impl/init.ts +2 -5
- package/src/3_2/options.ts +75 -27
- package/src/3_3_1/options.ts +75 -27
- package/src/4_0/impl/compute-option-values.ts +31 -0
- package/src/4_0/impl/control-message-types.ts +27 -0
- package/src/4_0/impl/defaults.ts +20 -0
- package/src/4_0/impl/index.ts +9 -0
- package/src/4_0/impl/init.ts +14 -0
- package/src/4_0/impl/media-stream-transformer.ts +58 -0
- package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
- package/src/4_0/impl/prev.ts +1 -0
- package/src/4_0/index.ts +226 -0
- package/src/4_1/impl/control-message-types.ts +28 -0
- package/src/4_1/impl/defaults.ts +8 -0
- package/src/4_1/impl/index.ts +6 -0
- package/src/4_1/impl/init.ts +7 -0
- package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
- package/src/4_1/impl/prev.ts +1 -0
- package/src/4_1/index.ts +226 -0
- package/src/base/control-message-type-value.ts +5 -0
- package/src/base/media.ts +12 -3
- package/src/base/options.ts +15 -5
- package/src/base/video.ts +2 -19
- package/src/control/boolean.ts +9 -0
- package/src/control/index.ts +2 -1
- package/src/control/resize-display.ts +16 -0
- package/src/control/serializer.ts +38 -8
- package/src/control/writer.ts +24 -6
- package/src/index.ts +2 -0
- package/src/latest.ts +4 -3
- package/src/utils/omit.ts +1 -1
- package/src/video/codec-id.ts +6 -0
- package/src/video/index.ts +19 -0
- package/src/video/size.ts +10 -4
- package/esm/control/set-screen-power-mode.d.ts +0 -11
- package/esm/control/set-screen-power-mode.d.ts.map +0 -1
- package/esm/control/set-screen-power-mode.js +0 -7
- package/esm/control/set-screen-power-mode.js.map +0 -1
- package/src/control/set-screen-power-mode.ts +0 -17
package/src/1_25/options.ts
CHANGED
|
@@ -2,25 +2,28 @@ 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
|
ScrcpyDisplay,
|
|
6
7
|
ScrcpyEncoder,
|
|
7
|
-
ScrcpyMediaStreamPacket,
|
|
8
8
|
ScrcpyOptions,
|
|
9
9
|
ScrcpyOptionsListEncoders,
|
|
10
10
|
ScrcpyScrollController,
|
|
11
11
|
ScrcpyVideoStream,
|
|
12
|
+
ScrcpyVideoStreamPacket,
|
|
12
13
|
} from "../base/index.js";
|
|
13
14
|
import { ScrcpyDeviceMessageParsers } from "../base/index.js";
|
|
14
15
|
import type {
|
|
15
16
|
ScrcpyBackOrScreenOnControlMessage,
|
|
16
17
|
ScrcpyInjectTouchControlMessage,
|
|
17
18
|
ScrcpySetClipboardControlMessage,
|
|
19
|
+
ScrcpySetDisplayPowerControlMessage,
|
|
18
20
|
} from "../latest.js";
|
|
19
21
|
|
|
20
|
-
import type { Init } from "./impl/index.js";
|
|
22
|
+
import type { ComputeOptionTypes, Init } from "./impl/index.js";
|
|
21
23
|
import {
|
|
22
24
|
AckClipboardHandler,
|
|
23
25
|
ClipboardStream,
|
|
26
|
+
computeOptionValues,
|
|
24
27
|
ControlMessageTypes,
|
|
25
28
|
createMediaStreamTransformer,
|
|
26
29
|
createScrollController,
|
|
@@ -33,24 +36,31 @@ import {
|
|
|
33
36
|
serializeBackOrScreenOnControlMessage,
|
|
34
37
|
serializeInjectTouchControlMessage,
|
|
35
38
|
serializeSetClipboardControlMessage,
|
|
39
|
+
serializeSetDisplayPowerControlMessage,
|
|
36
40
|
setListDisplays,
|
|
37
41
|
setListEncoders,
|
|
38
42
|
} from "./impl/index.js";
|
|
39
43
|
|
|
40
|
-
export class ScrcpyOptions1_25
|
|
41
|
-
implements
|
|
44
|
+
export class ScrcpyOptions1_25<TInit extends Init = Init>
|
|
45
|
+
implements
|
|
46
|
+
ScrcpyOptions<ScrcpyOptions1_25.Value<TInit>>,
|
|
47
|
+
ScrcpyOptionsListEncoders
|
|
42
48
|
{
|
|
43
49
|
static readonly Defaults = Defaults;
|
|
44
50
|
|
|
45
|
-
readonly value:
|
|
51
|
+
readonly value: ScrcpyOptions1_25.Value<TInit>;
|
|
46
52
|
|
|
47
53
|
get controlMessageTypes(): typeof ControlMessageTypes {
|
|
48
54
|
return ControlMessageTypes;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
#clipboard: ClipboardStream | undefined;
|
|
52
|
-
get clipboard():
|
|
53
|
-
|
|
58
|
+
get clipboard(): MapBoolean<
|
|
59
|
+
this["value"]["clipboardAutosync"],
|
|
60
|
+
ReadableStream<string>,
|
|
61
|
+
undefined
|
|
62
|
+
> {
|
|
63
|
+
return this.#clipboard as never;
|
|
54
64
|
}
|
|
55
65
|
|
|
56
66
|
#ackClipboardHandler: AckClipboardHandler | undefined;
|
|
@@ -60,8 +70,8 @@ export class ScrcpyOptions1_25
|
|
|
60
70
|
return this.#deviceMessageParsers;
|
|
61
71
|
}
|
|
62
72
|
|
|
63
|
-
constructor(init:
|
|
64
|
-
this.value =
|
|
73
|
+
constructor(init: TInit) {
|
|
74
|
+
this.value = computeOptionValues(init, Defaults);
|
|
65
75
|
|
|
66
76
|
if (this.value.control) {
|
|
67
77
|
if (this.value.clipboardAutosync) {
|
|
@@ -99,12 +109,12 @@ export class ScrcpyOptions1_25
|
|
|
99
109
|
parseVideoStreamMetadata(
|
|
100
110
|
stream: ReadableStream<Uint8Array>,
|
|
101
111
|
): MaybePromiseLike<ScrcpyVideoStream> {
|
|
102
|
-
return parseVideoStreamMetadata(this.value
|
|
112
|
+
return parseVideoStreamMetadata(stream, this.value.sendDeviceMeta);
|
|
103
113
|
}
|
|
104
114
|
|
|
105
115
|
createMediaStreamTransformer(): TransformStream<
|
|
106
116
|
Uint8Array,
|
|
107
|
-
|
|
117
|
+
ScrcpyVideoStreamPacket
|
|
108
118
|
> {
|
|
109
119
|
return createMediaStreamTransformer(this.value);
|
|
110
120
|
}
|
|
@@ -112,25 +122,46 @@ export class ScrcpyOptions1_25
|
|
|
112
122
|
serializeInjectTouchControlMessage(
|
|
113
123
|
message: ScrcpyInjectTouchControlMessage,
|
|
114
124
|
): Uint8Array {
|
|
125
|
+
if (!this.value.control) {
|
|
126
|
+
throw new Error("control is disabled");
|
|
127
|
+
}
|
|
115
128
|
return serializeInjectTouchControlMessage(message);
|
|
116
129
|
}
|
|
117
130
|
|
|
118
131
|
serializeBackOrScreenOnControlMessage(
|
|
119
132
|
message: ScrcpyBackOrScreenOnControlMessage,
|
|
120
133
|
): Uint8Array | undefined {
|
|
134
|
+
if (!this.value.control) {
|
|
135
|
+
throw new Error("control is disabled");
|
|
136
|
+
}
|
|
121
137
|
return serializeBackOrScreenOnControlMessage(message);
|
|
122
138
|
}
|
|
123
139
|
|
|
124
140
|
serializeSetClipboardControlMessage(
|
|
125
141
|
message: ScrcpySetClipboardControlMessage,
|
|
126
142
|
): Uint8Array | [Uint8Array, Promise<void>] {
|
|
143
|
+
if (!this.value.control) {
|
|
144
|
+
throw new Error("control is disabled");
|
|
145
|
+
}
|
|
127
146
|
return serializeSetClipboardControlMessage(
|
|
128
147
|
message,
|
|
129
148
|
this.#ackClipboardHandler,
|
|
130
149
|
);
|
|
131
150
|
}
|
|
132
151
|
|
|
152
|
+
serializeSetDisplayPowerControlMessage(
|
|
153
|
+
message: ScrcpySetDisplayPowerControlMessage,
|
|
154
|
+
): Uint8Array {
|
|
155
|
+
if (!this.value.control) {
|
|
156
|
+
throw new Error("control is disabled");
|
|
157
|
+
}
|
|
158
|
+
return serializeSetDisplayPowerControlMessage(message);
|
|
159
|
+
}
|
|
160
|
+
|
|
133
161
|
createScrollController(): ScrcpyScrollController {
|
|
162
|
+
if (!this.value.control) {
|
|
163
|
+
throw new Error("control is disabled");
|
|
164
|
+
}
|
|
134
165
|
return createScrollController();
|
|
135
166
|
}
|
|
136
167
|
}
|
|
@@ -139,4 +170,9 @@ type Init_ = Init;
|
|
|
139
170
|
|
|
140
171
|
export namespace ScrcpyOptions1_25 {
|
|
141
172
|
export type Init = Init_;
|
|
173
|
+
|
|
174
|
+
export type Value<TInit extends Init> = ComputeOptionTypes<
|
|
175
|
+
TInit,
|
|
176
|
+
typeof Defaults
|
|
177
|
+
>;
|
|
142
178
|
}
|
package/src/2_0/impl/defaults.ts
CHANGED
|
@@ -1,30 +1,26 @@
|
|
|
1
|
+
import { omit } from "../../utils/omit.js";
|
|
2
|
+
|
|
1
3
|
import type { Init } from "./init.js";
|
|
2
4
|
import { PrevImpl } from "./prev.js";
|
|
3
5
|
|
|
4
|
-
export const Defaults =
|
|
5
|
-
|
|
6
|
-
...PrevImpl.Defaults,
|
|
7
|
-
// Remove obsolete values
|
|
8
|
-
// relies on the minifier to flatten the nested spread
|
|
9
|
-
bitRate: undefined,
|
|
10
|
-
codecOptions: undefined,
|
|
11
|
-
encoderName: undefined,
|
|
12
|
-
},
|
|
6
|
+
export const Defaults = /* #__PURE__*/ (() =>
|
|
7
|
+
({
|
|
8
|
+
...omit(PrevImpl.Defaults, "bitRate", "codecOptions", "encoderName"),
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
scid: undefined,
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
videoCodec: "h264",
|
|
13
|
+
videoBitRate: 8000000,
|
|
14
|
+
videoCodecOptions: undefined,
|
|
15
|
+
videoEncoder: undefined,
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
audio: true,
|
|
18
|
+
audioCodec: "opus",
|
|
19
|
+
audioBitRate: 128000,
|
|
20
|
+
audioCodecOptions: undefined,
|
|
21
|
+
audioEncoder: undefined,
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} as const satisfies Required<Init
|
|
23
|
+
listEncoders: false,
|
|
24
|
+
listDisplays: false,
|
|
25
|
+
sendCodecMeta: true,
|
|
26
|
+
}) as const satisfies Required<Init>)();
|
package/src/2_0/impl/index.ts
CHANGED
|
@@ -8,6 +8,10 @@ export {
|
|
|
8
8
|
export * from "./parse-audio-stream-metadata.js";
|
|
9
9
|
export { parseDisplay } from "./parse-display.js";
|
|
10
10
|
export { parseEncoder } from "./parse-encoder.js";
|
|
11
|
-
export {
|
|
11
|
+
export {
|
|
12
|
+
parseVideoCodecOption,
|
|
13
|
+
parseVideoStreamMetadata,
|
|
14
|
+
parseVideoStreamMetadataAsync,
|
|
15
|
+
} from "./parse-video-stream-metadata.js";
|
|
12
16
|
export { setListDisplays } from "./set-list-display.js";
|
|
13
17
|
export { setListEncoders } from "./set-list-encoder.js";
|
package/src/2_0/impl/init.ts
CHANGED
|
@@ -30,18 +30,18 @@ export interface Init extends Omit<
|
|
|
30
30
|
> {
|
|
31
31
|
scid?: InstanceId | string | undefined;
|
|
32
32
|
|
|
33
|
-
videoCodec?: "h264" | "h265" | "av1";
|
|
34
|
-
videoBitRate?: number;
|
|
33
|
+
videoCodec?: "h264" | "h265" | "av1" | undefined;
|
|
34
|
+
videoBitRate?: number | undefined;
|
|
35
35
|
videoCodecOptions?: PrevImpl.CodecOptions | string | undefined;
|
|
36
36
|
videoEncoder?: string | undefined;
|
|
37
37
|
|
|
38
|
-
audio?: boolean;
|
|
39
|
-
audioCodec?: "raw" | "opus" | "aac";
|
|
40
|
-
audioBitRate?: number;
|
|
38
|
+
audio?: boolean | undefined;
|
|
39
|
+
audioCodec?: "raw" | "opus" | "aac" | undefined;
|
|
40
|
+
audioBitRate?: number | undefined;
|
|
41
41
|
audioCodecOptions?: PrevImpl.CodecOptions | string | undefined;
|
|
42
42
|
audioEncoder?: string | undefined;
|
|
43
43
|
|
|
44
|
-
listEncoders?: boolean;
|
|
45
|
-
listDisplays?: boolean;
|
|
46
|
-
sendCodecMeta?: boolean;
|
|
44
|
+
listEncoders?: boolean | undefined;
|
|
45
|
+
listDisplays?: boolean | undefined;
|
|
46
|
+
sendCodecMeta?: boolean | undefined;
|
|
47
47
|
}
|
|
@@ -9,9 +9,39 @@ import type { Init } from "../../2_3/impl/init.js";
|
|
|
9
9
|
import type { ScrcpyAudioStreamMetadata } from "../../base/index.js";
|
|
10
10
|
import { ScrcpyAudioCodec } from "../../base/index.js";
|
|
11
11
|
|
|
12
|
+
export function parseAudioMetadataCodec(codec: number): ScrcpyAudioCodec {
|
|
13
|
+
switch (codec) {
|
|
14
|
+
case ScrcpyAudioCodec.Raw.metadataValue:
|
|
15
|
+
return ScrcpyAudioCodec.Raw;
|
|
16
|
+
case ScrcpyAudioCodec.Opus.metadataValue:
|
|
17
|
+
return ScrcpyAudioCodec.Opus;
|
|
18
|
+
case ScrcpyAudioCodec.Aac.metadataValue:
|
|
19
|
+
return ScrcpyAudioCodec.Aac;
|
|
20
|
+
default:
|
|
21
|
+
throw new Error(`Unknown audio codec metadata value: ${codec}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function parseAudioCodecOption(
|
|
26
|
+
audioCodec: Exclude<Init["audioCodec"], undefined>,
|
|
27
|
+
): ScrcpyAudioCodec {
|
|
28
|
+
switch (audioCodec) {
|
|
29
|
+
case "raw":
|
|
30
|
+
return ScrcpyAudioCodec.Raw;
|
|
31
|
+
case "opus":
|
|
32
|
+
return ScrcpyAudioCodec.Opus;
|
|
33
|
+
case "aac":
|
|
34
|
+
return ScrcpyAudioCodec.Aac;
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unknown audio codec: ${audioCodec}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
12
40
|
export async function parseAudioStreamMetadata(
|
|
13
41
|
stream: ReadableStream<Uint8Array>,
|
|
14
|
-
|
|
42
|
+
sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
|
|
43
|
+
parseMetadataCodec: (codec: number) => ScrcpyAudioCodec,
|
|
44
|
+
fallbackCodec: ScrcpyAudioCodec,
|
|
15
45
|
): Promise<ScrcpyAudioStreamMetadata> {
|
|
16
46
|
const buffered = new BufferedReadableStream(stream);
|
|
17
47
|
|
|
@@ -30,57 +60,17 @@ export async function parseAudioStreamMetadata(
|
|
|
30
60
|
};
|
|
31
61
|
}
|
|
32
62
|
|
|
33
|
-
if (
|
|
34
|
-
let codec: ScrcpyAudioCodec;
|
|
35
|
-
switch (codecMetadataValue) {
|
|
36
|
-
case ScrcpyAudioCodec.Raw.metadataValue:
|
|
37
|
-
codec = ScrcpyAudioCodec.Raw;
|
|
38
|
-
break;
|
|
39
|
-
case ScrcpyAudioCodec.Opus.metadataValue:
|
|
40
|
-
codec = ScrcpyAudioCodec.Opus;
|
|
41
|
-
break;
|
|
42
|
-
case ScrcpyAudioCodec.Aac.metadataValue:
|
|
43
|
-
codec = ScrcpyAudioCodec.Aac;
|
|
44
|
-
break;
|
|
45
|
-
case ScrcpyAudioCodec.Flac.metadataValue:
|
|
46
|
-
codec = ScrcpyAudioCodec.Flac;
|
|
47
|
-
break;
|
|
48
|
-
default:
|
|
49
|
-
throw new Error(
|
|
50
|
-
`Unknown audio codec metadata value: ${codecMetadataValue}`,
|
|
51
|
-
);
|
|
52
|
-
}
|
|
63
|
+
if (sendCodecMeta) {
|
|
53
64
|
return {
|
|
54
65
|
type: "success",
|
|
55
|
-
codec,
|
|
66
|
+
codec: parseMetadataCodec(codecMetadataValue),
|
|
56
67
|
stream: buffered.release(),
|
|
57
68
|
};
|
|
58
69
|
}
|
|
59
70
|
|
|
60
|
-
// Infer codec from `audioCodec` option
|
|
61
|
-
let codec: ScrcpyAudioCodec;
|
|
62
|
-
switch (options.audioCodec as string) {
|
|
63
|
-
case "raw":
|
|
64
|
-
codec = ScrcpyAudioCodec.Raw;
|
|
65
|
-
break;
|
|
66
|
-
case "opus":
|
|
67
|
-
codec = ScrcpyAudioCodec.Opus;
|
|
68
|
-
break;
|
|
69
|
-
case "aac":
|
|
70
|
-
codec = ScrcpyAudioCodec.Aac;
|
|
71
|
-
break;
|
|
72
|
-
case "flac":
|
|
73
|
-
codec = ScrcpyAudioCodec.Flac;
|
|
74
|
-
break;
|
|
75
|
-
default:
|
|
76
|
-
throw new Error(
|
|
77
|
-
`Unknown audio codec metadata value: ${codecMetadataValue}`,
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
71
|
return {
|
|
82
72
|
type: "success",
|
|
83
|
-
codec,
|
|
73
|
+
codec: fallbackCodec,
|
|
84
74
|
stream: new PushReadableStream<Uint8Array>(async (controller) => {
|
|
85
75
|
// Put the first 4 bytes back
|
|
86
76
|
await controller.enqueue(buffer);
|
|
@@ -2,50 +2,52 @@ import type { MaybePromiseLike } from "@yume-chan/async";
|
|
|
2
2
|
import type { ReadableStream } from "@yume-chan/stream-extra";
|
|
3
3
|
import { BufferedReadableStream } from "@yume-chan/stream-extra";
|
|
4
4
|
|
|
5
|
-
import type { ScrcpyVideoStream } from "../../base/
|
|
6
|
-
import { ScrcpyVideoCodecId } from "../../
|
|
5
|
+
import type { ScrcpyVideoStream } from "../../base/index.js";
|
|
6
|
+
import { ScrcpyVideoCodecId } from "../../video/index.js";
|
|
7
7
|
|
|
8
8
|
import type { Init } from "./init.js";
|
|
9
9
|
import { PrevImpl } from "./prev.js";
|
|
10
10
|
|
|
11
|
-
function
|
|
11
|
+
export function parseVideoCodecOption(
|
|
12
|
+
codec: Exclude<Init["videoCodec"], undefined>,
|
|
13
|
+
): ScrcpyVideoCodecId {
|
|
12
14
|
switch (codec) {
|
|
13
15
|
case "h264":
|
|
14
16
|
return ScrcpyVideoCodecId.H264;
|
|
15
17
|
case "h265":
|
|
16
18
|
return ScrcpyVideoCodecId.H265;
|
|
17
19
|
case "av1":
|
|
18
|
-
return ScrcpyVideoCodecId.
|
|
20
|
+
return ScrcpyVideoCodecId.Av1;
|
|
19
21
|
default:
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
20
23
|
throw new Error(`Unknown video codec: ${codec}`);
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
async function
|
|
25
|
-
options: Pick<
|
|
26
|
-
Required<Init>,
|
|
27
|
-
"sendDeviceMeta" | "sendCodecMeta" | "videoCodec"
|
|
28
|
-
>,
|
|
27
|
+
export async function parseVideoStreamMetadataAsync(
|
|
29
28
|
stream: ReadableStream<Uint8Array>,
|
|
30
|
-
|
|
29
|
+
sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
|
|
30
|
+
sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
|
|
31
|
+
fallbackCodec: ScrcpyVideoCodecId,
|
|
32
|
+
): Promise<ScrcpyVideoStream> {
|
|
31
33
|
const buffered = new BufferedReadableStream(stream);
|
|
32
34
|
|
|
33
35
|
// `sendDeviceMeta` now only contains device name,
|
|
34
|
-
// can't use `
|
|
36
|
+
// can't use `PrevImpl.parseVideoStreamMetadata` here
|
|
35
37
|
let deviceName: string | undefined;
|
|
36
|
-
if (
|
|
38
|
+
if (sendDeviceMeta) {
|
|
37
39
|
deviceName = await PrevImpl.readString(buffered, 64);
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
let codec: ScrcpyVideoCodecId;
|
|
41
43
|
let width: number | undefined;
|
|
42
44
|
let height: number | undefined;
|
|
43
|
-
if (
|
|
45
|
+
if (sendCodecMeta) {
|
|
44
46
|
codec = (await PrevImpl.readU32(buffered)) as ScrcpyVideoCodecId;
|
|
45
47
|
width = await PrevImpl.readU32(buffered);
|
|
46
48
|
height = await PrevImpl.readU32(buffered);
|
|
47
49
|
} else {
|
|
48
|
-
codec =
|
|
50
|
+
codec = fallbackCodec;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
return {
|
|
@@ -54,19 +56,20 @@ async function parseAsync(
|
|
|
54
56
|
};
|
|
55
57
|
}
|
|
56
58
|
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
57
60
|
export function parseVideoStreamMetadata(
|
|
58
|
-
options: Pick<
|
|
59
|
-
Required<Init>,
|
|
60
|
-
"sendDeviceMeta" | "sendCodecMeta" | "videoCodec"
|
|
61
|
-
>,
|
|
62
61
|
stream: ReadableStream<Uint8Array>,
|
|
62
|
+
sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
|
|
63
|
+
sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
|
|
64
|
+
fallbackCodec: ScrcpyVideoCodecId,
|
|
65
|
+
parseAsync: typeof parseVideoStreamMetadataAsync,
|
|
63
66
|
): MaybePromiseLike<ScrcpyVideoStream> {
|
|
64
|
-
if (!
|
|
67
|
+
if (!sendDeviceMeta && !sendCodecMeta) {
|
|
65
68
|
return {
|
|
66
69
|
stream,
|
|
67
|
-
metadata: { codec:
|
|
70
|
+
metadata: { codec: fallbackCodec },
|
|
68
71
|
};
|
|
69
72
|
}
|
|
70
73
|
|
|
71
|
-
return parseAsync(
|
|
74
|
+
return parseAsync(stream, sendDeviceMeta, sendCodecMeta, fallbackCodec);
|
|
72
75
|
}
|
package/src/2_0/options.ts
CHANGED
|
@@ -2,56 +2,70 @@ 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
|
} from "../latest.js";
|
|
20
22
|
|
|
21
|
-
import type { Init } from "./impl/index.js";
|
|
23
|
+
import type { ComputeOptionTypes, Init } from "./impl/index.js";
|
|
22
24
|
import {
|
|
23
25
|
AckClipboardHandler,
|
|
24
26
|
ClipboardStream,
|
|
27
|
+
computeOptionValues,
|
|
25
28
|
ControlMessageTypes,
|
|
26
29
|
createMediaStreamTransformer,
|
|
27
30
|
createScrollController,
|
|
28
31
|
Defaults,
|
|
32
|
+
parseAudioCodecOption,
|
|
33
|
+
parseAudioMetadataCodec,
|
|
29
34
|
parseAudioStreamMetadata,
|
|
30
35
|
parseDisplay,
|
|
31
36
|
parseEncoder,
|
|
37
|
+
parseVideoCodecOption,
|
|
32
38
|
parseVideoStreamMetadata,
|
|
39
|
+
parseVideoStreamMetadataAsync,
|
|
33
40
|
serialize,
|
|
34
41
|
serializeBackOrScreenOnControlMessage,
|
|
35
42
|
serializeInjectTouchControlMessage,
|
|
36
43
|
serializeSetClipboardControlMessage,
|
|
44
|
+
serializeSetDisplayPowerControlMessage,
|
|
37
45
|
setListDisplays,
|
|
38
46
|
setListEncoders,
|
|
39
47
|
} from "./impl/index.js";
|
|
40
48
|
|
|
41
|
-
export class ScrcpyOptions2_0
|
|
42
|
-
implements
|
|
49
|
+
export class ScrcpyOptions2_0<TInit extends Init = Init>
|
|
50
|
+
implements
|
|
51
|
+
ScrcpyOptions<ScrcpyOptions2_0.Value<TInit>>,
|
|
52
|
+
ScrcpyOptionsListEncoders
|
|
43
53
|
{
|
|
44
54
|
static readonly Defaults = Defaults;
|
|
45
55
|
|
|
46
|
-
readonly value:
|
|
56
|
+
readonly value: ScrcpyOptions2_0.Value<TInit>;
|
|
47
57
|
|
|
48
58
|
get controlMessageTypes(): typeof ControlMessageTypes {
|
|
49
59
|
return ControlMessageTypes;
|
|
50
60
|
}
|
|
51
61
|
|
|
52
62
|
#clipboard: ClipboardStream | undefined;
|
|
53
|
-
get clipboard():
|
|
54
|
-
|
|
63
|
+
get clipboard(): MapBoolean<
|
|
64
|
+
this["value"]["clipboardAutosync"],
|
|
65
|
+
ReadableStream<string>,
|
|
66
|
+
undefined
|
|
67
|
+
> {
|
|
68
|
+
return this.#clipboard as never;
|
|
55
69
|
}
|
|
56
70
|
|
|
57
71
|
#ackClipboardHandler: AckClipboardHandler | undefined;
|
|
@@ -61,8 +75,8 @@ export class ScrcpyOptions2_0
|
|
|
61
75
|
return this.#deviceMessageParsers;
|
|
62
76
|
}
|
|
63
77
|
|
|
64
|
-
constructor(init:
|
|
65
|
-
this.value =
|
|
78
|
+
constructor(init: TInit) {
|
|
79
|
+
this.value = computeOptionValues(init, Defaults);
|
|
66
80
|
|
|
67
81
|
if (this.value.control) {
|
|
68
82
|
if (this.value.clipboardAutosync) {
|
|
@@ -100,18 +114,29 @@ export class ScrcpyOptions2_0
|
|
|
100
114
|
parseVideoStreamMetadata(
|
|
101
115
|
stream: ReadableStream<Uint8Array>,
|
|
102
116
|
): MaybePromiseLike<ScrcpyVideoStream> {
|
|
103
|
-
return parseVideoStreamMetadata(
|
|
117
|
+
return parseVideoStreamMetadata(
|
|
118
|
+
stream,
|
|
119
|
+
this.value.sendDeviceMeta,
|
|
120
|
+
this.value.sendCodecMeta,
|
|
121
|
+
parseVideoCodecOption(this.value.videoCodec),
|
|
122
|
+
parseVideoStreamMetadataAsync,
|
|
123
|
+
);
|
|
104
124
|
}
|
|
105
125
|
|
|
106
126
|
parseAudioStreamMetadata(
|
|
107
127
|
stream: ReadableStream<Uint8Array>,
|
|
108
128
|
): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
|
|
109
|
-
return parseAudioStreamMetadata(
|
|
129
|
+
return parseAudioStreamMetadata(
|
|
130
|
+
stream,
|
|
131
|
+
this.value.sendCodecMeta,
|
|
132
|
+
parseAudioMetadataCodec,
|
|
133
|
+
parseAudioCodecOption(this.value.audioCodec),
|
|
134
|
+
);
|
|
110
135
|
}
|
|
111
136
|
|
|
112
137
|
createMediaStreamTransformer(): TransformStream<
|
|
113
138
|
Uint8Array,
|
|
114
|
-
|
|
139
|
+
ScrcpyVideoStreamPacket
|
|
115
140
|
> {
|
|
116
141
|
return createMediaStreamTransformer(this.value);
|
|
117
142
|
}
|
|
@@ -119,25 +144,46 @@ export class ScrcpyOptions2_0
|
|
|
119
144
|
serializeInjectTouchControlMessage(
|
|
120
145
|
message: ScrcpyInjectTouchControlMessage,
|
|
121
146
|
): Uint8Array {
|
|
147
|
+
if (!this.value.control) {
|
|
148
|
+
throw new Error("control is disabled");
|
|
149
|
+
}
|
|
122
150
|
return serializeInjectTouchControlMessage(message);
|
|
123
151
|
}
|
|
124
152
|
|
|
125
153
|
serializeBackOrScreenOnControlMessage(
|
|
126
154
|
message: ScrcpyBackOrScreenOnControlMessage,
|
|
127
155
|
): Uint8Array | undefined {
|
|
156
|
+
if (!this.value.control) {
|
|
157
|
+
throw new Error("control is disabled");
|
|
158
|
+
}
|
|
128
159
|
return serializeBackOrScreenOnControlMessage(message);
|
|
129
160
|
}
|
|
130
161
|
|
|
131
162
|
serializeSetClipboardControlMessage(
|
|
132
163
|
message: ScrcpySetClipboardControlMessage,
|
|
133
164
|
): Uint8Array | [Uint8Array, Promise<void>] {
|
|
165
|
+
if (!this.value.control) {
|
|
166
|
+
throw new Error("control is disabled");
|
|
167
|
+
}
|
|
134
168
|
return serializeSetClipboardControlMessage(
|
|
135
169
|
message,
|
|
136
170
|
this.#ackClipboardHandler,
|
|
137
171
|
);
|
|
138
172
|
}
|
|
139
173
|
|
|
174
|
+
serializeSetDisplayPowerControlMessage(
|
|
175
|
+
message: ScrcpySetDisplayPowerControlMessage,
|
|
176
|
+
): Uint8Array {
|
|
177
|
+
if (!this.value.control) {
|
|
178
|
+
throw new Error("control is disabled");
|
|
179
|
+
}
|
|
180
|
+
return serializeSetDisplayPowerControlMessage(message);
|
|
181
|
+
}
|
|
182
|
+
|
|
140
183
|
createScrollController(): ScrcpyScrollController {
|
|
184
|
+
if (!this.value.control) {
|
|
185
|
+
throw new Error("control is disabled");
|
|
186
|
+
}
|
|
141
187
|
return createScrollController();
|
|
142
188
|
}
|
|
143
189
|
}
|
|
@@ -146,4 +192,9 @@ type Init_ = Init;
|
|
|
146
192
|
|
|
147
193
|
export namespace ScrcpyOptions2_0 {
|
|
148
194
|
export type Init = Init_;
|
|
195
|
+
|
|
196
|
+
export type Value<TInit extends Init> = ComputeOptionTypes<
|
|
197
|
+
TInit,
|
|
198
|
+
typeof Defaults
|
|
199
|
+
>;
|
|
149
200
|
}
|
package/src/2_1/impl/defaults.ts
CHANGED
package/src/2_1/impl/init.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PrevImpl } from "./prev.js";
|
|
2
2
|
|
|
3
|
-
export interface Init
|
|
4
|
-
video?:
|
|
5
|
-
audioSource?: "output" | "mic";
|
|
3
|
+
export interface Init extends PrevImpl.Init {
|
|
4
|
+
video?: boolean | undefined;
|
|
5
|
+
audioSource?: "output" | "mic" | undefined;
|
|
6
6
|
}
|