- 30 9月, 2019 1 次提交
-
-
由 Romain Vimont 提交于
Ref: <https://github.com/Genymobile/scrcpy/issues/829> Suggested-by: NLouis Kruger <louisk@gmail.com>
-
- 31 7月, 2019 2 次提交
-
-
由 Romain Vimont 提交于
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>
-
由 Romain Vimont 提交于
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>
-
- 25 6月, 2019 1 次提交
-
-
由 beango1 提交于
Add an option to set a custom window title. Signed-off-by: NRomain Vimont <rom@rom1v.com>
-
- 24 6月, 2019 1 次提交
-
-
由 Romain Vimont 提交于
-
- 07 6月, 2019 2 次提交
-
-
由 Romain Vimont 提交于
The FPS counter was called only on new frames, so it could not print values regularly, especially when there are very few FPS (when the device surface does not change). To the extreme, it was never able to display 0 fps. Add a separate thread to print framerate every second.
-
由 Romain Vimont 提交于
After commit bfb86ca2, the controller was not stopped and destroyed on quit.
-
- 06 6月, 2019 1 次提交
-
-
由 Romain Vimont 提交于
Replace the compilation flag SKIP_FRAMES by a runtime flag to force rendering of expired frames. By default, the expired frames are skipped.
-
- 05 6月, 2019 4 次提交
-
-
由 Romain Vimont 提交于
In addition to the shortcut (Ctrl+o) to turn the device screen off, add a command-line argument to turn it off on start.
-
由 Romain Vimont 提交于
If --no-control is disabled, there is no need for a controller. It also avoids to power on the device on start if control is disabled.
-
由 Romain Vimont 提交于
Starting the server requires more and more parameters. For clarity, group them in a struct.
-
由 Romain Vimont 提交于
For clarity, store the flag resulting of the command-line options --no-control and --no-display into "control" and "display".
-
- 31 5月, 2019 6 次提交
-
-
由 Romain Vimont 提交于
The default behavior seems annoying. Fixes <https://github.com/Genymobile/scrcpy/issues/554>
-
由 Yu-Chen Lin 提交于
handle_event return the type enum event_result not bool Signed-off-by: NYu-Chen Lin <npes87184@gmail.com>
-
由 Romain Vimont 提交于
The socket used the device-to-computer direction to stream the video and the computer-to-device direction to send control events. Some features, like copy-paste from device to computer, require to send non-video data from the device to the computer. To make them possible, use two sockets: - one for streaming the video from the device to the client; - one for control/events in both directions.
-
由 Romain Vimont 提交于
The cleanup is not linear: for example, the server must be stopped and its sockets must be shutdown after the stream and controller are stopped (so that they don't continue processing garbage), but before they are joined, to avoid a deadlock if they are blocked on a socket read. Simplify the spaghetti-cleanup by keeping trace of initialization at runtime.
-
由 Romain Vimont 提交于
The resulting socket is accessible from the server instance, there is no need to return it. This paves the way to use several sockets in parallel.
-
由 Romain Vimont 提交于
Previous refactorings broke indentation.
-
- 05 5月, 2019 2 次提交
-
-
由 Sebastian Krzyszkowiak 提交于
Compositor bypass is meant for fullscreen games consuming lots of GPU resources. For a light app that will usually be windowed, this only causes unnecessary compositor suspends, especially visible (and annoying) with complying window manager like KWin. Signed-off-by: NRomain Vimont <rom@rom1v.com>
-
由 Sebastian Krzyszkowiak 提交于
Mouse focus clickthrough didn't work due to compat.h header not being included in scrcpy.c. Signed-off-by: NRomain Vimont <rom@rom1v.com>
-
- 03 3月, 2019 12 次提交
-
-
由 Romain Vimont 提交于
Replace the "global" control flag in the input_manager by a function parameter to make explicit that the behavior depends whether --no-control has been set.
-
由 Romain Vimont 提交于
The SDL video subsystem is not necessary if we don't display the video. Move the sdl_init_and_configure() function from screen.c to scrcpy.c, because it is not only related to the screen display.
-
由 Romain Vimont 提交于
Scrcpy is a C11 project. Use the C99 standard types instead of the SDL-specific types: SDL_bool -> bool SintXX -> intXX_t UintXX -> uintXX_t
-
由 Romain Vimont 提交于
Add an option to disable device control: -n/--no-control.
-
由 Romain Vimont 提交于
The description of scrcpy is "Display and control your Android device". We want an option to disable display, another one to disable control. For naming consistency, name it --no-display. Also change the shortname to -N, so that we can use -n for --no-control later.
-
由 Romain Vimont 提交于
If --no-window is passed, there is no need to register an event watcher.
-
由 Romain Vimont 提交于
To avoid too many levels of nested blocks, move the event handling logic in a separate function.
-
由 Romain Vimont 提交于
Limit source code to 80 chars, and declare functions return type and modifiers on a separate line. This allows to avoid very long lines, and all function names are aligned. (We do this on VLC, and I like it.)
-
由 Romain Vimont 提交于
Disable decoder, screen (display), file_handler and controller when --no-window is requested. <https://github.com/Genymobile/scrcpy/pull/418>
-
由 Romain Vimont 提交于
The decoder initially read from the socket, decoded the video and sent the decoded frames to the screen: +---------+ +----------+ socket ---> | decoder | ---> | screen | +---------+ +----------+ The design was simple, but the decoder had several responsabilities. Then we added the recording feature, so we added a recorder, which reused the packets received from the socket managed by the decoder: +----------+ ---> | screen | +---------+ / +----------+ socket ---> | decoder | ---- +---------+ \ +----------+ ---> | recorder | +----------+ This lack of separation of concerns now have concrete implications: we could not (properly) disable the decoder/display to only record the video. Therefore, split the decoder to extract the stream: +----------+ +----------+ ---> | decoder | ---> | screen | +---------+ / +----------+ +----------+ socket ---> | stream | ---- +---------+ \ +----------+ ---> | recorder | +----------+ This will allow to record the stream without decoding the video.
-
由 Romain Vimont 提交于
This avoids to test explicitly whether options->record_filename is NULL.
-
由 Romain Vimont 提交于
The order of cleanup was not the reverse as the initialization order. As a consequence, recorder_destroy() could theoretically be called even if recorder_init() failed.
-
- 02 3月, 2019 1 次提交
-
-
由 Romain Vimont 提交于
It better describes the purpose of the structure.
-
- 09 2月, 2019 2 次提交
-
-
由 Romain Vimont 提交于
Implement recording to Matroska files. The format to use is determined by the option -F/--record-format if set, or by the file extension (".mp4" or ".mkv").
-
由 Romain Vimont 提交于
FFmpeg logs can be useful to understand the cause of issues.
-
- 27 1月, 2019 1 次提交
-
-
由 Yu-Chen Lin 提交于
It is very convenient when I play mobile game and watch video at the same time. Tested on Linux mint Cinnamon as well as Windows 10. Signed-off-by: NYu-Chen Lin <npes87184@gmail.com>
-
- 12 11月, 2018 3 次提交
-
-
由 Romain Vimont 提交于
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.
-
由 Romain Vimont 提交于
To record the screen to a local file: scrcpy --record file.mp4
-
由 Romain Vimont 提交于
This partially reverts commit f00c6c5b. 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.
-
- 11 11月, 2018 1 次提交
-
-
由 Romain Vimont 提交于
Implement recording in a separate "class".
-