mirror of
https://github.com/samsonjs/media.git
synced 2026-03-30 10:15:48 +00:00
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
This commit is contained in:
parent
acc8453628
commit
5ed0c12ff0
1 changed files with 5 additions and 1 deletions
|
|
@ -139,6 +139,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
private Surface surface;
|
||||
private float surfaceFrameRate;
|
||||
private Surface dummySurface;
|
||||
private boolean haveReportedFirstFrameRenderedForCurrentSurface;
|
||||
@VideoScalingMode private int scalingMode;
|
||||
private boolean renderedFirstFrameAfterReset;
|
||||
private boolean mayRenderFirstFrameAfterEnableIfNotStarted;
|
||||
|
|
@ -446,6 +447,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
protected void onDisabled() {
|
||||
clearReportedVideoSize();
|
||||
clearRenderedFirstFrame();
|
||||
haveReportedFirstFrameRenderedForCurrentSurface = false;
|
||||
frameReleaseTimeHelper.disable();
|
||||
tunnelingOnFrameRenderedListener = null;
|
||||
try {
|
||||
|
|
@ -504,6 +506,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
if (this.surface != surface) {
|
||||
clearSurfaceFrameRate();
|
||||
this.surface = surface;
|
||||
haveReportedFirstFrameRenderedForCurrentSurface = false;
|
||||
updateSurfaceFrameRate(/* isNewSurface= */ true);
|
||||
|
||||
@State int state = getState();
|
||||
|
|
@ -1160,11 +1163,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
if (!renderedFirstFrameAfterReset) {
|
||||
renderedFirstFrameAfterReset = true;
|
||||
eventDispatcher.renderedFirstFrame(surface);
|
||||
haveReportedFirstFrameRenderedForCurrentSurface = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void maybeRenotifyRenderedFirstFrame() {
|
||||
if (renderedFirstFrameAfterReset) {
|
||||
if (haveReportedFirstFrameRenderedForCurrentSurface) {
|
||||
eventDispatcher.renderedFirstFrame(surface);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue