SetStreams API of RtpSender wrapped for iOS and Android

Bug: webrtc:10129
Change-Id: I36ea0110de655bbffa2bd18a024abd15a2136838
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155983
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29405}
This commit is contained in:
Cyril Lashkevich
2019-10-08 13:06:15 +00:00
committed by Commit Bot
parent 999afa9cb8
commit fa77ba6af1
5 changed files with 56 additions and 0 deletions

View File

@ -14,6 +14,7 @@ Chris Tserng <tserng@amazon.com>
Christophe Dumez <ch.dumez@samsung.com>
Cody Barnes <conceptgenesis@gmail.com>
Colin Plumb
Cyril Lashkevich <notorca@gmail.com>
David Porter <david@porter.me>
Dax Booysen <dax@younow.com>
Danail Kirov <dkirovbroadsoft@gmail.com>

View File

@ -11,6 +11,7 @@
package org.webrtc;
import android.support.annotation.Nullable;
import java.util.List;
/** Java wrapper for a C++ RtpSenderInterface. */
public class RtpSender {
@ -62,6 +63,16 @@ public class RtpSender {
return cachedTrack;
}
public void setStreams(List<String> streamIds) {
checkRtpSenderExists();
nativeSetStreams(nativeRtpSender, streamIds);
}
public List<String> getStreams() {
checkRtpSenderExists();
return nativeGetStreams(nativeRtpSender);
}
public boolean setParameters(RtpParameters parameters) {
checkRtpSenderExists();
return nativeSetParameters(nativeRtpSender, parameters);
@ -117,6 +128,10 @@ public class RtpSender {
// Will be released in dispose() or setTrack().
private static native long nativeGetTrack(long rtpSender);
private static native void nativeSetStreams(long rtpSender, List<String> streamIds);
private static native List<String> nativeGetStreams(long rtpSender);
// This should increment the reference count of the DTMF sender.
// Will be released in dispose().
private static native long nativeGetDtmfSender(long rtpSender);

View File

@ -45,6 +45,26 @@ jlong JNI_RtpSender_GetTrack(JNIEnv* jni,
.release());
}
static void JNI_RtpSender_SetStreams(
JNIEnv* jni,
jlong j_rtp_sender_pointer,
const JavaParamRef<jobject>& j_stream_labels) {
reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
->SetStreams(JavaListToNativeVector<std::string, jstring>(
jni, j_stream_labels, &JavaToNativeString));
}
ScopedJavaLocalRef<jobject> JNI_RtpSender_GetStreams(
JNIEnv* jni,
jlong j_rtp_sender_pointer) {
ScopedJavaLocalRef<jstring> (*convert_function)(JNIEnv*, const std::string&) =
&NativeToJavaString;
return NativeToJavaList(
jni,
reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->stream_ids(),
convert_function);
}
jlong JNI_RtpSender_GetDtmfSender(JNIEnv* jni,
jlong j_rtp_sender_pointer) {
return jlongFromPointer(

View File

@ -35,6 +35,9 @@ RTC_OBJC_EXPORT
*/
@property(nonatomic, copy, nullable) RTCMediaStreamTrack *track;
/** IDs of streams associated with the RTP sender */
@property(nonatomic, copy) NSArray<NSString *> *streamIds;
/** The RTCDtmfSender accociated with the RTP sender. */
@property(nonatomic, readonly, nullable) id<RTCDtmfSender> dtmfSender;

View File

@ -57,6 +57,23 @@
}
}
- (NSArray<NSString *> *)streamIds {
std::vector<std::string> nativeStreamIds = _nativeRtpSender->stream_ids();
NSMutableArray *streamIds = [NSMutableArray arrayWithCapacity:nativeStreamIds.size()];
for (const auto &s : nativeStreamIds) {
[streamIds addObject:[NSString stringForStdString:s]];
}
return streamIds;
}
- (void)setStreamIds:(NSArray<NSString *> *)streamIds {
std::vector<std::string> nativeStreamIds;
for (NSString *streamId in streamIds) {
nativeStreamIds.push_back([streamId UTF8String]);
}
_nativeRtpSender->SetStreams(nativeStreamIds);
}
- (NSString *)description {
return [NSString stringWithFormat:@"RTCRtpSender {\n senderId: %@\n}",
self.senderId];