Romain Vimont
3ce6f8ca91
Add Bash completion script
...
Fixes #2930 <https://github.com/Genymobile/scrcpy/issues/2930 >
Refs #3012 <https://github.com/Genymobile/scrcpy/pull/3012 >
2022-02-22 19:22:12 +01:00
hltdev8642
26953784d9
Add ZSH completion script
...
PR #3012 <https://github.com/Genymobile/scrcpy/pull/3012 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-02-22 19:15:27 +01:00
Romain Vimont
c070723bc8
Add sc_vector
...
Adapt vlc_vector [1], that I initially wrote while implementing the VLC
playlist [2].
Change the implementation to use "statement expressions" [3], which are
forbidden in VLC because "non-standard", but:
- they are supported by gcc and clang;
- they are already used in the scrcpy codebase;
- they avoid implementation hacks (VLC_VECTOR_FAILFLAG_);
- they allow a better API (sc_vector_index_of() may return the result
without an output parameter).
PR #3035 <https://github.com/Genymobile/scrcpy/pull/3035 >
[1]: 0857947aba/include/vlc_vector.h
[2]: https://blog.rom1v.com/2019/05/a-new-core-playlist-for-vlc-4
[3]: https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
2022-02-20 23:59:35 +01:00
Romain Vimont
36c75e15b8
Move data/ to app/
...
The files in data/ are specific to the client app (not the server).
This also avoids to reference the parent directory (../) from
app/meson.build.
Refs 8d583d36e2
2022-02-20 17:56:50 +01:00
Romain Vimont
6b65cd405a
Build for Windows with libusb support
...
Fixes #2773 <https://github.com/Genymobile/scrcpy/issues/2773 >
PR #3011 <https://github.com/Genymobile/scrcpy/pull/3011 >
2022-02-20 17:39:12 +01:00
Romain Vimont
33202491e1
Build on macOS with libusb support
...
Fixes #2774 <https://github.com/Genymobile/scrcpy/issues/2774 >
PR #3031 <https://github.com/Genymobile/scrcpy/pull/3031 >
2022-02-20 17:27:22 +01:00
Romain Vimont
ca9e1a0514
Add compilation flag for USB features
...
This allows to disable HID/OTG features on Linux to build without
libusb.
2022-02-12 14:15:07 +01:00
Romain Vimont
cc27771dd1
Add compilation flag for V4L2 feature
...
This allows to disable V4L2 support on Linux to build without
libavdevice.
2022-02-12 14:15:07 +01:00
Romain Vimont
8d583d36e2
Move prebuilt-deps/ to app/
...
The prebuilt dependencies are specific to the client app (not the
server).
This also avoids to reference the parent directory (../) from
app/meson.build.
2022-02-09 23:18:34 +01:00
Romain Vimont
9477594f80
Move version handling to a separate file
...
This will avoid to include all dependencies headers from main.c.
2022-02-09 10:15:07 +01:00
Romain Vimont
4389de1c23
Add adb devices parser
...
Add a parser of `adb device -l` output, to extract a list of devices
with their serial, state and model.
PR #3005 <https://github.com/Genymobile/scrcpy/pull/3005 >
2022-02-09 09:56:25 +01:00
Romain Vimont
7810ca61b0
Move ADB code to adb/
2022-02-04 08:39:10 +01:00
Romain Vimont
7dec225ceb
Rename stream to sc_demuxer
...
For consistency with recorder and decoder, name the component which
demuxes a "demuxer".
And add the missing sc_ prefix.
2022-02-02 21:03:55 +01:00
Romain Vimont
38cdcdda50
Improve prebuilt system
...
This aims to fix two issues with the previous implementation:
1. the whole content of downloaded archives were extracted, while only
few files are necessary;
2. the archives were extracted in the prebuild-deps/ directory as is.
As a consequence of (2), the actual directory name relied on the root
directory of the archive. For adb, this root directory was always
"platform-tools", so when bumping the adb version, the target directory
already existed and the dependency was not upgraded (the old one had to
be removed manually).
Expose common function to download a file and check its checksum, but
let the custom script for each dependency extract only the needed files
and reorganize the content if necessary.
2022-01-29 14:40:21 +01:00
Romain Vimont
91418c79ab
Add OTG mode
...
Add an option --otg to run scrcpy with only physical keyboard and mouse
simulation (HID over AOA), without mirroring and without requiring adb.
To avoid adding complexity into the scrcpy initialization and screen
implementation, OTG mode is implemented totally separately, with a
separate window.
PR #2974 <https://github.com/Genymobile/scrcpy/pull/2974 >
2022-01-27 23:36:23 +01:00
Romain Vimont
1d6f9952ee
Extract USB handling from AOA
...
The AOA code handled both USB initialization and AOA commands/events.
Extract USB-related code to a separate file and structure.
PR #2974 <https://github.com/Genymobile/scrcpy/pull/2974 >
2022-01-27 23:35:55 +01:00
Romain Vimont
d48d191262
Rename HAVE_AOA_HID to HAVE_USB
...
The condition actually determines whether scrcpy can use libusb or not.
PR #2974 <https://github.com/Genymobile/scrcpy/pull/2974 >
2022-01-27 23:35:48 +01:00
Romain Vimont
2762f5d183
Move AOA/HID code to usb/
...
PR #2974 <https://github.com/Genymobile/scrcpy/pull/2974 >
2022-01-27 23:35:34 +01:00
Romain Vimont
b066dc0bbf
Rename file_handler to sc_file_pusher
...
Rename handler to pusher ("handler" is too generic), and add sc_ prefix.
2022-01-21 21:52:41 +01:00
Romain Vimont
b3ff1f6b3b
Upgrade FFmpeg (5.0) for Windows 64-bit
...
Use FFmpeg win64 binaries from gyan.dev (referenced from ffmpeg.org):
- https://www.gyan.dev/ffmpeg/builds/
- https://ffmpeg.org/download.html#build-windows
Keep the old FFmpeg prebuilt binaries (4.3.1) for win32 builds.
Fixes #1753 <https://github.com/Genymobile/scrcpy/issues/1753 >
Refs #1838 <https://github.com/Genymobile/scrcpy/pull/1838 >
Refs #2583 <https://github.com/Genymobile/scrcpy/pull/2583 >
PR #2952 <https://github.com/Genymobile/scrcpy/pull/2952 >
Co-authored-by: Yu-Chen Lin <npes87184@gmail.com>
Co-authored-by: nkh0472 <nkh0472@hotmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-01-18 10:13:41 +01:00
Romain Vimont
a2495c5ef1
Use symlink to simplify Windows ffmpeg dependency
...
The FFmpeg dependency is downloaded from two separate zipfiles.
Symlink include/ to expose everything from a single directory, to
simplify the meson script.
PR #2952 <https://github.com/Genymobile/scrcpy/pull/2952 >
2022-01-18 10:13:38 +01:00
Romain Vimont
cba84f6999
Add support for HID mouse
2022-01-04 17:41:40 +01:00
Romain Vimont
0685c491cd
Improve crossbuild configuration
...
Use meson native features to detect crossbuild, and remove the
user-provided option crossbuild_windows.
2021-12-10 19:50:58 +01:00
Romain Vimont
cfcbc2ac21
Add icon to scrcpy.exe
...
The icon will be associated to scrcpy.exe in the Windows explorer.
The .ico was created using imagemagick:
convert icon.png icon.ico
It is included as a binary for simplicity.
Refs #2815 <https://github.com/Genymobile/scrcpy/issues/2815 >
2021-12-09 23:38:13 +01:00
Romain Vimont
80fe12a95f
Require libavcodec >= 57.37
...
In ffmpeg/doc/APIchanges:
> 2016-04-21 - 7fc329e - lavc 57.37.100 - avcodec.h
> Add a new audio/video encoding and decoding API with decoupled input
> and output -- avcodec_send_packet(), avcodec_receive_frame(),
> avcodec_send_frame() and avcodec_receive_packet().
Refs de9b79ec2d
Refs #2862 <https://github.com/Genymobile/scrcpy/issues/2862 >
2021-12-07 00:04:35 +01:00
Romain Vimont
099c546580
Require libavformat >= 57.33
...
In ffmpeg/doc/APIchanges:
> 2016-04-11 - 6f69f7a / 9200514 - lavf 57.33.100 / 57.5.0 - avformat.h
> Add AVStream.codecpar, deprecate AVStream.codec.
Refs 5d9e96dc4e
Refs #2862 <https://github.com/Genymobile/scrcpy/issues/2862 >
2021-12-07 00:04:27 +01:00
Romain Vimont
dca2c5f94f
Require SDL >= 2.0.5
...
Icon loading uses SDL_CreateRGBSurfaceWithFormatFrom(), available since
SDL 2.0.5 (in 2016).
Refs #2862 <https://github.com/Genymobile/scrcpy/issues/2862 >
2021-12-06 23:49:55 +01:00
Romain Vimont
0c0f62e4ab
Use static maps to convert input events
...
This improves readability (hopefully).
PR #2831 <https://github.com/Genymobile/scrcpy/pull/2831 >
2021-11-29 21:15:07 +01:00
Romain Vimont
f609b406c9
Add function to find the device IP address
...
Parse the result of "adb shell ip route" to find the device IP address.
PR #2827 <https://github.com/Genymobile/scrcpy/pull/2827 >
2021-11-29 20:39:03 +01:00
Romain Vimont
b90c89766b
Set CLOEXEC flag on sockets
...
If SOCK_CLOEXEC exists, then set the flag on socket creation.
Otherwise, use fcntl() (or SetHandleInformation() on Windows) to set the
flag afterwards.
This avoids the sockets to be inherited in child processes.
Refs #2783 <https://github.com/Genymobile/scrcpy/pull/2783 >
2021-11-26 09:40:39 +01:00
Romain Vimont
d5f6697f3a
Add (v)asprintf compatibility functions
...
In case they are not available on the platform.
2021-11-24 19:55:00 +01:00
Romain Vimont
d6c0054545
Move check_functions in meson script
...
Move the variable to the place it is actually used.
2021-11-24 19:38:33 +01:00
Romain Vimont
dc0ac01e00
Define common feature test macros for all systems
...
_POSIX_C_SOURCE, _XOPEN_SOURCE and _GNU_SOURCE are also used on Windows.
Fix regression introduced by ba547e3895
.
2021-11-24 19:36:33 +01:00
Romain Vimont
aba1fc03c3
Add acksync helper to wait for acks
...
This will allow to send requests with sequence numbers to the server
and wait for acknowledgements.
PR #2814 <https://github.com/Genymobile/scrcpy/pull/2814 >
2021-11-23 21:15:05 +01:00
RipleyTom
7bdbde7363
Add options to configure tunnel host and port
...
In "adb forward" mode, by default, scrcpy connects to localhost:PORT,
where PORT is the local port passed to "adb forward". This assumes that
the tunnel is established on the local host with a local adb server
(which is the common case).
For advanced usage, add --tunnel-host and --tunnel-port to force the
connection to a different destination.
Fixes #2801 <https://github.com/Genymobile/scrcpy/issues/2801 >
PR #2807 <https://github.com/Genymobile/scrcpy/pull/2807 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-11-21 22:37:52 +01:00
Romain Vimont
ba547e3895
Configure feature test macros in meson
...
Refs #2807 <https://github.com/Genymobile/scrcpy/pull/2807 >
Co-authored-by: RipleyTom <RipleyTom@users.noreply.github.com>
2021-11-21 00:20:11 +01:00
Romain Vimont
057c7a4df4
Move str_util to str
...
Simplify naming.
2021-11-14 01:22:22 +01:00
Romain Vimont
c4d008b96a
Extract adb tunnel to a separate component
...
This simplifies the server code.
2021-11-14 01:22:22 +01:00
Romain Vimont
40340509d9
Add interruptor utilities
...
Expose wrapper functions for interrupting blocking calls, for process
and sockets.
2021-11-13 22:54:18 +01:00
Romain Vimont
e0896142db
Introduce interruptor tool
...
An interruptor instance will help to wake up a blocking call from
another thread (typically to terminate immediately on Ctrl+C).
2021-11-13 22:53:07 +01:00
Romain Vimont
d4c262301f
Move functions from process to file
...
Move filesystem-related functions from process.[ch] to file.[ch].
2021-11-12 22:44:37 +01:00
Romain Vimont
38332f683c
Add util function to get terminal size
2021-11-11 15:22:39 +01:00
Romain Vimont
9ec3406568
Add line wrapper
...
Add a tool to wrap lines at words boundaries (spaces) to fit in a
specified number of columns, left-indented by a specified number of
spaces.
2021-11-11 14:55:53 +01:00
Romain Vimont
6dba1922c1
Add string buffer util
...
This will help to build strings incrementally.
2021-11-11 14:55:52 +01:00
Romain Vimont
27fa23846d
Define default options as const struct
...
This is more readable than a macro, and we could ifdef some fields.
2021-10-27 18:43:47 +02:00
Alynx Zhou
207082977a
Add support for USB HID keyboard over AOAv2
...
This provides a better input experience, by simulating a physical
keyboard. It converts SDL keyboard events to proper HID events, and send
them over AOAv2.
This is a rewriting and bugfix of the origin code from @amosbird:
<https://github.com/Genymobile/scrcpy/issues/279#issuecomment-453819354 >
The feature is enabled the command line option -K or --hid-keyboard,
and is only available on Linux, over USB.
Refs <https://source.android.com/devices/accessories/aoa2#hid-support >
Refs <https://www.usb.org/sites/default/files/hid1_11.pdf >
PR #2632 <https://github.com/Genymobile/scrcpy/pull/2632 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2021-10-26 21:30:04 +02:00
Romain Vimont
f7d1efdf1d
Extract mouse processor trait
...
Mainly for consistency with the keyboard processor trait.
This could allow to provide alternative mouse processors.
2021-10-26 21:30:04 +02:00
Romain Vimont
bcf5a9750f
Extract keyboard processor trait
...
This will allow to provide alternative key processors.
2021-10-26 21:30:04 +02:00
Romain Vimont
1e340caf76
Remove legacy scrcpy icon
...
Remove the old icon in XPM format and the code to load it.
2021-10-25 18:08:37 +02:00
Romain Vimont
6004f0b6b0
Use a new scrcpy icon
...
Use the new icon designed by @varlesh:
<https://github.com/Genymobile/scrcpy/pull/1987#issuecomment-949684080 >
Load it from a PNG file (SDL only supports bitmap icons).
2021-10-25 18:08:37 +02:00