Accept --max-fps before Android 10
KEY_MAX_FPS_TO_ENCODER existed privately before Android 10: <https://github.com/Genymobile/scrcpy/issues/488#issuecomment-567321437>
This commit is contained in:
parent
db6252e52b
commit
83d48267a7
4 changed files with 11 additions and 9 deletions
|
@ -137,12 +137,14 @@ scrcpy -b 2M # short version
|
||||||
|
|
||||||
#### Limit frame rate
|
#### Limit frame rate
|
||||||
|
|
||||||
On devices with Android >= 10, the capture frame rate can be limited:
|
The capture frame rate can be limited:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scrcpy --max-fps 15
|
scrcpy --max-fps 15
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This is officially supported since Android 10, but may work on earlier versions.
|
||||||
|
|
||||||
#### Crop
|
#### Crop
|
||||||
|
|
||||||
The device screen may be cropped to mirror only part of the screen.
|
The device screen may be cropped to mirror only part of the screen.
|
||||||
|
|
|
@ -43,7 +43,7 @@ Print this help.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BI "\-\-max\-fps " value
|
.BI "\-\-max\-fps " value
|
||||||
Limit the framerate of screen capture (only supported on devices with Android >= 10).
|
Limit the framerate of screen capture (officially supported since Android 10, but may work on earlier versions).
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BI "\-m, \-\-max\-size " value
|
.BI "\-m, \-\-max\-size " value
|
||||||
|
|
|
@ -42,8 +42,8 @@ scrcpy_print_usage(const char *arg0) {
|
||||||
" Print this help.\n"
|
" Print this help.\n"
|
||||||
"\n"
|
"\n"
|
||||||
" --max-fps value\n"
|
" --max-fps value\n"
|
||||||
" Limit the frame rate of screen capture (only supported on\n"
|
" Limit the frame rate of screen capture (officially supported\n"
|
||||||
" devices with Android >= 10).\n"
|
" since Android 10, but may work on earlier versions).\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -m, --max-size value\n"
|
" -m, --max-size value\n"
|
||||||
" Limit both the width and height of the video to value. The\n"
|
" Limit both the width and height of the video to value. The\n"
|
||||||
|
|
|
@ -19,6 +19,7 @@ public class ScreenEncoder implements Device.RotationListener {
|
||||||
|
|
||||||
private static final int DEFAULT_I_FRAME_INTERVAL = 10; // seconds
|
private static final int DEFAULT_I_FRAME_INTERVAL = 10; // seconds
|
||||||
private static final int REPEAT_FRAME_DELAY_US = 100_000; // repeat after 100ms
|
private static final int REPEAT_FRAME_DELAY_US = 100_000; // repeat after 100ms
|
||||||
|
private static final String KEY_MAX_FPS_TO_ENCODER = "max-fps-to-encoder";
|
||||||
|
|
||||||
private static final int NO_PTS = -1;
|
private static final int NO_PTS = -1;
|
||||||
|
|
||||||
|
@ -150,11 +151,10 @@ public class ScreenEncoder implements Device.RotationListener {
|
||||||
// display the very first frame, and recover from bad quality when no new frames
|
// display the very first frame, and recover from bad quality when no new frames
|
||||||
format.setLong(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, REPEAT_FRAME_DELAY_US); // µs
|
format.setLong(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, REPEAT_FRAME_DELAY_US); // µs
|
||||||
if (maxFps > 0) {
|
if (maxFps > 0) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
// The key existed privately before Android 10:
|
||||||
format.setFloat(MediaFormat.KEY_MAX_FPS_TO_ENCODER, maxFps);
|
// <https://android.googlesource.com/platform/frameworks/base/+/625f0aad9f7a259b6881006ad8710adce57d1384%5E%21/>
|
||||||
} else {
|
// <https://github.com/Genymobile/scrcpy/issues/488#issuecomment-567321437>
|
||||||
Ln.w("Max FPS is only supported since Android 10, the option has been ignored");
|
format.setFloat(KEY_MAX_FPS_TO_ENCODER, maxFps);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue