mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-04-06 16:06:10 +00:00
JNI code complete
This commit is contained in:
@@ -3,6 +3,7 @@ package com.limelight.nvstream;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
|
||||
@@ -223,8 +224,15 @@ public class NvConnection {
|
||||
return;
|
||||
}
|
||||
|
||||
ByteBuffer ib = ByteBuffer.allocate(16);
|
||||
ib.putInt(context.riKeyId);
|
||||
|
||||
MoonBridge.startConnection(context.serverAddress.getHostAddress(),
|
||||
context.serverAppVersion, context.serverGfeVersion);
|
||||
context.serverAppVersion, context.serverGfeVersion,
|
||||
context.streamConfig.getWidth(), context.streamConfig.getHeight(),
|
||||
context.streamConfig.getRefreshRate(), context.streamConfig.getBitrate(),
|
||||
context.streamConfig.getRemote(), context.streamConfig.getAudioConfiguration(),
|
||||
context.streamConfig.getHevcSupported(), context.riKey.getEncoded(), ib.array());
|
||||
}
|
||||
|
||||
public void start(AudioRenderer audioRenderer, VideoDecoderRenderer videoDecoderRenderer, NvConnectionListener connectionListener)
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package com.limelight.nvstream;
|
||||
|
||||
import com.limelight.nvstream.http.NvApp;
|
||||
import com.limelight.nvstream.jni.MoonBridge;
|
||||
|
||||
public class StreamConfiguration {
|
||||
public static final int INVALID_APP_ID = 0;
|
||||
|
||||
public static final int AUDIO_CONFIGURATION_STEREO = 1;
|
||||
public static final int AUDIO_CONFIGURATION_5_1 = 2;
|
||||
|
||||
private static final int CHANNEL_COUNT_STEREO = 2;
|
||||
private static final int CHANNEL_COUNT_5_1 = 6;
|
||||
|
||||
@@ -25,6 +23,7 @@ public class StreamConfiguration {
|
||||
private boolean remote;
|
||||
private int audioChannelMask;
|
||||
private int audioChannelCount;
|
||||
private int audioConfiguration;
|
||||
private boolean supportsHevc;
|
||||
|
||||
public static class Builder {
|
||||
@@ -77,11 +76,11 @@ public class StreamConfiguration {
|
||||
}
|
||||
|
||||
public StreamConfiguration.Builder setAudioConfiguration(int audioConfig) {
|
||||
if (audioConfig == AUDIO_CONFIGURATION_STEREO) {
|
||||
if (audioConfig == MoonBridge.AUDIO_CONFIGURATION_STEREO) {
|
||||
config.audioChannelCount = CHANNEL_COUNT_STEREO;
|
||||
config.audioChannelMask = CHANNEL_MASK_STEREO;
|
||||
}
|
||||
else if (audioConfig == AUDIO_CONFIGURATION_5_1) {
|
||||
else if (audioConfig == MoonBridge.AUDIO_CONFIGURATION_51_SURROUND) {
|
||||
config.audioChannelCount = CHANNEL_COUNT_5_1;
|
||||
config.audioChannelMask = CHANNEL_MASK_5_1;
|
||||
}
|
||||
@@ -89,6 +88,8 @@ public class StreamConfiguration {
|
||||
throw new IllegalArgumentException("Invalid audio configuration");
|
||||
}
|
||||
|
||||
config.audioConfiguration = audioConfig;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -164,6 +165,10 @@ public class StreamConfiguration {
|
||||
public int getAudioChannelMask() {
|
||||
return audioChannelMask;
|
||||
}
|
||||
|
||||
public int getAudioConfiguration() {
|
||||
return audioConfiguration;
|
||||
}
|
||||
|
||||
public boolean getHevcSupported() {
|
||||
return supportsHevc;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.limelight.nvstream.av.audio;
|
||||
|
||||
public interface AudioRenderer {
|
||||
int getCapabilities();
|
||||
|
||||
void setup(int audioConfiguration);
|
||||
|
||||
void playDecodedAudio(byte[] audioData);
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
package com.limelight.nvstream.av.video;
|
||||
|
||||
public abstract class VideoDecoderRenderer {
|
||||
public int getCapabilities() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public abstract boolean setup(int format, int width, int height, int redrawRate);
|
||||
|
||||
public abstract int submitDecodeUnit(byte[] frameData);
|
||||
|
||||
@@ -21,6 +21,11 @@ public class MoonBridge {
|
||||
private static VideoDecoderRenderer videoRenderer;
|
||||
private static NvConnectionListener connectionListener;
|
||||
|
||||
static {
|
||||
System.load("moonlight-core");
|
||||
init();
|
||||
}
|
||||
|
||||
public static int CAPABILITY_SLICES_PER_FRAME(byte slices) {
|
||||
return slices << 24;
|
||||
}
|
||||
@@ -118,7 +123,11 @@ public class MoonBridge {
|
||||
MoonBridge.connectionListener = null;
|
||||
}
|
||||
|
||||
public static native void startConnection(String address, String serverInfoAppVersion, String serverInfoGfeVersion);
|
||||
public static native void startConnection(String address, String appVersion, String gfeVersion,
|
||||
int width, int height, int fps,
|
||||
int bitrate, boolean streamingRemotely,
|
||||
int audioConfiguration, boolean supportsHevc,
|
||||
byte[] riAesKey, byte[] riAesIv);
|
||||
|
||||
public static native void stopConnection();
|
||||
|
||||
@@ -142,4 +151,6 @@ public class MoonBridge {
|
||||
public static native void sendMouseScroll(byte scrollClicks);
|
||||
|
||||
public static native String getStageName(int stage);
|
||||
|
||||
public static native void init();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user