Create the Java Wrapper of RtpReceiverObserverInterface.
Create the RtpReceiver.Observer which is a Java wrapper over the webrtc::RtpReceiverObserverInterface. The callback function onFirstPacketReceived will be called whenever the first audio or video packet it received. BUG=webrtc:6742 Review-Url: https://codereview.webrtc.org/2531333003 Cr-Commit-Position: refs/heads/master@{#15464}
This commit is contained in:
@ -15,6 +15,11 @@ public class MediaStreamTrack {
|
||||
/** Tracks MediaStreamTrackInterface.TrackState */
|
||||
public enum State { LIVE, ENDED }
|
||||
|
||||
public enum MediaType {
|
||||
MEDIA_TYPE_AUDIO,
|
||||
MEDIA_TYPE_VIDEO,
|
||||
}
|
||||
|
||||
final long nativeTrack;
|
||||
|
||||
public MediaStreamTrack(long nativeTrack) {
|
||||
|
||||
@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user