Clear renderedFirstFrame at stream changes even if no reconfiguration is needed
This ensures a more consistent playback behavior no matter if an item is the first playlist item or a later one. For example, each playlist item gets its own onRenderedFirstFrame callback and other logic within the renderer that force renders the first frame more quickly is also triggered. PiperOrigin-RevId: 272434814
This commit is contained in:
parent
f7b8d07cd2
commit
bc9a0860e0
@ -802,9 +802,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||||||
long elapsedRealtimeNowUs = SystemClock.elapsedRealtime() * 1000;
|
long elapsedRealtimeNowUs = SystemClock.elapsedRealtime() * 1000;
|
||||||
long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs;
|
long elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs;
|
||||||
boolean isStarted = getState() == STATE_STARTED;
|
boolean isStarted = getState() == STATE_STARTED;
|
||||||
// Don't force output until we joined and always render first frame if not joining.
|
// Don't force output until we joined and the position reached the current stream.
|
||||||
boolean forceRenderOutputBuffer =
|
boolean forceRenderOutputBuffer =
|
||||||
joiningDeadlineMs == C.TIME_UNSET
|
joiningDeadlineMs == C.TIME_UNSET
|
||||||
|
&& positionUs >= outputStreamOffsetUs
|
||||||
&& (!renderedFirstFrame
|
&& (!renderedFirstFrame
|
||||||
|| (isStarted && shouldForceRenderOutputBuffer(earlyUs, elapsedSinceLastRenderUs)));
|
|| (isStarted && shouldForceRenderOutputBuffer(earlyUs, elapsedSinceLastRenderUs)));
|
||||||
if (forceRenderOutputBuffer) {
|
if (forceRenderOutputBuffer) {
|
||||||
@ -956,6 +957,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||||||
pendingOutputStreamSwitchTimesUs,
|
pendingOutputStreamSwitchTimesUs,
|
||||||
/* destPos= */ 0,
|
/* destPos= */ 0,
|
||||||
pendingOutputStreamOffsetCount);
|
pendingOutputStreamOffsetCount);
|
||||||
|
clearRenderedFirstFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user