Commit 5ed0c12f by ibaker Committed by kim-vde

Tweak how MediaCodecVideoRenderer renotifies the existing surface

Use a dedicated boolean to track if we've notified the current surface,
rather than re-using rendereredFirstFrameAfterReset.

PiperOrigin-RevId: 325757948
parent acc84536
...@@ -139,6 +139,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -139,6 +139,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
private Surface surface; private Surface surface;
private float surfaceFrameRate; private float surfaceFrameRate;
private Surface dummySurface; private Surface dummySurface;
private boolean haveReportedFirstFrameRenderedForCurrentSurface;
@VideoScalingMode private int scalingMode; @VideoScalingMode private int scalingMode;
private boolean renderedFirstFrameAfterReset; private boolean renderedFirstFrameAfterReset;
private boolean mayRenderFirstFrameAfterEnableIfNotStarted; private boolean mayRenderFirstFrameAfterEnableIfNotStarted;
...@@ -446,6 +447,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -446,6 +447,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
protected void onDisabled() { protected void onDisabled() {
clearReportedVideoSize(); clearReportedVideoSize();
clearRenderedFirstFrame(); clearRenderedFirstFrame();
haveReportedFirstFrameRenderedForCurrentSurface = false;
frameReleaseTimeHelper.disable(); frameReleaseTimeHelper.disable();
tunnelingOnFrameRenderedListener = null; tunnelingOnFrameRenderedListener = null;
try { try {
...@@ -504,6 +506,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -504,6 +506,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
if (this.surface != surface) { if (this.surface != surface) {
clearSurfaceFrameRate(); clearSurfaceFrameRate();
this.surface = surface; this.surface = surface;
haveReportedFirstFrameRenderedForCurrentSurface = false;
updateSurfaceFrameRate(/* isNewSurface= */ true); updateSurfaceFrameRate(/* isNewSurface= */ true);
@State int state = getState(); @State int state = getState();
...@@ -1160,11 +1163,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -1160,11 +1163,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
if (!renderedFirstFrameAfterReset) { if (!renderedFirstFrameAfterReset) {
renderedFirstFrameAfterReset = true; renderedFirstFrameAfterReset = true;
eventDispatcher.renderedFirstFrame(surface); eventDispatcher.renderedFirstFrame(surface);
haveReportedFirstFrameRenderedForCurrentSurface = true;
} }
} }
private void maybeRenotifyRenderedFirstFrame() { private void maybeRenotifyRenderedFirstFrame() {
if (renderedFirstFrameAfterReset) { if (haveReportedFirstFrameRenderedForCurrentSurface) {
eventDispatcher.renderedFirstFrame(surface); eventDispatcher.renderedFirstFrame(surface);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment