Always use timed video frame release on V21+.

This commit is contained in:
Oliver Woodman 2015-07-21 09:58:36 +01:00
parent 508e1cabe1
commit 6082bb6769

View File

@ -437,7 +437,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
} }
if (!renderedFirstFrame) { if (!renderedFirstFrame) {
renderOutputBufferImmediate(codec, bufferIndex); if (Util.SDK_INT >= 21) {
renderOutputBufferV21(codec, bufferIndex, System.nanoTime());
} else {
renderOutputBuffer(codec, bufferIndex);
}
return true; return true;
} }
@ -448,7 +452,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
if (Util.SDK_INT >= 21) { if (Util.SDK_INT >= 21) {
// Let the underlying framework time the release. // Let the underlying framework time the release.
if (earlyUs < 50000) { if (earlyUs < 50000) {
renderOutputBufferTimedV21(codec, bufferIndex, adjustedReleaseTimeNs); renderOutputBufferV21(codec, bufferIndex, adjustedReleaseTimeNs);
return true; return true;
} }
} else { } else {
@ -464,7 +468,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
} }
renderOutputBufferImmediate(codec, bufferIndex); renderOutputBuffer(codec, bufferIndex);
return true; return true;
} }
} }
@ -491,9 +495,9 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
} }
} }
protected void renderOutputBufferImmediate(MediaCodec codec, int bufferIndex) { protected void renderOutputBuffer(MediaCodec codec, int bufferIndex) {
maybeNotifyVideoSizeChanged(); maybeNotifyVideoSizeChanged();
TraceUtil.beginSection("renderVideoBufferImmediate"); TraceUtil.beginSection("releaseOutputBuffer");
codec.releaseOutputBuffer(bufferIndex, true); codec.releaseOutputBuffer(bufferIndex, true);
TraceUtil.endSection(); TraceUtil.endSection();
codecCounters.renderedOutputBufferCount++; codecCounters.renderedOutputBufferCount++;
@ -502,9 +506,9 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
} }
@TargetApi(21) @TargetApi(21)
protected void renderOutputBufferTimedV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) { protected void renderOutputBufferV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) {
maybeNotifyVideoSizeChanged(); maybeNotifyVideoSizeChanged();
TraceUtil.beginSection("releaseOutputBufferTimed"); TraceUtil.beginSection("releaseOutputBuffer");
codec.releaseOutputBuffer(bufferIndex, releaseTimeNs); codec.releaseOutputBuffer(bufferIndex, releaseTimeNs);
TraceUtil.endSection(); TraceUtil.endSection();
codecCounters.renderedOutputBufferCount++; codecCounters.renderedOutputBufferCount++;