Romain Vimont
72a2ae3224
SCRCPY_ICON_DIR
2026-01-17 22:06:09 +01:00
Romain Vimont
d9669a2610
sc_file_build_path
2026-01-17 22:00:31 +01:00
Romain Vimont
f1cb2213b2
Rename icon.png to scrcpy.png
...
This makes the icon name consistent everywhere.
2026-01-17 21:40:53 +01:00
Romain Vimont
373b366fa5
Do not attempt to increase audio thread priority
...
In practice, this always fails for non-privileged processes.
2026-01-17 21:30:19 +01:00
Tommie
8ac04d39f4
Add shortcuts to change the camera zoom
...
MOD+up and MOD+zoom change the camera zoom.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:40:58 +01:00
Tommie
af355804ef
Add option to specify the camera zoom
...
Add --camera-zoom to specify the camera zoom.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:37:42 +01:00
Romain Vimont
48fcfdd104
Add shortcuts to switch the camera torch
...
MOD+t turns on the camera torch, MOD+Shift+t turns it off.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Co-authored-by: Tommie <teh420@gmail.com >
2026-01-13 20:35:52 +01:00
Tommie
553813e97d
Add option to turn on the camera torch
...
Add --camera-torch to turn on the camera torch when the camera starts.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-13 20:32:06 +01:00
Romain Vimont
1b13d0a22d
Enable "reset video" shortcut for camera
...
Make the existing "reset video" feature (MOD+Shift+R) also work for a
camera video source.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:27:53 +01:00
Romain Vimont
078565d40b
Enable controls for camera video source
...
This will allow the implementation of camera-specific shortcuts.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
Co-authored-by: Tommie <teh420@gmail.com >
2026-01-13 20:27:33 +01:00
Romain Vimont
f348a1f307
Group control-event shortcuts
...
Group together the shortcuts that trigger control events sent to the
device.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:11:16 +01:00
Romain Vimont
1e51d2c83f
Move precondition checks for input events
...
Always call the appropriate method responsible for handling the input
event, which can then decide to do nothing.
PR #6243 <https://github.com/Genymobile/scrcpy/pull/6243 >
2026-01-13 20:08:40 +01:00
Romain Vimont
826076f753
Detect frame size mismatch in decoder
...
Warn if the size of a decoded video frame does not match the session
metadata.
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
2026-01-10 11:53:22 +01:00
Romain Vimont
c36433999c
Properly handle session packets in delay_buffer
...
The delay buffer must forward the session packets while preserving
their order relative to media packets.
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
2026-01-10 11:53:22 +01:00
Romain Vimont
78cba1b7c2
Add session metadata for the video stream
...
Introduce a new packet type, a "session" packet, containing metadata
about the encoding session. It is used only for the video stream and
currently includes the video resolution.
For illustration, here is a sequence of packets on the video stream:
device rotation
v
CODEC | SESSION | MEDIA | MEDIA | … | SESSION | MEDIA | MEDIA | …
1920x1080 <-----------------> 1080x1920 <------------------
encoding session 1 encoding session 2
This metadata is not strictly necessary, since the video resolution can
be determined after decoding. However, it allows detection of cases
where the encoder does not respect the requested size (and logs a
warning), even without decoding (e.g., when there is no video playback).
Additional metadata could be added later if necessary, for example the
actual device rotation.
Refs #5918 <https://github.com/Genymobile/scrcpy/pull/5918 >
Refs #5894 <https://github.com/Genymobile/scrcpy/pull/5894 >
PR #6159 <https://github.com/Genymobile/scrcpy/pull/6159 >
Co-authored-by: gz0119 <liyong2@4399.com >
2026-01-10 11:53:22 +01:00
Romain Vimont
f4cc07da24
Keep the window hidden during initialization
...
This prevents blinking during display initialization.
2026-01-09 19:08:04 +01:00
Romain Vimont
fde02a7dfa
Fix segfault with --no-video
...
Do not call SDL_RectToFRect() if geometry is NULL.
Bug introduced by 02989249f6 .
2026-01-09 19:06:08 +01:00
dddddjent
dee1fd46a6
Fix SDL colorspace matching AVCOL_SPC_RGB
...
Use BT.709 color space for AVCOL_SPC_RGB.
Refs #1868 comment <https://github.com/Genymobile/scrcpy/issues/1868#issuecomment-3293917796 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2026-01-08 20:40:51 +01:00
Romain Vimont
99b955f390
Upgrade SDL build script for SDL3
...
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
bbb855b5b0
Remove obsolete workaround for macOS
...
Refs #3031 <https://github.com/Genymobile/scrcpy/pull/3031 >
Refs SDL/#5340 <https://github.com/libsdl-org/SDL/issues/5340 >
Refs SDL/#5976 <https://github.com/libsdl-org/SDL/issues/5976 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
4879950a06
Fix asynchronous SDL window state handling
...
The SDL3 migration guide [1] says:
> The following window operations are now considered to be asynchronous
requests and should not be assumed to succeed unless a corresponding
event has been received […]
Remove the boolean fields used to track the window state, as they were
fundamentally inconsistent with SDL's internal state. Use
SDL_GetWindowFlags() explicitly instead.
[1]: <https://wiki.libsdl.org/SDL3/README-migration >
Refs #6216 comment <https://github.com/Genymobile/scrcpy/pull/6216#discussion_r2651810005 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
170b7a02e7
Disable "resize to pixel-perfect" when maximized
...
This improves consistency and will simplify further refactors.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:51 +01:00
Romain Vimont
9f1aac41a6
Check programming errors reported by SDL3
...
Refs #6216 comment <https://github.com/Genymobile/scrcpy/pull/6216#issuecomment-3399353701 >
Refs SDL/#14223 <https://github.com/libsdl-org/SDL/issues/14223 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-08 20:40:48 +01:00
Romain Vimont
02989249f6
Migrate from SDL2 to SDL3
...
Refs <https://wiki.libsdl.org/SDL3/README-migration >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-06 16:22:48 +01:00
Romain Vimont
f8e0b9be4b
Improve color space conversion
...
Use both the color space and color range from FFmpeg to determine the
appropriate SDL YUV conversion mode.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-04 14:14:33 +01:00
Romain Vimont
ed62ca124c
Set color range during texture creation
...
This prepares for the migration to SDL3, where the color range can only
be specified at the time of texture creation.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-04 14:14:18 +01:00
Romain Vimont
3571fe62ed
Create texture on first frame
...
The texture was created as soon as the initial video size was known,
even before the first frame arrived.
However, texture creation will require other data, such as the color
range, which is only available once the first frame is received.
Therefore, delay texture creation until the first frame.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-04 14:13:33 +01:00
Romain Vimont
bca98133d1
Remove prepare_for_frame()
...
Inline the function body into its only caller to simplify further
refactors.
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-04 14:12:12 +01:00
Romain Vimont
881c71b2e8
Handle mouse integer scrolling locally
...
Do not rely on SDL to expose integer scroll values, as they are not
available in all versions.
It was reimplemented in SDL 3.2.12 by this commit:
<0447c2f3c3 >
Refs #6156 <https://github.com/Genymobile/scrcpy/issues/6156 >
PR #6216 <https://github.com/Genymobile/scrcpy/pull/6216 >
2026-01-04 14:11:51 +01:00
Romain Vimont
b0da401e6d
Fix documentation of input_events.h
...
Add missing reference to sc_gamepad_processor.
Refs #6216 comment <https://github.com/Genymobile/scrcpy/pull/6216#pullrequestreview-3616928335 >
2026-01-04 14:04:34 +01:00
Romain Vimont
dba2a3778f
Include USB header only if HAVE_USB
2026-01-02 14:59:10 +01:00
Romain Vimont
06fd3b4786
Bump version to 3.3.4
2025-12-17 19:57:50 +01:00
Romain Vimont
6f9eb31d52
Add missing test for START_APP serialization
...
A test for Java deserialization of the START_APP control message was
already present, but the corresponding C-side serialization test was
missing.
Refs 13ce277e1f
2025-11-25 00:13:13 +01:00
Romain Vimont
3281fda6ef
Set URL explicitly in dependency build scripts
...
Explicitly set the URL of each dependency at the beginning of its
script.
PROJECT_DIR and FILENAME are internal details.
2025-10-30 22:31:16 +01:00
Romain Vimont
925949d54a
Refactor dependency build scripts initialization
...
Rename "common" to "_init" because it not only exposes common functions
but also initializes environment variables.
Call _init in a single line in all dependency build scripts.
2025-10-30 22:27:17 +01:00
Romain Vimont
3e40b24737
Fix UHID_OUTPUT message parsing
...
The bounds check was incorrect.
Fixes #6415 <https://github.com/Genymobile/scrcpy/issues/6415 >
2025-10-09 09:35:14 +02:00
Romain Vimont
10a0974f43
Bump version to 3.3.3
2025-09-23 21:18:45 +02:00
Romain Vimont
be21e43be5
Fix frame leak on pending frame update
...
The previous pending frame was not unreferenced before referencing the
new one, causing frames to leak whenever a texture update failed
(typically on Windows when the window is minimized with D3D9).
Refs 6298ef095f
Fixes #4297 <https://github.com/Genymobile/scrcpy/issues/4297 >
Fixes #6357 <https://github.com/Genymobile/scrcpy/issues/6357 >
2025-09-23 21:18:45 +02:00
Romain Vimont
bfb0872493
Avoid resetting pending frame
...
The function update_texture() calls update_texture_internal() and falls
back to set_pending_frame() if it fails.
When the frame passed is the pending frame, call only the _internal()
version instead.
This will prevent issues with frame reference counts by ensuring the
source and destination frames are never the same.
Refs 6298ef095f
Refs #6357 <https://github.com/Genymobile/scrcpy/issues/6357 >
2025-09-23 21:18:08 +02:00
Romain Vimont
2506d1768b
Bump version to 3.3.2
2025-09-06 14:36:37 +02:00
Filip Buda
8057835a0d
Catch CTRL_BREAK_EVENT signal on Windows
...
This ensures the process can terminate properly when a CTRL_BREAK_EVENT
signal is sent programmatically.
PR #6244 <https://github.com/Genymobile/scrcpy/pull/6244 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-08-12 18:17:32 +02:00
Yan
e47529ab9c
Fix gl_context declared type
...
The field gl_context is initialized from SDL_GL_CreateContext(), which
returns a raw SDL_GLContext, not a pointer.
The type mismatch was silently ignored by SDL2 because SDL_GLContext
was defined as an alias to `void *` (in SDL3, it is instead an alias to
`struct SDL_GLContextState *`, so compilation fails).
Refs #3895 <https://github.com/Genymobile/scrcpy/pull/3895 >
PR #6259 <https://github.com/Genymobile/scrcpy/pull/6259 >
Signed-off-by: Romain Vimont <rom@rom1v.com >
2025-08-12 18:08:22 +02:00
Romain Vimont
eb576c44f8
Replace __WINDOWS__ by _WIN32
...
Replace the SDL2-specific preprocessor macro __WINDOWS__ by the
"standard" _WIN32 macro.
2025-07-17 18:23:25 +02:00
Romain Vimont
0522d02d40
Add missing includes
...
The headers were implicitly included recursively, but include them
explicitly.
2025-07-17 18:23:12 +02:00
Romain Vimont
30bfc80f9b
Fix style for 80-char limit
2025-07-17 13:20:45 +02:00
Romain Vimont
a79ddc35a7
Update platform-tools checksums
...
The release binaries of platform-tools_r36.0.0 have changed upstream.
Both releases versions are referenced from
<https://dl.google.com/android/repository/repository2-2.xml >
Refs #6214 <https://github.com/Genymobile/scrcpy/issues/6214 >
Refs <https://issuetracker.google.com/issues/431119334 >
2025-07-17 13:20:45 +02:00
Romain Vimont
04542a9f58
Fix window leak on icon error
2025-07-17 13:19:15 +02:00
Romain Vimont
8761dcb7a8
Fix SDL dependency script error message
...
Commit 360936248c mistakenly left an
additional 'H' when replacing $HOST with $DIRNAME.
Refs <https://github.com/Genymobile/scrcpy/pull/6216#issuecomment-3076069802 >
2025-07-16 19:09:47 +02:00
Romain Vimont
5b18ce0d2e
Bump version to 3.3.1
2025-06-20 19:54:16 +02:00
Romain Vimont
4841fdd1ef
Add horizontal scrolling support for HID mouse
...
PR #6172 <https://github.com/Genymobile/scrcpy/pull/6172 >
2025-06-20 19:54:16 +02:00