mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Replace pendingFormat with waitingForFirstSampleInFormat in SimpleDecoderVideoRenderer
PiperOrigin-RevId: 267612438
This commit is contained in:
parent
2866b2b3e4
commit
5e8f611f06
1 changed files with 14 additions and 14 deletions
|
|
@ -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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
|
|
||||||
@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 {
|
||||||
@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 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eventDispatcher.inputFormatChanged(format);
|
eventDispatcher.inputFormatChanged(inputFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -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 {
|
||||||
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++;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue