| Index: talk/app/webrtc/java/jni/peerconnection_jni.cc
|
| diff --git a/talk/app/webrtc/java/jni/peerconnection_jni.cc b/talk/app/webrtc/java/jni/peerconnection_jni.cc
|
| index 35406f5560fddf324d398ed1719879fca553f90c..8912c47efad17ed5a4b4a75cef104c33a14de408 100644
|
| --- a/talk/app/webrtc/java/jni/peerconnection_jni.cc
|
| +++ b/talk/app/webrtc/java/jni/peerconnection_jni.cc
|
| @@ -64,6 +64,8 @@
|
| #include "talk/app/webrtc/dtlsidentitystore.h"
|
| #include "talk/app/webrtc/mediaconstraintsinterface.h"
|
| #include "talk/app/webrtc/peerconnectioninterface.h"
|
| +#include "talk/app/webrtc/rtpreceiverinterface.h"
|
| +#include "talk/app/webrtc/rtpsenderinterface.h"
|
| #include "talk/app/webrtc/videosourceinterface.h"
|
| #include "talk/media/base/videocapturer.h"
|
| #include "talk/media/base/videorenderer.h"
|
| @@ -113,6 +115,8 @@ using webrtc::MediaStreamTrackInterface;
|
| using webrtc::PeerConnectionFactoryInterface;
|
| using webrtc::PeerConnectionInterface;
|
| using webrtc::PeerConnectionObserver;
|
| +using webrtc::RtpReceiverInterface;
|
| +using webrtc::RtpSenderInterface;
|
| using webrtc::SessionDescriptionInterface;
|
| using webrtc::SetSessionDescriptionObserver;
|
| using webrtc::StatsObserver;
|
| @@ -1585,6 +1589,36 @@ JOW(void, PeerConnection_nativeRemoveLocalStream)(
|
| reinterpret_cast<MediaStreamInterface*>(native_stream));
|
| }
|
|
|
| +JOW(jobject, PeerConnection_getSenders)(JNIEnv* jni, jobject j_pc) {
|
| + jclass j_array_list_class = FindClass(jni, "java/util/ArrayList");
|
| + jmethodID j_array_list_ctor =
|
| + GetMethodID(jni, j_array_list_class, "<init>", "(V)V");
|
| + jmethodID j_array_list_add =
|
| + GetMethodID(jni, j_array_list_class, "add", "(java/lang/Object)Z");
|
| + jobject j_senders = jni->NewObject(j_array_list_class, j_array_list_ctor);
|
| +
|
| + jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender");
|
| + jmethodID j_rtp_sender_ctor =
|
| + GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V");
|
| +
|
| + PeerConnectionInterface::RtpSenders senders =
|
| + ExtractNativePC(jni, j_pc)->GetSenders();
|
| +
|
| + for (const auto& sender : senders) {
|
| + jlong nativeSenderPtr = jlongFromPointer(sender.get());
|
| + jobject j_sender =
|
| + jni->NewObject(j_rtp_sender_class, j_rtp_sender_ctor, nativeSenderPtr);
|
| + CHECK_EXCEPTION(jni) << "error during NewObject";
|
| + // Sender is now owned by Java object, and will be freed from there.
|
| + int bumped_count = sender->AddRef();
|
| + jni->CallBooleanMethod(j_senders, j_array_list_add, j_sender);
|
| + }
|
| + return j_senders;
|
| +}
|
| +
|
| +JOW(jobject, PeerConnection_getReceivers)(JNIEnv* jni, jobject j_pc) {
|
| +}
|
| +
|
| JOW(bool, PeerConnection_nativeGetStats)(
|
| JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) {
|
| rtc::scoped_refptr<StatsObserverWrapper> observer(
|
| @@ -1826,4 +1860,52 @@ JOW(jbyteArray, CallSessionFileRotatingLogSink_nativeGetLogData)(
|
| return result;
|
| }
|
|
|
| +JOW(void, RtpSender_nativeSetTrack)(JNIEnv* jni,
|
| + jclass,
|
| + jlong j_rtp_sender_pointer,
|
| + jlong j_track_pointer) {
|
| + reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
|
| + ->SetTrack(reinterpret_cast<MediaStreamTrackInterface*>(j_track_pointer));
|
| +}
|
| +
|
| +JOW(jlong, RtpSender_nativeTrack)(JNIEnv* jni,
|
| + jclass,
|
| + jlong j_rtp_sender_pointer,
|
| + jlong j_track_pointer) {
|
| + return jlongFromPointer(
|
| + reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
|
| + ->track()
|
| + .release());
|
| +}
|
| +
|
| +JOW(jstring,
|
| + RtpSender_nativeMid)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
| + return JavaStringFromStdString(
|
| + jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->mid());
|
| +}
|
| +
|
| +JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
| + reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->Release();
|
| +}
|
| +
|
| +JOW(jlong, RtpReceiver_nativeTrack)(JNIEnv* jni,
|
| + jclass,
|
| + jlong j_rtp_receiver_pointer,
|
| + jlong j_track_pointer) {
|
| + return jlongFromPointer(
|
| + reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
| + ->track()
|
| + .release());
|
| +}
|
| +
|
| +JOW(jstring,
|
| + RtpReceiver_nativeMid)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
|
| + return JavaStringFromStdString(jni, reinterpret_cast<RtpReceiverInterface*>(
|
| + j_rtp_receiver_pointer)->mid());
|
| +}
|
| +
|
| +JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
|
| + reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
|
| +}
|
| +
|
| } // namespace webrtc_jni
|
|
|