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

Unified Diff: webrtc/api/java/jni/peerconnection_jni.cc

Issue 1917193008: Adding getParameters/setParameters APIs to RtpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: objc compile errors Created 4 years, 7 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
« no previous file with comments | « no previous file | webrtc/api/java/src/org/webrtc/RtpReceiver.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/java/jni/peerconnection_jni.cc
diff --git a/webrtc/api/java/jni/peerconnection_jni.cc b/webrtc/api/java/jni/peerconnection_jni.cc
index 09e8db24e791f31e566d13f6a3650791b14ac342..6c5ba976800aea1064b8cd782671da5b6a67a554 100644
--- a/webrtc/api/java/jni/peerconnection_jni.cc
+++ b/webrtc/api/java/jni/peerconnection_jni.cc
@@ -2031,10 +2031,19 @@ JOW(jlong, RtpSender_nativeGetTrack)(JNIEnv* jni,
.release());
}
-static bool JavaEncodingToJsepRtpEncodingParameters(
+static void JavaRtpParametersToJsepRtpParameters(
JNIEnv* jni,
- jobject j_encodings,
- std::vector<webrtc::RtpEncodingParameters>* encodings) {
+ jobject j_parameters,
+ webrtc::RtpParameters* parameters) {
+ RTC_CHECK(parameters != nullptr);
+ jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
+ jfieldID encodings_id =
+ GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
+ jfieldID codecs_id =
+ GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
+
+ // Convert encodings.
+ jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
const int kBitrateUnlimited = -1;
jclass j_encoding_parameters_class =
jni->FindClass("org/webrtc/RtpParameters$Encoding");
@@ -2057,15 +2066,11 @@ static bool JavaEncodingToJsepRtpEncodingParameters(
} else {
encoding.max_bitrate_bps = kBitrateUnlimited;
}
- encodings->push_back(encoding);
+ parameters->encodings.push_back(encoding);
}
- return true;
-}
-static bool JavaCodecToJsepRtpCodecParameters(
- JNIEnv* jni,
- jobject j_codecs,
- std::vector<webrtc::RtpCodecParameters>* codecs) {
+ // Convert codecs.
+ jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id);
jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec");
jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I");
jfieldID mime_type_id =
@@ -2080,45 +2085,20 @@ static bool JavaCodecToJsepRtpCodecParameters(
JavaToStdString(jni, GetStringField(jni, j_codec, mime_type_id));
codec.clock_rate = GetIntField(jni, j_codec, clock_rate_id);
codec.channels = GetIntField(jni, j_codec, channels_id);
- codecs->push_back(codec);
+ parameters->codecs.push_back(codec);
}
- return true;
}
-JOW(jboolean, RtpSender_nativeSetParameters)
-(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
- if (IsNull(jni, j_parameters)) {
- return false;
- }
- jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
- jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding");
- jfieldID encodings_id =
- GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
- jfieldID codecs_id =
- GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
-
- jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
- jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id);
- webrtc::RtpParameters parameters;
- JavaEncodingToJsepRtpEncodingParameters(jni, j_encodings,
- &parameters.encodings);
- JavaCodecToJsepRtpCodecParameters(jni, j_codecs, &parameters.codecs);
- return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
- ->SetParameters(parameters);
-}
-
-JOW(jobject, RtpSender_nativeGetParameters)
-(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
- webrtc::RtpParameters parameters =
- reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
- ->GetParameters();
-
+static jobject JsepRtpParametersToJavaRtpParameters(
+ JNIEnv* jni,
+ const webrtc::RtpParameters& parameters) {
jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
jmethodID parameters_ctor =
GetMethodID(jni, parameters_class, "<init>", "()V");
jobject j_parameters = jni->NewObject(parameters_class, parameters_ctor);
CHECK_EXCEPTION(jni) << "error during NewObject";
+ // Add encodings.
jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding");
jmethodID encoding_ctor = GetMethodID(jni, encoding_class, "<init>", "()V");
jfieldID encodings_id =
@@ -2153,6 +2133,7 @@ JOW(jobject, RtpSender_nativeGetParameters)
RTC_CHECK(added);
}
+ // Add codecs.
jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec");
jmethodID codec_ctor = GetMethodID(jni, codec_class, "<init>", "()V");
jfieldID codecs_id =
@@ -2186,6 +2167,25 @@ JOW(jobject, RtpSender_nativeGetParameters)
return j_parameters;
}
+JOW(jboolean, RtpSender_nativeSetParameters)
+(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
+ if (IsNull(jni, j_parameters)) {
+ return false;
+ }
+ webrtc::RtpParameters parameters;
+ JavaRtpParametersToJsepRtpParameters(jni, j_parameters, &parameters);
+ return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
+ ->SetParameters(parameters);
+}
+
+JOW(jobject, RtpSender_nativeGetParameters)
+(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
+ webrtc::RtpParameters parameters =
+ reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
+ ->GetParameters();
+ return JsepRtpParametersToJavaRtpParameters(jni, parameters);
+}
+
JOW(jstring, RtpSender_nativeId)(
JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
return JavaStringFromStdString(
@@ -2206,6 +2206,25 @@ JOW(jlong, RtpReceiver_nativeGetTrack)(JNIEnv* jni,
.release());
}
+JOW(jboolean, RtpReceiver_nativeSetParameters)
+(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
+ if (IsNull(jni, j_parameters)) {
+ return false;
+ }
+ webrtc::RtpParameters parameters;
+ JavaRtpParametersToJsepRtpParameters(jni, j_parameters, &parameters);
+ return reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
+ ->SetParameters(parameters);
+}
+
+JOW(jobject, RtpReceiver_nativeGetParameters)
+(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
+ webrtc::RtpParameters parameters =
+ reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
+ ->GetParameters();
+ return JsepRtpParametersToJavaRtpParameters(jni, parameters);
+}
+
JOW(jstring, RtpReceiver_nativeId)(
JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
return JavaStringFromStdString(
« no previous file with comments | « no previous file | webrtc/api/java/src/org/webrtc/RtpReceiver.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698