Android: Generate JNI code for RtpReceiver and PeerConnection.Observer
Bug: webrtc:8278
Change-Id: Ief62c37dd6820c2eb1ce94e37e0a61dd8726caae
Reviewed-on: https://webrtc-review.googlesource.com/28621
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21035}
diff --git a/sdk/android/api/org/webrtc/PeerConnection.java b/sdk/android/api/org/webrtc/PeerConnection.java
index 9bc4ebf..24425f0 100644
--- a/sdk/android/api/org/webrtc/PeerConnection.java
+++ b/sdk/android/api/org/webrtc/PeerConnection.java
@@ -22,7 +22,16 @@
*/
public class PeerConnection {
/** Tracks PeerConnectionInterface::IceGatheringState */
- public enum IceGatheringState { NEW, GATHERING, COMPLETE }
+ public enum IceGatheringState {
+ NEW,
+ GATHERING,
+ COMPLETE;
+
+ @CalledByNative("IceGatheringState")
+ static IceGatheringState fromNativeIndex(int nativeIndex) {
+ return values()[nativeIndex];
+ }
+ }
/** Tracks PeerConnectionInterface::IceConnectionState */
public enum IceConnectionState {
@@ -32,7 +41,12 @@
COMPLETED,
FAILED,
DISCONNECTED,
- CLOSED
+ CLOSED;
+
+ @CalledByNative("IceConnectionState")
+ static IceConnectionState fromNativeIndex(int nativeIndex) {
+ return values()[nativeIndex];
+ }
}
/** Tracks PeerConnectionInterface::TlsCertPolicy */
@@ -48,46 +62,51 @@
HAVE_LOCAL_PRANSWER,
HAVE_REMOTE_OFFER,
HAVE_REMOTE_PRANSWER,
- CLOSED
+ CLOSED;
+
+ @CalledByNative("SignalingState")
+ static SignalingState fromNativeIndex(int nativeIndex) {
+ return values()[nativeIndex];
+ }
}
/** Java version of PeerConnectionObserver. */
public static interface Observer {
/** Triggered when the SignalingState changes. */
- public void onSignalingChange(SignalingState newState);
+ @CalledByNative("Observer") void onSignalingChange(SignalingState newState);
/** Triggered when the IceConnectionState changes. */
- public void onIceConnectionChange(IceConnectionState newState);
+ @CalledByNative("Observer") void onIceConnectionChange(IceConnectionState newState);
/** Triggered when the ICE connection receiving status changes. */
- public void onIceConnectionReceivingChange(boolean receiving);
+ @CalledByNative("Observer") void onIceConnectionReceivingChange(boolean receiving);
/** Triggered when the IceGatheringState changes. */
- public void onIceGatheringChange(IceGatheringState newState);
+ @CalledByNative("Observer") void onIceGatheringChange(IceGatheringState newState);
/** Triggered when a new ICE candidate has been found. */
- public void onIceCandidate(IceCandidate candidate);
+ @CalledByNative("Observer") void onIceCandidate(IceCandidate candidate);
/** Triggered when some ICE candidates have been removed. */
- public void onIceCandidatesRemoved(IceCandidate[] candidates);
+ @CalledByNative("Observer") void onIceCandidatesRemoved(IceCandidate[] candidates);
/** Triggered when media is received on a new stream from remote peer. */
- public void onAddStream(MediaStream stream);
+ @CalledByNative("Observer") void onAddStream(MediaStream stream);
/** Triggered when a remote peer close a stream. */
- public void onRemoveStream(MediaStream stream);
+ @CalledByNative("Observer") void onRemoveStream(MediaStream stream);
/** Triggered when a remote peer opens a DataChannel. */
- public void onDataChannel(DataChannel dataChannel);
+ @CalledByNative("Observer") void onDataChannel(DataChannel dataChannel);
/** Triggered when renegotiation is necessary. */
- public void onRenegotiationNeeded();
+ @CalledByNative("Observer") void onRenegotiationNeeded();
/**
* Triggered when a new track is signaled by the remote peer, as a result of
* setRemoteDescription.
*/
- public void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams);
+ @CalledByNative("Observer") void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams);
}
/** Java version of PeerConnectionInterface.IceServer. */
@@ -369,19 +388,19 @@
public native void setAudioRecording(boolean recording);
public boolean setConfiguration(RTCConfiguration config) {
- return nativeSetConfiguration(config, nativeObserver);
+ return setNativeConfiguration(config, nativeObserver);
}
public boolean addIceCandidate(IceCandidate candidate) {
- return nativeAddIceCandidate(candidate.sdpMid, candidate.sdpMLineIndex, candidate.sdp);
+ return addNativeIceCandidate(candidate.sdpMid, candidate.sdpMLineIndex, candidate.sdp);
}
public boolean removeIceCandidates(final IceCandidate[] candidates) {
- return nativeRemoveIceCandidates(candidates);
+ return removeNativeIceCandidates(candidates);
}
public boolean addStream(MediaStream stream) {
- boolean ret = nativeAddLocalStream(stream.nativeStream);
+ boolean ret = addNativeLocalStream(stream.nativeStream);
if (!ret) {
return false;
}
@@ -390,7 +409,7 @@
}
public void removeStream(MediaStream stream) {
- nativeRemoveLocalStream(stream.nativeStream);
+ removeNativeLocalStream(stream.nativeStream);
localStreams.remove(stream);
}
@@ -432,7 +451,7 @@
* @return A new RtpSender object if successful, or null otherwise.
*/
public RtpSender createSender(String kind, String stream_id) {
- RtpSender new_sender = nativeCreateSender(kind, stream_id);
+ RtpSender new_sender = createNativeSender(kind, stream_id);
if (new_sender != null) {
senders.add(new_sender);
}
@@ -445,7 +464,7 @@
for (RtpSender sender : senders) {
sender.dispose();
}
- senders = nativeGetSenders();
+ senders = getNativeSenders();
return Collections.unmodifiableList(senders);
}
@@ -453,20 +472,20 @@
for (RtpReceiver receiver : receivers) {
receiver.dispose();
}
- receivers = nativeGetReceivers();
+ receivers = getNativeReceivers();
return Collections.unmodifiableList(receivers);
}
// Older, non-standard implementation of getStats.
@Deprecated
public boolean getStats(StatsObserver observer, MediaStreamTrack track) {
- return nativeOldGetStats(observer, (track == null) ? 0 : track.nativeTrack);
+ return oldGetNativeStats(observer, (track == null) ? 0 : track.nativeTrack);
}
// Gets stats using the new stats collection API, see webrtc/api/stats/. These
// will replace old stats collection API when the new API has matured enough.
public void getStats(RTCStatsCollectorCallback callback) {
- nativeNewGetStats(callback);
+ newGetNativeStats(callback);
}
// Limits the bandwidth allocated for all RTP streams sent by this
@@ -479,13 +498,13 @@
// continue until the stopRtcEventLog function is called. The max_size_bytes
// argument is ignored, it is added for future use.
public boolean startRtcEventLog(int file_descriptor, int max_size_bytes) {
- return nativeStartRtcEventLog(file_descriptor, max_size_bytes);
+ return startNativeRtcEventLog(file_descriptor, max_size_bytes);
}
// Stops recording an RTC event log. If no RTC event log is currently being
// recorded, this call will have no effect.
public void stopRtcEventLog() {
- nativeStopRtcEventLog();
+ stopNativeRtcEventLog();
}
// TODO(fischman): add support for DTMF-related methods once that API
@@ -517,7 +536,7 @@
public void dispose() {
close();
for (MediaStream stream : localStreams) {
- nativeRemoveLocalStream(stream.nativeStream);
+ removeNativeLocalStream(stream.nativeStream);
stream.dispose();
}
localStreams.clear();
@@ -535,28 +554,28 @@
private static native void freeObserver(long nativeObserver);
- public native boolean nativeSetConfiguration(RTCConfiguration config, long nativeObserver);
+ private native boolean setNativeConfiguration(RTCConfiguration config, long nativeObserver);
- private native boolean nativeAddIceCandidate(
+ private native boolean addNativeIceCandidate(
String sdpMid, int sdpMLineIndex, String iceCandidateSdp);
- private native boolean nativeRemoveIceCandidates(final IceCandidate[] candidates);
+ private native boolean removeNativeIceCandidates(final IceCandidate[] candidates);
- private native boolean nativeAddLocalStream(long nativeStream);
+ private native boolean addNativeLocalStream(long nativeStream);
- private native void nativeRemoveLocalStream(long nativeStream);
+ private native void removeNativeLocalStream(long nativeStream);
- private native boolean nativeOldGetStats(StatsObserver observer, long nativeTrack);
+ private native boolean oldGetNativeStats(StatsObserver observer, long nativeTrack);
- private native void nativeNewGetStats(RTCStatsCollectorCallback callback);
+ private native void newGetNativeStats(RTCStatsCollectorCallback callback);
- private native RtpSender nativeCreateSender(String kind, String stream_id);
+ private native RtpSender createNativeSender(String kind, String stream_id);
- private native List<RtpSender> nativeGetSenders();
+ private native List<RtpSender> getNativeSenders();
- private native List<RtpReceiver> nativeGetReceivers();
+ private native List<RtpReceiver> getNativeReceivers();
- private native boolean nativeStartRtcEventLog(int file_descriptor, int max_size_bytes);
+ private native boolean startNativeRtcEventLog(int file_descriptor, int max_size_bytes);
- private native void nativeStopRtcEventLog();
+ private native void stopNativeRtcEventLog();
}
diff --git a/sdk/android/api/org/webrtc/RtpReceiver.java b/sdk/android/api/org/webrtc/RtpReceiver.java
index 69dfd92..ac29695 100644
--- a/sdk/android/api/org/webrtc/RtpReceiver.java
+++ b/sdk/android/api/org/webrtc/RtpReceiver.java
@@ -10,11 +10,14 @@
package org.webrtc;
+import org.webrtc.MediaStreamTrack;
+
/** 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.
+ @CalledByNative("Observer")
public void onFirstPacketReceived(MediaStreamTrack.MediaType media_type);
}
@@ -23,9 +26,10 @@
private MediaStreamTrack cachedTrack;
+ @CalledByNative
public RtpReceiver(long nativeRtpReceiver) {
this.nativeRtpReceiver = nativeRtpReceiver;
- long track = nativeGetTrack(nativeRtpReceiver);
+ long track = getNativeTrack(nativeRtpReceiver);
// We can assume that an RtpReceiver always has an associated track.
cachedTrack = new MediaStreamTrack(track);
}
@@ -35,21 +39,22 @@
}
public boolean setParameters(RtpParameters parameters) {
- return nativeSetParameters(nativeRtpReceiver, parameters);
+ return parameters == null ? false : setNativeParameters(nativeRtpReceiver, parameters);
}
public RtpParameters getParameters() {
- return nativeGetParameters(nativeRtpReceiver);
+ return getNativeParameters(nativeRtpReceiver);
}
public String id() {
- return nativeId(nativeRtpReceiver);
+ return getNativeId(nativeRtpReceiver);
}
+ @CalledByNative
public void dispose() {
cachedTrack.dispose();
if (nativeObserver != 0) {
- nativeUnsetObserver(nativeRtpReceiver, nativeObserver);
+ unsetNativeObserver(nativeRtpReceiver, nativeObserver);
nativeObserver = 0;
}
JniCommon.nativeReleaseRef(nativeRtpReceiver);
@@ -58,23 +63,23 @@
public void SetObserver(Observer observer) {
// Unset the existing one before setting a new one.
if (nativeObserver != 0) {
- nativeUnsetObserver(nativeRtpReceiver, nativeObserver);
+ unsetNativeObserver(nativeRtpReceiver, nativeObserver);
}
- nativeObserver = nativeSetObserver(nativeRtpReceiver, observer);
+ nativeObserver = setNativeObserver(nativeRtpReceiver, observer);
}
// This should increment the reference count of the track.
// Will be released in dispose().
- private static native long nativeGetTrack(long nativeRtpReceiver);
+ private static native long getNativeTrack(long nativeRtpReceiver);
- private static native boolean nativeSetParameters(
+ private static native boolean setNativeParameters(
long nativeRtpReceiver, RtpParameters parameters);
- private static native RtpParameters nativeGetParameters(long nativeRtpReceiver);
+ private static native RtpParameters getNativeParameters(long nativeRtpReceiver);
- private static native String nativeId(long nativeRtpReceiver);
+ private static native String getNativeId(long nativeRtpReceiver);
- private static native long nativeSetObserver(long nativeRtpReceiver, Observer observer);
+ private static native long setNativeObserver(long nativeRtpReceiver, Observer observer);
- private static native long nativeUnsetObserver(long nativeRtpReceiver, long nativeObserver);
+ private static native void unsetNativeObserver(long nativeRtpReceiver, long nativeObserver);
};