Don't skip frames when rendering

This commit is contained in:
Cameron Gutman 2014-02-19 19:22:00 -05:00
parent bf1c7dd675
commit 22ecdd9cf8

View File

@ -20,7 +20,6 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer {
private ByteBuffer[] videoDecoderInputBuffers;
private MediaCodec videoDecoder;
private Thread rendererThread;
private int redrawRate;
private boolean needsSpsFixup;
public static final List<String> blacklistedDecoderPrefixes;
@ -91,8 +90,6 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer {
@Override
public void setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
this.redrawRate = redrawRate;
MediaCodecInfo safeDecoder = findSafeDecoder();
if (safeDecoder != null) {
videoDecoder = MediaCodec.createByCodecName(safeDecoder.getName());
@ -121,7 +118,6 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer {
rendererThread = new Thread() {
@Override
public void run() {
long nextFrameTimeUs = 0;
BufferInfo info = new BufferInfo();
while (!isInterrupted())
{
@ -138,14 +134,7 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer {
break;
}
if (outIndex >= 0) {
boolean render = false;
if (currentTimeUs() >= nextFrameTimeUs) {
render = true;
nextFrameTimeUs = computePresentationTime(redrawRate);
}
videoDecoder.releaseOutputBuffer(outIndex, render);
videoDecoder.releaseOutputBuffer(outIndex, true);
}
}
}
@ -154,14 +143,6 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer {
rendererThread.start();
}
private static long currentTimeUs() {
return System.nanoTime() / 1000;
}
private long computePresentationTime(int frameRate) {
return currentTimeUs() + (1000000 / frameRate);
}
@Override
public void start() {
startRendererThread();