Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions sdk/android/api/org/webrtc/PeerConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -1176,6 +1176,14 @@ public void getStats(RTCStatsCollectorCallback callback) {
nativeNewGetStats(callback);
}

public void getStats(RTCStatsCollectorCallback callback, RtpSender sender) {
nativeNewGetStatsForSender(callback, sender.getNativeRtpSender());
}

public void getStats(RTCStatsCollectorCallback callback, RtpReceiver receiver) {
nativeNewGetStatsForReceiver(callback, receiver.getNativeRtpReceiver());
}

/**
* Limits the bandwidth allocated for all RTP streams sent by this
* PeerConnection. Pass null to leave a value unchanged.
Expand Down Expand Up @@ -1310,6 +1318,10 @@ private native void nativeAddIceCandidateWithObserver(
private native void nativeRemoveLocalStream(long stream);
private native boolean nativeOldGetStats(StatsObserver observer, long nativeTrack);
private native void nativeNewGetStats(RTCStatsCollectorCallback callback);
private native void nativeNewGetStatsForSender(
RTCStatsCollectorCallback callback, long nativeRtpSender);
private native void nativeNewGetStatsForReceiver(
RTCStatsCollectorCallback callback, long nativeRtpReceiver);
private native RtpSender nativeCreateSender(String kind, String stream_id);
private native List<RtpSender> nativeGetSenders();
private native List<RtpReceiver> nativeGetReceivers();
Expand Down
6 changes: 6 additions & 0 deletions sdk/android/api/org/webrtc/RtpReceiver.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ public void setFrameDecryptor(FrameDecryptor frameDecryptor) {
nativeSetFrameDecryptor(nativeRtpReceiver, frameDecryptor.getNativeFrameDecryptor());
}

/** Returns a pointer to webrtc::RtpReceiverInterface. */
long getNativeRtpReceiver() {
checkRtpReceiverExists();
return nativeRtpReceiver;
}

private void checkRtpReceiverExists() {
if (nativeRtpReceiver == 0) {
throw new IllegalStateException("RtpReceiver has been disposed.");
Expand Down
24 changes: 24 additions & 0 deletions sdk/android/src/jni/pc/peer_connection.cc
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,30 @@ static void JNI_PeerConnection_NewGetStats(
ExtractNativePC(jni, j_pc)->GetStats(callback.get());
}

static void JNI_PeerConnection_NewGetStatsForSender(
JNIEnv* jni,
const JavaParamRef<jobject>& j_pc,
const JavaParamRef<jobject>& j_callback,
jlong native_sener) {
auto callback =
rtc::make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
rtc::scoped_refptr<RtpSenderInterface> selector(
reinterpret_cast<RtpSenderInterface*>(native_sener));
ExtractNativePC(jni, j_pc)->GetStats(selector, callback);
}

static void JNI_PeerConnection_NewGetStatsForReceiver(
JNIEnv* jni,
const JavaParamRef<jobject>& j_pc,
const JavaParamRef<jobject>& j_callback,
jlong native_receiver) {
auto callback =
rtc::make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
rtc::scoped_refptr<RtpReceiverInterface> selector(
reinterpret_cast<RtpReceiverInterface*>(native_receiver));
ExtractNativePC(jni, j_pc)->GetStats(selector, callback);
}

static jboolean JNI_PeerConnection_SetBitrate(
JNIEnv* jni,
const JavaParamRef<jobject>& j_pc,
Expand Down