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

Side by Side 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: Adding nil check and removing unneeded methods. 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 2009 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 JOW(jlong, RtpSender_nativeGetTrack)(JNIEnv* jni, 2020 JOW(jlong, RtpSender_nativeGetTrack)(JNIEnv* jni,
2021 jclass, 2021 jclass,
2022 jlong j_rtp_sender_pointer, 2022 jlong j_rtp_sender_pointer,
2023 jlong j_track_pointer) { 2023 jlong j_track_pointer) {
2024 return jlongFromPointer( 2024 return jlongFromPointer(
2025 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) 2025 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
2026 ->track() 2026 ->track()
2027 .release()); 2027 .release());
2028 } 2028 }
2029 2029
2030 static bool JavaEncodingToJsepRtpEncodingParameters( 2030 static void JavaRtpParametersToJsepRtpParameters(
2031 JNIEnv* jni, 2031 JNIEnv* jni,
2032 jobject j_encodings, 2032 jobject j_parameters,
2033 std::vector<webrtc::RtpEncodingParameters>* encodings) { 2033 webrtc::RtpParameters* parameters) {
2034 RTC_CHECK(parameters != nullptr);
2035 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
2036 jfieldID encodings_id =
2037 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
2038 jfieldID codecs_id =
2039 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
2040
2041 // Convert encodings.
2042 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
2034 const int kBitrateUnlimited = -1; 2043 const int kBitrateUnlimited = -1;
2035 jclass j_encoding_parameters_class = 2044 jclass j_encoding_parameters_class =
2036 jni->FindClass("org/webrtc/RtpParameters$Encoding"); 2045 jni->FindClass("org/webrtc/RtpParameters$Encoding");
2037 jfieldID active_id = 2046 jfieldID active_id =
2038 GetFieldID(jni, j_encoding_parameters_class, "active", "Z"); 2047 GetFieldID(jni, j_encoding_parameters_class, "active", "Z");
2039 jfieldID bitrate_id = GetFieldID(jni, j_encoding_parameters_class, 2048 jfieldID bitrate_id = GetFieldID(jni, j_encoding_parameters_class,
2040 "maxBitrateBps", "Ljava/lang/Integer;"); 2049 "maxBitrateBps", "Ljava/lang/Integer;");
2041 jclass j_integer_class = jni->FindClass("java/lang/Integer"); 2050 jclass j_integer_class = jni->FindClass("java/lang/Integer");
2042 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I"); 2051 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I");
2043 2052
2044 for (jobject j_encoding_parameters : Iterable(jni, j_encodings)) { 2053 for (jobject j_encoding_parameters : Iterable(jni, j_encodings)) {
2045 webrtc::RtpEncodingParameters encoding; 2054 webrtc::RtpEncodingParameters encoding;
2046 encoding.active = GetBooleanField(jni, j_encoding_parameters, active_id); 2055 encoding.active = GetBooleanField(jni, j_encoding_parameters, active_id);
2047 jobject j_bitrate = 2056 jobject j_bitrate =
2048 GetNullableObjectField(jni, j_encoding_parameters, bitrate_id); 2057 GetNullableObjectField(jni, j_encoding_parameters, bitrate_id);
2049 if (!IsNull(jni, j_bitrate)) { 2058 if (!IsNull(jni, j_bitrate)) {
2050 int bitrate_value = jni->CallIntMethod(j_bitrate, int_value_id); 2059 int bitrate_value = jni->CallIntMethod(j_bitrate, int_value_id);
2051 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; 2060 CHECK_EXCEPTION(jni) << "error during CallIntMethod";
2052 encoding.max_bitrate_bps = bitrate_value; 2061 encoding.max_bitrate_bps = bitrate_value;
2053 } else { 2062 } else {
2054 encoding.max_bitrate_bps = kBitrateUnlimited; 2063 encoding.max_bitrate_bps = kBitrateUnlimited;
2055 } 2064 }
2056 encodings->push_back(encoding); 2065 parameters->encodings.push_back(encoding);
2057 } 2066 }
2058 return true;
2059 }
2060 2067
2061 static bool JavaCodecToJsepRtpCodecParameters( 2068 // Convert codecs.
2062 JNIEnv* jni, 2069 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id);
2063 jobject j_codecs,
2064 std::vector<webrtc::RtpCodecParameters>* codecs) {
2065 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec"); 2070 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec");
2066 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); 2071 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I");
2067 jfieldID mime_type_id = 2072 jfieldID mime_type_id =
2068 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;"); 2073 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;");
2069 jfieldID clock_rate_id = GetFieldID(jni, codec_class, "clockRate", "I"); 2074 jfieldID clock_rate_id = GetFieldID(jni, codec_class, "clockRate", "I");
2070 jfieldID channels_id = GetFieldID(jni, codec_class, "channels", "I"); 2075 jfieldID channels_id = GetFieldID(jni, codec_class, "channels", "I");
2071 2076
2072 for (jobject j_codec : Iterable(jni, j_codecs)) { 2077 for (jobject j_codec : Iterable(jni, j_codecs)) {
2073 webrtc::RtpCodecParameters codec; 2078 webrtc::RtpCodecParameters codec;
2074 codec.payload_type = GetIntField(jni, j_codec, payload_type_id); 2079 codec.payload_type = GetIntField(jni, j_codec, payload_type_id);
2075 codec.mime_type = 2080 codec.mime_type =
2076 JavaToStdString(jni, GetStringField(jni, j_codec, mime_type_id)); 2081 JavaToStdString(jni, GetStringField(jni, j_codec, mime_type_id));
2077 codec.clock_rate = GetIntField(jni, j_codec, clock_rate_id); 2082 codec.clock_rate = GetIntField(jni, j_codec, clock_rate_id);
2078 codec.channels = GetIntField(jni, j_codec, channels_id); 2083 codec.channels = GetIntField(jni, j_codec, channels_id);
2079 codecs->push_back(codec); 2084 parameters->codecs.push_back(codec);
2080 } 2085 }
2081 return true;
2082 } 2086 }
2083 2087
2084 JOW(jboolean, RtpSender_nativeSetParameters) 2088 static jobject JsepRtpParametersToJavaRtpParameters(
2085 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) { 2089 JNIEnv* jni,
2086 if (IsNull(jni, j_parameters)) { 2090 const webrtc::RtpParameters& parameters) {
2087 return false;
2088 }
2089 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
2090 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding");
2091 jfieldID encodings_id =
2092 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
2093 jfieldID codecs_id =
2094 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
2095
2096 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
2097 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id);
2098 webrtc::RtpParameters parameters;
2099 JavaEncodingToJsepRtpEncodingParameters(jni, j_encodings,
2100 &parameters.encodings);
2101 JavaCodecToJsepRtpCodecParameters(jni, j_codecs, &parameters.codecs);
2102 return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
2103 ->SetParameters(parameters);
2104 }
2105
2106 JOW(jobject, RtpSender_nativeGetParameters)
2107 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
2108 webrtc::RtpParameters parameters =
2109 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
2110 ->GetParameters();
2111
2112 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters"); 2091 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
2113 jmethodID parameters_ctor = 2092 jmethodID parameters_ctor =
2114 GetMethodID(jni, parameters_class, "<init>", "()V"); 2093 GetMethodID(jni, parameters_class, "<init>", "()V");
2115 jobject j_parameters = jni->NewObject(parameters_class, parameters_ctor); 2094 jobject j_parameters = jni->NewObject(parameters_class, parameters_ctor);
2116 CHECK_EXCEPTION(jni) << "error during NewObject"; 2095 CHECK_EXCEPTION(jni) << "error during NewObject";
2117 2096
2097 // Add encodings.
2118 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding"); 2098 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding");
2119 jmethodID encoding_ctor = GetMethodID(jni, encoding_class, "<init>", "()V"); 2099 jmethodID encoding_ctor = GetMethodID(jni, encoding_class, "<init>", "()V");
2120 jfieldID encodings_id = 2100 jfieldID encodings_id =
2121 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;"); 2101 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
2122 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id); 2102 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
2123 jmethodID encodings_add = GetMethodID(jni, GetObjectClass(jni, j_encodings), 2103 jmethodID encodings_add = GetMethodID(jni, GetObjectClass(jni, j_encodings),
2124 "add", "(Ljava/lang/Object;)Z"); 2104 "add", "(Ljava/lang/Object;)Z");
2125 jfieldID active_id = 2105 jfieldID active_id =
2126 GetFieldID(jni, encoding_class, "active", "Z"); 2106 GetFieldID(jni, encoding_class, "active", "Z");
2127 jfieldID bitrate_id = 2107 jfieldID bitrate_id =
(...skipping 14 matching lines...) Expand all
2142 CHECK_EXCEPTION(jni) << "error during NewObject"; 2122 CHECK_EXCEPTION(jni) << "error during NewObject";
2143 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value); 2123 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value);
2144 CHECK_EXCEPTION(jni) << "error during SetObjectField"; 2124 CHECK_EXCEPTION(jni) << "error during SetObjectField";
2145 } 2125 }
2146 jboolean added = jni->CallBooleanMethod(j_encodings, encodings_add, 2126 jboolean added = jni->CallBooleanMethod(j_encodings, encodings_add,
2147 j_encoding_parameters); 2127 j_encoding_parameters);
2148 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; 2128 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod";
2149 RTC_CHECK(added); 2129 RTC_CHECK(added);
2150 } 2130 }
2151 2131
2132 // Add codecs.
2152 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec"); 2133 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec");
2153 jmethodID codec_ctor = GetMethodID(jni, codec_class, "<init>", "()V"); 2134 jmethodID codec_ctor = GetMethodID(jni, codec_class, "<init>", "()V");
2154 jfieldID codecs_id = 2135 jfieldID codecs_id =
2155 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;"); 2136 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
2156 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id); 2137 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id);
2157 jmethodID codecs_add = GetMethodID(jni, GetObjectClass(jni, j_codecs), 2138 jmethodID codecs_add = GetMethodID(jni, GetObjectClass(jni, j_codecs),
2158 "add", "(Ljava/lang/Object;)Z"); 2139 "add", "(Ljava/lang/Object;)Z");
2159 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); 2140 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I");
2160 jfieldID mime_type_id = 2141 jfieldID mime_type_id =
2161 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;"); 2142 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;");
(...skipping 13 matching lines...) Expand all
2175 jni->SetIntField(j_codec, channels_id, codec.channels); 2156 jni->SetIntField(j_codec, channels_id, codec.channels);
2176 CHECK_EXCEPTION(jni) << "error during SetIntField"; 2157 CHECK_EXCEPTION(jni) << "error during SetIntField";
2177 jboolean added = jni->CallBooleanMethod(j_codecs, codecs_add, j_codec); 2158 jboolean added = jni->CallBooleanMethod(j_codecs, codecs_add, j_codec);
2178 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; 2159 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod";
2179 RTC_CHECK(added); 2160 RTC_CHECK(added);
2180 } 2161 }
2181 2162
2182 return j_parameters; 2163 return j_parameters;
2183 } 2164 }
2184 2165
2166 JOW(jboolean, RtpSender_nativeSetParameters)
2167 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
2168 if (IsNull(jni, j_parameters)) {
2169 return false;
2170 }
2171 webrtc::RtpParameters parameters;
2172 JavaRtpParametersToJsepRtpParameters(jni, j_parameters, &parameters);
2173 return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
2174 ->SetParameters(parameters);
2175 }
2176
2177 JOW(jobject, RtpSender_nativeGetParameters)
2178 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
2179 webrtc::RtpParameters parameters =
2180 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
2181 ->GetParameters();
2182 return JsepRtpParametersToJavaRtpParameters(jni, parameters);
2183 }
2184
2185 JOW(jstring, RtpSender_nativeId)( 2185 JOW(jstring, RtpSender_nativeId)(
2186 JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { 2186 JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
2187 return JavaStringFromStdString( 2187 return JavaStringFromStdString(
2188 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id()); 2188 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id());
2189 } 2189 }
2190 2190
2191 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { 2191 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
2192 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->Release(); 2192 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->Release();
2193 } 2193 }
2194 2194
2195 JOW(jlong, RtpReceiver_nativeGetTrack)(JNIEnv* jni, 2195 JOW(jlong, RtpReceiver_nativeGetTrack)(JNIEnv* jni,
2196 jclass, 2196 jclass,
2197 jlong j_rtp_receiver_pointer, 2197 jlong j_rtp_receiver_pointer,
2198 jlong j_track_pointer) { 2198 jlong j_track_pointer) {
2199 return jlongFromPointer( 2199 return jlongFromPointer(
2200 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer) 2200 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)
2201 ->track() 2201 ->track()
2202 .release()); 2202 .release());
2203 } 2203 }
2204 2204
2205 JOW(jboolean, RtpReceiver_nativeSetParameters)
2206 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
2207 if (IsNull(jni, j_parameters)) {
2208 return false;
2209 }
2210 webrtc::RtpParameters parameters;
2211 JavaRtpParametersToJsepRtpParameters(jni, j_parameters, &parameters);
2212 return reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
2213 ->SetParameters(parameters);
2214 }
2215
2216 JOW(jobject, RtpReceiver_nativeGetParameters)
2217 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
2218 webrtc::RtpParameters parameters =
2219 reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
2220 ->GetParameters();
2221 return JsepRtpParametersToJavaRtpParameters(jni, parameters);
2222 }
2223
2205 JOW(jstring, RtpReceiver_nativeId)( 2224 JOW(jstring, RtpReceiver_nativeId)(
2206 JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2225 JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2207 return JavaStringFromStdString( 2226 return JavaStringFromStdString(
2208 jni, 2227 jni,
2209 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); 2228 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
2210 } 2229 }
2211 2230
2212 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2231 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2213 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); 2232 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
2214 } 2233 }
2215 2234
2216 } // namespace webrtc_jni 2235 } // namespace webrtc_jni
OLDNEW
« no previous file with comments | « no previous file | webrtc/api/java/src/org/webrtc/RtpReceiver.java » ('j') | webrtc/api/mediastreamprovider.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698