mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-02 07:45:40 +00:00
Compensate for choreographer vsync offset
This commit is contained in:
parent
19b6e94824
commit
c8df37e89e
@ -20,6 +20,7 @@ import com.limelight.nvstream.jni.MoonBridge;
|
|||||||
import com.limelight.preferences.PreferenceConfiguration;
|
import com.limelight.preferences.PreferenceConfiguration;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.MediaCodec;
|
import android.media.MediaCodec;
|
||||||
import android.media.MediaCodecInfo;
|
import android.media.MediaCodecInfo;
|
||||||
@ -57,6 +58,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer implements C
|
|||||||
private ByteBuffer nextInputBuffer;
|
private ByteBuffer nextInputBuffer;
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
|
private Activity activity;
|
||||||
private MediaCodec videoDecoder;
|
private MediaCodec videoDecoder;
|
||||||
private Thread rendererThread;
|
private Thread rendererThread;
|
||||||
private boolean needsSpsBitstreamFixup, isExynos4;
|
private boolean needsSpsBitstreamFixup, isExynos4;
|
||||||
@ -233,13 +235,14 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer implements C
|
|||||||
this.renderTarget = renderTarget;
|
this.renderTarget = renderTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MediaCodecDecoderRenderer(Context context, PreferenceConfiguration prefs,
|
public MediaCodecDecoderRenderer(Activity activity, PreferenceConfiguration prefs,
|
||||||
CrashListener crashListener, int consecutiveCrashCount,
|
CrashListener crashListener, int consecutiveCrashCount,
|
||||||
boolean meteredData, boolean requestedHdr,
|
boolean meteredData, boolean requestedHdr,
|
||||||
String glRenderer, PerfOverlayListener perfListener) {
|
String glRenderer, PerfOverlayListener perfListener) {
|
||||||
//dumpDecoders();
|
//dumpDecoders();
|
||||||
|
|
||||||
this.context = context;
|
this.context = activity;
|
||||||
|
this.activity = activity;
|
||||||
this.prefs = prefs;
|
this.prefs = prefs;
|
||||||
this.crashListener = crashListener;
|
this.crashListener = crashListener;
|
||||||
this.consecutiveCrashCount = consecutiveCrashCount;
|
this.consecutiveCrashCount = consecutiveCrashCount;
|
||||||
@ -871,6 +874,10 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer implements C
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
|
frameTimeNanos -= activity.getWindowManager().getDefaultDisplay().getAppVsyncOffsetNanos();
|
||||||
|
}
|
||||||
|
|
||||||
// Don't render unless a new frame is due. This prevents microstutter when streaming
|
// Don't render unless a new frame is due. This prevents microstutter when streaming
|
||||||
// at a frame rate that doesn't match the display (such as 60 FPS on 120 Hz).
|
// at a frame rate that doesn't match the display (such as 60 FPS on 120 Hz).
|
||||||
long actualFrameTimeDeltaNs = frameTimeNanos - lastRenderedFrameTimeNanos;
|
long actualFrameTimeDeltaNs = frameTimeNanos - lastRenderedFrameTimeNanos;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user