| 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..58994709aa0f270c22a2aed51b51236b36080e16 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();
|
| @@ -61,9 +63,15 @@ class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver {
|
| NativeToJavaStreamsMap;
|
| typedef std::map<webrtc::RtpReceiverInterface*, jobject>
|
| NativeToJavaRtpReceiverMap;
|
| + typedef std::map<webrtc::MediaStreamTrackInterface*, jobject>
|
| + NativeToJavaMediaTrackMap;
|
| + typedef std::map<webrtc::MediaStreamTrackInterface*,
|
| + webrtc::RtpReceiverInterface*>
|
| + NativeMediaStreamTrackToNativeRtpReceiver;
|
|
|
| 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 +84,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_;
|
| @@ -88,11 +105,15 @@ class PeerConnectionObserverJni : public webrtc::PeerConnectionObserver {
|
| 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_;
|
| + NativeToJavaRtpReceiverMap rtp_receivers_;
|
| + NativeMediaStreamTrackToNativeRtpReceiver track_to_receiver_;
|
| + std::vector<std::unique_ptr<webrtc::MediaStreamObserver>> stream_observers_;
|
| + NativeToJavaMediaTrackMap remote_tracks_;
|
| };
|
|
|
| } // namespace webrtc_jni
|
|
|