Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(626)

Unified Diff: webrtc/sdk/android/src/jni/peerconnection_jni.cc

Issue 2581913002: Adding Java and Obj-C bindings for RtpEncodingParameters.ssrc. (Closed)
Patch Set: Make ssrc property readonly. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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";
« no previous file with comments | « webrtc/sdk/android/api/org/webrtc/RtpParameters.java ('k') | webrtc/sdk/objc/Framework/Classes/RTCRtpEncodingParameters.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698