Romain Vimont
457385d5f4
Add sc_allocarray() util
...
Add a function to allocate an array, which fails safely in the case
where the multiplication would overflow.
2023-03-10 22:22:15 +01:00
Romain Vimont
6dceb32817
Add compat for reallocarray()
...
This function fails safely in the case where the multiplication would
overflow.
2023-03-10 22:22:15 +01:00
Romain Vimont
20d41fdd7e
Introduce bytebuf util
...
Add a ring-buffer for bytes. It will be useful for audio buffering.
PR #3757 <https://github.com/Genymobile/scrcpy/pull/3757 >
2023-03-10 22:22:15 +01:00
Romain Vimont
a1802dab76
Remove default bit-rate on client side
...
If no bit-rate is passed, let the server use the default value (8Mbps).
This avoids to define a default value on both sides, and to pass the
default bit-rate as an argument when starting the server.
PR #3757 <https://github.com/Genymobile/scrcpy/pull/3757 >
2023-03-10 22:22:15 +01:00
Romain Vimont
9d60d7880b
Upgrade FFmpeg (6.0) for Windows
...
Use the latest version (specifically built for scrcpy).
Refs <https://www.ffmpeg.org/download.html#release_6.0 >
2023-03-10 22:22:15 +01:00
Romain Vimont
0fc62bfcd6
Use minimal prebuilt FFmpeg for Windows
...
On the scrcpy-deps repo, I built FFmpeg 5.1.2 binaries for Windows with
only the features used by scrcpy.
For comparison, here are the sizes of the dll for FFmpeg 5.1.2:
- before: 89M
- after: 4.7M
It also allows to upgrade the old FFmpeg version (4.3.1) used for win32.
Refs <https://github.com/rom1v/scrcpy-deps >
Refs <https://github.com/Genymobile/scrcpy/issues/1753 >
2023-03-10 22:22:15 +01:00
Romain Vimont
a20615066d
Simplify libusb prebuilt scripts
...
In theory, include/ might be slightly different for win32 and win64
builds. Use each one separately to simplify.
2023-03-10 22:22:15 +01:00
Romain Vimont
49eb326ce9
Extract packet merging
...
Config packets must be prepended to the next media packet. Extract the
logic to a new sc_packet_merger helper to simplify the demuxer code.
2023-02-11 09:44:33 +01:00
Romain Vimont
74e3f8b253
Add random util
...
Add a user-friendly tool to generate random numbers.
2023-01-27 19:26:19 +01:00
Romain Vimont
059ec45f82
Add jrand48()/nrand48() compat functions
...
These functions are not available on all platforms.
2023-01-26 18:11:23 +01:00
Romain Vimont
b62424a98a
Build log.c for test_cli
...
On Windows, sc_log_windows_error() is called from net.c, so log.c must
also be compiled.
Fixes #3542 <https://github.com/Genymobile/scrcpy/issues/3542 >
2022-10-19 15:17:43 +02:00
Romain Vimont
e5e210506f
Add scrcpy-console.desktop
...
Add a launcher which opens a terminal, and keep it open in case of
errors (so that the user has time to read error messages).
The behavior is the same as scrcpy-console.bat on Windows.
PR #3351 <https://github.com/Genymobile/scrcpy/pull/3351 >
2022-09-09 19:06:29 +02:00
Addison Snelling
51a1762cbd
Add desktop entry file for Linux app launchers
...
Refs <https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html >
PR #3351 <https://github.com/Genymobile/scrcpy/pull/3351 >
Replaces PR #296 <https://github.com/Genymobile/scrcpy/pull/296 >
Fixes #295 <https://github.com/Genymobile/scrcpy/issues/295 >
Fixes #748 <https://github.com/Genymobile/scrcpy/issues/748 >
Fixes #1636 <https://github.com/Genymobile/scrcpy/issues/1636 >
Co-authored-by: Chih-Hsuan Yen <yan12125@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2022-09-09 19:06:29 +02:00
Romain Vimont
c1ec1d1023
Replace hardcoded 'share/' by datadir variable
...
Meson defines a variable for the data directory.
PR #3351 <https://github.com/Genymobile/scrcpy/pull/3351 >
2022-09-09 19:06:29 +02:00
Romain Vimont
041cdf6cf5
Rename buffer_util.h to binary.h
...
It will allow to expose more binary util functions not related to
buffers.
PR #3369 <https://github.com/Genymobile/scrcpy/pull/3369 >
2022-08-28 15:23:08 +02:00
Romain Vimont
4db97531e8
Upgrade libusb (1.0.26) for Windows
...
Upgrade and enable libusb support for Windows 32-bit builds.
Refs #3011 <https://github.com/Genymobile/scrcpy/pull/3011 >
Fixes #3204 <https://github.com/Genymobile/scrcpy/issues/3204 >
PR #3206 <https://github.com/Genymobile/scrcpy/pull/3206 >
2022-04-22 13:34:58 +02:00
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