Add the ability for clients to reduce bitrate when HEVC is used

This commit is contained in:
Cameron Gutman 2017-09-25 21:38:43 -07:00
parent 1f504288cb
commit d237ceb1df
5 changed files with 17 additions and 2 deletions

View File

@ -247,7 +247,9 @@ public class NvConnection {
context.negotiatedFps, context.streamConfig.getBitrate(), context.negotiatedFps, context.streamConfig.getBitrate(),
context.streamConfig.getMaxPacketSize(), context.streamConfig.getMaxPacketSize(),
context.streamConfig.getRemote(), context.streamConfig.getAudioConfiguration(), context.streamConfig.getRemote(), context.streamConfig.getAudioConfiguration(),
context.streamConfig.getHevcSupported(), context.riKey.getEncoded(), ib.array(), context.streamConfig.getHevcSupported(),
context.streamConfig.getHevcBitratePercentageMultiplier(),
context.riKey.getEncoded(), ib.array(),
context.videoCapabilities); context.videoCapabilities);
} }
} }

View File

@ -25,6 +25,7 @@ public class StreamConfiguration {
private int audioChannelCount; private int audioChannelCount;
private int audioConfiguration; private int audioConfiguration;
private boolean supportsHevc; private boolean supportsHevc;
private int hevcBitratePercentageMultiplier;
public static class Builder { public static class Builder {
private StreamConfiguration config = new StreamConfiguration(); private StreamConfiguration config = new StreamConfiguration();
@ -75,6 +76,11 @@ public class StreamConfiguration {
return this; return this;
} }
public StreamConfiguration.Builder setHevcBitratePercentageMultiplier(int multiplier) {
config.hevcBitratePercentageMultiplier = multiplier;
return this;
}
public StreamConfiguration.Builder setAudioConfiguration(int audioConfig) { public StreamConfiguration.Builder setAudioConfiguration(int audioConfig) {
if (audioConfig == MoonBridge.AUDIO_CONFIGURATION_STEREO) { if (audioConfig == MoonBridge.AUDIO_CONFIGURATION_STEREO) {
config.audioChannelCount = CHANNEL_COUNT_STEREO; config.audioChannelCount = CHANNEL_COUNT_STEREO;
@ -173,4 +179,8 @@ public class StreamConfiguration {
public boolean getHevcSupported() { public boolean getHevcSupported() {
return supportsHevc; return supportsHevc;
} }
public int getHevcBitratePercentageMultiplier() {
return hevcBitratePercentageMultiplier;
}
} }

View File

@ -160,6 +160,7 @@ public class MoonBridge {
int width, int height, int fps, int width, int height, int fps,
int bitrate, int packetSize, boolean streamingRemotely, int bitrate, int packetSize, boolean streamingRemotely,
int audioConfiguration, boolean supportsHevc, int audioConfiguration, boolean supportsHevc,
int hevcBitratePercentageMultiplier,
byte[] riAesKey, byte[] riAesIv, byte[] riAesKey, byte[] riAesIv,
int videoCapabilities); int videoCapabilities);

View File

@ -382,6 +382,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jobject
jint width, jint height, jint fps, jint width, jint height, jint fps,
jint bitrate, jint packetSize, jboolean streamingRemotely, jint bitrate, jint packetSize, jboolean streamingRemotely,
jint audioConfiguration, jboolean supportsHevc, jint audioConfiguration, jboolean supportsHevc,
jint hevcBitratePercentageMultiplier,
jbyteArray riAesKey, jbyteArray riAesIv, jbyteArray riAesKey, jbyteArray riAesIv,
jint videoCapabilities) { jint videoCapabilities) {
SERVER_INFORMATION serverInfo = { SERVER_INFORMATION serverInfo = {
@ -398,6 +399,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jobject
.streamingRemotely = streamingRemotely, .streamingRemotely = streamingRemotely,
.audioConfiguration = audioConfiguration, .audioConfiguration = audioConfiguration,
.supportsHevc = supportsHevc, .supportsHevc = supportsHevc,
.hevcBitratePercentageMultiplier = hevcBitratePercentageMultiplier,
}; };
jbyte* riAesKeyBuf = (*env)->GetByteArrayElements(env, riAesKey, NULL); jbyte* riAesKeyBuf = (*env)->GetByteArrayElements(env, riAesKey, NULL);

@ -1 +1 @@
Subproject commit 957b1de1ad2a0beea442aeecd943ff6caa25df30 Subproject commit c0596ad1df9828d5ede020681317494405188821