Romain Vimont
d544e577c0
Automatically select audio source
...
If --audio-source is not specified, select the default value
according to the video source:
- for display mirroring, use device audio by default;
- for camera mirroring, use microphone by default.
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
2023-10-31 15:57:06 +01:00
Simon Chan
bfeecc0131
Add camera mirroring
...
Add --video-source=camera, and related options:
- --camera-id=<id>: select the camera by its id (see --list-cameras);
- --camera-size=<width>x<height>: select the capture size.
Fixed #241 <https://github.com/Genymobile/scrcpy/issues/241 >
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
Co-authored-by: Romain Vimont <rom@rom1v.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-31 15:57:06 +01:00
Romain Vimont
f032262cd7
Add --list-camera-sizes
...
Add an option to list the device camera declared sizes.
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
2023-10-31 15:57:06 +01:00
Simon Chan
cd63896d63
Add --list-cameras
...
Add an option to list the device cameras.
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
Co-authored-by: Romain Vimont <rom@rom1v.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-31 15:56:25 +01:00
Romain Vimont
f085765e04
Factorize --list- options handling
...
This will limit code duplication as more list options will be added.
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
2023-10-31 12:45:40 +01:00
Romain Vimont
23e116064d
Rename --display to --display-id
...
The option is named "display id" everywhere.
This will be consistent with --camera-id (there will be many camera
options, so an option --camera would be confusing).
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
2023-10-31 12:45:40 +01:00
Romain Vimont
3432029a3d
Make separator configurable for parsing integers
...
The separator was hardcoded to ':'. This will allow to reuse the
function to parse sizes as WIDTHxHEIGHT.
PR #4213 <https://github.com/Genymobile/scrcpy/pull/4213 >
2023-10-31 12:45:31 +01:00
Avinash Sonawane
76a99a7fcd
Replace raw number by its name
...
PR #4373 <https://github.com/Genymobile/scrcpy/pull/4373 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-25 16:13:36 +02:00
Avinash Sonawane
68b55ef2fe
Replace sprintf() with safer snprintf()
...
PR #4373 <https://github.com/Genymobile/scrcpy/pull/4373 >
Co-authored-by: Romain Vimont <rom@rom1v.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-25 16:13:34 +02:00
Avinash Sonawane
bc8913e12b
Use char *
for pointer arithmetic
...
PR #4374 <https://github.com/Genymobile/scrcpy/pull/4374 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-24 23:12:36 +02:00
Avinash Sonawane
8cef8bac94
Declare local functions as static
...
PR #4374 <https://github.com/Genymobile/scrcpy/pull/4374 >
Co-authored-by: Romain Vimont <rom@rom1v.com>
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-24 23:06:57 +02:00
Avinash Sonawane
0bbe8a7007
Wrap macros in do-while(0)
...
To fix the warnings of stray `;`.
PR #4374 <https://github.com/Genymobile/scrcpy/pull/4374 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-24 22:58:33 +02:00
Romain Vimont
9fdb882509
Fix --pause-on-exit parsing
...
The function incorrectly returned `false` instead of a valid (and
expected) enum value.
2023-10-24 22:53:41 +02:00
Romain Vimont
8e7b041f35
Add missing void
s for empty parameter list
2023-10-23 21:50:40 +02:00
Avinash Sonawane
9ade389069
Make sc_usb_devices_destroy() static
...
It is only called from the implementation file.
PR #4371 <https://github.com/Genymobile/scrcpy/pull/4371 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-23 15:39:19 +02:00
Avinash Sonawane
90ba885547
Remove redundant ;
...
PR #4371 <https://github.com/Genymobile/scrcpy/pull/4371 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-23 15:09:26 +02:00
Avinash Sonawane
7adf98e9d4
Use void
for empty function parameter list
...
PR #4371 <https://github.com/Genymobile/scrcpy/pull/4371 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-10-23 15:07:24 +02:00
Romain Vimont
1650b7c058
Add --pause-on-exit
...
Add an option to make scrcpy pause on exit.
Three behaviors are possible:
- always pause on exit:
--pause-on-exit
--pause-on-exit=true
- never pause on exit:
(no option)
--pause-on-exit=false
- pause when scrcpy returns with an error (a non-zero exit code):
--pause-on-exit=if-error
This is useful to prevent the terminal window from automatically
closing, so that error messages can be read.
Refs #3817 <https://github.com/Genymobile/scrcpy/pull/3817 >
Refs #3822 <https://github.com/Genymobile/scrcpy/pull/3822 >
PR #4130 <https://github.com/Genymobile/scrcpy/pull/4130 >
2023-10-11 09:43:44 +02:00
Romain Vimont
36670dda40
Fix warning typo
...
A parenthesis was missing.
2023-08-07 20:22:17 +02:00
Romain Vimont
0983f0a194
Report device disconnection on audio EOS
...
If --no-video was set, then device disconnection was not reported. To
avoid the problem, report device disconnection also on audio
end-of-stream (EOS).
If both video and audio are enabled, then a device disconnection event
will be sent twice, but only the first one will be handled (since it
makes scrcpy exit).
Fixes #4207 <https://github.com/Genymobile/scrcpy/issues/4207 >
2023-08-01 12:05:16 +02:00
Romain Vimont
110b3a16f6
Do not disable controls without video playback
...
Some control messages can still be used even when video playback is
disabled (i.e. there is no window), for example to turn the screen off.
This reverts commit 92483fe11b
(semantically).
Fixes #4175 <https://github.com/Genymobile/scrcpy/issues/4175 >
2023-07-28 14:45:33 +02:00
Romain Vimont
fe6e9acb36
Log device selection at INFO level
...
The selected device should be logged by default.
2023-07-04 18:22:33 +02:00
Romain Vimont
85b55b3c4e
Fix possible division by zero
...
On sway (a window manager), SDL_WINDOWEVENT_EXPOSED and
SDL_WINDOWEVENT_SIZE_CHANGED might not be called before a mouse event is
triggered. As a consequence, the "content rectangle" might not be
initialized when the mouse event is processed, causing a division by
zero.
To avoid the problem, initialize the content rect immediately when the
window is shown.
Fixes #4115 <https://github.com/Genymobile/scrcpy/issues/4115 >
2023-06-29 19:18:32 +02:00
Romain Vimont
744312ec64
Merge branch 'master' into release
2023-06-22 01:15:39 +02:00
Romain Vimont
ea59d525bd
Fix code style
...
The code should fit in 80 columns.
2023-06-22 01:07:09 +02:00
Romain Vimont
d3c2955fb9
Add --time-limit
...
Add an option to stop scrcpy automatically after a given delay.
PR #4052 <https://github.com/Genymobile/scrcpy/pull/4052 >
Fixes #3752 <https://github.com/Genymobile/scrcpy/issues/3752 >
2023-06-10 16:04:51 +02:00
Romain Vimont
a3cdf1a6b8
Add option to kill adb on close
...
Killing adb on close by default would be incorrect, since it would break
any other usage of adb in parallel.
It could be easily done manually by calling "adb kill-server" once
scrcpy terminates, but add an option --kill-adb-on-close for
convenience.
Fixes #205 <https://github.com/Genymobile/scrcpy/issues/205 >
Fixes #2580 <https://github.com/Genymobile/scrcpy/issues/2580 >
Fixes #4049 <https://github.com/Genymobile/scrcpy/issues/4049 >
2023-06-05 19:48:21 +02:00
Romain Vimont
b16d4d1835
Fix adb server vs adb daemon confusion
...
The adb daemon runs on the device, the adb server runs as a background
process on the computer.
2023-06-05 19:45:20 +02:00
Romain Vimont
b8d43866d2
Fix options alphabetical order
...
Commit fc52b24503
missed this one.
2023-06-05 19:44:15 +02:00
Romain Vimont
323ea2f1d9
Fix PTS when not monotonically increasing
...
Some decoders fail to guarantee that PTS is strictly monotonically
increasing. Fix the (rescaled) PTS when it does not respect this
constraint.
Fixes #4054 <https://github.com/Genymobile/scrcpy/issues/4054 >
2023-06-03 18:50:28 +02:00
Romain Vimont
9ca554ca41
Extract stream-specific structure in recorder
...
For now, it only contains the stream index, but more fields will be
added.
2023-06-03 18:48:01 +02:00
Romain Vimont
9d3c656414
Fix recorder waiting when stream disabled
...
In the recorder, if the video or audio stream is disabled, do not wait
for its initialization (it will never happen) to process the header.
In that case (scrcpy --no-audio --record=file.mp4), this caused the
whole content to be buffered in memory, and written only on exit.
2023-06-03 18:46:39 +02:00
Romain Vimont
379caf8551
Use a single condvar in recorder
...
The sc_cond_wait() in sc_recorder_process_header() needs to be notified
of changes to video_init/audio_init (protected by stream_cond) and
video_queue/audio_queue (protected by queue_cond).
Use only one condition variable to simplify.
2023-06-03 15:10:42 +02:00
Romain Vimont
fc52b24503
Reorder options in alphabetical order
...
Fix the options order, using the short option as key first (if any) in
all cases for consistency.
2023-06-01 12:52:48 +02:00
Romain Vimont
ff5ffc892f
Add option to select audio source
...
Pass --audio-source=mic to capture the microphone instead of the device
audio output.
2023-06-01 09:21:09 +02:00
Romain Vimont
9a2abba098
Update demuxer comment
...
The comment was outdated:
- the "meta" header is now always present (not only when recording is
enabled);
- it is not only used for the video stream, but also for the audio
stream.
2023-06-01 09:04:00 +02:00
shuax
b2d860382f
Fix stream offset on audio buffer underflow
...
The `read` variable is in number of samples, while the offset must be in
bytes.
PR #4045 <https://github.com/Genymobile/scrcpy/pull/4045 >
Signed-off-by: Romain Vimont <rom@rom1v.com>
2023-05-31 10:09:56 +02:00
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
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
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
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