diff --git a/sdk/android/api/org/webrtc/RtpParameters.java b/sdk/android/api/org/webrtc/RtpParameters.java index 087936e491..5c8c657bb3 100644 --- a/sdk/android/api/org/webrtc/RtpParameters.java +++ b/sdk/android/api/org/webrtc/RtpParameters.java @@ -34,17 +34,21 @@ public class RtpParameters { // 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 @@ public class RtpParameters { 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 f1e2792797..1a3a006362 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java @@ -854,9 +854,11 @@ public class PeerConnectionTest { 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 @@ public class PeerConnectionTest { 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 d547d36f05..b47ef720eb 100644 --- a/sdk/android/src/jni/pc/rtpparameters.cc +++ b/sdk/android/src/jni/pc/rtpparameters.cc @@ -26,6 +26,7 @@ ScopedJavaLocalRef NativeToJavaRtpEncodingParameter( 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 @@ RtpEncodingParameters JavaToNativeRtpEncodingParameters( ScopedJavaLocalRef j_min_bitrate = Java_Encoding_getMinBitrateBps(jni, j_encoding_parameters); encoding.min_bitrate_bps = JavaToNativeOptionalInt(jni, j_min_bitrate); + ScopedJavaLocalRef j_max_framerate = + Java_Encoding_getMaxFramerate(jni, j_encoding_parameters); + encoding.max_framerate = JavaToNativeOptionalInt(jni, j_max_framerate); ScopedJavaLocalRef j_ssrc = Java_Encoding_getSsrc(jni, j_encoding_parameters); if (!IsNull(jni, j_ssrc))