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

Side by Side Diff: webrtc/sdk/android/src/jni/pc/java_native_conversion.cc

Issue 3009613002: Android: Replace webrtc_jni namespace with nested jni namespace (Closed)
Patch Set: Rebase Created 3 years, 3 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 2017 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2017 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
11 #include "webrtc/sdk/android/src/jni/pc/java_native_conversion.h" 11 #include "webrtc/sdk/android/src/jni/pc/java_native_conversion.h"
12 12
13 #include <string> 13 #include <string>
14 14
15 #include "webrtc/pc/webrtcsdp.h" 15 #include "webrtc/pc/webrtcsdp.h"
16 #include "webrtc/sdk/android/src/jni/classreferenceholder.h" 16 #include "webrtc/sdk/android/src/jni/classreferenceholder.h"
17 17
18 namespace webrtc_jni { 18 namespace webrtc {
19 namespace jni {
19 20
20 webrtc::DataChannelInit JavaToNativeDataChannelInit(JNIEnv* jni, 21 DataChannelInit JavaToNativeDataChannelInit(JNIEnv* jni, jobject j_init) {
21 jobject j_init) { 22 DataChannelInit init;
22 webrtc::DataChannelInit init;
23 23
24 jclass j_init_class = FindClass(jni, "org/webrtc/DataChannel$Init"); 24 jclass j_init_class = FindClass(jni, "org/webrtc/DataChannel$Init");
25 jfieldID ordered_id = GetFieldID(jni, j_init_class, "ordered", "Z"); 25 jfieldID ordered_id = GetFieldID(jni, j_init_class, "ordered", "Z");
26 jfieldID max_retransmit_time_id = 26 jfieldID max_retransmit_time_id =
27 GetFieldID(jni, j_init_class, "maxRetransmitTimeMs", "I"); 27 GetFieldID(jni, j_init_class, "maxRetransmitTimeMs", "I");
28 jfieldID max_retransmits_id = 28 jfieldID max_retransmits_id =
29 GetFieldID(jni, j_init_class, "maxRetransmits", "I"); 29 GetFieldID(jni, j_init_class, "maxRetransmits", "I");
30 jfieldID protocol_id = 30 jfieldID protocol_id =
31 GetFieldID(jni, j_init_class, "protocol", "Ljava/lang/String;"); 31 GetFieldID(jni, j_init_class, "protocol", "Ljava/lang/String;");
32 jfieldID negotiated_id = GetFieldID(jni, j_init_class, "negotiated", "Z"); 32 jfieldID negotiated_id = GetFieldID(jni, j_init_class, "negotiated", "Z");
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 jclass j_candidate_class = GetObjectClass(jni, j_candidate); 86 jclass j_candidate_class = GetObjectClass(jni, j_candidate);
87 jfieldID j_sdp_mid_id = 87 jfieldID j_sdp_mid_id =
88 GetFieldID(jni, j_candidate_class, "sdpMid", "Ljava/lang/String;"); 88 GetFieldID(jni, j_candidate_class, "sdpMid", "Ljava/lang/String;");
89 std::string sdp_mid = 89 std::string sdp_mid =
90 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_mid_id)); 90 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_mid_id));
91 jfieldID j_sdp_id = 91 jfieldID j_sdp_id =
92 GetFieldID(jni, j_candidate_class, "sdp", "Ljava/lang/String;"); 92 GetFieldID(jni, j_candidate_class, "sdp", "Ljava/lang/String;");
93 std::string sdp = 93 std::string sdp =
94 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_id)); 94 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_id));
95 cricket::Candidate candidate; 95 cricket::Candidate candidate;
96 if (!webrtc::SdpDeserializeCandidate(sdp_mid, sdp, &candidate, NULL)) { 96 if (!SdpDeserializeCandidate(sdp_mid, sdp, &candidate, NULL)) {
97 LOG(LS_ERROR) << "SdpDescrializeCandidate failed with sdp " << sdp; 97 LOG(LS_ERROR) << "SdpDescrializeCandidate failed with sdp " << sdp;
98 } 98 }
99 return candidate; 99 return candidate;
100 } 100 }
101 101
102 jobject NativeToJavaCandidate(JNIEnv* jni, 102 jobject NativeToJavaCandidate(JNIEnv* jni,
103 jclass* candidate_class, 103 jclass* candidate_class,
104 const cricket::Candidate& candidate) { 104 const cricket::Candidate& candidate) {
105 std::string sdp = webrtc::SdpSerializeCandidate(candidate); 105 std::string sdp = SdpSerializeCandidate(candidate);
106 RTC_CHECK(!sdp.empty()) << "got an empty ICE candidate"; 106 RTC_CHECK(!sdp.empty()) << "got an empty ICE candidate";
107 jmethodID ctor = GetMethodID(jni, *candidate_class, "<init>", 107 jmethodID ctor = GetMethodID(jni, *candidate_class, "<init>",
108 "(Ljava/lang/String;ILjava/lang/String;)V"); 108 "(Ljava/lang/String;ILjava/lang/String;)V");
109 jstring j_mid = JavaStringFromStdString(jni, candidate.transport_name()); 109 jstring j_mid = JavaStringFromStdString(jni, candidate.transport_name());
110 jstring j_sdp = JavaStringFromStdString(jni, sdp); 110 jstring j_sdp = JavaStringFromStdString(jni, sdp);
111 // sdp_mline_index is not used, pass an invalid value -1. 111 // sdp_mline_index is not used, pass an invalid value -1.
112 jobject j_candidate = 112 jobject j_candidate =
113 jni->NewObject(*candidate_class, ctor, j_mid, -1, j_sdp); 113 jni->NewObject(*candidate_class, ctor, j_mid, -1, j_sdp);
114 CHECK_EXCEPTION(jni) << "error during Java Candidate NewObject"; 114 CHECK_EXCEPTION(jni) << "error during Java Candidate NewObject";
115 return j_candidate; 115 return j_candidate;
116 } 116 }
117 117
118 jobjectArray NativeToJavaCandidateArray( 118 jobjectArray NativeToJavaCandidateArray(
119 JNIEnv* jni, 119 JNIEnv* jni,
120 const std::vector<cricket::Candidate>& candidates) { 120 const std::vector<cricket::Candidate>& candidates) {
121 jclass candidate_class = FindClass(jni, "org/webrtc/IceCandidate"); 121 jclass candidate_class = FindClass(jni, "org/webrtc/IceCandidate");
122 jobjectArray java_candidates = 122 jobjectArray java_candidates =
123 jni->NewObjectArray(candidates.size(), candidate_class, NULL); 123 jni->NewObjectArray(candidates.size(), candidate_class, NULL);
124 int i = 0; 124 int i = 0;
125 for (const cricket::Candidate& candidate : candidates) { 125 for (const cricket::Candidate& candidate : candidates) {
126 jobject j_candidate = 126 jobject j_candidate =
127 NativeToJavaCandidate(jni, &candidate_class, candidate); 127 NativeToJavaCandidate(jni, &candidate_class, candidate);
128 jni->SetObjectArrayElement(java_candidates, i++, j_candidate); 128 jni->SetObjectArrayElement(java_candidates, i++, j_candidate);
129 } 129 }
130 return java_candidates; 130 return java_candidates;
131 } 131 }
132 132
133 webrtc::SessionDescriptionInterface* JavaToNativeSessionDescription( 133 SessionDescriptionInterface* JavaToNativeSessionDescription(JNIEnv* jni,
134 JNIEnv* jni, 134 jobject j_sdp) {
135 jobject j_sdp) {
136 jfieldID j_type_id = GetFieldID(jni, GetObjectClass(jni, j_sdp), "type", 135 jfieldID j_type_id = GetFieldID(jni, GetObjectClass(jni, j_sdp), "type",
137 "Lorg/webrtc/SessionDescription$Type;"); 136 "Lorg/webrtc/SessionDescription$Type;");
138 jobject j_type = GetObjectField(jni, j_sdp, j_type_id); 137 jobject j_type = GetObjectField(jni, j_sdp, j_type_id);
139 jmethodID j_canonical_form_id = 138 jmethodID j_canonical_form_id =
140 GetMethodID(jni, GetObjectClass(jni, j_type), "canonicalForm", 139 GetMethodID(jni, GetObjectClass(jni, j_type), "canonicalForm",
141 "()Ljava/lang/String;"); 140 "()Ljava/lang/String;");
142 jstring j_type_string = 141 jstring j_type_string =
143 (jstring)jni->CallObjectMethod(j_type, j_canonical_form_id); 142 (jstring)jni->CallObjectMethod(j_type, j_canonical_form_id);
144 CHECK_EXCEPTION(jni) << "error during CallObjectMethod"; 143 CHECK_EXCEPTION(jni) << "error during CallObjectMethod";
145 std::string std_type = JavaToStdString(jni, j_type_string); 144 std::string std_type = JavaToStdString(jni, j_type_string);
146 145
147 jfieldID j_description_id = GetFieldID(jni, GetObjectClass(jni, j_sdp), 146 jfieldID j_description_id = GetFieldID(jni, GetObjectClass(jni, j_sdp),
148 "description", "Ljava/lang/String;"); 147 "description", "Ljava/lang/String;");
149 jstring j_description = (jstring)GetObjectField(jni, j_sdp, j_description_id); 148 jstring j_description = (jstring)GetObjectField(jni, j_sdp, j_description_id);
150 std::string std_description = JavaToStdString(jni, j_description); 149 std::string std_description = JavaToStdString(jni, j_description);
151 150
152 return webrtc::CreateSessionDescription(std_type, std_description, NULL); 151 return CreateSessionDescription(std_type, std_description, NULL);
153 } 152 }
154 153
155 jobject NativeToJavaSessionDescription( 154 jobject NativeToJavaSessionDescription(
156 JNIEnv* jni, 155 JNIEnv* jni,
157 const webrtc::SessionDescriptionInterface* desc) { 156 const SessionDescriptionInterface* desc) {
158 std::string sdp; 157 std::string sdp;
159 RTC_CHECK(desc->ToString(&sdp)) << "got so far: " << sdp; 158 RTC_CHECK(desc->ToString(&sdp)) << "got so far: " << sdp;
160 jstring j_description = JavaStringFromStdString(jni, sdp); 159 jstring j_description = JavaStringFromStdString(jni, sdp);
161 160
162 jclass j_type_class = FindClass(jni, "org/webrtc/SessionDescription$Type"); 161 jclass j_type_class = FindClass(jni, "org/webrtc/SessionDescription$Type");
163 jmethodID j_type_from_canonical = GetStaticMethodID( 162 jmethodID j_type_from_canonical = GetStaticMethodID(
164 jni, j_type_class, "fromCanonicalForm", 163 jni, j_type_class, "fromCanonicalForm",
165 "(Ljava/lang/String;)Lorg/webrtc/SessionDescription$Type;"); 164 "(Ljava/lang/String;)Lorg/webrtc/SessionDescription$Type;");
166 jstring j_type_string = JavaStringFromStdString(jni, desc->type()); 165 jstring j_type_string = JavaStringFromStdString(jni, desc->type());
167 jobject j_type = jni->CallStaticObjectMethod( 166 jobject j_type = jni->CallStaticObjectMethod(
168 j_type_class, j_type_from_canonical, j_type_string); 167 j_type_class, j_type_from_canonical, j_type_string);
169 CHECK_EXCEPTION(jni) << "error during CallObjectMethod"; 168 CHECK_EXCEPTION(jni) << "error during CallObjectMethod";
170 169
171 jclass j_sdp_class = FindClass(jni, "org/webrtc/SessionDescription"); 170 jclass j_sdp_class = FindClass(jni, "org/webrtc/SessionDescription");
172 jmethodID j_sdp_ctor = 171 jmethodID j_sdp_ctor =
173 GetMethodID(jni, j_sdp_class, "<init>", 172 GetMethodID(jni, j_sdp_class, "<init>",
174 "(Lorg/webrtc/SessionDescription$Type;Ljava/lang/String;)V"); 173 "(Lorg/webrtc/SessionDescription$Type;Ljava/lang/String;)V");
175 jobject j_sdp = 174 jobject j_sdp =
176 jni->NewObject(j_sdp_class, j_sdp_ctor, j_type, j_description); 175 jni->NewObject(j_sdp_class, j_sdp_ctor, j_type, j_description);
177 CHECK_EXCEPTION(jni) << "error during NewObject"; 176 CHECK_EXCEPTION(jni) << "error during NewObject";
178 return j_sdp; 177 return j_sdp;
179 } 178 }
180 179
181 webrtc::PeerConnectionFactoryInterface::Options 180 PeerConnectionFactoryInterface::Options
182 JavaToNativePeerConnectionFactoryOptions(JNIEnv* jni, jobject options) { 181 JavaToNativePeerConnectionFactoryOptions(JNIEnv* jni, jobject options) {
183 jclass options_class = jni->GetObjectClass(options); 182 jclass options_class = jni->GetObjectClass(options);
184 jfieldID network_ignore_mask_field = 183 jfieldID network_ignore_mask_field =
185 jni->GetFieldID(options_class, "networkIgnoreMask", "I"); 184 jni->GetFieldID(options_class, "networkIgnoreMask", "I");
186 int network_ignore_mask = 185 int network_ignore_mask =
187 jni->GetIntField(options, network_ignore_mask_field); 186 jni->GetIntField(options, network_ignore_mask_field);
188 187
189 jfieldID disable_encryption_field = 188 jfieldID disable_encryption_field =
190 jni->GetFieldID(options_class, "disableEncryption", "Z"); 189 jni->GetFieldID(options_class, "disableEncryption", "Z");
191 bool disable_encryption = 190 bool disable_encryption =
192 jni->GetBooleanField(options, disable_encryption_field); 191 jni->GetBooleanField(options, disable_encryption_field);
193 192
194 jfieldID disable_network_monitor_field = 193 jfieldID disable_network_monitor_field =
195 jni->GetFieldID(options_class, "disableNetworkMonitor", "Z"); 194 jni->GetFieldID(options_class, "disableNetworkMonitor", "Z");
196 bool disable_network_monitor = 195 bool disable_network_monitor =
197 jni->GetBooleanField(options, disable_network_monitor_field); 196 jni->GetBooleanField(options, disable_network_monitor_field);
198 197
199 webrtc::PeerConnectionFactoryInterface::Options native_options; 198 PeerConnectionFactoryInterface::Options native_options;
200 199
201 // This doesn't necessarily match the c++ version of this struct; feel free 200 // This doesn't necessarily match the c++ version of this struct; feel free
202 // to add more parameters as necessary. 201 // to add more parameters as necessary.
203 native_options.network_ignore_mask = network_ignore_mask; 202 native_options.network_ignore_mask = network_ignore_mask;
204 native_options.disable_encryption = disable_encryption; 203 native_options.disable_encryption = disable_encryption;
205 native_options.disable_network_monitor = disable_network_monitor; 204 native_options.disable_network_monitor = disable_network_monitor;
206 return native_options; 205 return native_options;
207 } 206 }
208 207
209 webrtc::PeerConnectionInterface::IceTransportsType 208 PeerConnectionInterface::IceTransportsType JavaToNativeIceTransportsType(
210 JavaToNativeIceTransportsType(JNIEnv* jni, jobject j_ice_transports_type) { 209 JNIEnv* jni,
210 jobject j_ice_transports_type) {
211 std::string enum_name = 211 std::string enum_name =
212 GetJavaEnumName(jni, "org/webrtc/PeerConnection$IceTransportsType", 212 GetJavaEnumName(jni, "org/webrtc/PeerConnection$IceTransportsType",
213 j_ice_transports_type); 213 j_ice_transports_type);
214 214
215 if (enum_name == "ALL") 215 if (enum_name == "ALL")
216 return webrtc::PeerConnectionInterface::kAll; 216 return PeerConnectionInterface::kAll;
217 217
218 if (enum_name == "RELAY") 218 if (enum_name == "RELAY")
219 return webrtc::PeerConnectionInterface::kRelay; 219 return PeerConnectionInterface::kRelay;
220 220
221 if (enum_name == "NOHOST") 221 if (enum_name == "NOHOST")
222 return webrtc::PeerConnectionInterface::kNoHost; 222 return PeerConnectionInterface::kNoHost;
223 223
224 if (enum_name == "NONE") 224 if (enum_name == "NONE")
225 return webrtc::PeerConnectionInterface::kNone; 225 return PeerConnectionInterface::kNone;
226 226
227 RTC_CHECK(false) << "Unexpected IceTransportsType enum_name " << enum_name; 227 RTC_CHECK(false) << "Unexpected IceTransportsType enum_name " << enum_name;
228 return webrtc::PeerConnectionInterface::kAll; 228 return PeerConnectionInterface::kAll;
229 } 229 }
230 230
231 webrtc::PeerConnectionInterface::BundlePolicy JavaToNativeBundlePolicy( 231 PeerConnectionInterface::BundlePolicy JavaToNativeBundlePolicy(
232 JNIEnv* jni, 232 JNIEnv* jni,
233 jobject j_bundle_policy) { 233 jobject j_bundle_policy) {
234 std::string enum_name = GetJavaEnumName( 234 std::string enum_name = GetJavaEnumName(
235 jni, "org/webrtc/PeerConnection$BundlePolicy", j_bundle_policy); 235 jni, "org/webrtc/PeerConnection$BundlePolicy", j_bundle_policy);
236 236
237 if (enum_name == "BALANCED") 237 if (enum_name == "BALANCED")
238 return webrtc::PeerConnectionInterface::kBundlePolicyBalanced; 238 return PeerConnectionInterface::kBundlePolicyBalanced;
239 239
240 if (enum_name == "MAXBUNDLE") 240 if (enum_name == "MAXBUNDLE")
241 return webrtc::PeerConnectionInterface::kBundlePolicyMaxBundle; 241 return PeerConnectionInterface::kBundlePolicyMaxBundle;
242 242
243 if (enum_name == "MAXCOMPAT") 243 if (enum_name == "MAXCOMPAT")
244 return webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat; 244 return PeerConnectionInterface::kBundlePolicyMaxCompat;
245 245
246 RTC_CHECK(false) << "Unexpected BundlePolicy enum_name " << enum_name; 246 RTC_CHECK(false) << "Unexpected BundlePolicy enum_name " << enum_name;
247 return webrtc::PeerConnectionInterface::kBundlePolicyBalanced; 247 return PeerConnectionInterface::kBundlePolicyBalanced;
248 } 248 }
249 249
250 webrtc::PeerConnectionInterface::RtcpMuxPolicy JavaToNativeRtcpMuxPolicy( 250 PeerConnectionInterface::RtcpMuxPolicy JavaToNativeRtcpMuxPolicy(
251 JNIEnv* jni, 251 JNIEnv* jni,
252 jobject j_rtcp_mux_policy) { 252 jobject j_rtcp_mux_policy) {
253 std::string enum_name = GetJavaEnumName( 253 std::string enum_name = GetJavaEnumName(
254 jni, "org/webrtc/PeerConnection$RtcpMuxPolicy", j_rtcp_mux_policy); 254 jni, "org/webrtc/PeerConnection$RtcpMuxPolicy", j_rtcp_mux_policy);
255 255
256 if (enum_name == "NEGOTIATE") 256 if (enum_name == "NEGOTIATE")
257 return webrtc::PeerConnectionInterface::kRtcpMuxPolicyNegotiate; 257 return PeerConnectionInterface::kRtcpMuxPolicyNegotiate;
258 258
259 if (enum_name == "REQUIRE") 259 if (enum_name == "REQUIRE")
260 return webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire; 260 return PeerConnectionInterface::kRtcpMuxPolicyRequire;
261 261
262 RTC_CHECK(false) << "Unexpected RtcpMuxPolicy enum_name " << enum_name; 262 RTC_CHECK(false) << "Unexpected RtcpMuxPolicy enum_name " << enum_name;
263 return webrtc::PeerConnectionInterface::kRtcpMuxPolicyNegotiate; 263 return PeerConnectionInterface::kRtcpMuxPolicyNegotiate;
264 } 264 }
265 265
266 webrtc::PeerConnectionInterface::TcpCandidatePolicy 266 PeerConnectionInterface::TcpCandidatePolicy JavaToNativeTcpCandidatePolicy(
267 JavaToNativeTcpCandidatePolicy(JNIEnv* jni, jobject j_tcp_candidate_policy) { 267 JNIEnv* jni,
268 jobject j_tcp_candidate_policy) {
268 std::string enum_name = 269 std::string enum_name =
269 GetJavaEnumName(jni, "org/webrtc/PeerConnection$TcpCandidatePolicy", 270 GetJavaEnumName(jni, "org/webrtc/PeerConnection$TcpCandidatePolicy",
270 j_tcp_candidate_policy); 271 j_tcp_candidate_policy);
271 272
272 if (enum_name == "ENABLED") 273 if (enum_name == "ENABLED")
273 return webrtc::PeerConnectionInterface::kTcpCandidatePolicyEnabled; 274 return PeerConnectionInterface::kTcpCandidatePolicyEnabled;
274 275
275 if (enum_name == "DISABLED") 276 if (enum_name == "DISABLED")
276 return webrtc::PeerConnectionInterface::kTcpCandidatePolicyDisabled; 277 return PeerConnectionInterface::kTcpCandidatePolicyDisabled;
277 278
278 RTC_CHECK(false) << "Unexpected TcpCandidatePolicy enum_name " << enum_name; 279 RTC_CHECK(false) << "Unexpected TcpCandidatePolicy enum_name " << enum_name;
279 return webrtc::PeerConnectionInterface::kTcpCandidatePolicyEnabled; 280 return PeerConnectionInterface::kTcpCandidatePolicyEnabled;
280 } 281 }
281 282
282 webrtc::PeerConnectionInterface::CandidateNetworkPolicy 283 PeerConnectionInterface::CandidateNetworkPolicy
283 JavaToNativeCandidateNetworkPolicy(JNIEnv* jni, 284 JavaToNativeCandidateNetworkPolicy(JNIEnv* jni,
284 jobject j_candidate_network_policy) { 285 jobject j_candidate_network_policy) {
285 std::string enum_name = 286 std::string enum_name =
286 GetJavaEnumName(jni, "org/webrtc/PeerConnection$CandidateNetworkPolicy", 287 GetJavaEnumName(jni, "org/webrtc/PeerConnection$CandidateNetworkPolicy",
287 j_candidate_network_policy); 288 j_candidate_network_policy);
288 289
289 if (enum_name == "ALL") 290 if (enum_name == "ALL")
290 return webrtc::PeerConnectionInterface::kCandidateNetworkPolicyAll; 291 return PeerConnectionInterface::kCandidateNetworkPolicyAll;
291 292
292 if (enum_name == "LOW_COST") 293 if (enum_name == "LOW_COST")
293 return webrtc::PeerConnectionInterface::kCandidateNetworkPolicyLowCost; 294 return PeerConnectionInterface::kCandidateNetworkPolicyLowCost;
294 295
295 RTC_CHECK(false) << "Unexpected CandidateNetworkPolicy enum_name " 296 RTC_CHECK(false) << "Unexpected CandidateNetworkPolicy enum_name "
296 << enum_name; 297 << enum_name;
297 return webrtc::PeerConnectionInterface::kCandidateNetworkPolicyAll; 298 return PeerConnectionInterface::kCandidateNetworkPolicyAll;
298 } 299 }
299 300
300 rtc::KeyType JavaToNativeKeyType(JNIEnv* jni, jobject j_key_type) { 301 rtc::KeyType JavaToNativeKeyType(JNIEnv* jni, jobject j_key_type) {
301 std::string enum_name = 302 std::string enum_name =
302 GetJavaEnumName(jni, "org/webrtc/PeerConnection$KeyType", j_key_type); 303 GetJavaEnumName(jni, "org/webrtc/PeerConnection$KeyType", j_key_type);
303 304
304 if (enum_name == "RSA") 305 if (enum_name == "RSA")
305 return rtc::KT_RSA; 306 return rtc::KT_RSA;
306 if (enum_name == "ECDSA") 307 if (enum_name == "ECDSA")
307 return rtc::KT_ECDSA; 308 return rtc::KT_ECDSA;
308 309
309 RTC_CHECK(false) << "Unexpected KeyType enum_name " << enum_name; 310 RTC_CHECK(false) << "Unexpected KeyType enum_name " << enum_name;
310 return rtc::KT_ECDSA; 311 return rtc::KT_ECDSA;
311 } 312 }
312 313
313 webrtc::PeerConnectionInterface::ContinualGatheringPolicy 314 PeerConnectionInterface::ContinualGatheringPolicy
314 JavaToNativeContinualGatheringPolicy(JNIEnv* jni, jobject j_gathering_policy) { 315 JavaToNativeContinualGatheringPolicy(JNIEnv* jni, jobject j_gathering_policy) {
315 std::string enum_name = 316 std::string enum_name =
316 GetJavaEnumName(jni, "org/webrtc/PeerConnection$ContinualGatheringPolicy", 317 GetJavaEnumName(jni, "org/webrtc/PeerConnection$ContinualGatheringPolicy",
317 j_gathering_policy); 318 j_gathering_policy);
318 if (enum_name == "GATHER_ONCE") 319 if (enum_name == "GATHER_ONCE")
319 return webrtc::PeerConnectionInterface::GATHER_ONCE; 320 return PeerConnectionInterface::GATHER_ONCE;
320 321
321 if (enum_name == "GATHER_CONTINUALLY") 322 if (enum_name == "GATHER_CONTINUALLY")
322 return webrtc::PeerConnectionInterface::GATHER_CONTINUALLY; 323 return PeerConnectionInterface::GATHER_CONTINUALLY;
323 324
324 RTC_CHECK(false) << "Unexpected ContinualGatheringPolicy enum name " 325 RTC_CHECK(false) << "Unexpected ContinualGatheringPolicy enum name "
325 << enum_name; 326 << enum_name;
326 return webrtc::PeerConnectionInterface::GATHER_ONCE; 327 return PeerConnectionInterface::GATHER_ONCE;
327 } 328 }
328 329
329 webrtc::PeerConnectionInterface::TlsCertPolicy JavaToNativeTlsCertPolicy( 330 PeerConnectionInterface::TlsCertPolicy JavaToNativeTlsCertPolicy(
330 JNIEnv* jni, 331 JNIEnv* jni,
331 jobject j_ice_server_tls_cert_policy) { 332 jobject j_ice_server_tls_cert_policy) {
332 std::string enum_name = 333 std::string enum_name =
333 GetJavaEnumName(jni, "org/webrtc/PeerConnection$TlsCertPolicy", 334 GetJavaEnumName(jni, "org/webrtc/PeerConnection$TlsCertPolicy",
334 j_ice_server_tls_cert_policy); 335 j_ice_server_tls_cert_policy);
335 336
336 if (enum_name == "TLS_CERT_POLICY_SECURE") 337 if (enum_name == "TLS_CERT_POLICY_SECURE")
337 return webrtc::PeerConnectionInterface::kTlsCertPolicySecure; 338 return PeerConnectionInterface::kTlsCertPolicySecure;
338 339
339 if (enum_name == "TLS_CERT_POLICY_INSECURE_NO_CHECK") 340 if (enum_name == "TLS_CERT_POLICY_INSECURE_NO_CHECK")
340 return webrtc::PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck; 341 return PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck;
341 342
342 RTC_CHECK(false) << "Unexpected TlsCertPolicy enum_name " << enum_name; 343 RTC_CHECK(false) << "Unexpected TlsCertPolicy enum_name " << enum_name;
343 return webrtc::PeerConnectionInterface::kTlsCertPolicySecure; 344 return PeerConnectionInterface::kTlsCertPolicySecure;
344 } 345 }
345 346
346 void JavaToNativeIceServers( 347 void JavaToNativeIceServers(JNIEnv* jni,
347 JNIEnv* jni, 348 jobject j_ice_servers,
348 jobject j_ice_servers, 349 PeerConnectionInterface::IceServers* ice_servers) {
349 webrtc::PeerConnectionInterface::IceServers* ice_servers) {
350 for (jobject j_ice_server : Iterable(jni, j_ice_servers)) { 350 for (jobject j_ice_server : Iterable(jni, j_ice_servers)) {
351 jclass j_ice_server_class = GetObjectClass(jni, j_ice_server); 351 jclass j_ice_server_class = GetObjectClass(jni, j_ice_server);
352 jfieldID j_ice_server_uri_id = 352 jfieldID j_ice_server_uri_id =
353 GetFieldID(jni, j_ice_server_class, "uri", "Ljava/lang/String;"); 353 GetFieldID(jni, j_ice_server_class, "uri", "Ljava/lang/String;");
354 jfieldID j_ice_server_username_id = 354 jfieldID j_ice_server_username_id =
355 GetFieldID(jni, j_ice_server_class, "username", "Ljava/lang/String;"); 355 GetFieldID(jni, j_ice_server_class, "username", "Ljava/lang/String;");
356 jfieldID j_ice_server_password_id = 356 jfieldID j_ice_server_password_id =
357 GetFieldID(jni, j_ice_server_class, "password", "Ljava/lang/String;"); 357 GetFieldID(jni, j_ice_server_class, "password", "Ljava/lang/String;");
358 jfieldID j_ice_server_tls_cert_policy_id = 358 jfieldID j_ice_server_tls_cert_policy_id =
359 GetFieldID(jni, j_ice_server_class, "tlsCertPolicy", 359 GetFieldID(jni, j_ice_server_class, "tlsCertPolicy",
360 "Lorg/webrtc/PeerConnection$TlsCertPolicy;"); 360 "Lorg/webrtc/PeerConnection$TlsCertPolicy;");
361 jobject j_ice_server_tls_cert_policy = 361 jobject j_ice_server_tls_cert_policy =
362 GetObjectField(jni, j_ice_server, j_ice_server_tls_cert_policy_id); 362 GetObjectField(jni, j_ice_server, j_ice_server_tls_cert_policy_id);
363 jfieldID j_ice_server_hostname_id = 363 jfieldID j_ice_server_hostname_id =
364 GetFieldID(jni, j_ice_server_class, "hostname", "Ljava/lang/String;"); 364 GetFieldID(jni, j_ice_server_class, "hostname", "Ljava/lang/String;");
365 jstring uri = reinterpret_cast<jstring>( 365 jstring uri = reinterpret_cast<jstring>(
366 GetObjectField(jni, j_ice_server, j_ice_server_uri_id)); 366 GetObjectField(jni, j_ice_server, j_ice_server_uri_id));
367 jstring username = reinterpret_cast<jstring>( 367 jstring username = reinterpret_cast<jstring>(
368 GetObjectField(jni, j_ice_server, j_ice_server_username_id)); 368 GetObjectField(jni, j_ice_server, j_ice_server_username_id));
369 jstring password = reinterpret_cast<jstring>( 369 jstring password = reinterpret_cast<jstring>(
370 GetObjectField(jni, j_ice_server, j_ice_server_password_id)); 370 GetObjectField(jni, j_ice_server, j_ice_server_password_id));
371 webrtc::PeerConnectionInterface::TlsCertPolicy tls_cert_policy = 371 PeerConnectionInterface::TlsCertPolicy tls_cert_policy =
372 JavaToNativeTlsCertPolicy(jni, j_ice_server_tls_cert_policy); 372 JavaToNativeTlsCertPolicy(jni, j_ice_server_tls_cert_policy);
373 jstring hostname = reinterpret_cast<jstring>( 373 jstring hostname = reinterpret_cast<jstring>(
374 GetObjectField(jni, j_ice_server, j_ice_server_hostname_id)); 374 GetObjectField(jni, j_ice_server, j_ice_server_hostname_id));
375 webrtc::PeerConnectionInterface::IceServer server; 375 PeerConnectionInterface::IceServer server;
376 server.uri = JavaToStdString(jni, uri); 376 server.uri = JavaToStdString(jni, uri);
377 server.username = JavaToStdString(jni, username); 377 server.username = JavaToStdString(jni, username);
378 server.password = JavaToStdString(jni, password); 378 server.password = JavaToStdString(jni, password);
379 server.tls_cert_policy = tls_cert_policy; 379 server.tls_cert_policy = tls_cert_policy;
380 server.hostname = JavaToStdString(jni, hostname); 380 server.hostname = JavaToStdString(jni, hostname);
381 ice_servers->push_back(server); 381 ice_servers->push_back(server);
382 } 382 }
383 } 383 }
384 384
385 void JavaToNativeRTCConfiguration( 385 void JavaToNativeRTCConfiguration(
386 JNIEnv* jni, 386 JNIEnv* jni,
387 jobject j_rtc_config, 387 jobject j_rtc_config,
388 webrtc::PeerConnectionInterface::RTCConfiguration* rtc_config) { 388 PeerConnectionInterface::RTCConfiguration* rtc_config) {
389 jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config); 389 jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config);
390 390
391 jfieldID j_ice_transports_type_id = 391 jfieldID j_ice_transports_type_id =
392 GetFieldID(jni, j_rtc_config_class, "iceTransportsType", 392 GetFieldID(jni, j_rtc_config_class, "iceTransportsType",
393 "Lorg/webrtc/PeerConnection$IceTransportsType;"); 393 "Lorg/webrtc/PeerConnection$IceTransportsType;");
394 jobject j_ice_transports_type = 394 jobject j_ice_transports_type =
395 GetObjectField(jni, j_rtc_config, j_ice_transports_type_id); 395 GetObjectField(jni, j_rtc_config, j_ice_transports_type_id);
396 396
397 jfieldID j_bundle_policy_id = 397 jfieldID j_bundle_policy_id =
398 GetFieldID(jni, j_rtc_config_class, "bundlePolicy", 398 GetFieldID(jni, j_rtc_config_class, "bundlePolicy",
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 jni, j_rtc_config, j_ice_regather_interval_range_id); 509 jni, j_rtc_config, j_ice_regather_interval_range_id);
510 if (!IsNull(jni, j_ice_regather_interval_range)) { 510 if (!IsNull(jni, j_ice_regather_interval_range)) {
511 int min = jni->CallIntMethod(j_ice_regather_interval_range, get_min_id); 511 int min = jni->CallIntMethod(j_ice_regather_interval_range, get_min_id);
512 int max = jni->CallIntMethod(j_ice_regather_interval_range, get_max_id); 512 int max = jni->CallIntMethod(j_ice_regather_interval_range, get_max_id);
513 rtc_config->ice_regather_interval_range.emplace(min, max); 513 rtc_config->ice_regather_interval_range.emplace(min, max);
514 } 514 }
515 } 515 }
516 516
517 void JavaToNativeRtpParameters(JNIEnv* jni, 517 void JavaToNativeRtpParameters(JNIEnv* jni,
518 jobject j_parameters, 518 jobject j_parameters,
519 webrtc::RtpParameters* parameters) { 519 RtpParameters* parameters) {
520 RTC_CHECK(parameters != nullptr); 520 RTC_CHECK(parameters != nullptr);
521 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters"); 521 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
522 jfieldID encodings_id = 522 jfieldID encodings_id =
523 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;"); 523 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
524 jfieldID codecs_id = 524 jfieldID codecs_id =
525 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;"); 525 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;");
526 526
527 // Convert encodings. 527 // Convert encodings.
528 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id); 528 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
529 jclass j_encoding_parameters_class = 529 jclass j_encoding_parameters_class =
530 jni->FindClass("org/webrtc/RtpParameters$Encoding"); 530 jni->FindClass("org/webrtc/RtpParameters$Encoding");
531 jfieldID active_id = 531 jfieldID active_id =
532 GetFieldID(jni, j_encoding_parameters_class, "active", "Z"); 532 GetFieldID(jni, j_encoding_parameters_class, "active", "Z");
533 jfieldID bitrate_id = GetFieldID(jni, j_encoding_parameters_class, 533 jfieldID bitrate_id = GetFieldID(jni, j_encoding_parameters_class,
534 "maxBitrateBps", "Ljava/lang/Integer;"); 534 "maxBitrateBps", "Ljava/lang/Integer;");
535 jfieldID ssrc_id = 535 jfieldID ssrc_id =
536 GetFieldID(jni, j_encoding_parameters_class, "ssrc", "Ljava/lang/Long;"); 536 GetFieldID(jni, j_encoding_parameters_class, "ssrc", "Ljava/lang/Long;");
537 jclass j_integer_class = jni->FindClass("java/lang/Integer"); 537 jclass j_integer_class = jni->FindClass("java/lang/Integer");
538 jclass j_long_class = jni->FindClass("java/lang/Long"); 538 jclass j_long_class = jni->FindClass("java/lang/Long");
539 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I"); 539 jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I");
540 jmethodID long_value_id = GetMethodID(jni, j_long_class, "longValue", "()J"); 540 jmethodID long_value_id = GetMethodID(jni, j_long_class, "longValue", "()J");
541 541
542 for (jobject j_encoding_parameters : Iterable(jni, j_encodings)) { 542 for (jobject j_encoding_parameters : Iterable(jni, j_encodings)) {
543 webrtc::RtpEncodingParameters encoding; 543 RtpEncodingParameters encoding;
544 encoding.active = GetBooleanField(jni, j_encoding_parameters, active_id); 544 encoding.active = GetBooleanField(jni, j_encoding_parameters, active_id);
545 jobject j_bitrate = 545 jobject j_bitrate =
546 GetNullableObjectField(jni, j_encoding_parameters, bitrate_id); 546 GetNullableObjectField(jni, j_encoding_parameters, bitrate_id);
547 if (!IsNull(jni, j_bitrate)) { 547 if (!IsNull(jni, j_bitrate)) {
548 int bitrate_value = jni->CallIntMethod(j_bitrate, int_value_id); 548 int bitrate_value = jni->CallIntMethod(j_bitrate, int_value_id);
549 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; 549 CHECK_EXCEPTION(jni) << "error during CallIntMethod";
550 encoding.max_bitrate_bps = rtc::Optional<int>(bitrate_value); 550 encoding.max_bitrate_bps = rtc::Optional<int>(bitrate_value);
551 } 551 }
552 jobject j_ssrc = 552 jobject j_ssrc =
553 GetNullableObjectField(jni, j_encoding_parameters, ssrc_id); 553 GetNullableObjectField(jni, j_encoding_parameters, ssrc_id);
(...skipping 11 matching lines...) Expand all
565 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); 565 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I");
566 jfieldID name_id = GetFieldID(jni, codec_class, "name", "Ljava/lang/String;"); 566 jfieldID name_id = GetFieldID(jni, codec_class, "name", "Ljava/lang/String;");
567 jfieldID kind_id = GetFieldID(jni, codec_class, "kind", 567 jfieldID kind_id = GetFieldID(jni, codec_class, "kind",
568 "Lorg/webrtc/MediaStreamTrack$MediaType;"); 568 "Lorg/webrtc/MediaStreamTrack$MediaType;");
569 jfieldID clock_rate_id = 569 jfieldID clock_rate_id =
570 GetFieldID(jni, codec_class, "clockRate", "Ljava/lang/Integer;"); 570 GetFieldID(jni, codec_class, "clockRate", "Ljava/lang/Integer;");
571 jfieldID num_channels_id = 571 jfieldID num_channels_id =
572 GetFieldID(jni, codec_class, "numChannels", "Ljava/lang/Integer;"); 572 GetFieldID(jni, codec_class, "numChannels", "Ljava/lang/Integer;");
573 573
574 for (jobject j_codec : Iterable(jni, j_codecs)) { 574 for (jobject j_codec : Iterable(jni, j_codecs)) {
575 webrtc::RtpCodecParameters codec; 575 RtpCodecParameters codec;
576 codec.payload_type = GetIntField(jni, j_codec, payload_type_id); 576 codec.payload_type = GetIntField(jni, j_codec, payload_type_id);
577 codec.name = JavaToStdString(jni, GetStringField(jni, j_codec, name_id)); 577 codec.name = JavaToStdString(jni, GetStringField(jni, j_codec, name_id));
578 codec.kind = 578 codec.kind =
579 JavaToNativeMediaType(jni, GetObjectField(jni, j_codec, kind_id)); 579 JavaToNativeMediaType(jni, GetObjectField(jni, j_codec, kind_id));
580 jobject j_clock_rate = GetNullableObjectField(jni, j_codec, clock_rate_id); 580 jobject j_clock_rate = GetNullableObjectField(jni, j_codec, clock_rate_id);
581 if (!IsNull(jni, j_clock_rate)) { 581 if (!IsNull(jni, j_clock_rate)) {
582 int clock_rate_value = jni->CallIntMethod(j_clock_rate, int_value_id); 582 int clock_rate_value = jni->CallIntMethod(j_clock_rate, int_value_id);
583 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; 583 CHECK_EXCEPTION(jni) << "error during CallIntMethod";
584 codec.clock_rate = rtc::Optional<int>(clock_rate_value); 584 codec.clock_rate = rtc::Optional<int>(clock_rate_value);
585 } 585 }
586 jobject j_num_channels = 586 jobject j_num_channels =
587 GetNullableObjectField(jni, j_codec, num_channels_id); 587 GetNullableObjectField(jni, j_codec, num_channels_id);
588 if (!IsNull(jni, j_num_channels)) { 588 if (!IsNull(jni, j_num_channels)) {
589 int num_channels_value = jni->CallIntMethod(j_num_channels, int_value_id); 589 int num_channels_value = jni->CallIntMethod(j_num_channels, int_value_id);
590 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; 590 CHECK_EXCEPTION(jni) << "error during CallIntMethod";
591 codec.num_channels = rtc::Optional<int>(num_channels_value); 591 codec.num_channels = rtc::Optional<int>(num_channels_value);
592 } 592 }
593 parameters->codecs.push_back(codec); 593 parameters->codecs.push_back(codec);
594 } 594 }
595 } 595 }
596 596
597 jobject NativeToJavaRtpParameters(JNIEnv* jni, 597 jobject NativeToJavaRtpParameters(JNIEnv* jni,
598 const webrtc::RtpParameters& parameters) { 598 const RtpParameters& parameters) {
599 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters"); 599 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters");
600 jmethodID parameters_ctor = 600 jmethodID parameters_ctor =
601 GetMethodID(jni, parameters_class, "<init>", "()V"); 601 GetMethodID(jni, parameters_class, "<init>", "()V");
602 jobject j_parameters = jni->NewObject(parameters_class, parameters_ctor); 602 jobject j_parameters = jni->NewObject(parameters_class, parameters_ctor);
603 CHECK_EXCEPTION(jni) << "error during NewObject"; 603 CHECK_EXCEPTION(jni) << "error during NewObject";
604 604
605 // Add encodings. 605 // Add encodings.
606 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding"); 606 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding");
607 jmethodID encoding_ctor = GetMethodID(jni, encoding_class, "<init>", "()V"); 607 jmethodID encoding_ctor = GetMethodID(jni, encoding_class, "<init>", "()V");
608 jfieldID encodings_id = 608 jfieldID encodings_id =
609 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;"); 609 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;");
610 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id); 610 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id);
611 jmethodID encodings_add = GetMethodID(jni, GetObjectClass(jni, j_encodings), 611 jmethodID encodings_add = GetMethodID(jni, GetObjectClass(jni, j_encodings),
612 "add", "(Ljava/lang/Object;)Z"); 612 "add", "(Ljava/lang/Object;)Z");
613 jfieldID active_id = GetFieldID(jni, encoding_class, "active", "Z"); 613 jfieldID active_id = GetFieldID(jni, encoding_class, "active", "Z");
614 jfieldID bitrate_id = 614 jfieldID bitrate_id =
615 GetFieldID(jni, encoding_class, "maxBitrateBps", "Ljava/lang/Integer;"); 615 GetFieldID(jni, encoding_class, "maxBitrateBps", "Ljava/lang/Integer;");
616 jfieldID ssrc_id = 616 jfieldID ssrc_id =
617 GetFieldID(jni, encoding_class, "ssrc", "Ljava/lang/Long;"); 617 GetFieldID(jni, encoding_class, "ssrc", "Ljava/lang/Long;");
618 618
619 jclass integer_class = jni->FindClass("java/lang/Integer"); 619 jclass integer_class = jni->FindClass("java/lang/Integer");
620 jclass long_class = jni->FindClass("java/lang/Long"); 620 jclass long_class = jni->FindClass("java/lang/Long");
621 jmethodID integer_ctor = GetMethodID(jni, integer_class, "<init>", "(I)V"); 621 jmethodID integer_ctor = GetMethodID(jni, integer_class, "<init>", "(I)V");
622 jmethodID long_ctor = GetMethodID(jni, long_class, "<init>", "(J)V"); 622 jmethodID long_ctor = GetMethodID(jni, long_class, "<init>", "(J)V");
623 623
624 for (const webrtc::RtpEncodingParameters& encoding : parameters.encodings) { 624 for (const RtpEncodingParameters& encoding : parameters.encodings) {
625 jobject j_encoding_parameters = 625 jobject j_encoding_parameters =
626 jni->NewObject(encoding_class, encoding_ctor); 626 jni->NewObject(encoding_class, encoding_ctor);
627 CHECK_EXCEPTION(jni) << "error during NewObject"; 627 CHECK_EXCEPTION(jni) << "error during NewObject";
628 jni->SetBooleanField(j_encoding_parameters, active_id, encoding.active); 628 jni->SetBooleanField(j_encoding_parameters, active_id, encoding.active);
629 CHECK_EXCEPTION(jni) << "error during SetBooleanField"; 629 CHECK_EXCEPTION(jni) << "error during SetBooleanField";
630 if (encoding.max_bitrate_bps) { 630 if (encoding.max_bitrate_bps) {
631 jobject j_bitrate_value = jni->NewObject(integer_class, integer_ctor, 631 jobject j_bitrate_value = jni->NewObject(integer_class, integer_ctor,
632 *(encoding.max_bitrate_bps)); 632 *(encoding.max_bitrate_bps));
633 CHECK_EXCEPTION(jni) << "error during NewObject"; 633 CHECK_EXCEPTION(jni) << "error during NewObject";
634 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value); 634 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value);
(...skipping 22 matching lines...) Expand all
657 "(Ljava/lang/Object;)Z"); 657 "(Ljava/lang/Object;)Z");
658 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); 658 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I");
659 jfieldID name_id = GetFieldID(jni, codec_class, "name", "Ljava/lang/String;"); 659 jfieldID name_id = GetFieldID(jni, codec_class, "name", "Ljava/lang/String;");
660 jfieldID kind_id = GetFieldID(jni, codec_class, "kind", 660 jfieldID kind_id = GetFieldID(jni, codec_class, "kind",
661 "Lorg/webrtc/MediaStreamTrack$MediaType;"); 661 "Lorg/webrtc/MediaStreamTrack$MediaType;");
662 jfieldID clock_rate_id = 662 jfieldID clock_rate_id =
663 GetFieldID(jni, codec_class, "clockRate", "Ljava/lang/Integer;"); 663 GetFieldID(jni, codec_class, "clockRate", "Ljava/lang/Integer;");
664 jfieldID num_channels_id = 664 jfieldID num_channels_id =
665 GetFieldID(jni, codec_class, "numChannels", "Ljava/lang/Integer;"); 665 GetFieldID(jni, codec_class, "numChannels", "Ljava/lang/Integer;");
666 666
667 for (const webrtc::RtpCodecParameters& codec : parameters.codecs) { 667 for (const RtpCodecParameters& codec : parameters.codecs) {
668 jobject j_codec = jni->NewObject(codec_class, codec_ctor); 668 jobject j_codec = jni->NewObject(codec_class, codec_ctor);
669 CHECK_EXCEPTION(jni) << "error during NewObject"; 669 CHECK_EXCEPTION(jni) << "error during NewObject";
670 jni->SetIntField(j_codec, payload_type_id, codec.payload_type); 670 jni->SetIntField(j_codec, payload_type_id, codec.payload_type);
671 CHECK_EXCEPTION(jni) << "error during SetIntField"; 671 CHECK_EXCEPTION(jni) << "error during SetIntField";
672 jni->SetObjectField(j_codec, name_id, 672 jni->SetObjectField(j_codec, name_id,
673 JavaStringFromStdString(jni, codec.name)); 673 JavaStringFromStdString(jni, codec.name));
674 CHECK_EXCEPTION(jni) << "error during SetObjectField"; 674 CHECK_EXCEPTION(jni) << "error during SetObjectField";
675 jni->SetObjectField(j_codec, kind_id, 675 jni->SetObjectField(j_codec, kind_id,
676 NativeToJavaMediaType(jni, codec.kind)); 676 NativeToJavaMediaType(jni, codec.kind));
677 CHECK_EXCEPTION(jni) << "error during SetObjectField"; 677 CHECK_EXCEPTION(jni) << "error during SetObjectField";
(...skipping 12 matching lines...) Expand all
690 CHECK_EXCEPTION(jni) << "error during SetObjectField"; 690 CHECK_EXCEPTION(jni) << "error during SetObjectField";
691 } 691 }
692 jboolean added = jni->CallBooleanMethod(j_codecs, codecs_add, j_codec); 692 jboolean added = jni->CallBooleanMethod(j_codecs, codecs_add, j_codec);
693 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; 693 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod";
694 RTC_CHECK(added); 694 RTC_CHECK(added);
695 } 695 }
696 696
697 return j_parameters; 697 return j_parameters;
698 } 698 }
699 699
700 } // namespace webrtc_jni 700 } // namespace jni
701 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/sdk/android/src/jni/pc/java_native_conversion.h ('k') | webrtc/sdk/android/src/jni/pc/logging_jni.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698