Skip to content

Commit 2516683

Browse files
authored
Merge pull request #231
* Add audio jitter options to RTCConfiguration * Fix miss assign
1 parent fe082aa commit 2516683

3 files changed

Lines changed: 35 additions & 1 deletion

File tree

webrtc-jni/src/main/cpp/include/api/RTCConfiguration.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ namespace jni
4141
jfieldID rtcpMuxPolicy;
4242
jfieldID certificates;
4343
jfieldID portAllocatorConfig;
44+
jfieldID audioJitterBufferMaxPackets;
45+
jfieldID audioJitterBufferFastAccelerate;
46+
jfieldID audioJitterBufferMinDelayMs;
4447
};
4548

4649
JavaLocalRef<jobject> toJava(JNIEnv * env, const webrtc::PeerConnectionInterface::RTCConfiguration & config);

webrtc-jni/src/main/cpp/src/api/RTCConfiguration.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ namespace jni
6060
auto pac = jni::PortAllocatorConfig::toJava(env, nativeType.port_allocator_config);
6161
env->SetObjectField(config, javaClass->portAllocatorConfig, pac.get());
6262

63+
env->SetIntField(config, javaClass->audioJitterBufferMaxPackets, nativeType.audio_jitter_buffer_max_packets);
64+
env->SetBooleanField(config, javaClass->audioJitterBufferFastAccelerate, nativeType.audio_jitter_buffer_fast_accelerate);
65+
env->SetIntField(config, javaClass->audioJitterBufferMinDelayMs, nativeType.audio_jitter_buffer_min_delay_ms);
66+
6367
return JavaLocalRef<jobject>(env, config);
6468
}
6569

@@ -83,7 +87,7 @@ namespace jni
8387
configuration.type = JavaEnums::toNative<webrtc::PeerConnectionInterface::IceTransportsType>(env, tp);
8488
configuration.bundle_policy = JavaEnums::toNative<webrtc::PeerConnectionInterface::BundlePolicy>(env, bp);
8589
configuration.rtcp_mux_policy = JavaEnums::toNative<webrtc::PeerConnectionInterface::RtcpMuxPolicy>(env, mp);
86-
90+
8791
for (auto & item : JavaIterable(env, cr)) {
8892
auto certificate = webrtc::RTCCertificate::FromPEM(jni::RTCCertificatePEM::toNative(env, item));
8993

@@ -103,6 +107,10 @@ namespace jni
103107
configuration.port_allocator_config.flags = pacObj.getInt(pacJavaClass->flags);
104108
}
105109

110+
configuration.audio_jitter_buffer_fast_accelerate = obj.getBoolean(javaClass->audioJitterBufferFastAccelerate);
111+
configuration.audio_jitter_buffer_max_packets = obj.getInt(javaClass->audioJitterBufferMaxPackets);
112+
configuration.audio_jitter_buffer_min_delay_ms = obj.getInt(javaClass->audioJitterBufferMinDelayMs);
113+
106114
return configuration;
107115
}
108116

@@ -118,6 +126,9 @@ namespace jni
118126
rtcpMuxPolicy = GetFieldID(env, cls, "rtcpMuxPolicy", "L" PKG "RTCRtcpMuxPolicy;");
119127
certificates = GetFieldID(env, cls, "certificates", LIST_SIG);
120128
portAllocatorConfig = GetFieldID(env, cls, "portAllocatorConfig", "L" PKG "PortAllocatorConfig;");
129+
audioJitterBufferMaxPackets = GetFieldID(env, cls, "audioJitterBufferMaxPackets", "I");
130+
audioJitterBufferFastAccelerate = GetFieldID(env, cls, "audioJitterBufferFastAccelerate", "Z");
131+
audioJitterBufferMinDelayMs = GetFieldID(env, cls, "audioJitterBufferMinDelayMs", "I");
121132
}
122133
}
123134
}

webrtc/src/main/java/dev/onvoid/webrtc/RTCConfiguration.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
*/
2929
public class RTCConfiguration {
3030

31+
/**
32+
* Default maximum number of packets in the audio jitter buffer.
33+
*/
34+
public static final int kAudioJitterBufferMaxPackets = 200;
35+
3136
/**
3237
* A list of ICE server's describing servers available to be used by ICE,
3338
* such as STUN and TURN servers.
@@ -64,6 +69,21 @@ public class RTCConfiguration {
6469
*/
6570
public PortAllocatorConfig portAllocatorConfig;
6671

72+
/**
73+
* The maximum number of packets that can be stored in the NetEq audio
74+
* jitter buffer. Can be reduced to lower tolerated audio latency.
75+
*/
76+
public int audioJitterBufferMaxPackets = kAudioJitterBufferMaxPackets;
77+
78+
/** Whether to use the NetEq "fast mode" which will accelerate audio quicker
79+
* if it falls behind.
80+
*/
81+
public boolean audioJitterBufferFastAccelerate;
82+
83+
/**
84+
* The minimum delay in milliseconds for the audio jitter buffer.
85+
*/
86+
public int audioJitterBufferMinDelayMs;
6787

6888
/**
6989
* Creates an instance of RTCConfiguration.

0 commit comments

Comments
 (0)