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))