Index: webrtc/sdk/android/src/jni/peerconnection_jni.cc |
diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc |
index da552997758ae04e9e1cd15939e88ad446b7d74c..7a338d2121f689a35157e9ee3a77c4ab63ca1894 100644 |
--- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc |
+++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc |
@@ -2267,8 +2267,12 @@ static void JavaRtpParametersToJsepRtpParameters( |
GetFieldID(jni, j_encoding_parameters_class, "active", "Z"); |
jfieldID bitrate_id = GetFieldID(jni, j_encoding_parameters_class, |
"maxBitrateBps", "Ljava/lang/Integer;"); |
+ jfieldID ssrc_id = |
+ GetFieldID(jni, j_encoding_parameters_class, "ssrc", "Ljava/lang/Long;"); |
jclass j_integer_class = jni->FindClass("java/lang/Integer"); |
+ jclass j_long_class = jni->FindClass("java/lang/Long"); |
jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I"); |
+ jmethodID long_value_id = GetMethodID(jni, j_long_class, "longValue", "()J"); |
for (jobject j_encoding_parameters : Iterable(jni, j_encodings)) { |
webrtc::RtpEncodingParameters encoding; |
@@ -2282,6 +2286,13 @@ static void JavaRtpParametersToJsepRtpParameters( |
} else { |
encoding.max_bitrate_bps = kBitrateUnlimited; |
} |
+ jobject j_ssrc = |
+ GetNullableObjectField(jni, j_encoding_parameters, ssrc_id); |
+ if (!IsNull(jni, j_ssrc)) { |
+ jlong ssrc_value = jni->CallLongMethod(j_ssrc, long_value_id); |
+ CHECK_EXCEPTION(jni) << "error during CallLongMethod"; |
+ encoding.ssrc = rtc::Optional<uint32_t>(ssrc_value); |
+ } |
parameters->encodings.push_back(encoding); |
} |
@@ -2326,9 +2337,13 @@ static jobject JsepRtpParametersToJavaRtpParameters( |
GetFieldID(jni, encoding_class, "active", "Z"); |
jfieldID bitrate_id = |
GetFieldID(jni, encoding_class, "maxBitrateBps", "Ljava/lang/Integer;"); |
+ jfieldID ssrc_id = |
+ GetFieldID(jni, encoding_class, "ssrc", "Ljava/lang/Long;"); |
jclass integer_class = jni->FindClass("java/lang/Integer"); |
+ jclass long_class = jni->FindClass("java/lang/Long"); |
jmethodID integer_ctor = GetMethodID(jni, integer_class, "<init>", "(I)V"); |
+ jmethodID long_ctor = GetMethodID(jni, long_class, "<init>", "(J)V"); |
for (const webrtc::RtpEncodingParameters& encoding : parameters.encodings) { |
jobject j_encoding_parameters = |
@@ -2343,6 +2358,13 @@ static jobject JsepRtpParametersToJavaRtpParameters( |
jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value); |
CHECK_EXCEPTION(jni) << "error during SetObjectField"; |
} |
+ if (encoding.ssrc) { |
+ jobject j_ssrc_value = jni->NewObject(long_class, long_ctor, |
+ static_cast<jlong>(*encoding.ssrc)); |
+ CHECK_EXCEPTION(jni) << "error during NewObject"; |
+ jni->SetObjectField(j_encoding_parameters, ssrc_id, j_ssrc_value); |
+ CHECK_EXCEPTION(jni) << "error during SetObjectField"; |
+ } |
jboolean added = jni->CallBooleanMethod(j_encodings, encodings_add, |
j_encoding_parameters); |
CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; |