mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-04-14 11:56:04 +00:00
Remove moonlight-common subproject
This commit is contained in:
216
app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java
Normal file
216
app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java
Normal file
@@ -0,0 +1,216 @@
|
||||
package com.limelight.nvstream.jni;
|
||||
|
||||
import com.limelight.nvstream.NvConnectionListener;
|
||||
import com.limelight.nvstream.av.audio.AudioRenderer;
|
||||
import com.limelight.nvstream.av.video.VideoDecoderRenderer;
|
||||
|
||||
public class MoonBridge {
|
||||
/* See documentation in Limelight.h for information about these functions and constants */
|
||||
|
||||
public static final int AUDIO_CONFIGURATION_STEREO = 0;
|
||||
public static final int AUDIO_CONFIGURATION_51_SURROUND = 1;
|
||||
|
||||
public static final int VIDEO_FORMAT_H264 = 0x0001;
|
||||
public static final int VIDEO_FORMAT_H265 = 0x0100;
|
||||
public static final int VIDEO_FORMAT_H265_MAIN10 = 0x0200;
|
||||
|
||||
public static final int VIDEO_FORMAT_MASK_H264 = 0x00FF;
|
||||
public static final int VIDEO_FORMAT_MASK_H265 = 0xFF00;
|
||||
|
||||
public static final int BUFFER_TYPE_PICDATA = 0;
|
||||
public static final int BUFFER_TYPE_SPS = 1;
|
||||
public static final int BUFFER_TYPE_PPS = 2;
|
||||
public static final int BUFFER_TYPE_VPS = 3;
|
||||
|
||||
public static final int CAPABILITY_DIRECT_SUBMIT = 1;
|
||||
public static final int CAPABILITY_REFERENCE_FRAME_INVALIDATION_AVC = 2;
|
||||
public static final int CAPABILITY_REFERENCE_FRAME_INVALIDATION_HEVC = 4;
|
||||
|
||||
public static final int DR_OK = 0;
|
||||
public static final int DR_NEED_IDR = -1;
|
||||
|
||||
public static final int CONN_STATUS_OKAY = 0;
|
||||
public static final int CONN_STATUS_POOR = 1;
|
||||
|
||||
private static AudioRenderer audioRenderer;
|
||||
private static VideoDecoderRenderer videoRenderer;
|
||||
private static NvConnectionListener connectionListener;
|
||||
|
||||
static {
|
||||
System.loadLibrary("moonlight-core");
|
||||
init();
|
||||
}
|
||||
|
||||
public static int CAPABILITY_SLICES_PER_FRAME(byte slices) {
|
||||
return slices << 24;
|
||||
}
|
||||
|
||||
public static int bridgeDrSetup(int videoFormat, int width, int height, int redrawRate) {
|
||||
if (videoRenderer != null) {
|
||||
return videoRenderer.setup(videoFormat, width, height, redrawRate);
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeDrStart() {
|
||||
if (videoRenderer != null) {
|
||||
videoRenderer.start();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeDrStop() {
|
||||
if (videoRenderer != null) {
|
||||
videoRenderer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeDrCleanup() {
|
||||
if (videoRenderer != null) {
|
||||
videoRenderer.cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
public static int bridgeDrSubmitDecodeUnit(byte[] decodeUnitData, int decodeUnitLength,
|
||||
int decodeUnitType,
|
||||
int frameNumber, long receiveTimeMs) {
|
||||
if (videoRenderer != null) {
|
||||
return videoRenderer.submitDecodeUnit(decodeUnitData, decodeUnitLength,
|
||||
decodeUnitType, frameNumber, receiveTimeMs);
|
||||
}
|
||||
else {
|
||||
return DR_OK;
|
||||
}
|
||||
}
|
||||
|
||||
public static int bridgeArInit(int audioConfiguration) {
|
||||
if (audioRenderer != null) {
|
||||
return audioRenderer.setup(audioConfiguration);
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeArStart() {
|
||||
if (audioRenderer != null) {
|
||||
audioRenderer.start();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeArStop() {
|
||||
if (audioRenderer != null) {
|
||||
audioRenderer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeArCleanup() {
|
||||
if (audioRenderer != null) {
|
||||
audioRenderer.cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeArPlaySample(short[] pcmData) {
|
||||
if (audioRenderer != null) {
|
||||
audioRenderer.playDecodedAudio(pcmData);
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClStageStarting(int stage) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.stageStarting(getStageName(stage));
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClStageComplete(int stage) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.stageComplete(getStageName(stage));
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClStageFailed(int stage, long errorCode) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.stageFailed(getStageName(stage), errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClConnectionStarted() {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.connectionStarted();
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClConnectionTerminated(long errorCode) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.connectionTerminated(errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClRumble(short controllerNumber, short lowFreqMotor, short highFreqMotor) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.rumble(controllerNumber, lowFreqMotor, highFreqMotor);
|
||||
}
|
||||
}
|
||||
|
||||
public static void bridgeClConnectionStatusUpdate(int connectionStatus) {
|
||||
if (connectionListener != null) {
|
||||
connectionListener.connectionStatusUpdate(connectionStatus);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setupBridge(VideoDecoderRenderer videoRenderer, AudioRenderer audioRenderer, NvConnectionListener connectionListener) {
|
||||
MoonBridge.videoRenderer = videoRenderer;
|
||||
MoonBridge.audioRenderer = audioRenderer;
|
||||
MoonBridge.connectionListener = connectionListener;
|
||||
}
|
||||
|
||||
public static void cleanupBridge() {
|
||||
MoonBridge.videoRenderer = null;
|
||||
MoonBridge.audioRenderer = null;
|
||||
MoonBridge.connectionListener = null;
|
||||
}
|
||||
|
||||
public static native int startConnection(String address, String appVersion, String gfeVersion,
|
||||
int width, int height, int fps,
|
||||
int bitrate, int packetSize, int streamingRemotely,
|
||||
int audioConfiguration, boolean supportsHevc,
|
||||
boolean enableHdr,
|
||||
int hevcBitratePercentageMultiplier,
|
||||
int clientRefreshRateX100,
|
||||
byte[] riAesKey, byte[] riAesIv,
|
||||
int videoCapabilities);
|
||||
|
||||
public static native void stopConnection();
|
||||
|
||||
public static native void interruptConnection();
|
||||
|
||||
public static native void sendMouseMove(short deltaX, short deltaY);
|
||||
|
||||
public static native void sendMouseButton(byte buttonEvent, byte mouseButton);
|
||||
|
||||
public static native void sendMultiControllerInput(short controllerNumber,
|
||||
short activeGamepadMask, short buttonFlags,
|
||||
byte leftTrigger, byte rightTrigger,
|
||||
short leftStickX, short leftStickY,
|
||||
short rightStickX, short rightStickY);
|
||||
|
||||
public static native void sendControllerInput(short buttonFlags,
|
||||
byte leftTrigger, byte rightTrigger,
|
||||
short leftStickX, short leftStickY,
|
||||
short rightStickX, short rightStickY);
|
||||
|
||||
public static native void sendKeyboardInput(short keyMap, byte keyDirection, byte modifier);
|
||||
|
||||
public static native void sendMouseScroll(byte scrollClicks);
|
||||
|
||||
public static native String getStageName(int stage);
|
||||
|
||||
public static native String findExternalAddressIP4(String stunHostName, int stunPort);
|
||||
|
||||
public static native int getPendingAudioFrames();
|
||||
|
||||
public static native int getPendingVideoFrames();
|
||||
|
||||
public static native void init();
|
||||
}
|
||||
Reference in New Issue
Block a user