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 elapsedSinceLastRenderUs = elapsedRealtimeNowUs - lastRenderTimeUs;
|
||||
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 =
|
||||
joiningDeadlineMs == C.TIME_UNSET
|
||||
&& positionUs >= outputStreamOffsetUs
|
||||
&& (!renderedFirstFrame
|
||||
|| (isStarted && shouldForceRenderOutputBuffer(earlyUs, elapsedSinceLastRenderUs)));
|
||||
if (forceRenderOutputBuffer) {
|
||||
@ -956,6 +957,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
||||
pendingOutputStreamSwitchTimesUs,
|
||||
/* destPos= */ 0,
|
||||
pendingOutputStreamOffsetCount);
|
||||
clearRenderedFirstFrame();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user