mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-18 18:42:46 +00:00
Add a hack for massive video latency on Pixel 4 after display mode change
This commit is contained in:
parent
1616c0b022
commit
1dba5d147e
@ -397,25 +397,34 @@ public class Game extends Activity implements SurfaceHolder.Callback,
|
|||||||
// Hopefully, we can get rid of this once someone comes up with a better way
|
// Hopefully, we can get rid of this once someone comes up with a better way
|
||||||
// to track the state of the pipeline and time frames.
|
// to track the state of the pipeline and time frames.
|
||||||
int roundedRefreshRate = Math.round(displayRefreshRate);
|
int roundedRefreshRate = Math.round(displayRefreshRate);
|
||||||
if ((!prefConfig.disableFrameDrop || prefConfig.unlockFps) && prefConfig.fps >= roundedRefreshRate) {
|
if (!prefConfig.disableFrameDrop || prefConfig.unlockFps) {
|
||||||
if (prefConfig.unlockFps) {
|
if (Build.DEVICE.equals("coral") || Build.DEVICE.equals("flame")) {
|
||||||
// Use frame drops when rendering above the screen frame rate
|
// HACK: Pixel 4 (XL) ignores the preferred display mode and lowers refresh rate,
|
||||||
decoderRenderer.enableLegacyFrameDropRendering();
|
// causing frame pacing issues. See https://issuetracker.google.com/issues/143401475
|
||||||
LimeLog.info("Using drop mode for FPS > Hz");
|
// To work around this, use frame drop mode if we want to stream at >= 60 FPS.
|
||||||
|
if (prefConfig.fps >= 60) {
|
||||||
|
LimeLog.info("Using Pixel 4 rendering hack");
|
||||||
|
decoderRenderer.enableLegacyFrameDropRendering();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (roundedRefreshRate <= 49) {
|
else if (prefConfig.fps >= roundedRefreshRate) {
|
||||||
// Let's avoid clearly bogus refresh rates and fall back to legacy rendering
|
if (prefConfig.unlockFps) {
|
||||||
decoderRenderer.enableLegacyFrameDropRendering();
|
// Use frame drops when rendering above the screen frame rate
|
||||||
LimeLog.info("Bogus refresh rate: "+roundedRefreshRate);
|
decoderRenderer.enableLegacyFrameDropRendering();
|
||||||
}
|
LimeLog.info("Using drop mode for FPS > Hz");
|
||||||
// HACK: Avoid crashing on some MTK devices
|
} else if (roundedRefreshRate <= 49) {
|
||||||
else if (decoderRenderer.isBlacklistedForFrameRate(roundedRefreshRate - 1)) {
|
// Let's avoid clearly bogus refresh rates and fall back to legacy rendering
|
||||||
// Use the old rendering strategy on these broken devices
|
decoderRenderer.enableLegacyFrameDropRendering();
|
||||||
decoderRenderer.enableLegacyFrameDropRendering();
|
LimeLog.info("Bogus refresh rate: " + roundedRefreshRate);
|
||||||
}
|
}
|
||||||
else {
|
// HACK: Avoid crashing on some MTK devices
|
||||||
prefConfig.fps = roundedRefreshRate - 1;
|
else if (decoderRenderer.isBlacklistedForFrameRate(roundedRefreshRate - 1)) {
|
||||||
LimeLog.info("Adjusting FPS target for screen to "+prefConfig.fps);
|
// Use the old rendering strategy on these broken devices
|
||||||
|
decoderRenderer.enableLegacyFrameDropRendering();
|
||||||
|
} else {
|
||||||
|
prefConfig.fps = roundedRefreshRate - 1;
|
||||||
|
LimeLog.info("Adjusting FPS target for screen to " + prefConfig.fps);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user