Romain Vimont
57687bdfcd
Write header file with correct extradata
...
When recording, the header must be written with extradata set to the
content of the very first packet.
Suggested-by: Steve Lhomme <robux4@ycbcr.xyz >
2019-02-09 12:54:12 +01:00
Romain Vimont
ee3cba57a8
Forward FFmpeg logs
...
FFmpeg logs can be useful to understand the cause of issues.
2019-02-09 12:27:13 +01:00
Romain Vimont
c11905b860
Add log verbose macro
...
This was the only log priority missing.
2019-02-09 12:27:13 +01:00
Romain Vimont
1a5ba59504
Fix memory leak on close
...
The buffer associated to the AVIOContext must be freed.
2019-02-09 12:27:13 +01:00
Romain Vimont
aa07dfd2ca
Merge pull request #412 from npes87184/dev
...
app: add always_on_top
2019-01-27 14:09:19 +01:00
Romain Vimont
b35733edb6
Fix expected mouse event sizes
...
Commit fefb9816a9 modified mouse events
serialization. The server-side parsing was updated to correctly read the
position, but the expected size of these events was not updated.
As a result, the server might try to parse incomplete events, leading
to BufferUnderflowException.
Fixes
<https://github.com/Genymobile/scrcpy/issues/350#issuecomment-456298816 >.
2019-01-22 09:47:26 +01:00
Romain Vimont
7764a836f1
Fix incorrect comment
...
Comment had not been updated along with the code.
2019-01-22 09:38:51 +01:00
Romain Vimont
0bfaf7b7ff
Update links to v1.6 in README and BUILD
2019-01-20 22:05:32 +01:00
Romain Vimont
446c682374
Bump version to 1.6
2019-01-20 21:35:42 +01:00
Romain Vimont
3aacb7967d
Merge branch 'dev' into master
2019-01-19 21:40:55 +01:00
Romain Vimont
06a0bbbc71
Update FFmpeg (4.1) for Windows
...
Include the last version of FFmpeg in Windows releases.
2019-01-19 18:14:05 +01:00
Romain Vimont
d71e036f3a
Do not disable screensaver
...
Keep screensaver enabled while scrcpy is running.
Fixes <https://github.com/Genymobile/scrcpy/issues/380 >.
2019-01-18 23:17:31 +01:00
Romain Vimont
b343a5dc59
Merge pull request #401 from npes87184/dev
...
input_manager: don't ignore double click event when clicking inside device
2019-01-18 13:34:41 +01:00
Romain Vimont
4f254d8232
Merge pull request #396 from npes87184/master
...
prepare-dep: use variable for better readability
2019-01-16 21:16:04 +01:00
Romain Vimont
1fdde490fd
Mirror "secure" content
...
Some applications, like Silence, prevent the content of a window from
being viewed on non-secure displays:
<https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE >
We can mirror it by just creating a "secure" display:
<https://developer.android.com/reference/android/view/Display#FLAG_SECURE >
2019-01-16 14:21:18 +01:00
Romain Vimont
39c5e71605
Make the server unlink itself
...
To clean up the device, the client executed "adb shell rm" once the
server was guaranteed to be started (after the connection succeeded).
This implied to track whether the installation state, and failed if an
additional tunnel was used in "forward" mode:
<https://github.com/Genymobile/scrcpy/issues/386#issuecomment-453936034 >
Instead, make the server unlink itself on start.
2019-01-14 21:12:23 +01:00
Romain Vimont
fefb9816a9
Handle mouse events outside device screen
...
Mouse events position were unsigned (so negative values could not be
handled properly).
To avoid issues with negative values, mouse events outside the device
screen were ignored (commit a7fe9ad779 ).
But as a consequence, drag&drop were "broken" if the "drop" occurred
outside the device screen.
Instead, use signed 32-bits to store the position, and forward events
outside the device screen.
Fixes <https://github.com/Genymobile/scrcpy/issues/357 >.
2018-11-27 08:59:22 +01:00
Romain Vimont
7830859c21
Merge branch 'master' into dev
2018-11-27 08:38:57 +01:00
Romain Vimont
0e019f8ab8
Add a note to allow simulating input in README
2018-11-25 11:29:27 +01:00
Romain Vimont
f7d02cad4b
Add ninja-build to the packages list to install
...
The package ninja-build should be installed automatically as a meson
dependency, but some users need to install a newer meson from pip3, so
ninja must be installed explicitly.
2018-11-19 09:43:05 +01:00
Romain Vimont
a7fe9ad779
Ignore mouse events outside device screen
...
Never create a "struct point" with a position possibly outside the
device screen (i.e. in the black borders area), and do not transmit such
events.
This fixes an assertion failure on mouse wheel events outside the device
screen area.
2018-11-18 21:31:57 +01:00
Romain Vimont
1e22ebcac2
Always use non-empty arguments
...
The client passes parameters to the server via "adb shell" arguments.
Use "-" instead of "" when no crop is specified to avoid empty
arguments, which are not handled the same way on all devices.
Fixed <https://github.com/Genymobile/scrcpy/issues/337 >.
2018-11-16 18:39:41 +01:00
Romain Vimont
d81729ba39
Always expect 5 parameters for the server
...
The client always sends all the arguments, so there is no need to check.
2018-11-16 18:36:01 +01:00
Romain Vimont
b2c3df7550
Point out that ninja must not be run as root
...
See https://github.com/Genymobile/scrcpy/issues/335 .
2018-11-15 21:11:58 +01:00
Romain Vimont
46fec41b7b
Move drag&drop features in README
...
Present how to install an APK and how to push a file in the "features"
section (instead of "shortcuts").
2018-11-13 20:39:18 +01:00
Romain Vimont
2876463d39
Fix read_packet() return value on error or EOF
...
Fix warning on error or EOF:
> Invalid return value 0 for stream protocol
See <http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=a606f27f4c610708fa96e35eed7b7537d3d8f712 >.
Fixes <https://github.com/Genymobile/scrcpy/issues/333 >.
2018-11-12 14:45:43 +01:00
Romain Vimont
6dc6ec05d5
Configure version at meson project level
...
Make meson aware of the project version, so that it does not print:
Project version: undefined
2018-11-12 14:10:21 +01:00
Romain Vimont
b5e630eea3
Update links to v1.5-fixversion
...
I forgot to bump version _before_ the release, so I had to make a new
one which fixes the version string (for scrcpy --help).
2018-11-12 08:52:45 +01:00
Romain Vimont
e4cf152b26
Update links to v1.5 in README and BUILD
2018-11-11 23:35:47 +01:00
Romain Vimont
bd32016632
Improve features presentation in README
2018-11-11 21:40:05 +01:00
Romain Vimont
77b620e1d0
Merge branch 'record' into dev ( #292 )
...
Record screen to file
2018-11-11 21:39:38 +01:00
Romain Vimont
22ff03f2f7
Do not queue invalid PTS
...
Configuration packets produced by MediaCodec have no valid PTS, and do
not produce frame. Do not queue their (invalid) PTS not to break the
matching between frames and their PTS.
2018-11-11 21:37:31 +01:00
Romain Vimont
60afb46c8d
Store queue of PTS for pending frames
...
Several frames may be read by read_packet() before they are consumed
(returned by av_read_frame()), so we need to store the PTS of frames in
order, so that the right PTS is assigned to the right frame.
2018-11-11 21:37:31 +01:00
Romain Vimont
345f8858d3
Send frame meta only if recording is enabled
...
The client needs the PTS for each frame only if recording is enabled.
Otherwise, the PTS are not necessary, and the protocol is more
straighforward.
2018-11-11 21:37:31 +01:00
Romain Vimont
22bf0c19d6
Rename --output-file to --record
...
To record the screen to a local file:
scrcpy --record file.mp4
2018-11-11 21:37:31 +01:00
Romain Vimont
70579dc709
Wrap receiver state into separate struct
...
For readability, wrap the state of the receiver in a separate struct
receiver_state.
2018-11-11 21:37:31 +01:00
Romain Vimont
e562837c0b
Avoid partial header reads
...
Use net_recv_all() to avoid partial reads for the "meta" header (this
would break the whole stream).
2018-11-11 21:37:31 +01:00
Romain Vimont
ebe998cf78
Move buffer reader functions to buffer_util.h
2018-11-11 21:37:31 +01:00
Romain Vimont
b98eb7d0fa
Support AVStream.codec for old FFmpeg versions
...
AVStream.codec has been deprecated in favor of AVStream.codecpar.
Due to the FFmpeg/Libav split, this happened in two separate versions:
- 57.33.100 for FFmpeg
- 57.5.0 for Libav
2018-11-11 21:37:31 +01:00
Romain Vimont
d0e090e1f9
Reenable custom SDL signal handlers
...
This partially reverts commit f00c6c5b13 .
On Ctrl+C, we need to execute cleanup code. For instance, if recording
is enabled, we need to write MP4 file trailer on exit.
Custom SDL signal handlers were disabled because it leaded to process
hanging on Ctrl+C during network calls on initialization, but now it
seems to work correctly, the network calls return immediately on signal.
2018-11-11 21:37:31 +01:00
Romain Vimont
475912a39c
Do not transmit MediaCodec flags
...
Since PTS handling has been fixed, the recorder do not associate a PTS
to a wrong frame anymore, so PTS of "configuration packets" (which never
produce a frame), are never read by the recorder. Therefore, there is no
need to ignore them explicitly, so we can remove the MediaCodec flags
completely.
2018-11-11 21:37:31 +01:00
Romain Vimont
27e8a9a79d
Assign PTS to the right frame
...
The PTS was read from the socket and set as the current one even before
the frame was consumed, so it could be assigned to the previous frame
"in advance".
Store the PTS for the current frame and the last PTS read from the
packet header of the next frame in separate fields.
As a side-effect, this fixes the warning on quit:
> Application provided invalid, non monotonically increasing dts to
> muxer in stream 0: 17164020 >= 17164020
2018-11-11 21:37:31 +01:00
Romain Vimont
61db575861
Decode and push frame before recording
...
Handle display before recording, to reduce latency.
2018-11-11 21:37:31 +01:00
Romain Vimont
2cd99e7205
Only set valid PTS/DTS
...
When the PTS is valid, set both PTS and DTS to avoid FFmpeg warnings.
Since configuration packets have no PTS, do not record these packets.
2018-11-11 21:37:26 +01:00
Romain Vimont
27686e9361
Add recorder
...
Implement recording in a separate "class".
2018-11-11 16:30:23 +01:00
Romain Vimont
b5c64c0f5a
Fix SDL 2.0.9 for Windows
...
Add missing version upgrade in cross_winXX.txt files.
2018-11-11 16:29:03 +01:00
Romain Vimont
a5787dccd6
Update SDL (2.0.9) for Windows
...
Include the last version of SDL in Windows releases.
2018-11-11 16:04:17 +01:00
Romain Vimont
cb3cf801c8
Extract bit operations to buffer_util.h
...
Move util functions to a reusable separate header.
2018-11-11 01:01:56 +01:00
Romain Vimont
b1d2c2c640
Explain how to install up-to-date meson
...
On Ubuntu 16.04, meson is 0.29, while scrcpy requires >= 0.37.
Explain how to install a newer version from pip3.
2018-11-11 00:08:41 +01:00
Romain Vimont
9160d465ec
Add feature test macro to declare kill()
...
Avoid the following warning on some systems:
> warning: implicit declaration of function 'kill'
> [-Wimplicit-function-declaration]
2018-11-10 16:16:08 +01:00
Romain Vimont
5c739874a4
Fix memory leak on error
...
On decode error, unref the packet.
2018-11-09 16:10:44 +01:00
Romain Vimont
d061c30965
Replace Ctrl by Meta for volume shortcuts on MacOS
...
Ctrl+UP and Ctrl+DOWN are already used by the window manager on MacOS.
Use Cmd key instead (like on VLC).
2018-11-01 16:19:07 +01:00
Romain Vimont
5bf1261364
Refactor to support Meta in shortcuts
...
Move the Ctrl and Meta key down checks to each shortcut individually, so
that we can add a shortcut involving Meta.
2018-11-01 16:19:07 +01:00
Romain Vimont
facbbced9e
Merge pull request #310 from npes87184/master
...
fix text memory leak
2018-10-27 14:49:00 +02:00
Romain Vimont
0b92b93358
Capture Alt and Meta keys
...
Alt and Meta keys should not be forwarded to the device. For now, they
are not used for shortcuts, but they could be.
2018-10-24 19:08:36 +02:00
Romain Vimont
c20245630e
Factorize Windows command building
...
Extract command line building to a separate method.
2018-10-21 18:57:06 +02:00
Romain Vimont
b882322f73
Work around Os.write() not updating position
...
ByteBuffer position is not updated as expected by Os.write() on old
Android versions. Count the remaining bytes manually.
Fixes <https://github.com/Genymobile/scrcpy/issues/291 >.
2018-10-09 08:43:17 +02:00
Romain Vimont
8875955921
Support paths containing spaces on Windows
...
Quote the arguments of "adb push" to support paths which contain spaces
on Windows.
Fixes <https://github.com/Genymobile/scrcpy/issues/288 >.
2018-10-04 21:01:23 +02:00
Romain Vimont
ff4430b2a3
Declare fun(void) functions with no parameters
...
This is not C++.
2018-10-04 17:04:20 +02:00
Romain Vimont
cea176c210
Update links to v1.4 in README and BUILD
2018-10-04 00:13:28 +02:00
Romain Vimont
f613752606
Update platform-tools (28.0.1) for Windows
...
Include the latest version of adb in Windows releases.
2018-10-03 23:18:37 +02:00
Romain Vimont
24d107d017
Bump version to 1.4
2018-10-03 23:03:27 +02:00
Romain Vimont
66d1f81f56
Merge branch 'master' into dev
2018-10-03 23:02:09 +02:00
Romain Vimont
411aa4fcfd
Handle alpha and space chars as raw events
...
To handle special chars, text is handled as text input instead of key
events. However, this breaks the separation of DOWN and UP key events.
As a compromise, send letters and space as key events, to preserve
original DOWN/UP events, but send other text input events as text, to be
able to send "special" characters.
Fixes <https://github.com/Genymobile/scrcpy/issues/87 >.
Suggested-by: pete1414
Suggested-by: King-Slide <kingslide@gmail.com >
2018-10-03 22:07:09 +02:00
Romain Vimont
78d5a4d8a1
Add link to Gentoo Ebuild in README
2018-09-19 22:09:52 +02:00
Romain Vimont
52e2c60190
Merge pull request #261 from npes87184/dev
...
prevent closing console right after process error in windows
2018-09-18 08:56:40 +02:00
Romain Vimont
eca99d5af7
Fix header guard name
2018-09-13 16:27:19 +02:00
Romain Vimont
6a1fb070f7
Merge branch 'npes87184:dev' into dev ( #254 )
...
Return specific error for missing adb binary on Windows
2018-09-09 15:28:56 +02:00
Romain Vimont
66def38b73
Avoid additional buffer copy in userspace
...
Directly send the data from MediaCodec buffers to the LocalSocket,
without an intermediate copy in userspace.
2018-09-09 15:05:06 +02:00
Romain Vimont
a60aef5aaf
Merge branch 'philippsandhaus:master' into dev ( #252 )
...
Added new command line parameter to start in fullscreen
2018-09-04 18:51:56 +02:00
Romain Vimont
28015c3ee4
Present fullscreen option in README
2018-09-04 18:51:35 +02:00
Romain Vimont
34550311be
Merge branch 'npes87184:dev' into dev ( #236 )
...
check adb runnable before starting scrcpy
2018-09-04 18:43:17 +02:00
Romain Vimont
55d33ddd5f
Do not handle system-specific values in command.c
...
The common command.c handled process errors from system-specific int
values (errno).
Rather, expose a new enum process_result to handle error cause in a
generic way.
2018-09-04 08:57:07 +02:00
Romain Vimont
fdbb725436
Add link to FLAG_SECURE in FAQ
2018-08-20 15:00:01 +02:00
Romain Vimont
ce6e5d1969
Explain how to install adb on Mac OS
...
The package scrcpy from Homebrew does not install adb.
2018-08-17 19:51:25 +02:00
Romain Vimont
963890e9c2
Separate build instructions from README
...
README included build instructions, which made it complicated to follow.
Move the build instructions to a separate file (BUILD.md).
2018-08-17 17:57:08 +02:00
Romain Vimont
3b5e54278e
Update FFmpeg (4.0.2) for Windows
...
Include the last version of FFmpeg in Windows releases.
2018-08-15 19:30:02 +02:00
Romain Vimont
dd3ba685e4
Update platform-tools (28.0.0) for Windows
...
Include the last version of adb in Windows releases.
Fixes <https://github.com/Genymobile/scrcpy/issues/224 >.
2018-08-15 19:30:02 +02:00
Romain Vimont
89e0203682
Add missing include for lock_util.h
...
lock_util.c did not include lock_util.h. This was catched by the gcc
option -Wmissing-prototypes.
2018-08-15 19:30:02 +02:00
Romain Vimont
536b31829a
Separate multi-words filenames by '_'
...
Rename foobar.ext to foo_bar.ext.
<https://github.com/Genymobile/scrcpy/pull/226#discussion_r209454865 >
2018-08-15 19:30:01 +02:00
Romain Vimont
f3f704d1ed
Document "push file" feature
...
Document how to push a file to /sdcard/ in the shortcuts list.
2018-08-15 17:19:32 +02:00
Romain Vimont
6581f9feb9
Make request_queue functions static
...
These functions are local to file_handler.c.
2018-08-15 17:19:32 +02:00
Romain Vimont
359685b1db
Simplify SDL_assert() calls
...
SDL_assert() already prevents "unused variable" warnings.
2018-08-15 17:19:32 +02:00
Romain Vimont
4527be4cde
Add missing include config.h
...
When config.h is not included, BUILD_DEBUG is not set.
2018-08-15 17:19:32 +02:00
Romain Vimont
92d1aff85f
Merge branch 'npes87184:push_file_to_sdcard' into dev ( #226 )
...
support drag & drop file to device /sdcard
2018-08-15 17:18:15 +02:00
Romain Vimont
2daeb1fd5f
Reset current installer process
...
The current_process field was never reset after an installation is
complete. As a consequence, installer_stop() attempted to terminate it,
leading to a warning, at best.
2018-08-15 17:10:07 +02:00
Romain Vimont
6fa209fa82
Remove AINPUT_SOURCE_ANY value
...
In the Android input header file, an enum has a value taking more than
31 bits, leading to the following warning:
ISO C restricts enumerator values to range of ‘int’
Since we don't use it, remove it.
2018-08-12 15:35:29 +02:00
Romain Vimont
b37c0f6cd6
Replace Uint32 by int to fix warnings in tinyxpm
2018-08-12 15:35:25 +02:00
Romain Vimont
c4a1fc746b
Explicitly use ISO C11
...
ISO C99 doesn't support unnamed structs/unions.
2018-08-12 15:21:30 +02:00
Romain Vimont
ec66b3be82
Merge pull request #225 from npes87184/master
...
remove redundant semicolon
2018-08-12 14:56:13 +02:00
Romain Vimont
9e683b7dac
Update links to v1.3 in README
2018-08-09 19:26:31 +02:00
Romain Vimont
7e42358a7b
Bump version to 1.3
2018-08-09 19:14:17 +02:00
Romain Vimont
caa9e30004
Add crop feature
...
Add an option to crop the screen on the server. This allows to mirror
only part of the device screen.
2018-08-09 19:12:27 +02:00
Romain Vimont
e85010fbc2
Move annotation comment
...
This confused the Android Studio code formatter.
2018-08-09 18:23:38 +02:00
Romain Vimont
820cd2bb54
Extract video size computation
...
One method, one thing.
2018-08-09 18:22:52 +02:00
Romain Vimont
8793c104ee
Increase "adb forward" connection attempts
...
5 seconds might not be sufficient:
<https://github.com/Genymobile/scrcpy/issues/213 >
Increase to 10 seconds (it does not harm).
2018-08-09 18:22:42 +02:00
Romain Vimont
fca806e095
Do not call deprecated av_register_all()
...
av_register_all() is deprecated in FFmpeg since this commit:
<http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=0694d8702421e7aff1340038559c438b61bb30dd >
It is now useless to call it:
<https://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225051.html >
Fixes <https://github.com/Genymobile/scrcpy/issues/203 >.
2018-08-09 18:18:22 +02:00
Romain Vimont
280891837e
Simplify README for Windows users
...
So that users stop downloading platform-tools unnecessarily.
2018-07-16 17:13:36 +02:00
Romain Vimont
49b2e63d13
Forward repeated volume events
...
Send repeated events when holding volume up/down shortcuts.
2018-06-24 21:51:54 +02:00
Romain Vimont
c12c64ed41
Send separate DOWN/UP key events
...
Shortcuts generated instant DOWN/UP key events. Instead, generate DOWN
event on Ctrl+key down and UP event on Ctrl+key up.
Fixes <https://github.com/Genymobile/scrcpy/issues/166 >.
2018-06-24 21:50:53 +02:00