Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0e22032710 | ||
|
|
7a138c6929 | ||
|
|
b58b566fa5 |
@@ -150,22 +150,24 @@ screen, then you might get poor quality, especially visible on text (see [#40]).
|
|||||||
|
|
||||||
[#40]: https://github.com/Genymobile/scrcpy/issues/40
|
[#40]: https://github.com/Genymobile/scrcpy/issues/40
|
||||||
|
|
||||||
To improve downscaling quality, trilinear filtering is enabled automatically
|
This problem should be fixed in scrcpy v1.22: **update to the latest version**.
|
||||||
if the renderer is OpenGL and if it supports mipmapping.
|
|
||||||
|
|
||||||
On Windows, you might want to force OpenGL:
|
On older versions, you must configure the [scaling behavior]:
|
||||||
|
|
||||||
```
|
|
||||||
scrcpy --render-driver=opengl
|
|
||||||
```
|
|
||||||
|
|
||||||
You may also need to configure the [scaling behavior]:
|
|
||||||
|
|
||||||
> `scrcpy.exe` > Properties > Compatibility > Change high DPI settings >
|
> `scrcpy.exe` > Properties > Compatibility > Change high DPI settings >
|
||||||
> Override high DPI scaling behavior > Scaling performed by: _Application_.
|
> Override high DPI scaling behavior > Scaling performed by: _Application_.
|
||||||
|
|
||||||
[scaling behavior]: https://github.com/Genymobile/scrcpy/issues/40#issuecomment-424466723
|
[scaling behavior]: https://github.com/Genymobile/scrcpy/issues/40#issuecomment-424466723
|
||||||
|
|
||||||
|
Also, to improve downscaling quality, trilinear filtering is enabled
|
||||||
|
automatically if the renderer is OpenGL and if it supports mipmapping.
|
||||||
|
|
||||||
|
On Windows, you might want to force OpenGL to enable mipmapping:
|
||||||
|
|
||||||
|
```
|
||||||
|
scrcpy --render-driver=opengl
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Issue with Wayland
|
### Issue with Wayland
|
||||||
|
|
||||||
|
|||||||
+1016
File diff suppressed because it is too large
Load Diff
@@ -1110,6 +1110,7 @@ Read the [developers page].
|
|||||||
|
|
||||||
This README is available in other languages:
|
This README is available in other languages:
|
||||||
|
|
||||||
|
- [Deutsch (German, `de`) - v1.22](README.de.md)
|
||||||
- [Indonesian (Indonesia, `id`) - v1.16](README.id.md)
|
- [Indonesian (Indonesia, `id`) - v1.16](README.id.md)
|
||||||
- [Italiano (Italiano, `it`) - v1.19](README.it.md)
|
- [Italiano (Italiano, `it`) - v1.19](README.it.md)
|
||||||
- [日本語 (Japanese, `jp`) - v1.19](README.jp.md)
|
- [日本語 (Japanese, `jp`) - v1.19](README.jp.md)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
static char *
|
static char *
|
||||||
sc_adb_parse_device_ip_from_line(char *line, size_t len) {
|
sc_adb_parse_device_ip_from_line(char *line, size_t len) {
|
||||||
// One line from "ip route" looks like:
|
// One line from "ip route" looks lile:
|
||||||
// "192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.x"
|
// "192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.x"
|
||||||
|
|
||||||
// Get the location of the device name (index of "wlan0" in the example)
|
// Get the location of the device name (index of "wlan0" in the example)
|
||||||
|
|||||||
@@ -3,12 +3,10 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
#include <stddef.h>
|
#include "stddef.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the ip from the output of `adb shell ip route`
|
* Parse the ip from the output of `adb shell ip route`
|
||||||
*
|
|
||||||
* Warning: this function modifies the buffer for optimization purposes.
|
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
sc_adb_parse_device_ip_from_output(char *buf, size_t buf_len);
|
sc_adb_parse_device_ip_from_output(char *buf, size_t buf_len);
|
||||||
|
|||||||
+3
-3
@@ -106,10 +106,10 @@ sc_str_wrap_lines(const char *input, unsigned columns, unsigned indent);
|
|||||||
/**
|
/**
|
||||||
* Truncate the data after any of the characters from `endchars`
|
* Truncate the data after any of the characters from `endchars`
|
||||||
*
|
*
|
||||||
* An '\0' is always written at the end of the data string, even if no
|
* An '\0' is always written at the end of the data, even if no newline
|
||||||
* character from `endchars` is encountered.
|
* character is encountered.
|
||||||
*
|
*
|
||||||
* Return the size of the resulting string (as strlen() would return).
|
* Return the size of the resulting line.
|
||||||
*/
|
*/
|
||||||
size_t
|
size_t
|
||||||
sc_str_truncate(char *data, size_t len, const char *endchars);
|
sc_str_truncate(char *data, size_t len, const char *endchars);
|
||||||
|
|||||||
@@ -89,15 +89,13 @@ public class ScreenEncoder implements Device.RotationListener {
|
|||||||
Rect unlockedVideoRect = screenInfo.getUnlockedVideoSize().toRect();
|
Rect unlockedVideoRect = screenInfo.getUnlockedVideoSize().toRect();
|
||||||
int videoRotation = screenInfo.getVideoRotation();
|
int videoRotation = screenInfo.getVideoRotation();
|
||||||
int layerStack = device.getLayerStack();
|
int layerStack = device.getLayerStack();
|
||||||
|
|
||||||
setSize(format, videoRect.width(), videoRect.height());
|
setSize(format, videoRect.width(), videoRect.height());
|
||||||
|
configure(codec, format);
|
||||||
Surface surface = null;
|
Surface surface = codec.createInputSurface();
|
||||||
|
setDisplaySurface(display, surface, videoRotation, contentRect, unlockedVideoRect, layerStack);
|
||||||
|
codec.start();
|
||||||
try {
|
try {
|
||||||
configure(codec, format);
|
|
||||||
surface = codec.createInputSurface();
|
|
||||||
setDisplaySurface(display, surface, videoRotation, contentRect, unlockedVideoRect, layerStack);
|
|
||||||
codec.start();
|
|
||||||
|
|
||||||
alive = encode(codec, fd);
|
alive = encode(codec, fd);
|
||||||
// do not call stop() on exception, it would trigger an IllegalStateException
|
// do not call stop() on exception, it would trigger an IllegalStateException
|
||||||
codec.stop();
|
codec.stop();
|
||||||
@@ -121,9 +119,7 @@ public class ScreenEncoder implements Device.RotationListener {
|
|||||||
} finally {
|
} finally {
|
||||||
destroyDisplay(display);
|
destroyDisplay(display);
|
||||||
codec.release();
|
codec.release();
|
||||||
if (surface != null) {
|
surface.release();
|
||||||
surface.release();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} while (alive);
|
} while (alive);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user