diff --git a/lib/ice4j.jar b/lib/ice4j.jar index eb86c3831ee59e147a714271d6fbb9363513cf4b..213ae54e782b2d32a34649257bb4617b06342b51 100644 Binary files a/lib/ice4j.jar and b/lib/ice4j.jar differ diff --git a/src/native/portaudio/README b/src/native/portaudio/README index bb9aa066a60c7c6e2c39bf81e895f7e5dbcd1434..3b81819176ff28f41f8c2bbd0e7751365429525d 100644 --- a/src/native/portaudio/README +++ b/src/native/portaudio/README @@ -31,6 +31,6 @@ $ export CPP="gcc -E" $ ./configure --disable-shared --enable-static --with-pic && make -3. jportaudio +3. jnportaudio - Linux/FreeBSD, Mac OS X, Windows $ make/gmake diff --git a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.c b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.c similarity index 84% rename from src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.c rename to src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.c index 133c91a54262f19149655708d4446f1786ad3807..c0afe507a2f16bd81238249c0935c27ce80bb163 100644 --- a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.c +++ b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.c @@ -5,7 +5,7 @@ * See terms of license at gnu.org. */ -#include "org_jitsi_impl_neomedia_portaudio_PortAudio.h" +#include "org_jitsi_impl_neomedia_portaudio_Pa.h" #include "AudioQualityImprovement.h" #include "ConditionVariable.h" @@ -81,6 +81,18 @@ static PaStreamParameters *PortAudio_fixStreamParametersSuggestedLatency static long PortAudio_getFrameSize(PaStreamParameters *streamParameters); static unsigned long PortAudio_getSampleSizeInBits (PaStreamParameters *streamParameters); + +/** + * Gets a new <tt>jbyteArray</tt> instance which is initialized with the bytes + * of a specific C string i.e. <tt>const char *</tt>. + * + * @param env + * @param str the bytes/C string to initialize the new <tt>jbyteArray</tt> + * instance with + * @return a new <tt>jbyteArray</tt> instance which is initialized with the + * bytes of the specified <tt>str</tt> + */ +static jbyteArray PortAudio_getStrBytes(JNIEnv *env, const char *str); static void PortAudio_throwException(JNIEnv *env, PaError errorCode); /** @@ -132,23 +144,16 @@ static void PortAudioStream_release(PortAudioStream *stream); static void PortAudioStream_retain(PortAudioStream *stream); static const char *AUDIO_QUALITY_IMPROVEMENT_STRING_ID = "portaudio"; -#define LATENCY_HIGH org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_HIGH -#define LATENCY_LOW org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_LOW -#define LATENCY_UNSPECIFIED org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_UNSPECIFIED +#define LATENCY_HIGH org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_HIGH +#define LATENCY_LOW org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_LOW +#define LATENCY_UNSPECIFIED org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_UNSPECIFIED static jclass PortAudio_devicesChangedCallbackClass = 0; static jmethodID PortAudio_devicesChangedCallbackMethodID = 0; static JavaVM* PortAudio_vm = 0; JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_free - (JNIEnv *env, jclass clazz, jlong ptr) -{ - free((void *) (intptr_t) ptr); -} - -JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1AbortStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_AbortStream (JNIEnv *env, jclass clazz, jlong stream) { PaError errorCode @@ -159,7 +164,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1AbortStream } JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_CloseStream (JNIEnv *env, jclass clazz, jlong stream) { PortAudioStream *portAudioStream = (PortAudioStream *) (intptr_t) stream; @@ -173,23 +178,120 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream PortAudioStream_free(env, portAudioStream); } +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultHighInputLatency + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultHighInputLatency; +} + +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultHighOutputLatency + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultHighOutputLatency; +} + +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultLowInputLatency + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultLowInputLatency; +} + +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultLowOutputLatency + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultLowOutputLatency; +} + +JNIEXPORT jdouble JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultSampleRate + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultSampleRate; +} + +JNIEXPORT jbyteArray JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDeviceUIDBytes + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + PaDeviceInfo *_deviceInfo = (PaDeviceInfo *) (intptr_t) deviceInfo; + + return + (_deviceInfo->structVersion >= 3) + ? PortAudio_getStrBytes(env, _deviceInfo->deviceUID) + : NULL; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getHostApi + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->hostApi; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getMaxInputChannels + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->maxInputChannels; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getMaxOutputChannels + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return ((PaDeviceInfo *) (intptr_t) deviceInfo)->maxOutputChannels; +} + +JNIEXPORT jbyteArray JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getNameBytes + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + return + PortAudio_getStrBytes( + env, + ((PaDeviceInfo *) (intptr_t) deviceInfo)->name); +} + +JNIEXPORT jbyteArray JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getTransportTypeBytes + (JNIEnv *env, jclass clazz, jlong deviceInfo) +{ + PaDeviceInfo *_deviceInfo = (PaDeviceInfo *) (intptr_t) deviceInfo; + + return + (_deviceInfo->structVersion >= 3) + ? PortAudio_getStrBytes(env, _deviceInfo->transportType) + : NULL; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_free + (JNIEnv *env, jclass clazz, jlong ptr) +{ + free((void *) (intptr_t) ptr); +} + JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDefaultInputDevice +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDefaultInputDevice (JNIEnv *env, jclass clazz) { return Pa_GetDefaultInputDevice(); } JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDefaultOutputDevice +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDefaultOutputDevice (JNIEnv *env, jclass clazz) { return Pa_GetDefaultOutputDevice(); } JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceCount( - JNIEnv *env, jclass clazz) +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDeviceCount + (JNIEnv *env, jclass clazz) { PaDeviceIndex deviceCount = Pa_GetDeviceCount(); @@ -199,46 +301,74 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceCount( } JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceInfo( - JNIEnv *env, jclass clazz, jint deviceIndex) +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDeviceInfo + (JNIEnv *env, jclass clazz, jint deviceIndex) { return (jlong) (intptr_t) Pa_GetDeviceInfo(deviceIndex); } JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetHostApiInfo +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetHostApiInfo (JNIEnv *env , jclass clazz, jint hostApiIndex) { return (jlong) (intptr_t) Pa_GetHostApiInfo(hostApiIndex); } JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetSampleSize +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetSampleSize (JNIEnv *env, jclass clazz, jlong format) { return Pa_GetSampleSize(format); } JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetStreamReadAvailable +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetStreamReadAvailable (JNIEnv *env, jclass clazz, jlong stream) { return Pa_GetStreamReadAvailable( - ((PortAudioStream *) (intptr_t) stream)->stream); + ((PortAudioStream *) (intptr_t) stream)->stream); } JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetStreamWriteAvailable +Java_org_jitsi_impl_neomedia_portaudio_Pa_GetStreamWriteAvailable (JNIEnv *env, jclass clazz, jlong stream) { return Pa_GetStreamWriteAvailable( - ((PortAudioStream *) (intptr_t) stream)->stream); + ((PortAudioStream *) (intptr_t) stream)->stream); +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDefaultInputDevice + (JNIEnv *env, jclass clazz, jlong hostApi) +{ + return ((PaHostApiInfo *) (intptr_t) hostApi)->defaultInputDevice; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDefaultOutputDevice + (JNIEnv *env, jclass clazz, jlong hostApi) +{ + return ((PaHostApiInfo *) (intptr_t) hostApi)->defaultOutputDevice; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDeviceCount + (JNIEnv *env, jclass clazz, jlong hostApi) +{ + return ((PaHostApiInfo *) (intptr_t) hostApi)->deviceCount; +} + +JNIEXPORT jint JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getType + (JNIEnv *env, jclass clazz, jlong hostApi) +{ + return ((PaHostApiInfo *) (intptr_t) hostApi)->type; } JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1Initialize +Java_org_jitsi_impl_neomedia_portaudio_Pa_Initialize (JNIEnv *env, jclass clazz) { PaError errorCode = Pa_Initialize(); @@ -246,9 +376,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1Initialize if (paNoError == errorCode) { jclass devicesChangedCallbackClass - = (*env)->FindClass( - env, - "net/java/sip/communicator/impl/neomedia/portaudio/PortAudio"); + = (*env)->FindClass(env, "org/jitsi/impl/neomedia/portaudio/Pa"); if (devicesChangedCallbackClass) { @@ -281,7 +409,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1Initialize } JNIEXPORT jboolean JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1IsFormatSupported +Java_org_jitsi_impl_neomedia_portaudio_Pa_IsFormatSupported (JNIEnv *env, jclass clazz, jlong inputParameters, jlong outputParameters, jdouble sampleRate) { @@ -296,7 +424,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1IsFormatSupported } JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_OpenStream (JNIEnv *env, jclass clazz, jlong inputParameters, jlong outputParameters, jdouble sampleRate, @@ -484,7 +612,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream &(stream->inputMutex), &(stream->inputCondVar))) { - Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream( + Java_org_jitsi_impl_neomedia_portaudio_Pa_CloseStream( env, clazz, (jlong) (intptr_t) stream); if (JNI_FALSE == (*env)->ExceptionCheck(env)) @@ -528,7 +656,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream &(stream->outputMutex), &(stream->outputCondVar))) { - Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream( + Java_org_jitsi_impl_neomedia_portaudio_Pa_CloseStream( env, clazz, (jlong) (intptr_t) stream); if (JNI_FALSE == (*env)->ExceptionCheck(env)) @@ -565,7 +693,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream } JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1ReadStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_ReadStream (JNIEnv *env, jclass clazz, jlong stream, jbyteArray buffer, jlong frames) { jbyte* data = (*env)->GetByteArrayElements(env, buffer, NULL); @@ -665,7 +793,33 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1ReadStream } JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StartStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_setDenoise + (JNIEnv *env, jclass clazz, jlong stream, jboolean denoise) +{ + AudioQualityImprovement *aqi + = ((PortAudioStream *) (intptr_t) stream)->audioQualityImprovement; + + if (aqi) + AudioQualityImprovement_setDenoise(aqi, denoise); +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_setEchoFilterLengthInMillis + (JNIEnv *env, jclass clazz, jlong stream, jlong echoFilterLengthInMillis) +{ + AudioQualityImprovement *aqi + = ((PortAudioStream *) (intptr_t) stream)->audioQualityImprovement; + + if (aqi) + { + AudioQualityImprovement_setEchoFilterLengthInMillis( + aqi, + echoFilterLengthInMillis); + } +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_StartStream (JNIEnv *env, jclass clazz, jlong stream) { PortAudioStream *portAudioStream = (PortAudioStream *) (intptr_t) stream; @@ -694,7 +848,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StartStream } JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StopStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_StopStream (JNIEnv *env, jclass clazz, jlong stream) { PaError errorCode @@ -704,8 +858,37 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StopStream PortAudio_throwException(env, errorCode); } +JNIEXPORT jlong JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_StreamParameters_1new + (JNIEnv *env, jclass clazz, + jint deviceIndex, + jint channelCount, + jlong sampleFormat, + jdouble suggestedLatency) +{ + PaStreamParameters *sp + = (PaStreamParameters *) malloc(sizeof(PaStreamParameters)); + + if (sp) + { + sp->device = deviceIndex; + sp->channelCount = channelCount; + sp->sampleFormat = sampleFormat; + sp->suggestedLatency = suggestedLatency; + sp->hostApiSpecificStreamInfo = NULL; + } + return (jlong) (intptr_t) sp; +} + +JNIEXPORT void JNICALL +Java_org_jitsi_impl_neomedia_portaudio_Pa_UpdateAvailableDeviceList + (JNIEnv *env, jclass clazz) +{ + Pa_UpdateAvailableDeviceList(); +} + JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream +Java_org_jitsi_impl_neomedia_portaudio_Pa_WriteStream (JNIEnv *env, jclass clazz, jlong stream, jbyteArray buffer, jint offset, jlong frames, @@ -717,7 +900,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream jint i; PaError errorCode = paNoError; jlong framesInBytes; - AudioQualityImprovement *audioQualityImprovement; + AudioQualityImprovement *aqi; double sampleRate; unsigned long sampleSizeInBits; int channels; @@ -730,7 +913,7 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream portAudioStream = (PortAudioStream *) (intptr_t) stream; framesInBytes = frames * portAudioStream->outputFrameSize; - audioQualityImprovement = portAudioStream->audioQualityImprovement; + aqi = portAudioStream->audioQualityImprovement; sampleRate = portAudioStream->sampleRate; sampleSizeInBits = portAudioStream->sampleSizeInBits; channels = portAudioStream->channels; @@ -784,10 +967,10 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream if (paNoError == errorCode) { - if (audioQualityImprovement) + if (aqi) { AudioQualityImprovement_process( - audioQualityImprovement, + aqi, AUDIO_QUALITY_IMPROVEMENT_SAMPLE_ORIGIN_OUTPUT, sampleRate, sampleSizeInBits, channels, outputLatency, @@ -809,10 +992,10 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream break; else { - if (audioQualityImprovement) + if (aqi) { AudioQualityImprovement_process( - audioQualityImprovement, + aqi, AUDIO_QUALITY_IMPROVEMENT_SAMPLE_ORIGIN_OUTPUT, sampleRate, sampleSizeInBits, channels, outputLatency, @@ -829,240 +1012,10 @@ Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream PortAudio_throwException(env, errorCode); } -JNIEXPORT jdouble JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultHighInputLatency - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultHighInputLatency; -} - -JNIEXPORT jdouble JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultHighOutputLatency - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultHighOutputLatency; -} - -JNIEXPORT jdouble JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultLowInputLatency - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultLowInputLatency; -} - -JNIEXPORT jdouble JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultLowOutputLatency - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultLowOutputLatency; -} - -JNIEXPORT jdouble JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultSampleRate - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->defaultSampleRate; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getHostApi - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->hostApi; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxInputChannels - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->maxInputChannels; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxOutputChannels - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - return ((PaDeviceInfo *) (intptr_t) deviceInfo)->maxOutputChannels; -} - -JNIEXPORT jbyteArray JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getNameBytes - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - const char *name = ((PaDeviceInfo *) (intptr_t) deviceInfo)->name; - jbyteArray nameBytes; - - if (name) - { - size_t nameLength = strlen(name); - - nameBytes = (*env)->NewByteArray(env, nameLength); - if (nameBytes && nameLength) - { - (*env)->SetByteArrayRegion( - env, - nameBytes, 0, nameLength, - (jbyte *) name); - } - } - else - nameBytes = NULL; - return nameBytes; -} - -JNIEXPORT jbyteArray JNICALL -Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getTransportTypeBytes - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - jbyteArray typeBytes = NULL; - if(((PaDeviceInfo *) (intptr_t) deviceInfo)->structVersion >= 3) - { - const char *type - = ((PaDeviceInfo *) (intptr_t) deviceInfo)->transportType; - - if(type != NULL) - { - size_t typeLength = strlen(type); - - typeBytes = (*env)->NewByteArray(env, typeLength); - if (typeBytes && typeLength) - { - (*env)->SetByteArrayRegion( - env, - typeBytes, 0, typeLength, - (jbyte *) type); - } - } - } - - return typeBytes; -} - -JNIEXPORT jbyteArray JNICALL -Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDeviceUIDBytes - (JNIEnv *env, jclass clazz, jlong deviceInfo) -{ - jbyteArray uidBytes = NULL; - if(((PaDeviceInfo *) (intptr_t) deviceInfo)->structVersion >= 3) - { - const char *uid - = ((PaDeviceInfo *) (intptr_t) deviceInfo)->deviceUID; - - if (uid) - { - size_t uidLength = strlen(uid); - - uidBytes = (*env)->NewByteArray(env, uidLength); - if (uidBytes && uidLength) - { - (*env)->SetByteArrayRegion( - env, - uidBytes, 0, uidLength, - (jbyte *) uid); - } - } - } - - return uidBytes; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDefaultInputDevice - (JNIEnv *env, jclass clazz, jlong hostApi) -{ - return ((PaHostApiInfo *) (intptr_t) hostApi)->defaultInputDevice; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDefaultOutputDevice - (JNIEnv *env, jclass clazz, jlong hostApi) -{ - return ((PaHostApiInfo *) (intptr_t) hostApi)->defaultOutputDevice; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDeviceCount - (JNIEnv *env, jclass clazz, jlong hostApi) -{ - return ((PaHostApiInfo *) (intptr_t) hostApi)->deviceCount; -} - -JNIEXPORT jstring JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getName - (JNIEnv *env, jclass clazz, jlong hostApi) -{ - const char *name = ((PaHostApiInfo *) (intptr_t) hostApi)->name; - - /* PaHostApiInfo_GetName has been deprected in the Java source code. */ - return name ? (*env)->NewStringUTF(env, name) : NULL; -} - -JNIEXPORT jint JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getType - (JNIEnv *env, jclass clazz, jlong hostApi) -{ - return ((PaHostApiInfo *) (intptr_t) hostApi)->type; -} - -JNIEXPORT jlong JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaStreamParameters_1new - (JNIEnv *env, jclass clazz, - jint deviceIndex, - jint channelCount, - jlong sampleFormat, - jdouble suggestedLatency) -{ - PaStreamParameters *streamParameters - = (PaStreamParameters *) malloc(sizeof(PaStreamParameters)); - - if (streamParameters) - { - streamParameters->device = deviceIndex; - streamParameters->channelCount = channelCount; - streamParameters->sampleFormat = sampleFormat; - streamParameters->suggestedLatency = suggestedLatency; - streamParameters->hostApiSpecificStreamInfo = NULL; - } - return (jlong) (intptr_t) streamParameters; -} - -JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_setDenoise - (JNIEnv *env, jclass clazz, jlong stream, jboolean denoise) -{ - AudioQualityImprovement *audioQualityImprovement - = ((PortAudioStream *) (intptr_t) stream)->audioQualityImprovement; - - if (audioQualityImprovement) - AudioQualityImprovement_setDenoise(audioQualityImprovement, denoise); -} - -JNIEXPORT void JNICALL -Java_org_jitsi_impl_neomedia_portaudio_PortAudio_setEchoFilterLengthInMillis - (JNIEnv *env, jclass clazz, jlong stream, jlong echoFilterLengthInMillis) -{ - AudioQualityImprovement *audioQualityImprovement - = ((PortAudioStream *) (intptr_t) stream)->audioQualityImprovement; - - if (audioQualityImprovement) - { - AudioQualityImprovement_setEchoFilterLengthInMillis( - audioQualityImprovement, - echoFilterLengthInMillis); - } -} - -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_updateAvailableDeviceList - (JNIEnv *env, jclass clazz) -{ - Pa_UpdateAvailableDeviceList(); -} - JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { PortAudio_vm = vm; - AudioQualityImprovement_load(); return JNI_VERSION_1_4; @@ -1072,7 +1025,6 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { AudioQualityImprovement_unload(); - PortAudio_vm = NULL; } @@ -1080,24 +1032,46 @@ static void PortAudio_devicesChangedCallback(void *userData) { JavaVM *vm = PortAudio_vm; - JNIEnv *env; (void) userData; - if (!vm - || ((*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL) - < 0)) + if (vm) { - fprintf(stderr, "AttachCurrentThreadAsDaemon\n" ); - fflush(stderr); + JNIEnv *env; + int err = (*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL); + + if (err < 0) + { + fprintf( + stderr, + "%s:%d: AttachCurrentThreadAsDaemon failed with error code/return value %d\n", + __func__, (int) __LINE__, err); + fflush(stderr); + } + else + { + jclass clazz = PortAudio_devicesChangedCallbackClass; + jmethodID methodID = PortAudio_devicesChangedCallbackMethodID; + + if (clazz && methodID) + { + (*env)->CallStaticVoidMethod(env, clazz, methodID); + /* + * Because we've called to Java from a native callback, make + * sure that any exception which is currently being thrown is + * cleared. Otherwise, the subsequent behavior may very well be + * undefined. + */ + (*env)->ExceptionClear(env); + } + } } else { - jclass clazz = PortAudio_devicesChangedCallbackClass; - jmethodID methodID = PortAudio_devicesChangedCallbackMethodID; - - if (clazz && methodID) - (*env)->CallStaticVoidMethod(env, clazz, methodID); + fprintf( + stderr, + "%s:%d: JavaVM is unavailable\n", __func__, (int) __LINE__); + fflush(stderr); } } @@ -1233,13 +1207,84 @@ PortAudio_getSampleSizeInBits(PaStreamParameters *streamParameters) return 0; } +/** + * Gets a new <tt>jbyteArray</tt> instance which is initialized with the bytes + * of a specific C string i.e. <tt>const char *</tt>. + * + * @param env + * @param str the bytes/C string to initialize the new <tt>jbyteArray</tt> + * instance with + * @return a new <tt>jbyteArray</tt> instance which is initialized with the + * bytes of the specified <tt>str</tt> + */ +static jbyteArray +PortAudio_getStrBytes(JNIEnv *env, const char *str) +{ + jbyteArray bytes; + + if (str) + { + size_t length = strlen(str); + + bytes = (*env)->NewByteArray(env, length); + if (bytes && length) + (*env)->SetByteArrayRegion(env, bytes, 0, length, (jbyte *) str); + } + else + bytes = NULL; + return bytes; +} + static void PortAudio_throwException(JNIEnv *env, PaError errorCode) { jclass clazz = (*env)->FindClass( - env, - "net/java/sip/communicator/impl/neomedia/portaudio/PortAudioException"); + env, + "org/jitsi/impl/neomedia/portaudio/PortAudioException"); + + if(errorCode == paUnanticipatedHostError) + { + // throw new exception with host error info + const PaHostErrorInfo* herr = Pa_GetLastHostErrorInfo(); + if (herr) + { + jmethodID methodID + = (*env)->GetMethodID( + env, + clazz, + "<init>", + "(Ljava/lang/String;IJLjava/lang/String;)V"); + + if (methodID) + { + jstring jmessage; + if (herr->errorText) + jmessage = (*env)->NewStringUTF(env, herr->errorText); + else + jmessage = (*env)->NewStringUTF(env, ""); + + if (jmessage) + { + jobject t + = (*env)->NewObject( + env, + clazz, + methodID, + Pa_GetErrorText(errorCode), + herr->hostApiType, + herr->errorCode, + jmessage); + + if (t) + { + (*env)->Throw(env, (jthrowable) t); + return; + } + } + } + } + } if (clazz) (*env)->ThrowNew(env, clazz, Pa_GetErrorText(errorCode)); @@ -1354,6 +1399,7 @@ PortAudioStream_javaCallback jobject streamCallback = stream->streamCallback; JNIEnv *env; jmethodID streamCallbackMethodID; + int ret; if (!streamCallback) return paContinue; @@ -1386,8 +1432,8 @@ PortAudioStream_javaCallback return paAbort; } - return - (*env)->CallIntMethod( + ret + = (*env)->CallIntMethod( env, streamCallback, streamCallbackMethodID, @@ -1403,6 +1449,13 @@ PortAudioStream_javaCallback output, frameCount * stream->outputFrameSize) : NULL); + /* + * Because we've called to Java from a native callback, make sure that any + * exception which is currently being thrown is cleared. Otherwise, the + * subsequent behavior may very well be undefined. + */ + (*env)->ExceptionClear(env); + return ret; } static void @@ -1446,6 +1499,12 @@ PortAudioStream_javaFinishedCallback(void *userData) } (*env)->CallVoidMethod(env, streamCallback, streamFinishedCallbackMethodID); + /* + * Because we've called to Java from a native callback, make sure that any + * exception which is currently being thrown is cleared. Otherwise, the + * subsequent behavior may very well be undefined. + */ + (*env)->ExceptionClear(env); } static PortAudioStream * diff --git a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.h b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.h new file mode 100644 index 0000000000000000000000000000000000000000..17208a6d3256ac1181daa3d59974bf02e1d5906c --- /dev/null +++ b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa.h @@ -0,0 +1,315 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_portaudio_Pa */ + +#ifndef _Included_org_jitsi_impl_neomedia_portaudio_Pa +#define _Included_org_jitsi_impl_neomedia_portaudio_Pa +#ifdef __cplusplus +extern "C" { +#endif +#undef org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_HIGH +#define org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_HIGH -1.0 +#undef org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_LOW +#define org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_LOW -2.0 +#undef org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_UNSPECIFIED +#define org_jitsi_impl_neomedia_portaudio_Pa_LATENCY_UNSPECIFIED 0.0 +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: AbortStream + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_AbortStream + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: CloseStream + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_CloseStream + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDefaultHighInputLatency + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultHighInputLatency + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDefaultHighOutputLatency + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultHighOutputLatency + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDefaultLowInputLatency + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultLowInputLatency + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDefaultLowOutputLatency + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultLowOutputLatency + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDefaultSampleRate + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDefaultSampleRate + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getDeviceUIDBytes + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getDeviceUIDBytes + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getHostApi + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getHostApi + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getMaxInputChannels + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getMaxInputChannels + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getMaxOutputChannels + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getMaxOutputChannels + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getNameBytes + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getNameBytes + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: DeviceInfo_getTransportTypeBytes + * Signature: (J)[B + */ +JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_DeviceInfo_1getTransportTypeBytes + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_free + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetDefaultInputDevice + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDefaultInputDevice + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetDefaultOutputDevice + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDefaultOutputDevice + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetDeviceCount + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDeviceCount + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetDeviceInfo + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetDeviceInfo + (JNIEnv *, jclass, jint); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetHostApiInfo + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetHostApiInfo + (JNIEnv *, jclass, jint); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetSampleSize + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetSampleSize + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetStreamReadAvailable + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetStreamReadAvailable + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: GetStreamWriteAvailable + * Signature: (J)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_GetStreamWriteAvailable + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: HostApiInfo_getDefaultInputDevice + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDefaultInputDevice + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: HostApiInfo_getDefaultOutputDevice + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDefaultOutputDevice + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: HostApiInfo_getDeviceCount + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getDeviceCount + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: HostApiInfo_getType + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_HostApiInfo_1getType + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: Initialize + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_Initialize + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: IsFormatSupported + * Signature: (JJD)Z + */ +JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_IsFormatSupported + (JNIEnv *, jclass, jlong, jlong, jdouble); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: OpenStream + * Signature: (JJDJJLorg/jitsi/impl/neomedia/portaudio/PortAudioStreamCallback;)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_OpenStream + (JNIEnv *, jclass, jlong, jlong, jdouble, jlong, jlong, jobject); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: ReadStream + * Signature: (J[BJ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_ReadStream + (JNIEnv *, jclass, jlong, jbyteArray, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: setDenoise + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_setDenoise + (JNIEnv *, jclass, jlong, jboolean); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: setEchoFilterLengthInMillis + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_setEchoFilterLengthInMillis + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: StartStream + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_StartStream + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: StopStream + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_StopStream + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: StreamParameters_new + * Signature: (IIJD)J + */ +JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_StreamParameters_1new + (JNIEnv *, jclass, jint, jint, jlong, jdouble); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: UpdateAvailableDeviceList + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_UpdateAvailableDeviceList + (JNIEnv *, jclass); + +/* + * Class: org_jitsi_impl_neomedia_portaudio_Pa + * Method: WriteStream + * Signature: (J[BIJI)V + */ +JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_Pa_WriteStream + (JNIEnv *, jclass, jlong, jbyteArray, jint, jlong, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId.h b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId.h new file mode 100644 index 0000000000000000000000000000000000000000..f2be44d68417f174ef002cb8bcb0110f4ed66939 --- /dev/null +++ b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include <jni.h> +/* Header for class org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId */ + +#ifndef _Included_org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId +#define _Included_org_jitsi_impl_neomedia_portaudio_Pa_HostApiTypeId +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.h b/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.h deleted file mode 100644 index 7af57761c3a2694ef3669422f7f14b447ea06395..0000000000000000000000000000000000000000 --- a/src/native/portaudio/org_jitsi_impl_neomedia_portaudio_PortAudio.h +++ /dev/null @@ -1,323 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class org_jitsi_impl_neomedia_portaudio_PortAudio */ - -#ifndef _Included_org_jitsi_impl_neomedia_portaudio_PortAudio -#define _Included_org_jitsi_impl_neomedia_portaudio_PortAudio -#ifdef __cplusplus -extern "C" { -#endif -#undef org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_HIGH -#define org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_HIGH -1.0 -#undef org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_LOW -#define org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_LOW -2.0 -#undef org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_UNSPECIFIED -#define org_jitsi_impl_neomedia_portaudio_PortAudio_LATENCY_UNSPECIFIED 0.0 -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: free - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_free - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_AbortStream - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1AbortStream - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_CloseStream - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetDefaultInputDevice - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDefaultInputDevice - (JNIEnv *, jclass); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetDefaultOutputDevice - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDefaultOutputDevice - (JNIEnv *, jclass); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetDeviceCount - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceCount - (JNIEnv *, jclass); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetDeviceInfo - * Signature: (I)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceInfo - (JNIEnv *, jclass, jint); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetHostApiInfo - * Signature: (I)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetHostApiInfo - (JNIEnv *, jclass, jint); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetSampleSize - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetSampleSize - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetStreamReadAvailable - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetStreamReadAvailable - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_GetStreamWriteAvailable - * Signature: (J)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1GetStreamWriteAvailable - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_Initialize - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1Initialize - (JNIEnv *, jclass); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_IsFormatSupported - * Signature: (JJD)Z - */ -JNIEXPORT jboolean JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1IsFormatSupported - (JNIEnv *, jclass, jlong, jlong, jdouble); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_OpenStream - * Signature: (JJDJJLnet/java/sip/communicator/impl/neomedia/portaudio/PortAudioStreamCallback;)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream - (JNIEnv *, jclass, jlong, jlong, jdouble, jlong, jlong, jobject); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_ReadStream - * Signature: (J[BJ)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1ReadStream - (JNIEnv *, jclass, jlong, jbyteArray, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_StartStream - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StartStream - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_StopStream - * Signature: (J)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1StopStream - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: Pa_WriteStream - * Signature: (J[BIJI)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream - (JNIEnv *, jclass, jlong, jbyteArray, jint, jlong, jint); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDefaultHighInputLatency - * Signature: (J)D - */ -JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultHighInputLatency - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDefaultHighOutputLatency - * Signature: (J)D - */ -JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultHighOutputLatency - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDefaultLowInputLatency - * Signature: (J)D - */ -JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultLowInputLatency - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDefaultLowOutputLatency - * Signature: (J)D - */ -JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultLowOutputLatency - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDefaultSampleRate - * Signature: (J)D - */ -JNIEXPORT jdouble JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDefaultSampleRate - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getHostApi - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getHostApi - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getMaxInputChannels - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxInputChannels - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getMaxOutputChannels - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxOutputChannels - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getNameBytes - * Signature: (J)[B - */ -JNIEXPORT jbyteArray JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getNameBytes - (JNIEnv *, jclass, jlong); - -/* - * Class: net_java_sip_communicator_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getTransportTypeBytes - * Signature: (J)[B - */ -JNIEXPORT jbyteArray JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getTransportTypeBytes - (JNIEnv *, jclass, jlong); - -/* - * Class: net_java_sip_communicator_impl_neomedia_portaudio_PortAudio - * Method: PaDeviceInfo_getDeviceUIDBytes - * Signature: (J)[B - */ -JNIEXPORT jbyteArray JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getDeviceUIDBytes - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaHostApiInfo_getDefaultInputDevice - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDefaultInputDevice - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaHostApiInfo_getDefaultOutputDevice - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDefaultOutputDevice - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaHostApiInfo_getDeviceCount - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getDeviceCount - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaHostApiInfo_getName - * Signature: (J)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getName - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaHostApiInfo_getType - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1getType - (JNIEnv *, jclass, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: PaStreamParameters_new - * Signature: (IIJD)J - */ -JNIEXPORT jlong JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_PaStreamParameters_1new - (JNIEnv *, jclass, jint, jint, jlong, jdouble); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: setDenoise - * Signature: (JZ)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_setDenoise - (JNIEnv *, jclass, jlong, jboolean); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: setEchoFilterLengthInMillis - * Signature: (JJ)V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_setEchoFilterLengthInMillis - (JNIEnv *, jclass, jlong, jlong); - -/* - * Class: org_jitsi_impl_neomedia_portaudio_PortAudio - * Method: updateAvailableDeviceList - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_portaudio_PortAudio_updateAvailableDeviceList - (JNIEnv *, jclass); - -#ifdef __cplusplus -} -#endif -#endif