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
Romain Vimont
0e4564da03
Add icon loader
...
Add helper to load icons from image files via FFmpeg.
2021-10-25 18:08:37 +02:00
Romain Vimont
2f03141e9f
Add clock tests
...
The clock rolling sum is not trivial. Test it.
2021-07-14 14:54:22 +02:00
Romain Vimont
79278961b9
Implement buffering
...
To minimize latency (at the cost of jitter), scrcpy always displays a
frame as soon as it available, without waiting.
However, when recording (--record), it still writes the captured
timestamps to the output file, so that the recorded file can be played
correctly without jitter.
Some real-time use cases might benefit from adding a small latency to
compensate for jitter too. For example, few tens of seconds of latency
for live-streaming are not important, but jitter is noticeable.
Therefore, implement a buffering mechanism (disabled by default) to add
a configurable latency delay.
PR #2417 <https://github.com/Genymobile/scrcpy/issues/2417 >
2021-07-14 14:27:33 +02:00
Romain Vimont
4d8bcfc68a
Extract current video_buffer to frame_buffer
...
The current video buffer only stores one pending frame.
In order to add a new buffering feature, move this part to a separate
"frame buffer". Keep the video_buffer, which currently delegates all its
calls to the frame_buffer.
2021-07-14 14:22:32 +02:00
Romain Vimont
ec871dd3f5
Wrap tick API
...
This avoids to use the SDL timer API directly, and will allow to handle
generic ticks (possibly negative).
2021-07-14 14:22:32 +02:00
Romain Vimont
5c95d18beb
Move log level conversion to log API
2021-06-20 16:04:18 +02:00
Romain Vimont
6adc97198b
Provide device info directly on server connection
...
This avoids to retrieve them in a separate step.
2021-05-17 08:52:08 +02:00
Marco Martinelli
d39161f753
Add support for v4l2loopback
...
It allows to send the video stream to /dev/videoN, so that it can be
captured (like a webcam) by any v4l2-capable tool.
PR #2232 <https://github.com/Genymobile/scrcpy/pull/2232 >
PR #2233 <https://github.com/Genymobile/scrcpy/pull/2233 >
PR #2268 <https://github.com/Genymobile/scrcpy/pull/2268 >
Co-authored-by: Romain Vimont <rom@rom1v.com>
2021-04-25 14:59:10 +02:00
Romain Vimont
9826c5c4a4
Remove HiDPI compilation flag
...
Always enable HiDPI support, there is no reason to expose a compilation
flag.
2021-04-04 15:00:13 +02:00
Romain Vimont
b16b65a715
Simplify default values
...
It makes sense to extract default values for bitrate and port range
(which are arbitrary and might be changed in the future).
However, the default values for "max size" and "lock video orientation"
are naturally unlimited/unlocked, and will never be changed. Extracting
these options just added complexity for no benefit, so hardcode them.
2021-02-25 22:19:05 +01:00
Romain Vimont
9cd1a7380d
Enable NDEBUG via Meson built-in option
2021-02-25 22:19:05 +01:00
Romain Vimont
f6320c7e31
Wrap SDL thread functions into scrcpy-specific API
...
The goal is to expose a consistent API for system tools, and paves the
way to make the "core" independant of SDL in the future.
2021-02-17 09:54:03 +01:00
Romain Vimont
c0dde0fade
Provide strdup() compat
...
Make strdup() available on all platforms.
2021-02-17 09:53:25 +01:00
Romain Vimont
8dbb1676b7
Factorize meson compiler variable initialization
2021-01-17 19:44:23 +01:00
Romain Vimont
cc6f5020d8
Move conditional src files in meson.build
...
Declare all the source files (including the platform-specific ones) at
the beginning.
2021-01-08 16:44:21 +01:00
Romain Vimont
4bd9da4c93
Split command into process and adb
...
The process API provides the system-specific implementation, the adb API
uses it to expose adb commands.
2021-01-08 16:44:21 +01:00
Romain Vimont
a46733906a
Replace noconsole binary by a wrapper script
...
This simplifies the build system.
Refs <https://github.com/Genymobile/scrcpy/issues/1975#issuecomment-745314161 >
2020-12-22 18:51:59 +01:00
Romain Vimont
1b76d9fd78
Customize shortcut modifier
...
Add --shortcut-mod, and use Alt as default modifier.
This paves the way to forward the Ctrl key to the device.
2020-08-01 16:31:27 +02:00
Romain Vimont
08c0c64af6
Rename test names from "event" to "msg"
...
The meson test names had not been changed when "event" had been renamed
to "message".
Ref: 28980bbc90
2020-06-11 23:06:02 +02:00
Romain Vimont
bea7658807
Enable trilinear filtering for OpenGL
...
Improve downscaling quality if mipmapping is available.
Suggested-by: Giumo Clanjor (哆啦比猫/兰威举) <cjxgm2@gmail.com>
Fixes #40 <https://github.com/Genymobile/scrcpy/issues/40 >
Ref: <https://github.com/Genymobile/scrcpy/issues/40#issuecomment-591917787 >
2020-04-15 17:39:51 +02:00
Romain Vimont
902b99174d
Fix server debugger for Android >= 9
...
Add a compilation flag to select the debugger method to use:
- old: Android < 9
- new: Android >= 9
See <https://github.com/Genymobile/scrcpy/issues/1187#issuecomment-599075661 >
2020-03-19 19:15:43 +01:00
George Stamoulis
1982bc439b
Add option to lock video orientation
...
PR #1151 <https://github.com/Genymobile/scrcpy/pull/1151 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2020-02-27 21:24:37 +01:00
Romain Vimont
dc7fcf3c7a
Accept port range
...
Accept a range of ports to listen to, so that it does not fail if
another instance of scrcpy is currently starting.
The range can be passed via the command line:
scrcpy -p 27183:27186
scrcpy -p 27183 # implicitly 27183:27183, as before
The default is 27183:27199.
Closes #951 <https://github.com/Genymobile/scrcpy/issues/951 >
2020-01-18 17:21:00 +01:00
Romain Vimont
db6252e52b
Simplify net.c
...
The platform-specific code for net.c was implemented in sys/*/net.c.
But the differences are quite limited, so use ifdef-blocks in the single
net.c instead.
2019-12-15 22:04:09 +01:00
Romain Vimont
e4cebc8d4c
Do not build tests in release mode
...
Assertions would not be executed.
And as a side effect, it causes "unused variable" warnings.
2019-12-09 23:24:39 +01:00
Romain Vimont
ba1b36758e
Define SDL_MAIN_HANDLED in all tests
...
Each test defines its own main() function. If this flag is not set, then
SDL redefines it to SDL_main(), causing compilation failures.
2019-12-09 23:24:39 +01:00
Romain Vimont
ad92a192b5
Fix meson.build codestyle
2019-12-09 23:00:55 +01:00
Romain Vimont
929bf48c7e
Add tests for command-line parsing
2019-12-08 23:19:01 +01:00
Romain Vimont
d950383b72
Move command-line parsing to a separate file
2019-12-08 23:18:57 +01:00
Yu-Chen Lin
b2bf25c52c
Add test_buffer_util
...
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
2019-12-04 19:24:59 +01:00
Romain Vimont
b5ebb234dd
Replace BUILD_DEBUG by NDEBUG
...
Use the "standard" NDEBUG definition, which is used by assert().
2019-11-27 21:11:52 +01:00
Romain Vimont
dfd0707a29
Move utilities to util/
2019-11-24 11:53:23 +01:00
Romain Vimont
18f2e33a8b
Fix noconsole.exe
...
The linker flag "-mwindows" has no effect on my current MinGW.
Instead, passing "-Wl,--subsystem,windows" works.
Fixes <https://github.com/Genymobile/scrcpy/issues/691 >
2019-11-19 12:22:11 +01:00
Romain Vimont
683f7ca848
Document how to attach a debugger to the server
2019-11-03 19:42:37 +01:00
Romain Vimont
0415672a75
Merge branch 'master' into dev
2019-11-03 15:56:10 +01:00
yangfl
4696878a97
Add manpage for scrcpy
2019-10-31 18:18:19 +08:00
Romain Vimont
3da95b52bd
Rename scrcpy-server.jar to scrcpy-server
...
The server name ending with .jar has several drawbacks:
- meson requires the jar executable to attempt to modify it:
<https://github.com/Genymobile/scrcpy/issues/404#issuecomment-456065923 >
<https://github.com/mesonbuild/meson/issues/4844 >
- meson warns during "ninja install"
<https://github.com/Genymobile/scrcpy/issues/458 >
- some users try to execute it on the computer as a java executable
Removing the extension solves all these problems.
2019-10-31 10:54:29 +01:00
Romain Vimont
9463850c24
Rename "convert.h" to "event_converter.h"
...
The filename gave no hint about what was converted.
2019-09-15 17:29:03 +02:00
Romain Vimont
53b6ee2cf4
Add generic intrusive FIFO queue
...
We need several FIFO queues (a queue of packets, a queue of messages,
etc.).
Some of them are implemented using cbuf, a generic circular buffer. But
for recording, we need to store the packets in an unbounded queue until
they are written, so the queue was implemented manually.
Create a generic implementation (using macros) to avoid reimplementing
it every time.
2019-08-01 23:14:50 +02:00
Romain Vimont
2755bfc255
Improve portable builds
...
In portable builds, scrcpy-server.jar was supposed to be present in the
current directory, so in practice it worked only if scrcpy was launched
from its own directory.
Instead, find the absolute path of the executable and build a suitable
path to use scrcpy-server.jar from the same directory.
2019-06-11 17:44:07 +02:00
Romain Vimont
eb34098add
Simplify portable build configuration
...
To create a portable build (with scrcpy-server.jar accessible from the
scrcpy directory), replace OVERRIDE_SERVER_PATH by a simple compilation
flag: PORTABLE.
This paves the way to use more complex rules to determine the path of
scrcpy-server.jar in portable builds.
2019-06-11 17:44:07 +02:00