Enable audio stream encryption

This commit is contained in:
Cameron Gutman 2021-04-23 19:38:24 -05:00
parent 544eac0c8a
commit 72f37c9df4
6 changed files with 27 additions and 3 deletions

View File

@ -473,6 +473,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
.setAttachedGamepadMask(gamepadMask) .setAttachedGamepadMask(gamepadMask)
.setClientRefreshRateX100((int)(displayRefreshRate * 100)) .setClientRefreshRateX100((int)(displayRefreshRate * 100))
.setAudioConfiguration(prefConfig.audioConfiguration) .setAudioConfiguration(prefConfig.audioConfiguration)
.setAudioEncryption(true)
.build(); .build();
// Initialize the connection // Initialize the connection

View File

@ -284,6 +284,7 @@ public class NvConnection {
context.negotiatedHdr, context.negotiatedHdr,
context.streamConfig.getHevcBitratePercentageMultiplier(), context.streamConfig.getHevcBitratePercentageMultiplier(),
context.streamConfig.getClientRefreshRateX100(), context.streamConfig.getClientRefreshRateX100(),
context.streamConfig.getEncryptionFlags(),
context.riKey.getEncoded(), ib.array(), context.riKey.getEncoded(), ib.array(),
context.videoCapabilities); context.videoCapabilities);
if (ret != 0) { if (ret != 0) {

View File

@ -26,6 +26,7 @@ public class StreamConfiguration {
private int hevcBitratePercentageMultiplier; private int hevcBitratePercentageMultiplier;
private boolean enableHdr; private boolean enableHdr;
private int attachedGamepadMask; private int attachedGamepadMask;
private int encryptionFlags;
public static class Builder { public static class Builder {
private StreamConfiguration config = new StreamConfiguration(); private StreamConfiguration config = new StreamConfiguration();
@ -110,7 +111,17 @@ public class StreamConfiguration {
config.clientRefreshRateX100 = refreshRateX100; config.clientRefreshRateX100 = refreshRateX100;
return this; 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) { public StreamConfiguration.Builder setAudioConfiguration(MoonBridge.AudioConfiguration audioConfig) {
config.audioConfiguration = audioConfig; config.audioConfiguration = audioConfig;
return this; return this;
@ -211,4 +222,8 @@ public class StreamConfiguration {
public int getClientRefreshRateX100() { public int getClientRefreshRateX100() {
return clientRefreshRateX100; return clientRefreshRateX100;
} }
public int getEncryptionFlags() {
return encryptionFlags;
}
} }

View File

@ -18,6 +18,10 @@ public class MoonBridge {
public static final int VIDEO_FORMAT_MASK_H264 = 0x00FF; public static final int VIDEO_FORMAT_MASK_H264 = 0x00FF;
public static final int VIDEO_FORMAT_MASK_H265 = 0xFF00; 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_PICDATA = 0;
public static final int BUFFER_TYPE_SPS = 1; public static final int BUFFER_TYPE_SPS = 1;
public static final int BUFFER_TYPE_PPS = 2; public static final int BUFFER_TYPE_PPS = 2;
@ -255,6 +259,7 @@ public class MoonBridge {
boolean enableHdr, boolean enableHdr,
int hevcBitratePercentageMultiplier, int hevcBitratePercentageMultiplier,
int clientRefreshRateX100, int clientRefreshRateX100,
int encryptionFlags,
byte[] riAesKey, byte[] riAesIv, byte[] riAesKey, byte[] riAesIv,
int videoCapabilities); int videoCapabilities);

View File

@ -370,6 +370,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c
jboolean enableHdr, jboolean enableHdr,
jint hevcBitratePercentageMultiplier, jint hevcBitratePercentageMultiplier,
jint clientRefreshRateX100, jint clientRefreshRateX100,
jint encryptionFlags,
jbyteArray riAesKey, jbyteArray riAesIv, jbyteArray riAesKey, jbyteArray riAesIv,
jint videoCapabilities) { jint videoCapabilities) {
SERVER_INFORMATION serverInfo = { SERVER_INFORMATION serverInfo = {
@ -388,7 +389,8 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c
.supportsHevc = supportsHevc, .supportsHevc = supportsHevc,
.enableHdr = enableHdr, .enableHdr = enableHdr,
.hevcBitratePercentageMultiplier = hevcBitratePercentageMultiplier, .hevcBitratePercentageMultiplier = hevcBitratePercentageMultiplier,
.clientRefreshRateX100 = clientRefreshRateX100 .clientRefreshRateX100 = clientRefreshRateX100,
.encryptionFlags = encryptionFlags,
}; };
jbyte* riAesKeyBuf = (*env)->GetByteArrayElements(env, riAesKey, NULL); jbyte* riAesKeyBuf = (*env)->GetByteArrayElements(env, riAesKey, NULL);

@ -1 +1 @@
Subproject commit 221af8295064b24222dee7a42fff179e89ec9a0f Subproject commit 13041e0323685ff1b2ccade347cb1de850286d23