MediaCodecRenderer: apply rendering limit on feed

PiperOrigin-RevId: 297873726
This commit is contained in:
christosts 2020-02-28 18:27:20 +00:00 committed by Oliver Woodman
parent 4c1f0c40ce
commit 0649c7b958

View file

@ -806,10 +806,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
// We have a format.
maybeInitCodec();
if (codec != null) {
long drainStartTimeMs = SystemClock.elapsedRealtime();
long renderStartTimeMs = SystemClock.elapsedRealtime();
TraceUtil.beginSection("drainAndFeed");
while (drainOutputBuffer(positionUs, elapsedRealtimeUs)) {}
while (feedInputBuffer() && shouldContinueFeeding(drainStartTimeMs)) {}
while (drainOutputBuffer(positionUs, elapsedRealtimeUs)
&& shouldContinueRendering(renderStartTimeMs)) {}
while (feedInputBuffer() && shouldContinueRendering(renderStartTimeMs)) {}
TraceUtil.endSection();
} else {
decoderCounters.skippedInputBufferCount += skipSource(positionUs);
@ -1118,9 +1119,9 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
onCodecInitialized(codecName, codecInitializedTimestamp, elapsed);
}
private boolean shouldContinueFeeding(long drainStartTimeMs) {
private boolean shouldContinueRendering(long renderStartTimeMs) {
return renderTimeLimitMs == C.TIME_UNSET
|| SystemClock.elapsedRealtime() - drainStartTimeMs < renderTimeLimitMs;
|| SystemClock.elapsedRealtime() - renderStartTimeMs < renderTimeLimitMs;
}
private void getCodecBuffers(MediaCodec codec) {