Update Limelight Common to support new version of GFE 2.1.1

This commit is contained in:
Iwan Timmer
2014-08-03 13:23:25 +02:00
parent 7b166b5587
commit 59faa3926d
7 changed files with 35 additions and 48 deletions

View File

@@ -16,10 +16,8 @@ public class AlsaAudioRenderer implements AudioRenderer {
}
@Override
public void streamInitialized(int channelCount, int sampleRate) {
int ret = AlsaAudio.init(channelCount, sampleRate, device);
if (ret != 0)
throw new IllegalStateException("Alsa renderer initialization failure: "+ret);
public boolean streamInitialized(int channelCount, int sampleRate) {
return AlsaAudio.init(channelCount, sampleRate, device) == 0;
}
@Override

View File

@@ -12,9 +12,10 @@ public class FakeAudioRenderer implements AudioRenderer {
private long last;
@Override
public void streamInitialized(int channelCount, int sampleRate) {
public boolean streamInitialized(int channelCount, int sampleRate) {
System.out.println("Fake " + channelCount + " channel " + sampleRate + " samplerate audio output");
last = System.currentTimeMillis();
return true;
}
@Override

View File

@@ -17,8 +17,12 @@ public abstract class AbstractVideoRenderer implements VideoDecoderRenderer {
private int dataSize;
private long last;
private long endToEndLatency;
private long decodeLatency;
private long packets;
@Override
public void start(final VideoDepacketizer depacketizer) {
public boolean start(final VideoDepacketizer depacketizer) {
last = System.currentTimeMillis();
thread = new Thread(new Runnable() {
@Override
@@ -26,14 +30,17 @@ public abstract class AbstractVideoRenderer implements VideoDecoderRenderer {
while (running) {
try {
DecodeUnit decodeUnit = depacketizer.takeNextDecodeUnit();
long latency = System.currentTimeMillis()-decodeUnit.getReceiveTimestamp();
endToEndLatency += latency;
dataSize += decodeUnit.getDataLength();
decodeUnit(decodeUnit);
if (System.currentTimeMillis()>last+2000) {
int bitrate = (dataSize/2)/1024;
long latency = System.currentTimeMillis()-decodeUnit.getReceiveTimestamp();
System.out.println("Video " + bitrate + "kB/s " + latency + "ms");
latency = System.currentTimeMillis()-decodeUnit.getReceiveTimestamp();
decodeLatency += latency;
System.out.println("Video " + bitrate + "kB/s " + latency);
dataSize = 0;
last = System.currentTimeMillis();
}
@@ -43,6 +50,7 @@ public abstract class AbstractVideoRenderer implements VideoDecoderRenderer {
});
running = true;
thread.start();
return true;
}
@Override
@@ -62,5 +70,15 @@ public abstract class AbstractVideoRenderer implements VideoDecoderRenderer {
public int getCapabilities() {
return 0;
}
@Override
public int getAverageEndToEndLatency() {
return (int) (endToEndLatency / packets);
}
@Override
public int getAverageDecoderLatency() {
return (int) (decodeLatency / packets);
}
}

View File

@@ -26,8 +26,9 @@ public class FakeVideoRenderer extends AbstractVideoRenderer {
}
@Override
public void setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
public boolean setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
System.out.println("Fake " + width + "x" + height + " " + redrawRate + "fps video output");
return true;
}
@Override

View File

@@ -14,10 +14,8 @@ public class OmxDecoderRenderer extends AbstractVideoRenderer {
private final static byte[] BITSTREAM_RESTRICTIONS = new byte[] {(byte) 0xF1, (byte) 0x83, 0x2A, 0x00};
@Override
public void setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
int err = OmxDecoder.init();
if (err != 0)
throw new IllegalStateException("AVC decoder initialization failure: "+err);
public boolean setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) {
return OmxDecoder.init() == 0;
}
@Override
@@ -132,5 +130,5 @@ public class OmxDecoderRenderer extends AbstractVideoRenderer {
source.offset = offset;
source.length = length;
}
}