diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 513fdec7..a22fad2f 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -473,6 +473,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, .setAttachedGamepadMask(gamepadMask) .setClientRefreshRateX100((int)(displayRefreshRate * 100)) .setAudioConfiguration(prefConfig.audioConfiguration) + .setAudioEncryption(true) .build(); // Initialize the connection diff --git a/app/src/main/java/com/limelight/nvstream/NvConnection.java b/app/src/main/java/com/limelight/nvstream/NvConnection.java index cf5c829d..e53e39b8 100644 --- a/app/src/main/java/com/limelight/nvstream/NvConnection.java +++ b/app/src/main/java/com/limelight/nvstream/NvConnection.java @@ -284,6 +284,7 @@ public class NvConnection { context.negotiatedHdr, context.streamConfig.getHevcBitratePercentageMultiplier(), context.streamConfig.getClientRefreshRateX100(), + context.streamConfig.getEncryptionFlags(), context.riKey.getEncoded(), ib.array(), context.videoCapabilities); if (ret != 0) { diff --git a/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java b/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java index 8e1a3a5a..bf300723 100644 --- a/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java +++ b/app/src/main/java/com/limelight/nvstream/StreamConfiguration.java @@ -26,6 +26,7 @@ public class StreamConfiguration { private int hevcBitratePercentageMultiplier; private boolean enableHdr; private int attachedGamepadMask; + private int encryptionFlags; public static class Builder { private StreamConfiguration config = new StreamConfiguration(); @@ -110,7 +111,17 @@ public class StreamConfiguration { config.clientRefreshRateX100 = refreshRateX100; return this; } - + + public StreamConfiguration.Builder setAudioEncryption(boolean enable) { + if (enable) { + config.encryptionFlags |= MoonBridge.ENCFLG_AUDIO; + } + else { + config.encryptionFlags &= ~MoonBridge.ENCFLG_AUDIO; + } + return this; + } + public StreamConfiguration.Builder setAudioConfiguration(MoonBridge.AudioConfiguration audioConfig) { config.audioConfiguration = audioConfig; return this; @@ -211,4 +222,8 @@ public class StreamConfiguration { public int getClientRefreshRateX100() { return clientRefreshRateX100; } + + public int getEncryptionFlags() { + return encryptionFlags; + } } diff --git a/app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java b/app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java index 35799128..2702b54e 100644 --- a/app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java +++ b/app/src/main/java/com/limelight/nvstream/jni/MoonBridge.java @@ -18,6 +18,10 @@ public class MoonBridge { public static final int VIDEO_FORMAT_MASK_H264 = 0x00FF; public static final int VIDEO_FORMAT_MASK_H265 = 0xFF00; + public static final int ENCFLG_NONE = 0; + public static final int ENCFLG_AUDIO = 1; + public static final int ENCFLG_ALL = 0xFFFFFFFF; + public static final int BUFFER_TYPE_PICDATA = 0; public static final int BUFFER_TYPE_SPS = 1; public static final int BUFFER_TYPE_PPS = 2; @@ -255,6 +259,7 @@ public class MoonBridge { boolean enableHdr, int hevcBitratePercentageMultiplier, int clientRefreshRateX100, + int encryptionFlags, byte[] riAesKey, byte[] riAesIv, int videoCapabilities); diff --git a/app/src/main/jni/moonlight-core/callbacks.c b/app/src/main/jni/moonlight-core/callbacks.c index 8e2ceaad..a5c81743 100644 --- a/app/src/main/jni/moonlight-core/callbacks.c +++ b/app/src/main/jni/moonlight-core/callbacks.c @@ -370,6 +370,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c jboolean enableHdr, jint hevcBitratePercentageMultiplier, jint clientRefreshRateX100, + jint encryptionFlags, jbyteArray riAesKey, jbyteArray riAesIv, jint videoCapabilities) { SERVER_INFORMATION serverInfo = { @@ -388,7 +389,8 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c .supportsHevc = supportsHevc, .enableHdr = enableHdr, .hevcBitratePercentageMultiplier = hevcBitratePercentageMultiplier, - .clientRefreshRateX100 = clientRefreshRateX100 + .clientRefreshRateX100 = clientRefreshRateX100, + .encryptionFlags = encryptionFlags, }; jbyte* riAesKeyBuf = (*env)->GetByteArrayElements(env, riAesKey, NULL); diff --git a/app/src/main/jni/moonlight-core/moonlight-common-c b/app/src/main/jni/moonlight-core/moonlight-common-c index 221af829..13041e03 160000 --- a/app/src/main/jni/moonlight-core/moonlight-common-c +++ b/app/src/main/jni/moonlight-core/moonlight-common-c @@ -1 +1 @@ -Subproject commit 221af8295064b24222dee7a42fff179e89ec9a0f +Subproject commit 13041e0323685ff1b2ccade347cb1de850286d23