Skip to content

Commit 62ac1ab

Browse files
committed
Split AudioProcessingConfig into individual config classes. Added get/set of stream-delay to AudioProcessing.
1 parent 0c51a2d commit 62ac1ab

File tree

8 files changed

+622
-105
lines changed

8 files changed

+622
-105
lines changed

webrtc-jni/src/main/cpp/include/JNI_AudioProcessing.h

+63-47
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webrtc-jni/src/main/cpp/include/media/audio/AudioProcessingConfig.h

+115-8
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,124 @@ namespace jni
3434
explicit JavaAudioProcessingConfigClass(JNIEnv * env);
3535

3636
jclass cls;
37-
jfieldID echoCancellerEnabled;
38-
jfieldID residualEchoDetectorEnabled;
39-
jfieldID gainControlEnabled;
40-
jfieldID highPassFilterEnabled;
41-
jfieldID noiseSuppressionEnabled;
42-
jfieldID transientSuppressionEnabled;
43-
jfieldID levelEstimationEnabled;
44-
jfieldID voiceDetectionEnabled;
37+
jfieldID echoCanceller;
38+
jfieldID gainControl;
39+
jfieldID highPassFilter;
40+
jfieldID levelEstimation;
41+
jfieldID noiseSuppression;
42+
jfieldID residualEchoDetector;
43+
jfieldID transientSuppression;
44+
jfieldID voiceDetection;
4545
};
4646

4747
webrtc::AudioProcessing::Config toNative(JNIEnv * env, const JavaRef<jobject> & javaType);
48+
webrtc::AudioProcessing::Config::GainController2 toGainController2(JNIEnv * env, const JavaLocalRef<jobject> & javaType);
49+
50+
51+
class JavaEchoCancellerClass : public JavaClass
52+
{
53+
public:
54+
explicit JavaEchoCancellerClass(JNIEnv * env);
55+
56+
jclass cls;
57+
jfieldID enabled;
58+
jfieldID enforceHighPassFiltering;
59+
};
60+
61+
class JavaGainControlClass : public JavaClass
62+
{
63+
public:
64+
explicit JavaGainControlClass(JNIEnv * env);
65+
66+
jclass cls;
67+
jfieldID enabled;
68+
jfieldID fixedDigital;
69+
jfieldID adaptiveDigital;
70+
};
71+
72+
class JavaGainControlFixedDigitalClass : public JavaClass
73+
{
74+
public:
75+
explicit JavaGainControlFixedDigitalClass(JNIEnv * env);
76+
77+
jclass cls;
78+
jfieldID gainDb;
79+
};
80+
81+
class JavaGainControlAdaptiveDigitalClass : public JavaClass
82+
{
83+
public:
84+
explicit JavaGainControlAdaptiveDigitalClass(JNIEnv * env);
85+
86+
jclass cls;
87+
jfieldID enabled;
88+
jfieldID dryRun;
89+
jfieldID vadResetPeriodMs;
90+
jfieldID adjacentSpeechFramesThreshold;
91+
jfieldID maxGainChangeDbPerSecond;
92+
jfieldID maxOutputNoiseLevelDbfs;
93+
jfieldID vadProbabilityAttack;
94+
jfieldID levelEstimatorAdjacentSpeechFramesThreshold;
95+
jfieldID useSaturationProtector;
96+
jfieldID initialSaturationMarginDb;
97+
jfieldID extraSaturationMarginDb;
98+
jfieldID gainApplierAdjacentSpeechFramesThreshold;
99+
};
100+
101+
class JavaHighPassFilterClass : public JavaClass
102+
{
103+
public:
104+
explicit JavaHighPassFilterClass(JNIEnv * env);
105+
106+
jclass cls;
107+
jfieldID enabled;
108+
};
109+
110+
class JavaLevelEstimationClass : public JavaClass
111+
{
112+
public:
113+
explicit JavaLevelEstimationClass(JNIEnv * env);
114+
115+
jclass cls;
116+
jfieldID enabled;
117+
};
118+
119+
class JavaNoiseSuppressionClass : public JavaClass
120+
{
121+
public:
122+
explicit JavaNoiseSuppressionClass(JNIEnv * env);
123+
124+
jclass cls;
125+
jfieldID enabled;
126+
jfieldID level;
127+
};
128+
129+
class JavaResidualEchoDetectorClass : public JavaClass
130+
{
131+
public:
132+
explicit JavaResidualEchoDetectorClass(JNIEnv * env);
133+
134+
jclass cls;
135+
jfieldID enabled;
136+
};
137+
138+
class JavaTransientSuppressionClass : public JavaClass
139+
{
140+
public:
141+
explicit JavaTransientSuppressionClass(JNIEnv * env);
142+
143+
jclass cls;
144+
jfieldID enabled;
145+
};
146+
147+
class JavaVoiceDetectionClass : public JavaClass
148+
{
149+
public:
150+
explicit JavaVoiceDetectionClass(JNIEnv * env);
151+
152+
jclass cls;
153+
jfieldID enabled;
154+
};
48155
}
49156
}
50157

webrtc-jni/src/main/cpp/src/JNI_AudioProcessing.cpp

+20-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,25 @@ JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_applyC
4040
apm->ApplyConfig(jni::AudioProcessingConfig::toNative(env, jni::JavaLocalRef<jobject>(env, config)));
4141
}
4242

43-
JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_processStream___3BLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3B
43+
JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_setStreamDelayMs
44+
(JNIEnv * env, jobject caller, jint delayMs)
45+
{
46+
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);
47+
CHECK_HANDLE(apm);
48+
49+
apm->set_stream_delay_ms(delayMs);
50+
}
51+
52+
JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_getStreamDelayMs
53+
(JNIEnv * env, jobject caller)
54+
{
55+
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);
56+
CHECK_HANDLEV(apm, 0);
57+
58+
return apm->stream_delay_ms();
59+
}
60+
61+
JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_processStream
4462
(JNIEnv * env, jobject caller, jbyteArray src, jobject inputConfig, jobject outputConfig, jbyteArray dest)
4563
{
4664
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);
@@ -68,7 +86,7 @@ JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_proces
6886
return result;
6987
}
7088

71-
JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_processReverseStream___3BLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3B
89+
JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_processReverseStream
7290
(JNIEnv * env, jobject caller, jbyteArray src, jobject inputConfig, jobject outputConfig, jbyteArray dest)
7391
{
7492
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);

webrtc-jni/src/main/cpp/src/WebRTCContext.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ namespace jni
8080
JavaEnums::add<webrtc::RtpTransceiverDirection>(env, PKG"RTCRtpTransceiverDirection");
8181
JavaEnums::add<webrtc::SdpType>(env, PKG"RTCSdpType");
8282
JavaEnums::add<webrtc::AudioDeviceModule::AudioLayer>(env, PKG_AUDIO"AudioLayer");
83+
JavaEnums::add<webrtc::AudioProcessing::Config::NoiseSuppression::Level>(env, PKG_AUDIO"AudioProcessingConfig$NoiseSuppression$Level");
8384
JavaEnums::add<jni::RTCStats::RTCStatsType>(env, PKG"RTCStatsType");
8485

8586
JavaFactories::add<webrtc::AudioSourceInterface>(env, PKG_MEDIA"audio/AudioTrackSource");

0 commit comments

Comments
 (0)