Romain Vimont
4c4a03ebe1
Reorder options to maintain alphabetical order
2023-05-30 21:36:48 +02:00
Yan
798dfd240e
Turn device screen off after set up
...
Sometimes it can take quite a while for everything to get set up and
the screen to appear.
PR #3902 <https://github.com/Genymobile/scrcpy/pull/3902 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-05-27 10:11:42 +02:00
Romain Vimont
c4caa6b81d
Document --no-{video,audio}-playback
...
PR #4033 <https://github.com/Genymobile/scrcpy/pull/4033 >
2023-05-27 10:08:10 +02:00
Romain Vimont
1efbfe1175
Add separate video and audio playback options
...
Add --no-video-playback and --no-audio-playback. The option
--no-playback is now an alias for both.
PR #4033 <https://github.com/Genymobile/scrcpy/pull/4033 >
2023-05-27 10:08:10 +02:00
Romain Vimont
751c09f47a
Simplify V4L2/USB ifdefs
...
Define local variables whose value depends on ifdefs, to avoid
cluttering all conditions with ifdefs.
2023-05-27 09:55:49 +02:00
Romain Vimont
6ad46d70b8
Define v4l2_buffer only if HAVE_V4L2
...
If V4L2 support is disabled, there is no v4l2 buffer option.
2023-05-27 09:55:49 +02:00
Romain Vimont
f46758d1c5
Fix V4L2 error message when disabled
...
For consistency, use the same error message for --v4l2-sink and
--v4l2-buffer.
2023-05-27 09:55:49 +02:00
Romain Vimont
e71f5358b3
Reorder command line options checks
...
Perform checks that impact the options first.
2023-05-27 09:55:49 +02:00
Romain Vimont
a2c8910006
Rename --no-mirror to --no-playback
...
This option impacts video and audio _playback_. For example, if we use
V4L2, the device is still "mirrored" (via V4L2), even if playback is
disabled. Therefore, "playback" is more approriate than "mirror".
The initial option --no-display option was renamed to --no-mirror by
commit 6928acdeac , but this has never been
released, so it is ok to rename it one more time.
Refs #3978 <https://github.com/Genymobile/scrcpy/pull/3978#issuecomment-1549420103 >
PR #4033 <https://github.com/Genymobile/scrcpy/pull/4033 >
2023-05-27 09:55:38 +02:00
Simon Chan
cab354102d
Create AudioRecord by reflection as a fallback
...
Some devices (Vivo phones) fail to create an AudioRecord from an
AudioRecord.Builder (which throws a NullPointerException).
In that case, create an AudioRecord instance directly by reflection.
The AOSP version of AudioRecord constructor code can be found at:
- Android 11 (R):
<https://cs.android.com/android/platform/superproject/+/android-11.0.0_r1:frameworks/base/media/java/android/media/AudioRecord.java;l=335;drc=64ed2ec38a511bbbd048985fe413268335e072f8 >
- Android 12 (S):
<https://cs.android.com/android/platform/superproject/+/android-12.0.0_r1:frameworks/base/media/java/android/media/AudioRecord.java;l=388;drc=2eebf929650e0d320a21f0d13677a27d7ab278e9 >
- Android 13 (T, functionally identical to Android 12):
<https://cs.android.com/android/platform/superproject/+/android-13.0.0_r1:frameworks/base/media/java/android/media/AudioRecord.java;l=382;drc=ed242da52f975a1dd18671afb346b18853d729f2 >
- Android 14 (U): Not released, but expected to change
PR #3862 <https://github.com/Genymobile/scrcpy/pull/3862 >
Fixes #3805 <https://github.com/Genymobile/scrcpy/issues/3805 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-05-26 18:56:43 +02:00
Romain Vimont
597d2ccc01
Rename FORMAT to ENCODING
...
The AudioFormat contains several properties. This specific value is
named "encoding".
2023-05-24 22:13:09 +02:00
Romain Vimont
38900d7730
Extract audio source to a static constant
...
For consistency with the other parameters.
2023-05-24 22:13:09 +02:00
Romain Vimont
e926bf1fe8
Delay window resize when minimized
...
On some window managers (e.g. on Windows), performing a resize while the
window is minimized does nothing (the restored window keeps its old
size).
Therefore, like for maximized and fullscreen states, wait for the window
to be restored to apply a resize.
Refs #3947 <https://github.com/Genymobile/scrcpy/issues/3947 >
2023-05-22 18:22:45 +02:00
Romain Vimont
6298ef095f
Accept texture failures
...
When the scrcpy window is minimized on Windows with D3D9, texture
creation and update fail.
In that case, do not terminate scrcpy. Instead, store the pending size
or frame to update, to attempt again during the next update or
rendering.
Fixes #3947 <https://github.com/Genymobile/scrcpy/issues/3947 >
2023-05-22 18:21:10 +02:00
Marek Madejski
958f22490b
Document installation via winget on Windows
...
PR #4005 <https://github.com/Genymobile/scrcpy/pull/4005 >
Refs #1444 <https://github.com/Genymobile/scrcpy/issues/1444 >
Refs #3932 <https://github.com/Genymobile/scrcpy/issues/3932 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-05-17 19:36:39 +02:00
Romain Vimont
7d33798b40
Upgrade FFmpeg build to 6.0-scrcpy-4
...
Use FFmpeg DLLs which do not depend on zlib1.dll.
2023-05-15 21:55:22 +02:00
Romain Vimont
d500550212
Update audio recording documentation
...
Document how to record audio-only to .opus and .aac files.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-15 14:28:55 +02:00
Romain Vimont
a166eee909
Upgrade FFmpeg build to 6.0-scrcpy-3
...
Use a build which includes the opus muxer, to support recording to .opus
files.
Refs <https://github.com/rom1v/scrcpy-deps/commits/6.0-scrcpy-3 >
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-15 14:28:53 +02:00
Romain Vimont
b11b363e8e
Add recording to aac file
...
It is just an alias for mp4.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
7321db6f28
Add recording to opus file
...
Use the FFmpeg opus muxer to record an opus file.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
d6bcde565f
Accept .m4a and .mka
...
These are just aliases for mp4 and mkv when there is no video stream.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
98f4f4e68a
Refactor command line checks
...
Several checks are performed when opts->record_filename is not NULL.
Group them in a single block.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
be86e14e05
Factorize record format parsing
...
Convert either the filename extension or the explicit record format
to a sc_record_format using the same function.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
8c650e53cd
Add --no-video
...
Similar to --no-audio, add --no-video to play audio only.
Fixes #3842 <https://github.com/Genymobile/scrcpy/issues/3842 >
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 17:11:34 +02:00
Romain Vimont
e89e772c7c
Remove unnecessary 'else'
...
Some server parameters may depend on one another. For example,
audio_bit_rate is meaningless if audio is false.
But it is inconsistent to disable some parameters based on these
dependencies checks, but not others. Handling all dependencies between
parameters would add too much complexity for no benefit.
So just pass individual parameters independently.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:41:12 +02:00
Romain Vimont
feab87053a
Convert screen encoder to async processor
...
Contrary to the other tasks (controller and audio capture/encoding), the
screen encoder was executed synchronously. As a consequence,
scrcpy-server could not terminate until the screen encoder returned.
Convert it to an async processor. This allows to terminate on controller
error, and this paves the way to disable video mirroring.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:41:09 +02:00
Romain Vimont
751a3653a0
Add missing @Override annotations
...
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:41:06 +02:00
Romain Vimont
9c08eb79cb
Close connection at the end of finally-block
...
The async processors use the socket file descriptors from the
connection. Therefore, the connection must not be closed before all
async processor threads are joined.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:41:04 +02:00
Romain Vimont
92483fe11b
Disable controls on --no-mirror
...
If mirroring is disabled, control must also be disabled.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:41:01 +02:00
Romain Vimont
6928acdeac
Rename --no-display to --no-mirror
...
The option impacts both video and audio playback, so "no display" is not
an appropriate name.
PR #3978 <https://github.com/Genymobile/scrcpy/pull/3978 >
2023-05-08 16:40:58 +02:00
parknich081
cb20bcb16f
Clarify API versions that support Audio Forwarding
...
Reword the supported API versions for audio forwarding sentence to
clarify that it supports API >= 30
PR #3949 <https://github.com/Genymobile/scrcpy/pull/3949 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-04-26 19:33:28 +02:00
Romain Vimont
0f3af2d20b
Fix build for FFmpeg < 3.3
...
The constant AV_CODEC_ID_AV1 was introduced in FFmpeg 3.3. Add an ifdef
to support older versions.
Fixes #3939 <https://github.com/Genymobile/scrcpy/issues/3939 >
2023-04-23 12:26:46 +02:00
Yan
c083a7cc90
Force OpenGL Core Profile context on macOS
...
By default, SDL creates an OpenGL 2.1 context on macOS for an OpenGL
renderer. As a consequence, mipmapping is not supported.
Force to use a core profile context, to get a higher version.
Before:
INFO: Renderer: opengl
INFO: OpenGL version: 2.1 NVIDIA-14.0.32 355.11.11.10.10.143
WARN: Trilinear filtering disabled (OpenGL 3.0+ or ES 2.0+ required)
After:
INFO: Renderer: opengl
DEBUG: Creating OpenGL Core Profile context
INFO: OpenGL version: 4.1 NVIDIA-14.0.32 355.11.11.10.10.143
INFO: Trilinear filtering enabled
when running with:
scrcpy --verbosity=debug --render-driver=opengl
Note: Since SDL_CreateRenderer() causes a fallback to OpenGL 2.1, the
profile and version attributes have to be set and the context created
_after_.
PR #3895 <https://github.com/Genymobile/scrcpy/pull/3895 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-04-12 21:26:24 +02:00
Romain Vimont
9eb6591913
Add missing --no-audio option in manpage
2023-04-10 19:30:04 +02:00
Romain Vimont
9cfea347d0
Remove Options setters
...
Now that options parsing is performed from the Options class, setters
are not necessary anymore.
2023-04-09 20:02:39 +02:00
Romain Vimont
ce064fb5e0
Move options parsing to Options class
2023-04-09 20:02:39 +02:00
Romain Vimont
afcdfc7fd7
Fix checkstyle violation
...
Checkstyle reported this error:
[ant:checkstyle] [ERROR] AudioCapture.java:89:145: '+' should be on
a new line. [OperatorWrap]
2023-04-09 20:01:58 +02:00
Romain Vimont
051b74c883
Extract sc_display from sc_screen
...
Move the display code to a separate component.
2023-04-06 19:48:26 +02:00
Romain Vimont
2e532afd2b
Pass const pointers to events
...
SDL_Events are only read.
2023-04-06 19:48:01 +02:00
Simon Chan
fdf465851c
Add Android version check in raw audio recorder
...
Do not attempt to capture audio below Android 11, this may cause a
segfault on the device.
PR #3889 <https://github.com/Genymobile/scrcpy/pull/3889 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-04-04 18:37:30 +02:00
Romain Vimont
669e9a8d1e
Fix "ip route" parsing
...
If a line did not end with '\r', then the final `\n' was replaced by
'\0' for parsing the current line. This `\0` was then mistakenly
considered as the end of the whole "ip route" output, so the remaining
lines were not parsed, causing "scrcpy --tcpip" to fail in some cases.
To fix the issue, read the final character of the current line before it
is (possibly) overwritten by '\0'.
2023-04-02 19:30:23 +02:00
Romain Vimont
f77e1c474e
Fix copy-paste for some devices
...
On Honor Magic 5 Pro, the method to get the clipboard content has been
modified in the framework.
Adapt the call to make it work also on this device.
Fixes #3885 <https://github.com/Genymobile/scrcpy/issues/3885 >
2023-04-01 11:52:37 +02:00
Romain Vimont
8f0b38cc4f
Specify in README that OTG does not require adb
2023-03-31 07:55:13 +02:00
Romain Vimont
2f9396e24a
Simplify clock estimation
...
The slope encodes the drift between the device clock and the computer
clock. Its real value is expected very close to 1.
To estimate it, just assume it is exactly 1.
Since the clock is used to estimate very close points in the future, the
error caused by clock drift is totally negligible, and in practice it is
way lower than the slope estimation error.
Therefore, only estimate the offset.
2023-03-30 20:58:33 +02:00
Romain Vimont
a1e8a34001
Fix documentation link in FAQ
2023-03-28 08:32:07 +02:00
Romain Vimont
00534b0b2d
Fix typo in FAQ
2023-03-28 08:31:01 +02:00
Yan
0ebb3df69c
Fix debug build by adding compat.c to tests
...
Linking of tests that needed something from compat.c failed.
PR #3865 <https://github.com/Genymobile/scrcpy/pull/3865 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2023-03-27 15:28:59 +02:00
Romain Vimont
21df2c240e
Mention necessary reboot
...
After setting "USB debugging (security settings)", a reboot is
necessary.
2023-03-23 19:06:44 +01:00
Romain Vimont
2d3059e1ab
Reference FAQ from HID/OTG documentation
...
Reference the FAQ section about "HID/OTG issues on Windows" from the
HID/OTG documentation.
2023-03-20 19:42:23 +01:00
Romain Vimont
2fff9b9edf
Adapt FakeContext for Android 14
...
This fixes audio for Android 14 developer preview 2.
Fixes #3784 <https://github.com/Genymobile/scrcpy/issues/3784 >
Suggested-by: Namelesswonder <Namelesswonder@users.noreply.github.com >
2023-03-20 08:40:34 +01:00