From e489382b0ed2e655c3ef8d24c571f880de93ad8d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 28 Dec 2013 16:59:39 -0500 Subject: [PATCH] Update for changes in limelight-common --- libs/limelight-common.jar | Bin 61159 -> 60204 bytes .../nvstream/av/video/cpu/AvcDecoder.java | 45 ++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/com/limelight/nvstream/av/video/cpu/AvcDecoder.java diff --git a/libs/limelight-common.jar b/libs/limelight-common.jar index d3e68aa6a8f39804b7cb61e725a8596ed6847215..23e1dea3c976f1540ba9d1fa96ae13624b0bf891 100644 GIT binary patch delta 5269 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 PFk&bYVqjQu0~CY+ZUgh; delta 6095 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 S0>zlYnBj^L1H<3jARYjR<7a&U diff --git a/src/com/limelight/nvstream/av/video/cpu/AvcDecoder.java b/src/com/limelight/nvstream/av/video/cpu/AvcDecoder.java new file mode 100644 index 00000000..097e2c47 --- /dev/null +++ b/src/com/limelight/nvstream/av/video/cpu/AvcDecoder.java @@ -0,0 +1,45 @@ +package com.limelight.nvstream.av.video.cpu; + +public class AvcDecoder { + static { + // FFMPEG dependencies + System.loadLibrary("avutil-52"); + System.loadLibrary("swresample-0"); + System.loadLibrary("swscale-2"); + System.loadLibrary("avcodec-55"); + System.loadLibrary("avformat-55"); + System.loadLibrary("avfilter-3"); + + System.loadLibrary("nv_avc_dec"); + } + + /** Disables the deblocking filter at the cost of image quality */ + public static final int DISABLE_LOOP_FILTER = 0x1; + /** Uses the low latency decode flag (disables multithreading) */ + public static final int LOW_LATENCY_DECODE = 0x2; + /** Threads process each slice, rather than each frame */ + public static final int SLICE_THREADING = 0x4; + /** Uses nonstandard speedup tricks */ + public static final int FAST_DECODE = 0x8; + /** Uses bilinear filtering instead of bicubic */ + public static final int BILINEAR_FILTERING = 0x10; + /** Uses a faster bilinear filtering with lower image quality */ + public static final int FAST_BILINEAR_FILTERING = 0x20; + /** Disables color conversion (output is NV21) */ + public static final int NO_COLOR_CONVERSION = 0x40; + + public static native int init(int width, int height, int perflvl, int threadcount); + public static native void destroy(); + + // Rendering API when NO_COLOR_CONVERSION == 0 + public static native boolean setRenderTarget(Object androidSurface); + public static native boolean getRgbFrameInt(int[] rgbFrame, int bufferSize); + public static native boolean getRgbFrame(byte[] rgbFrame, int bufferSize); + public static native boolean redraw(); + + // Rendering API when NO_COLOR_CONVERSION == 1 + public static native boolean getRawFrame(byte[] yuvFrame, int bufferSize); + + public static native int getInputPaddingSize(); + public static native int decode(byte[] indata, int inoff, int inlen); +}