OLD | NEW |
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 2040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2051 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; | 2051 CHECK_EXCEPTION(jni) << "error during CallIntMethod"; |
2052 encoding.max_bitrate_bps = bitrate_value; | 2052 encoding.max_bitrate_bps = bitrate_value; |
2053 } else { | 2053 } else { |
2054 encoding.max_bitrate_bps = kBitrateUnlimited; | 2054 encoding.max_bitrate_bps = kBitrateUnlimited; |
2055 } | 2055 } |
2056 encodings->push_back(encoding); | 2056 encodings->push_back(encoding); |
2057 } | 2057 } |
2058 return true; | 2058 return true; |
2059 } | 2059 } |
2060 | 2060 |
| 2061 static bool JavaCodecToJsepRtpCodecParameters( |
| 2062 JNIEnv* jni, |
| 2063 jobject j_codecs, |
| 2064 std::vector<webrtc::RtpCodecParameters>* codecs) { |
| 2065 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec"); |
| 2066 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); |
| 2067 jfieldID mime_type_id = |
| 2068 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;"); |
| 2069 jfieldID clock_rate_id = GetFieldID(jni, codec_class, "clockRate", "I"); |
| 2070 jfieldID channels_id = GetFieldID(jni, codec_class, "channels", "I"); |
| 2071 |
| 2072 for (jobject j_codec : Iterable(jni, j_codecs)) { |
| 2073 webrtc::RtpCodecParameters codec; |
| 2074 codec.payload_type = GetIntField(jni, j_codec, payload_type_id); |
| 2075 codec.mime_type = |
| 2076 JavaToStdString(jni, GetStringField(jni, j_codec, mime_type_id)); |
| 2077 codec.clock_rate = GetIntField(jni, j_codec, clock_rate_id); |
| 2078 codec.channels = GetIntField(jni, j_codec, channels_id); |
| 2079 codecs->push_back(codec); |
| 2080 } |
| 2081 return true; |
| 2082 } |
| 2083 |
2061 JOW(jboolean, RtpSender_nativeSetParameters) | 2084 JOW(jboolean, RtpSender_nativeSetParameters) |
2062 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) { | 2085 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) { |
2063 if (IsNull(jni, j_parameters)) { | 2086 if (IsNull(jni, j_parameters)) { |
2064 return false; | 2087 return false; |
2065 } | 2088 } |
2066 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters"); | 2089 jclass parameters_class = jni->FindClass("org/webrtc/RtpParameters"); |
2067 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding"); | 2090 jclass encoding_class = jni->FindClass("org/webrtc/RtpParameters$Encoding"); |
2068 jfieldID encodings_id = | 2091 jfieldID encodings_id = |
2069 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;"); | 2092 GetFieldID(jni, parameters_class, "encodings", "Ljava/util/LinkedList;"); |
| 2093 jfieldID codecs_id = |
| 2094 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;"); |
2070 | 2095 |
2071 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id); | 2096 jobject j_encodings = GetObjectField(jni, j_parameters, encodings_id); |
| 2097 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id); |
2072 webrtc::RtpParameters parameters; | 2098 webrtc::RtpParameters parameters; |
2073 JavaEncodingToJsepRtpEncodingParameters(jni, j_encodings, | 2099 JavaEncodingToJsepRtpEncodingParameters(jni, j_encodings, |
2074 ¶meters.encodings); | 2100 ¶meters.encodings); |
| 2101 JavaCodecToJsepRtpCodecParameters(jni, j_codecs, ¶meters.codecs); |
2075 return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) | 2102 return reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) |
2076 ->SetParameters(parameters); | 2103 ->SetParameters(parameters); |
2077 } | 2104 } |
2078 | 2105 |
2079 JOW(jobject, RtpSender_nativeGetParameters) | 2106 JOW(jobject, RtpSender_nativeGetParameters) |
2080 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { | 2107 (JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { |
2081 webrtc::RtpParameters parameters = | 2108 webrtc::RtpParameters parameters = |
2082 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) | 2109 reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer) |
2083 ->GetParameters(); | 2110 ->GetParameters(); |
2084 | 2111 |
(...skipping 27 matching lines...) Expand all Loading... |
2112 if (encoding.max_bitrate_bps > 0) { | 2139 if (encoding.max_bitrate_bps > 0) { |
2113 jobject j_bitrate_value = | 2140 jobject j_bitrate_value = |
2114 jni->NewObject(integer_class, integer_ctor, encoding.max_bitrate_bps); | 2141 jni->NewObject(integer_class, integer_ctor, encoding.max_bitrate_bps); |
2115 CHECK_EXCEPTION(jni) << "error during NewObject"; | 2142 CHECK_EXCEPTION(jni) << "error during NewObject"; |
2116 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value); | 2143 jni->SetObjectField(j_encoding_parameters, bitrate_id, j_bitrate_value); |
2117 CHECK_EXCEPTION(jni) << "error during SetObjectField"; | 2144 CHECK_EXCEPTION(jni) << "error during SetObjectField"; |
2118 } | 2145 } |
2119 jboolean added = | 2146 jboolean added = |
2120 jni->CallBooleanMethod(j_encodings, add, j_encoding_parameters); | 2147 jni->CallBooleanMethod(j_encodings, add, j_encoding_parameters); |
2121 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; | 2148 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; |
| 2149 RTC_DCHECK(added); |
2122 } | 2150 } |
| 2151 |
| 2152 jclass codec_class = jni->FindClass("org/webrtc/RtpParameters$Codec"); |
| 2153 jmethodID codec_ctor = GetMethodID(jni, codec_class, "<init>", "()V"); |
| 2154 jfieldID codecs_id = |
| 2155 GetFieldID(jni, parameters_class, "codecs", "Ljava/util/LinkedList;"); |
| 2156 jobject j_codecs = GetObjectField(jni, j_parameters, codecs_id); |
| 2157 jfieldID payload_type_id = GetFieldID(jni, codec_class, "payloadType", "I"); |
| 2158 jfieldID mime_type_id = |
| 2159 GetFieldID(jni, codec_class, "mimeType", "Ljava/lang/String;"); |
| 2160 jfieldID clock_rate_id = GetFieldID(jni, codec_class, "clockRate", "I"); |
| 2161 jfieldID channels_id = GetFieldID(jni, codec_class, "channels", "I"); |
| 2162 |
| 2163 for (const webrtc::RtpCodecParameters& codec : parameters.codecs) { |
| 2164 jobject j_codec = jni->NewObject(codec_class, codec_ctor); |
| 2165 CHECK_EXCEPTION(jni) << "error during NewObject"; |
| 2166 jni->SetIntField(j_codec, payload_type_id, codec.payload_type); |
| 2167 CHECK_EXCEPTION(jni) << "error during SetIntField"; |
| 2168 jni->SetObjectField(j_codec, mime_type_id, |
| 2169 JavaStringFromStdString(jni, codec.mime_type)); |
| 2170 CHECK_EXCEPTION(jni) << "error during SetObjectField"; |
| 2171 jni->SetIntField(j_codec, clock_rate_id, codec.clock_rate); |
| 2172 CHECK_EXCEPTION(jni) << "error during SetIntField"; |
| 2173 jni->SetIntField(j_codec, channels_id, codec.channels); |
| 2174 CHECK_EXCEPTION(jni) << "error during SetIntField"; |
| 2175 jboolean added = jni->CallBooleanMethod(j_codecs, add, j_codec); |
| 2176 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; |
| 2177 RTC_DCHECK(added); |
| 2178 } |
| 2179 |
2123 return j_parameters; | 2180 return j_parameters; |
2124 } | 2181 } |
2125 | 2182 |
2126 JOW(jstring, RtpSender_nativeId)( | 2183 JOW(jstring, RtpSender_nativeId)( |
2127 JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { | 2184 JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { |
2128 return JavaStringFromStdString( | 2185 return JavaStringFromStdString( |
2129 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id()); | 2186 jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id()); |
2130 } | 2187 } |
2131 | 2188 |
2132 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { | 2189 JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) { |
(...skipping 15 matching lines...) Expand all Loading... |
2148 return JavaStringFromStdString( | 2205 return JavaStringFromStdString( |
2149 jni, | 2206 jni, |
2150 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); | 2207 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); |
2151 } | 2208 } |
2152 | 2209 |
2153 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { | 2210 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { |
2154 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); | 2211 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); |
2155 } | 2212 } |
2156 | 2213 |
2157 } // namespace webrtc_jni | 2214 } // namespace webrtc_jni |
OLD | NEW |