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

Side by Side Diff: webrtc/api/java/jni/peerconnection_jni.cc

Issue 1885473004: Adding codecs to the RtpParameters returned by an RtpSender. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing minor issues Created 4 years, 8 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 2040 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 &parameters.encodings); 2100 &parameters.encodings);
2101 JavaCodecToJsepRtpCodecParameters(jni, j_codecs, &parameters.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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698