mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-14 11:56:07 +00:00
Update Limelight Common to support new version of GFE 2.1.1
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user