diff --git a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java index 611c3555..7521ad0c 100644 --- a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java +++ b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java @@ -5,6 +5,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.nio.ByteBuffer; +import java.util.concurrent.locks.LockSupport; import android.graphics.PixelFormat; import android.os.Build; @@ -169,6 +170,7 @@ public class AndroidCpuDecoderRenderer implements VideoDecoderRenderer { long diff = nextFrameTime - System.currentTimeMillis(); if (diff > WAIT_CEILING_MS) { + LockSupport.parkNanos(1); continue; } diff --git a/src/com/limelight/binding/video/MediaCodecDecoderRenderer.java b/src/com/limelight/binding/video/MediaCodecDecoderRenderer.java index d91c5509..8a180362 100644 --- a/src/com/limelight/binding/video/MediaCodecDecoderRenderer.java +++ b/src/com/limelight/binding/video/MediaCodecDecoderRenderer.java @@ -3,6 +3,7 @@ package com.limelight.binding.video; import java.nio.ByteBuffer; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.locks.LockSupport; import com.limelight.LimeLog; import com.limelight.nvstream.av.ByteBufferDescriptor; @@ -203,6 +204,9 @@ public class MediaCodecDecoderRenderer implements VideoDecoderRenderer { } } else { switch (outIndex) { + case MediaCodec.INFO_TRY_AGAIN_LATER: + LockSupport.parkNanos(1); + break; case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED: LimeLog.info("Output buffers changed"); break;