Android: Add maxFramerate to RtpParameters.
Bug: webrtc:9597
Change-Id: I1049b66860abbd69c4822756dee452b0db459ed4
Reviewed-on: https://webrtc-review.googlesource.com/91440
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24789}
diff --git a/sdk/android/api/org/webrtc/RtpParameters.java b/sdk/android/api/org/webrtc/RtpParameters.java
index 087936e..5c8c657 100644
--- a/sdk/android/api/org/webrtc/RtpParameters.java
+++ b/sdk/android/api/org/webrtc/RtpParameters.java
@@ -34,17 +34,21 @@
// Specific maximum bandwidth defined in RFC3890. If null, there is no
// maximum bitrate.
@Nullable public Integer maxBitrateBps;
- // Not implemented.
+ // The minimum bitrate in bps for video.
@Nullable public Integer minBitrateBps;
+ // The max framerate in fps for video.
+ @Nullable public Integer maxFramerate;
// SSRC to be used by this encoding.
// Can't be changed between getParameters/setParameters.
public Long ssrc;
@CalledByNative("Encoding")
- Encoding(boolean active, Integer maxBitrateBps, Integer minBitrateBps, Long ssrc) {
+ Encoding(boolean active, Integer maxBitrateBps, Integer minBitrateBps, Integer maxFramerate,
+ Long ssrc) {
this.active = active;
this.maxBitrateBps = maxBitrateBps;
this.minBitrateBps = minBitrateBps;
+ this.maxFramerate = maxFramerate;
this.ssrc = ssrc;
}
@@ -65,6 +69,12 @@
return minBitrateBps;
}
+ @Nullable
+ @CalledByNative("Encoding")
+ Integer getMaxFramerate() {
+ return maxFramerate;
+ }
+
@CalledByNative("Encoding")
Long getSsrc() {
return ssrc;
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
index f1e2792..1a3a006 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java
@@ -854,9 +854,11 @@
assertEquals(1, rtpParameters.encodings.size());
assertNull(rtpParameters.encodings.get(0).maxBitrateBps);
assertNull(rtpParameters.encodings.get(0).minBitrateBps);
+ assertNull(rtpParameters.encodings.get(0).maxFramerate);
rtpParameters.encodings.get(0).maxBitrateBps = 300000;
rtpParameters.encodings.get(0).minBitrateBps = 100000;
+ rtpParameters.encodings.get(0).maxFramerate = 20;
assertTrue(videoSender.setParameters(rtpParameters));
// Create a DTMF sender.
@@ -869,6 +871,7 @@
rtpParameters = videoSender.getParameters();
assertEquals(300000, (int) rtpParameters.encodings.get(0).maxBitrateBps);
assertEquals(100000, (int) rtpParameters.encodings.get(0).minBitrateBps);
+ assertEquals(20, (int) rtpParameters.encodings.get(0).maxFramerate);
// Test send & receive UTF-8 text.
answeringExpectations.expectMessage(
diff --git a/sdk/android/src/jni/pc/rtpparameters.cc b/sdk/android/src/jni/pc/rtpparameters.cc
index d547d36..b47ef72 100644
--- a/sdk/android/src/jni/pc/rtpparameters.cc
+++ b/sdk/android/src/jni/pc/rtpparameters.cc
@@ -26,6 +26,7 @@
return Java_Encoding_Constructor(
env, encoding.active, NativeToJavaInteger(env, encoding.max_bitrate_bps),
NativeToJavaInteger(env, encoding.min_bitrate_bps),
+ NativeToJavaInteger(env, encoding.max_framerate),
encoding.ssrc ? NativeToJavaLong(env, *encoding.ssrc) : nullptr);
}
@@ -68,6 +69,9 @@
ScopedJavaLocalRef<jobject> j_min_bitrate =
Java_Encoding_getMinBitrateBps(jni, j_encoding_parameters);
encoding.min_bitrate_bps = JavaToNativeOptionalInt(jni, j_min_bitrate);
+ ScopedJavaLocalRef<jobject> j_max_framerate =
+ Java_Encoding_getMaxFramerate(jni, j_encoding_parameters);
+ encoding.max_framerate = JavaToNativeOptionalInt(jni, j_max_framerate);
ScopedJavaLocalRef<jobject> j_ssrc =
Java_Encoding_getSsrc(jni, j_encoding_parameters);
if (!IsNull(jni, j_ssrc))