Index: webrtc/sdk/android/api/org/webrtc/RtpReceiver.java |
diff --git a/webrtc/sdk/android/api/org/webrtc/RtpReceiver.java b/webrtc/sdk/android/api/org/webrtc/RtpReceiver.java |
index 7df030de1104b2e438cf4ebd72711a99874c93e5..d4244ed62c1dc13a259bd79b151c22d51540679f 100644 |
--- a/webrtc/sdk/android/api/org/webrtc/RtpReceiver.java |
+++ b/webrtc/sdk/android/api/org/webrtc/RtpReceiver.java |
@@ -12,7 +12,14 @@ package org.webrtc; |
/** Java wrapper for a C++ RtpReceiverInterface. */ |
public class RtpReceiver { |
+ /** Java wrapper for a C++ RtpReceiverObserverInterface*/ |
+ public static interface Observer { |
+ // Called when the first audio or video packet is received. |
+ public void onFirstPacketReceived(MediaStreamTrack.MediaType media_type); |
+ } |
+ |
final long nativeRtpReceiver; |
+ private long nativeObserver; |
private MediaStreamTrack cachedTrack; |
@@ -41,9 +48,21 @@ public class RtpReceiver { |
public void dispose() { |
cachedTrack.dispose(); |
+ if (nativeObserver != 0) { |
+ nativeUnsetObserver(nativeRtpReceiver, nativeObserver); |
+ nativeObserver = 0; |
+ } |
free(nativeRtpReceiver); |
} |
+ public void SetObserver(Observer observer) { |
+ // Unset the existing one before setting a new one. |
+ if (nativeObserver != 0) { |
+ nativeUnsetObserver(nativeRtpReceiver, nativeObserver); |
+ } |
+ nativeObserver = nativeSetObserver(nativeRtpReceiver, observer); |
+ } |
+ |
// This should increment the reference count of the track. |
// Will be released in dispose(). |
private static native long nativeGetTrack(long nativeRtpReceiver); |
@@ -56,4 +75,8 @@ public class RtpReceiver { |
private static native String nativeId(long nativeRtpReceiver); |
private static native void free(long nativeRtpReceiver); |
+ |
+ private static native long nativeSetObserver(long nativeRtpReceiver, Observer observer); |
+ |
+ private static native long nativeUnsetObserver(long nativeRtpReceiver, long nativeObserver); |
}; |