Commit 5e8f611f by aquilescanta Committed by Oliver Woodman

Replace pendingFormat with waitingForFirstSampleInFormat in SimpleDecoderVideoRenderer

PiperOrigin-RevId: 267612438
parent 2866b2b3
...@@ -78,8 +78,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -78,8 +78,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
private final DecoderInputBuffer flagsOnlyBuffer; private final DecoderInputBuffer flagsOnlyBuffer;
private final DrmSessionManager<ExoMediaCrypto> drmSessionManager; private final DrmSessionManager<ExoMediaCrypto> drmSessionManager;
private Format format; private Format inputFormat;
private Format pendingFormat;
private Format outputFormat; private Format outputFormat;
private SimpleDecoder< private SimpleDecoder<
VideoDecoderInputBuffer, VideoDecoderInputBuffer,
...@@ -98,6 +97,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -98,6 +97,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
private long initialPositionUs; private long initialPositionUs;
private long joiningDeadlineMs; private long joiningDeadlineMs;
private boolean waitingForKeys; private boolean waitingForKeys;
private boolean waitingForFirstSampleInFormat;
private boolean inputStreamEnded; private boolean inputStreamEnded;
private boolean outputStreamEnded; private boolean outputStreamEnded;
...@@ -164,7 +164,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -164,7 +164,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
return; return;
} }
if (format == null) { if (inputFormat == null) {
// We don't have a format yet, so try and read one. // We don't have a format yet, so try and read one.
formatHolder.clear(); formatHolder.clear();
flagsOnlyBuffer.clear(); flagsOnlyBuffer.clear();
...@@ -211,7 +211,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -211,7 +211,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
if (waitingForKeys) { if (waitingForKeys) {
return false; return false;
} }
if (format != null if (inputFormat != null
&& (isSourceReady() || outputBuffer != null) && (isSourceReady() || outputBuffer != null)
&& (renderedFirstFrame || !hasOutputSurface())) { && (renderedFirstFrame || !hasOutputSurface())) {
// Ready. If we were joining then we've now joined, so clear the joining deadline. // Ready. If we were joining then we've now joined, so clear the joining deadline.
...@@ -269,7 +269,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -269,7 +269,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
@Override @Override
protected void onDisabled() { protected void onDisabled() {
format = null; inputFormat = null;
waitingForKeys = false; waitingForKeys = false;
clearReportedVideoSize(); clearReportedVideoSize();
clearRenderedFirstFrame(); clearRenderedFirstFrame();
...@@ -361,15 +361,15 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -361,15 +361,15 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
@CallSuper @CallSuper
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected void onInputFormatChanged(FormatHolder formatHolder) throws ExoPlaybackException { protected void onInputFormatChanged(FormatHolder formatHolder) throws ExoPlaybackException {
pendingFormat = format; waitingForFirstSampleInFormat = true;
Format newFormat = Assertions.checkNotNull(formatHolder.format); Format newFormat = Assertions.checkNotNull(formatHolder.format);
if (formatHolder.includesDrmSession) { if (formatHolder.includesDrmSession) {
setSourceDrmSession((DrmSession<ExoMediaCrypto>) formatHolder.drmSession); setSourceDrmSession((DrmSession<ExoMediaCrypto>) formatHolder.drmSession);
} else { } else {
sourceDrmSession = sourceDrmSession =
getUpdatedSourceDrmSession(format, newFormat, drmSessionManager, sourceDrmSession); getUpdatedSourceDrmSession(inputFormat, newFormat, drmSessionManager, sourceDrmSession);
} }
format = newFormat; inputFormat = newFormat;
if (sourceDrmSession != decoderDrmSession) { if (sourceDrmSession != decoderDrmSession) {
if (decoderReceivedBuffers) { if (decoderReceivedBuffers) {
...@@ -382,7 +382,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -382,7 +382,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
} }
} }
eventDispatcher.inputFormatChanged(format); eventDispatcher.inputFormatChanged(inputFormat);
} }
/** /**
...@@ -644,7 +644,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -644,7 +644,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
try { try {
long decoderInitializingTimestamp = SystemClock.elapsedRealtime(); long decoderInitializingTimestamp = SystemClock.elapsedRealtime();
decoder = createDecoder(format, mediaCrypto); decoder = createDecoder(inputFormat, mediaCrypto);
long decoderInitializedTimestamp = SystemClock.elapsedRealtime(); long decoderInitializedTimestamp = SystemClock.elapsedRealtime();
onDecoderInitialized( onDecoderInitialized(
decoder.getName(), decoder.getName(),
...@@ -707,12 +707,12 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { ...@@ -707,12 +707,12 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
if (waitingForKeys) { if (waitingForKeys) {
return false; return false;
} }
if (pendingFormat != null) { if (waitingForFirstSampleInFormat) {
formatQueue.add(inputBuffer.timeUs, pendingFormat); formatQueue.add(inputBuffer.timeUs, inputFormat);
pendingFormat = null; waitingForFirstSampleInFormat = false;
} }
inputBuffer.flip(); inputBuffer.flip();
inputBuffer.colorInfo = format.colorInfo; inputBuffer.colorInfo = inputFormat.colorInfo;
onQueueInputBuffer(inputBuffer); onQueueInputBuffer(inputBuffer);
decoder.queueInputBuffer(inputBuffer); decoder.queueInputBuffer(inputBuffer);
buffersInCodecCount++; buffersInCodecCount++;
......
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