Merge branch 'imx'

This commit is contained in:
Iwan Timmer
2014-08-16 16:06:10 +02:00
9 changed files with 530 additions and 4 deletions

View File

@@ -4,8 +4,11 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import com.limelight.binding.audio.AlsaAudioRenderer;
import com.limelight.binding.video.OmxDecoderRenderer;
import com.limelight.binding.video.ImxDecoder;
import com.limelight.binding.video.ImxDecoderRenderer;
import com.limelight.binding.crypto.PcCryptoProvider;
import com.limelight.binding.video.OmxDecoder;
import com.limelight.binding.video.OmxDecoderRenderer;
import com.limelight.nvstream.av.audio.AudioRenderer;
import com.limelight.nvstream.av.video.VideoDecoderRenderer;
import com.limelight.nvstream.http.LimelightCryptoProvider;
@@ -21,7 +24,12 @@ public class PlatformBinding {
* @return a video decoder and renderer
*/
public static VideoDecoderRenderer getVideoDecoderRenderer() {
return new OmxDecoderRenderer();
if (OmxDecoder.load())
return new OmxDecoderRenderer();
else if (ImxDecoder.load())
return new ImxDecoderRenderer();
return null;
}
/**

View File

@@ -0,0 +1,23 @@
package com.limelight.binding.video;
/**
* JNI Decoder bindings
* @author Iwan Timmer
*/
public class ImxDecoder {
public static boolean load() {
try {
System.loadLibrary("nv_imx_dec");
} catch (Throwable e) {
return false;
}
return false;
}
public static native int init();
public static native void destroy();
public static native int decode(byte[] indata, int inoff, int inlen, boolean last);
}

View File

@@ -0,0 +1,35 @@
package com.limelight.binding.video;
import com.limelight.nvstream.av.ByteBufferDescriptor;
import com.limelight.nvstream.av.DecodeUnit;
import java.util.List;
/**
* Implementation of a video decoder and renderer.
* @author Iwan Timmer
*/
public class ImxDecoderRenderer extends AbstractVideoRenderer {
@Override
public boolean setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
return ImxDecoder.init() == 0;
}
@Override
public void release() {
ImxDecoder.destroy();
}
@Override
public void decodeUnit(DecodeUnit decodeUnit) {
List<ByteBufferDescriptor> units = decodeUnit.getBufferList();
boolean ok = true;
for (int i=0;i<units.size();i++) {
ByteBufferDescriptor bbd = units.get(i);
if (ok)
ok = (ImxDecoder.decode(bbd.data, bbd.offset, bbd.length, i == (units.size()-1)) == 0);
}
}
}

View File

@@ -5,8 +5,14 @@ package com.limelight.binding.video;
* @author Iwan Timmer
*/
public class OmxDecoder {
static {
System.loadLibrary("nv_omx_dec");
public static boolean load() {
try {
System.loadLibrary("nv_omx_dec");
} catch (Throwable e) {
return false;
}
return false;
}
public static native int init();