Romain Vimont
44f720e4a4
Log new size on auto-resize request
...
On "resize to fit" and "resize to pixel-perfect", log the new size.
2020-04-18 02:15:22 +02:00
Romain Vimont
14ead499fd
Fix touch coordinates on rotated display
...
The touch coordinates were not rotated.
2020-04-17 18:17:12 +02:00
Romain Vimont
11a61b2cb3
Add option --no-mipmaps
...
Add an option to disable trilinear filtering even if mipmapping is
available.
2020-04-15 17:39:51 +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
8a9b20b27e
Add --render-driver command-line option
...
Add an option to set a render driver hint (SDL_HINT_RENDER_DRIVER).
2020-04-15 17:39:51 +02:00
Romain Vimont
270d0bf639
Rename max length constant for text injection
...
To avoid confusion with the max text size for clipboard, rename the
constant limiting the text injection length.
2020-04-13 19:38:43 +02:00
Romain Vimont
95fa1a69e4
Workaround compiler warning
...
Some compilers warns on uninitialized value in impossible case:
warning: variable 'result' is used uninitialized whenever switch
default is taken [-Wsometimes-uninitialized]
2020-04-13 16:33:21 +02:00
Romain Vimont
ea46d3ab68
Add missing include string.h
...
Include <string.h> for strdup() and strtok_r().
2020-04-13 16:33:21 +02:00
Romain Vimont
7eb16ce364
Fix log format warning
...
The expression port + 1 is promoted to int, but printed as uint16_t.
2020-04-13 16:33:19 +02:00
Romain Vimont
ab52b36895
Reorder options in alphabetical order
2020-04-11 14:31:14 +02:00
Romain Vimont
9f4735ede3
Fix double click on rotated display
...
A double-click outside the device content (in the black borders) resizes
so that black borders are removed. But the display rotation was not
taken into account to detect the content.
Use the content size instead of the frame size to fix the issue.
Ref: <https://github.com/Genymobile/scrcpy/issues/898#issuecomment-610993695 >
2020-04-08 16:37:33 +02:00
Romain Vimont
6295c1a110
Remap event positions on rotated display
...
If the display is rotated, the position of clicks must be adapted.
2020-04-08 14:27:25 +02:00
Romain Vimont
f3fba3c4b9
Store rotated content size
...
This avoids to compute it every time from the frame size.
2020-04-08 14:12:54 +02:00
Romain Vimont
a8fd4aec9a
Remove --fullscreen validation
...
Many options are meaningless if --no-display is set.
We don't want to validate all possible combinations, so don't make an
exception for --fullscreen.
2020-04-08 12:09:24 +02:00
Romain Vimont
cbde7b964a
Improve documentation for consistency
...
Make --lock-video-orientation documentation consistent with that of
--rotation.
2020-04-08 12:09:24 +02:00
Romain Vimont
28c71c528f
Add --rotation command-line option
...
In addition to Ctrl+Left and Ctrl+Right shortcuts, add a command-line
parameter to set the initial rotation.
2020-04-08 12:09:22 +02:00
Romain Vimont
d48b375a1d
Add shortcuts to rotate display
...
Add Ctrl+Left and Ctrl+Right shortcuts to rotate the display (the
content of the scrcpy window).
Contrary to --lock-video-orientation, the rotation has no impact on
recording, and can be changed dynamically (and immediately).
Fixes #218 <https://github.com/Genymobile/scrcpy/issues/218 >
2020-04-08 12:02:26 +02:00
Romain Vimont
fd63e7eb5a
Format shortcut documentation
...
For consistency, start the descriptions with a capital letter.
2020-04-08 12:02:15 +02:00
Romain Vimont
54ccccd883
Replace SDL_Atomic by stdatomic from C11
...
There is no reason to use SDL atomics.
2020-04-02 21:05:26 +02:00
Romain Vimont
94e1696869
Do not warn on terminating the server
...
If the server is already dead, terminating it fails. This is expected.
2020-04-02 21:05:26 +02:00
Romain Vimont
a346bb80f4
Do not block on accept() if server died
...
The server may die before connecting to the client. In that case, the
client was blocked indefinitely (until Ctrl+C) on accept().
To avoid the problem, close the server socket once the server process is
dead.
2020-04-02 21:05:26 +02:00
Romain Vimont
d421741a83
Wait server from a separate thread
...
Create a thread just to wait for the server process exit.
This paves the way to simply wake up a blocking accept() in a portable
way.
2020-04-02 21:05:26 +02:00
Romain Vimont
64d5edce92
Refactor server_start() error handling
...
This avoids cleanup duplication.
2020-04-02 21:05:26 +02:00
e_vigurskiy
4150eedcdf
Add display id parameter
...
Add --display command line parameter to specify a display id.
PR #1238 <https://github.com/Genymobile/scrcpy/pull/1238 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2020-04-02 21:02:52 +02:00
Romain Vimont
e050cfdcd6
Fix static_assert() parameters
...
In C11, static_assert() expects a message.
2020-03-27 14:01:56 +01:00
Romain Vimont
dc7c677728
Accept negative window position
...
It seems to work on some window managers.
Fixes #1242 <https://github.com/Genymobile/scrcpy/issues/1242 >
2020-03-26 22:52:41 +01: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
Jaafar Biyadi
cd69eb4a4f
Handle NumPad events when NumLock is disabled
...
PR #1188 <https://github.com/Genymobile/scrcpy/pull/1188 >
Fixes #1048 <https://github.com/Genymobile/scrcpy/issues/1048 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2020-03-14 17:37:14 +01:00
yangfl
d3281f4b67
Show a friendly hint for adb installation
...
Signed-off-by: Romain Vimont <rom@rom1v.com>
2020-02-27 21:28:42 +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
c0f428eb05
Merge branch 'master' into dev
2020-02-27 21:24:32 +01:00
Romain Vimont
4794ca8ae7
Use linear filtering
...
Anisotropic filtering makes no sense for scrcpy use case.
This (semantically) reverts 9e328ef98b
.
2020-02-25 12:20:18 +01:00
Romain Vimont
0fb22c3e98
Happy new year 2020!
2020-01-19 16:04:20 +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
2a3a9d4ea9
Add util function to parse a list of integers
...
This will help parsing arguments like '1234:5678' into a list of
integers.
2020-01-18 17:21:00 +01:00
Romain Vimont
ca0031cbde
Refactor server tunnel initialization
...
Start the server socket in enable_tunnel() directly.
For the caller point of view, enabling the tunnel opens a port (either
the server socket locally or the "adb forward" process).
2020-01-18 17:21:00 +01:00
Romain Vimont
d1a9a76cc6
Reorder functions
...
Move functions so that they can be called from enable_tunnel() (in the
following commit).
2020-01-18 17:21:00 +01:00
Romain Vimont
a8ceaf5284
Fix include order
2020-01-17 21:00:14 +01:00
Romain Vimont
83d48267a7
Accept --max-fps before Android 10
...
KEY_MAX_FPS_TO_ENCODER existed privately before Android 10:
<https://github.com/Genymobile/scrcpy/issues/488#issuecomment-567321437 >
2019-12-19 11:52:09 +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
Yu-Chen Lin
f9786e5034
Get env in windows correctly
...
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-12-14 18:47:54 +01:00
Yu-Chen Lin
78a320a763
Fix utf-8 char path in windows
...
The file 'E:\安安\scrcpy-win64-v1.12.1-1-g31bd950\scrcpy-server'
exists, however, it will show msg as follow:
INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy >
stat: No such file or directory
ERROR: 'E:\安安\scrcpy-win64-v1.12.1-1-g31bd950\scrcpy-server' does
not exist or is not a regular file
Press any key to continue...
This patch fixes it.
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-12-14 18:47:30 +01:00
Romain Vimont
7d5845196e
Fix memory leak on portable builds
...
The function get_server_path() sometimes returned an owned string,
sometimes a non-owned string.
Always return an allocated (owned) string, and free it after usage.
2019-12-14 18:23:25 +01:00
Romain Vimont
6965d051ae
Limit bitrate range to 31 bits integer
...
A proper solution could be to use "long long" instead (guaranteed to be
at least 64 bits), but it adds its own problems (e.g. "%lld" is not
supported as a printf format on all platforms).
In practice, we don't need such high values, so keep it simple.
Fixes #995 <https://github.com/Genymobile/scrcpy/issues/995 >
2019-12-10 09:28:27 +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
242e57d69b
Merge branch 'master' into dev
2019-12-09 22:37:20 +01:00
Romain Vimont
024c2f7e6b
Configure log priority early
...
The log priority must be configured before parsing command-line
arguments, in order to get logs as expected.
2019-12-09 22:31:14 +01:00
Romain Vimont
1eae139b6e
Add missing consts
...
String parsing functions should not be able to modify their input.
2019-12-09 22:30:48 +01:00
Romain Vimont
419c869c9c
Use ARRAY_LEN() macro in tests
2019-12-09 20:59:11 +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
Romain Vimont
61274a7cdb
Factorize integer argument parsing
...
Add util functions for integer parsing (with tests), and factorize
integer argument parsing to avoid code duplication.
2019-12-08 21:19:53 +01:00
Romain Vimont
64bcac9157
Refuse to push a non-regular file server
...
If SCRCPY_SERVER_PATH points to a directory, then a directory will be
pushed to /data/local/tmp/scrcpy-server.jar.
When executing it, app_process will just abort and leave the directory
on the device, causing scrcpy to always fail.
To avoid the problem, check that the server is a regular file before
pushing it.
Closes #956 <https://github.com/Genymobile/scrcpy/issues/956 >
2019-12-05 21:07:11 +01:00
Romain Vimont
3259c60b22
Fix test compilation on mingw
...
Including SDL2/SDL.h redefines main to SDL_main by default.
2019-12-05 21:06:49 +01:00
Romain Vimont
eb0f339271
Add shortcut to rotate screen
...
On Ctrl+r, disable auto-rotation (if enabled), set the screen rotation
and re-enable auto-rotation (if it was enabled).
Closes #11 <https://github.com/Genymobile/scrcpy/issues/11 >
2019-12-04 22:03:25 +01:00
Yu-Chen Lin
fbc86a616c
Correct coding style
...
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
2019-12-04 19:24:59 +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
Yu-Chen Lin
5eeaed09ae
Add test_strquote
...
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
2019-12-04 19:24:59 +01:00
Romain Vimont
3100533e56
Fix "natural scrolling"
...
> Movements down (scroll backward) generate negative y values and up
> (scroll forward) generate positive y values.
> If direction is SDL_MOUSEWHEEL_FLIPPED the values in x and y will be
> opposite. Multiply by -1 to change them back.
<https://wiki.libsdl.org/SDL_MouseWheelEvent#Remarks >
The x and y values already take the scrolling configuration into
account. Reversing the values when the direction is flipped cancels the
scrolling configuration.
Therefore, just ignore the direction field.
Fixes <https://github.com/Genymobile/scrcpy/issues/966 >
2019-12-03 21:10:43 +01:00
Romain Vimont
86fcd89d80
Fix max size default value
...
Suggested-by: jurkov
Closes <https://github.com/Genymobile/scrcpy/issues/978 >
2019-12-03 12:07:36 +01:00
Romain Vimont
15a206b7fc
Assert return value of mutex functions
...
Mutex functions may only fail due to a programming error.
Use assertions in debug builds, and ignore the value in release builds.
2019-11-27 21:40:58 +01:00
Romain Vimont
d0f5a7fd9f
Remove unused includes
...
No mutex is used in decoder.c and stream.c.
2019-11-27 21:40:54 +01:00
Romain Vimont
510caff0cd
Replace SDL_assert() by assert()
...
SDL_assert() open a dialog on assertion failure.
There is no reason not to use assert() directly.
2019-11-27 21:19:46 +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
73e8ec1b35
Remove path argument from cmd_execute()
...
It is always equal to argv[0] (or not used on Windows).
2019-11-27 21:11:52 +01:00
Romain Vimont
8dc11a0286
Fix warnings on Windows
...
fix warnings reported with -Dwarning_level=2 on Windows.
2019-11-27 21:11:52 +01:00
Romain Vimont
06104a701b
Fix windows build
...
Utilities have been moved to util/, but includes had not been updated
in Windows-specific files.
Ref: dfd0707a29
2019-11-27 13:25:56 +01:00
yangfl
8bc056b9c6
Fix manpage format
2019-11-27 10:58:17 +01:00
Romain Vimont
31d9d56117
Fix warnings
...
Fix warnings reported with -Dwarning_level=2.
2019-11-26 09:10:41 +01:00
Romain Vimont
dfd0707a29
Move utilities to util/
2019-11-24 11:53:23 +01:00
Romain Vimont
83ace84280
Restore the .jar extension on the device side
...
Commit 3da95b52bd
renamed
'scrcpy-server.jar' to 'scrcpy-server' to avoid issues on the client
side.
However, removing the extension may cause issues with app_process, so
restore the extension only on the device side.
Fixes <https://github.com/Genymobile/scrcpy/issues/944 >
2019-11-22 15:23:57 +01:00
Romain Vimont
c9d886f38b
Use the existing constants for device server path
2019-11-22 15:16:00 +01:00
Romain Vimont
c2116082ab
Remove deprecated options from help and manpage
...
Ref: ff061b4f30
2019-11-19 23:05:39 +01:00
Romain Vimont
3599fcaae5
Fix help for --window-width and --window-height
...
The default value is 0 (automatic), not -1.
2019-11-19 22:58:18 +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
senta2006
7aed5d5b60
Fix typos
...
PR <https://github.com/Genymobile/scrcpy/pull/927 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-11-18 17:45:52 +01:00
Romain Vimont
1d97d7213d
Add option --max-fps
...
Add an option to limit the capture frame rate. It only works for devices
with Android >= 10.
Fixes <https://github.com/Genymobile/scrcpy/issues/488 >
2019-11-17 22:10:39 +01:00
Romain Vimont
1b78a77962
Fix error message
2019-11-17 22:08:34 +01:00
Romain Vimont
59073223aa
Update manpage for --window-borderless option
2019-11-15 18:59:47 +01:00
Diego Fernando Díaz A
59bc5bc1f5
Add option to disable window decoration
...
Add --window-borderless parameter.
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-11-15 18:59:40 +01:00
Romain Vimont
9fd7a80a89
Add option to specify the initial window size
...
Add --window-width and --window-height parameters.
If only one is provided, the other is computed so that the aspect ratio
is preserved.
2019-11-15 18:52:58 +01:00
Romain Vimont
b6e2f8ae00
Update manpage for --window-{x,y} options
2019-11-15 18:50:49 +01:00
Diego Fernando Díaz A
ce5635f28c
Add option to specify the initial window position
...
Add --window-x and --window-y parameters.
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-11-15 18:50:49 +01:00
Romain Vimont
771bd8404d
Do not write invalid packet duration
...
Configuration packets have no PTS. Do not compute a packet duration from
their PTS.
Fixes recording to mp4 on device rotation.
2019-11-13 16:14:46 +01:00
Yu-Chen Lin
b963a3b9d5
Check client and server mismatch
...
Send client version as first parameter and check it at server start.
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-11-13 12:00:50 +01:00
Romain Vimont
aa0f77c898
Accept resize shortcuts on maximized window
...
Allow "resize to fit" and "resize to pixel-perfect" on maximized window:
restore the window to normal size then resize.
2019-11-11 21:49:23 +01:00
Romain Vimont
35c05bb3ce
Fix rotation while the window is maximized
...
Keep the windowed window size to handle maximized window the same way as
fullscreen window.
Fixes <https://github.com/Genymobile/scrcpy/issues/750 >
2019-11-11 21:49:23 +01:00
Romain Vimont
f6f2868868
Handle window events from screen.c
...
Only the screen knows what to do on window events.
This paves the way to handle more window events.
2019-11-11 15:02:26 +01:00
Romain Vimont
6996cbf5d3
Log device disconnection
...
If scrcpy closes due to socket disconnection, log a warning.
2019-11-09 21:17:03 +01:00
Romain Vimont
b08a98324d
Fix segfault on empty file recorded
...
Write the file trailer only if the file header have been written, to
avoid a segfault in libav.
Fixes <https://github.com/Genymobile/scrcpy/issues/918 >.
2019-11-07 21:58:57 +01:00
Romain Vimont
c916af0984
Add --prefer-text option
...
Expose an option to configure how key/text events are forwarded to the
Android device.
Enabling the option avoids issues when combining multiple keys to enter
special characters, but breaks the expected behavior of alpha keys in
games (typically WASD).
Fixes <https://github.com/Genymobile/scrcpy/issues/650 >
2019-11-07 19:01:35 +01:00
Romain Vimont
ff061b4f30
Deprecate short options for advanced features
...
The short options will be removed in the future (and may be reused for
other features).
2019-11-07 10:01:59 +01:00
Romain Vimont
157c60feb4
Fix indentation
2019-11-07 09:48:48 +01:00
Romain Vimont
2d90e1befd
Fix include recorder.h
2019-11-06 22:22:46 +01:00
Romain Vimont
0e301ddf19
Factorize scrcpy options and command-line args
...
Do not duplicate all scrcpy options fields in the structure storing the
parsed command-line arguments.
2019-11-06 22:06:54 +01:00
Romain Vimont
c42ff75b74
Pass screen to mouse event converters
...
Mouse events coordinates depend on the screen size and location, so the
converter need to access the screen.
The fact that it needs the position or the size is an internal detail,
so pass a pointer to the whole screen structure.
2019-11-06 21:24:36 +01:00
Romain Vimont
b0db1178d1
Move event conversion to input_manager
...
Only keep helper functions separated.
This will help to convert coordinates internally when necessary.
2019-11-06 21:24:36 +01:00
Romain Vimont
8d601d3210
Rename "input_manager" variables to "im"
...
It is used a lot, a short name improves readability.
2019-11-06 21:24:36 +01:00
Romain Vimont
683f7ca848
Document how to attach a debugger to the server
2019-11-03 19:42:37 +01:00
Romain Vimont
120f08ee96
Fix manpage option parameter format
...
The parameter for --window-title was not underlined the same way as
others.
2019-11-03 16:51:47 +01:00
Romain Vimont
0415672a75
Merge branch 'master' into dev
2019-11-03 15:56:10 +01:00
Romain Vimont
95fd64b5de
Add scrcpy version in recorded video metadata
...
It might help to understand problems in recorded videos.
2019-10-31 20:57:57 +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
c72f677435
Merge branch 'master' into dev
2019-10-30 23:29:44 +01:00
Romain Vimont
1380f6e00f
Fix help for --record-format
...
Record format requires a parameter.
2019-10-30 22:51:40 +01:00
Romain Vimont
17d53be3ef
Fix mouse events conversion
...
The conversion from SDL mouse state to Android mouse state used wrong
constants as mask.
Fixes <https://github.com/Genymobile/scrcpy/issues/635 >
2019-10-25 11:09:06 +02:00
Romain Vimont
f6c8460ebb
Rename window size functions for clarity
...
Now, get_window_size() returns the current window size (fullscreen or
not), while get_windowed_window_size() always returned the windowed size
(the size when fullscreen is disabled).
2019-10-20 16:08:16 +02:00
Romain Vimont
6220456def
Merge mouse and touch events
...
Both are handled the very same way on the device.
2019-10-03 20:37:49 +02:00
Romain Vimont
30168f0428
Ignore duplicate mouse events
...
In SDL, a touch event may simulate an identical mouse event. Since we
already handle touch event, ignore these duplicates.
2019-10-03 20:05:29 +02:00
Romain Vimont
b5a2d99bc2
Send touch events from the client
...
On SDL touch events, send control messages to the server.
2019-10-03 20:05:29 +02:00
Romain Vimont
77f876e29c
Add "inject touch" control message
...
Add a control message type in the protocol to forward touch events to
the device.
2019-10-03 20:05:27 +02:00
Romain Vimont
810ff80ba7
Add buffer_write64be()
...
Add a function to write 64 bits in big-endian from a uint64_t.
2019-10-02 21:40:26 +02:00
Romain Vimont
1f8ba1ca79
Include config.h everywhere
...
Ref: <https://github.com/Genymobile/scrcpy/issues/829 >
Suggested-by: Louis Kruger <louisk@gmail.com>
2019-09-29 22:39:53 +02:00
Louis Kruger
129dabcfa4
Include config.h to fix HIDPI support
...
Ref: <https://github.com/Genymobile/scrcpy/issues/829 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-09-29 22:39:47 +02:00
Yu-Chen Lin
795d103032
input_manager.c: Correct log
...
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
2019-09-28 10:37:25 +08:00
Ta-da
513d1ac96d
Fix option "record-format" related short opt
2019-09-27 10:04:41 +08:00
Romain Vimont
ffdbf5990b
Rename event converter functions
...
Rename "XXX_from_sdl_to_android" to "convert_XXX", to avoid huge
function names.
2019-09-15 17:29:03 +02: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
a9c8fa305d
Fix segfault on recording with old FFmpeg
...
The AVPacket fields side_data and side_data_elems were not initialized
by av_packet_ref() in old FFmpeg versions (prior to [1]).
As a consequence, on av_packet_unref(), side_data was freed, causing a
segfault.
Fixes <https://github.com/Genymobile/scrcpy/issues/707 >
[1]: <http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=3b4026e15110547892d5d770b6b43c9e34df458f >
2019-08-13 18:58:36 +02:00
Romain Vimont
8507fea271
Record a packet with its duration
...
Record a packet only once the following has been received, so that we
can set its duration before muxing it.
Fixes <https://github.com/Genymobile/scrcpy/issues/702 >
2019-08-08 18:57:52 +02:00
Arne Schwabe
c05056343b
Fix building on OS X (missing NULL in queue.h)
...
Headers seem to be a bit different in Apple land and you need to include
stddef.h explicitly to the NULL declaration.
This also makes the code a bit more correct, as stddef.h is the header
in the C standard that defines NULL
(https://en.cppreference.com/w/cpp/header/cstddef ).
2019-08-05 15:02:05 +02:00
Romain Vimont
b0184f2869
Initialize queue "last" field
...
The compiler is not always able to see that "last" is always initialized
before being used, so always initialize it.
2019-08-04 16:22:39 +02:00
Romain Vimont
e2ac996183
Use Cmd instead of Ctrl on macOS when possible
...
Fixes <https://github.com/Genymobile/scrcpy/issues/642 >
2019-08-03 23:13:44 +02:00
Romain Vimont
5e4ccfd832
Use generic FIFO queue for recording
...
Replace the specific recording queue by the new generic FIFO queue
implementation.
2019-08-01 23:15:47 +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
26213f1031
Fix cbuf documentation
2019-08-01 22:50:03 +02:00
Romain Vimont
96b5067cbf
Remove unnecessary backslash in cbuf
2019-08-01 22:08:34 +02:00
Romain Vimont
6abb4902c6
Log recording failure
...
If recording fails, log "recording failed" instead of "recording
complete".
2019-07-31 11:04:38 +02:00
Romain Vimont
d4ed8b6f26
Log scrcpy version and URL on start
...
Keep --version which also print the version of dependencies.
2019-07-31 01:55:43 +02:00
Romain Vimont
35d9185f6c
Record asynchronously
...
The record file was written from the stream thread. As a consequence,
any blocking I/O to write the file delayed the decoder.
For maximum performance even when recording is enabled, send
(refcounted) packets to a separate recording thread.
2019-07-31 01:55:40 +02:00
Romain Vimont
63af7fbafe
Reduce latency by 1 frame
...
To packetize the H.264 raw stream, av_parser_parse2() (called by
av_read_frame()) knows that it has received a full frame only after it
has received some data for the next frame. As a consequence, the client
always waited until the next frame before sending the current frame to
the decoder!
On the device side, we know packets boundaries. To reduce latency,
make the device always transmit the "frame meta" to packetize the stream
manually (it was already implemented to send PTS, but only enabled on
recording).
On the client side, replace av_read_frame() by manual packetizing and
parsing.
<https://stackoverflow.com/questions/50682518/replacing-av-read-frame-to-reduce-delay >
<https://trac.ffmpeg.org/ticket/3354 >
2019-07-31 01:55:32 +02:00
Romain Vimont
a90ccbdf3b
Add option to change the push target
...
A drag & drop always pushed the file to /sdcard/.
Add an option to customize the target directory.
Fixes <https://github.com/Genymobile/scrcpy/issues/659 >
2019-07-31 01:53:16 +02:00
Romain Vimont
ca970e8aa6
Merge branch 'master' into dev
2019-07-31 00:14:17 +02:00
Romain Vimont
3c55d0c69b
Fix double-free on error
...
If writing the recording header fails, do not clean the resources
immediately to avoid double-free.
2019-07-12 21:07:06 +02:00
Romain Vimont
4961256123
Close decoder on stream ended
...
Add missing call to decoder_close().
2019-06-26 23:50:39 +02:00
beango1
8e65c10720
Add option --window-title
...
Add an option to set a custom window title.
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-06-24 19:58:00 +02:00
Romain Vimont
056e47e752
Replace "cannot" by "could not"
2019-06-23 20:52:03 +02:00
Romain Vimont
91ecb4f218
Close socket on error
...
Suggested-by: barry-ran
<https://github.com/Genymobile/scrcpy/issues/607 >
2019-06-20 12:15:45 +02:00
Romain Vimont
bfb3f0842f
Prevent to turn screen off if no control
...
If --no-control is set, then the controller is not initialized (both in
the client and the server), so it is not possible to control the device
to turn its screen off.
See <https://github.com/Genymobile/scrcpy/issues/608 >.
2019-06-20 10:59:19 +02:00
Romain Vimont
b91ecf5225
Fix --serial help
...
Make explicit that --serial excepts a parameter.
2019-06-18 17:13:53 +02:00
zzndb
bcd0a876f7
Fix a spell mistake
...
After commented default portable option in `app/meson.build` get some
error and then find this. :)
Signed-off-by: Romain Vimont <rom@rom1v.com>
2019-06-12 11:22: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
3b17ff7c86
Add functions to convert wide char to UTF-8
...
There was already utf8_to_wide_char(), used to correctly execute
commands on Windows.
Add the reverse converter: utf8_from_wide_char(). We will need it to
build the scrcpy-server path based on the executable directory.
2019-06-11 17:44:07 +02:00
Romain Vimont
4eb6b26c93
Extract "scrcpy-server.jar" string
...
The filename is used at several places.
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
Romain Vimont
b777760bca
Simplify scrcpy-server path configuration
...
The full path of scrcpy-server.jar was partially configured from
meson.build then concatenated by C code.
Instead, directly write the path in C.
2019-06-11 17:44:07 +02:00
Romain Vimont
72bdfbc7a6
Never return 0 for stream protocol
...
On socket disconnection, on Linux, recv() returns -1 and errno is set.
But on Windows, errno is 0.
In that case, AVERROR(errno) == 0, leading to the warning:
> Invalid return value 0 for stream protocol
To avoid the problem, if errno is 0, return AVERROR_EOF.
Ref: commit 2876463d39
2019-06-11 17:44:07 +02:00