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

Unified Diff: webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h

Issue 3007543002: Add PeerConnectionObserver#onRemoveTrack to android sdk
Patch Set: review fixes Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698