Index: webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h |
diff --git a/webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h b/webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h |
index 2d9d749a6b2014f43820549c06da9d85d400d107..aef5af3fb27c2b7fc24633d6496ed375e196d909 100644 |
--- a/webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h |
+++ b/webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h |
@@ -11,6 +11,7 @@ |
#ifndef WEBRTC_SDK_ANDROID_SRC_JNI_PC_PEERCONNECTIONOBSERVER_JNI_H_ |
#define WEBRTC_SDK_ANDROID_SRC_JNI_PC_PEERCONNECTIONOBSERVER_JNI_H_ |
+#include <webrtc/pc/mediastreamobserver.h> |
#include <map> |
#include <memory> |
#include <vector> |
@@ -24,7 +25,8 @@ namespace webrtc_jni { |
// Adapter between the C++ PeerConnectionObserver interface and the Java |
// PeerConnection.Observer interface. Wraps an instance of the Java interface |
// and dispatches C++ callbacks to Java. |
-class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver { |
+class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver, |
+ public sigslot::has_slots<> { |
public: |
PeerConnectionObserverJni(JNIEnv* jni, jobject j_observer); |
virtual ~PeerConnectionObserverJni(); |
@@ -59,11 +61,11 @@ class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver { |
private: |
typedef std::map<webrtc::MediaStreamInterface*, jobject> |
NativeToJavaStreamsMap; |
- typedef std::map<webrtc::RtpReceiverInterface*, jobject> |
- NativeToJavaRtpReceiverMap; |
+ typedef std::map<webrtc::MediaStreamTrackInterface*, jobject> |
+ NativeToJavaMediaTrackMap; |
void DisposeRemoteStream(const NativeToJavaStreamsMap::iterator& it); |
- void DisposeRtpReceiver(const NativeToJavaRtpReceiverMap::iterator& it); |
+ void DisposeRemoteTrack(const NativeToJavaMediaTrackMap::iterator& it); |
// If the NativeToJavaStreamsMap contains the stream, return it. |
// Otherwise, create a new Java MediaStream. |
@@ -76,6 +78,15 @@ class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver { |
const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>& |
streams); |
+ void OnAudioTrackAdded(webrtc::AudioTrackInterface* track, |
+ webrtc::MediaStreamInterface* stream); |
+ void OnVideoTrackAdded(webrtc::VideoTrackInterface* track, |
+ webrtc::MediaStreamInterface* stream); |
+ void OnAudioTrackRemoved(webrtc::AudioTrackInterface* track, |
+ webrtc::MediaStreamInterface* stream); |
+ void OnVideoTrackRemoved(webrtc::VideoTrackInterface* track, |
+ webrtc::MediaStreamInterface* stream); |
+ |
const ScopedGlobalRef<jobject> j_observer_global_; |
const ScopedGlobalRef<jclass> j_observer_class_; |
const ScopedGlobalRef<jclass> j_media_stream_class_; |
@@ -86,13 +97,12 @@ class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver { |
const jmethodID j_video_track_ctor_; |
const ScopedGlobalRef<jclass> j_data_channel_class_; |
const jmethodID j_data_channel_ctor_; |
- const ScopedGlobalRef<jclass> j_rtp_receiver_class_; |
- const jmethodID j_rtp_receiver_ctor_; |
// C++ -> Java remote streams. The stored jobects are global refs and must be |
// manually deleted upon removal. Use DisposeRemoteStream(). |
NativeToJavaStreamsMap remote_streams_; |
- NativeToJavaRtpReceiverMap rtp_receivers_; |
std::unique_ptr<MediaConstraintsJni> constraints_; |
+ std::vector<std::unique_ptr<webrtc::MediaStreamObserver>> stream_observers_; |
+ NativeToJavaMediaTrackMap remote_tracks_; |
}; |
} // namespace webrtc_jni |