@@ -40,82 +40,58 @@ JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_applyC
40
40
apm->ApplyConfig (jni::AudioProcessingConfig::toNative (env, jni::JavaLocalRef<jobject>(env, config)));
41
41
}
42
42
43
- JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_ProcessStream___3SLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3S
44
- (JNIEnv * env, jobject caller, jshortArray src, jobject inputConfig, jobject outputConfig, jshortArray dest)
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
44
+ (JNIEnv * env, jobject caller, jbyteArray src, jobject inputConfig, jobject outputConfig, jbyteArray dest)
45
45
{
46
46
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);
47
47
CHECK_HANDLEV (apm, 0 );
48
48
49
49
webrtc::StreamConfig srcConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, inputConfig));
50
50
webrtc::StreamConfig dstConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, outputConfig));
51
51
52
- jshort * srcPtr = env->GetShortArrayElements (src, nullptr );
53
- jshort * dstPtr = env->GetShortArrayElements (dest, nullptr );
52
+ jboolean isDstCopy = JNI_FALSE;
54
53
55
- int result = apm->ProcessStream (srcPtr, srcConfig, dstConfig, dstPtr);
54
+ jbyte * srcPtr = env->GetByteArrayElements (src, nullptr );
55
+ jbyte * dstPtr = env->GetByteArrayElements (dest, &isDstCopy);
56
56
57
- env->ReleaseShortArrayElements (src, srcPtr, JNI_ABORT);
58
- env->ReleaseShortArrayElements (dest, dstPtr, JNI_ABORT);
57
+ int result = apm->ProcessStream (reinterpret_cast <int16_t *>(srcPtr), srcConfig, dstConfig, reinterpret_cast <int16_t *>(dstPtr));
59
58
60
- return result;
61
- }
62
-
63
- JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_ProcessStream___3FLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3F
64
- (JNIEnv * env, jobject caller, jfloatArray src, jobject inputConfig, jobject outputConfig, jfloatArray dest)
65
- {
66
- webrtc::AudioProcessing* apm = GetHandle<webrtc::AudioProcessing>(env, caller);
67
- CHECK_HANDLEV (apm, 0 );
59
+ if (isDstCopy == JNI_TRUE) {
60
+ jsize dstLength = env->GetArrayLength (dest);
68
61
69
- webrtc::StreamConfig srcConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, inputConfig));
70
- webrtc::StreamConfig dstConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, outputConfig));
71
-
72
- jfloat * srcPtr = env->GetFloatArrayElements (src, nullptr );
73
- jfloat * dstPtr = env->GetFloatArrayElements (dest, nullptr );
74
-
75
- int result = apm->ProcessStream (reinterpret_cast <float **>(srcPtr), srcConfig, dstConfig, reinterpret_cast <float **>(dstPtr));
62
+ env->SetByteArrayRegion (dest, 0 , dstLength, dstPtr);
63
+ }
76
64
77
- env->ReleaseFloatArrayElements (src, srcPtr, JNI_ABORT);
78
- env->ReleaseFloatArrayElements (dest, dstPtr, JNI_ABORT);
65
+ env->ReleaseByteArrayElements (src, srcPtr, JNI_ABORT);
66
+ env->ReleaseByteArrayElements (dest, dstPtr, JNI_ABORT);
79
67
80
68
return result;
81
69
}
82
70
83
- JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_ProcessReverseStream___3SLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3S
84
- (JNIEnv * env, jobject caller, jshortArray src, jobject inputConfig, jobject outputConfig, jshortArray dest)
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
72
+ (JNIEnv * env, jobject caller, jbyteArray src, jobject inputConfig, jobject outputConfig, jbyteArray dest)
85
73
{
86
74
webrtc::AudioProcessing * apm = GetHandle<webrtc::AudioProcessing>(env, caller);
87
75
CHECK_HANDLEV (apm, 0 );
88
76
89
77
webrtc::StreamConfig srcConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, inputConfig));
90
78
webrtc::StreamConfig dstConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, outputConfig));
91
79
92
- jshort * srcPtr = env->GetShortArrayElements (src, nullptr );
93
- jshort * dstPtr = env->GetShortArrayElements (dest, nullptr );
80
+ jboolean isDstCopy = JNI_FALSE;
94
81
95
- int result = apm->ProcessReverseStream (srcPtr, srcConfig, dstConfig, dstPtr);
82
+ jbyte * srcPtr = env->GetByteArrayElements (src, nullptr );
83
+ jbyte * dstPtr = env->GetByteArrayElements (dest, &isDstCopy);
96
84
97
- env->ReleaseShortArrayElements (src, srcPtr, JNI_ABORT);
98
- env->ReleaseShortArrayElements (dest, dstPtr, JNI_ABORT);
85
+ int result = apm->ProcessReverseStream (reinterpret_cast <int16_t *>(srcPtr), srcConfig, dstConfig, reinterpret_cast <int16_t *>(dstPtr));
99
86
100
- return result;
101
- }
102
-
103
- JNIEXPORT jint JNICALL Java_dev_onvoid_webrtc_media_audio_AudioProcessing_ProcessReverseStream___3FLdev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2Ldev_onvoid_webrtc_media_audio_AudioProcessingStreamConfig_2_3F
104
- (JNIEnv * env, jobject caller, jfloatArray src, jobject inputConfig, jobject outputConfig, jfloatArray dest)
105
- {
106
- webrtc::AudioProcessing* apm = GetHandle<webrtc::AudioProcessing>(env, caller);
107
- CHECK_HANDLEV (apm, 0 );
87
+ if (isDstCopy == JNI_TRUE) {
88
+ jsize dstLength = env->GetArrayLength (dest);
108
89
109
- webrtc::StreamConfig srcConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, inputConfig));
110
- webrtc::StreamConfig dstConfig = jni::AudioProcessingStreamConfig::toNative (env, jni::JavaLocalRef<jobject>(env, outputConfig));
111
-
112
- jfloat * srcPtr = env->GetFloatArrayElements (src, nullptr );
113
- jfloat * dstPtr = env->GetFloatArrayElements (dest, nullptr );
114
-
115
- int result = apm->ProcessStream (reinterpret_cast <float **>(srcPtr), srcConfig, dstConfig, reinterpret_cast <float **>(dstPtr));
90
+ env->SetByteArrayRegion (dest, 0 , dstLength, dstPtr);
91
+ }
116
92
117
- env->ReleaseFloatArrayElements (src, srcPtr, JNI_ABORT);
118
- env->ReleaseFloatArrayElements (dest, dstPtr, JNI_ABORT);
93
+ env->ReleaseByteArrayElements (src, srcPtr, JNI_ABORT);
94
+ env->ReleaseByteArrayElements (dest, dstPtr, JNI_ABORT);
119
95
120
96
return result;
121
97
}
0 commit comments