From 32a1fc08a4fbc77f5fbc1efc4625ec935d4d7d8d Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Wed, 20 Jan 2010 16:22:20 +0000 Subject: [PATCH] Optimizes the playback of audio when using PortAudio (i.e. the Renderer and when playing back notification sounds). The main optimization is the reduced copies of the audio samples which used to be at least 3 in the best case and now there is 1 in the best case and 3 in the worst case. On my Ubuntu Karmic desktop, I see audio interruptions being brought down from often to rare. The binaries for 32- and 64-bit Linux and 32-bit Windows are kindly prepared by Damian Minkov. There is no binary for 64-bit Windows. --- lib/native/linux-64/libjportaudio.so | Bin 230056 -> 226696 bytes lib/native/linux/libjportaudio.so | Bin 218020 -> 218180 bytes lib/native/mac/libjportaudio.jnilib | Bin 473168 -> 477200 bytes lib/native/windows/jportaudio.dll | Bin 111104 -> 111104 bytes ...icator_impl_neomedia_portaudio_PortAudio.c | 793 +++++++++--------- ...icator_impl_neomedia_portaudio_PortAudio.h | 4 +- .../neomedia/device/DeviceConfiguration.java | 8 +- .../impl/neomedia/device/PortAudioAuto.java | 20 +- .../protocol/portaudio/DSAudioStream.java | 14 +- .../media/protocol/portaudio/DataSource.java | 22 +- .../renderer/audio/PortAudioRenderer.java | 22 +- .../neomedia/notify/PortAudioClipImpl.java | 43 +- .../impl/neomedia/portaudio/PortAudio.java | 33 +- .../neomedia/portaudio/PortAudioManager.java | 85 +- .../streams/MasterPortAudioStream.java | 21 +- .../streams/OutputPortAudioStream.java | 149 ++-- 16 files changed, 669 insertions(+), 545 deletions(-) diff --git a/lib/native/linux-64/libjportaudio.so b/lib/native/linux-64/libjportaudio.so index 54cea33d67d984d09fb68df095eaeb27b4499234..87c3bb1e4a5d4acaa866bb4d004d4d2bcc908717 100755 GIT binary patch delta 65857 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 z

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 H?fm}$Zvi+v diff --git a/lib/native/linux/libjportaudio.so b/lib/native/linux/libjportaudio.so index 1a39507c4699bd9e8ef35910f49f36a116de9c90..3855879a75286c270d6706617d16685384da8071 100755 GIT binary patch delta 53484 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 delta 53377 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 Q29)bY1z6ema$V&A0UV-Bb^rhX diff --git a/lib/native/mac/libjportaudio.jnilib b/lib/native/mac/libjportaudio.jnilib index 70c657471a2cd66d17a7e6f63df3a6ab1924709e..daef9a6946268694d981efdcd29cbae3c4ecb728 100755 GIT binary patch delta 71835 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 bCiSY)K>Z(q^jPixXHVze+q(+B+W!9lgX^Z6 diff --git a/lib/native/windows/jportaudio.dll b/lib/native/windows/jportaudio.dll index 8ec47f214619d2b288ffb8233b7c42fc82d7e2e3..106fa0bec98784da60975cb405b88aad2dcc7a36 100644 GIT binary patch delta 11720 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 #include -#include #include #include #include -#include +#include +#include +//#include /* used on Windows */ #include -//#include //used on windows typedef struct { @@ -24,14 +25,14 @@ typedef struct typedef struct { - PaStream *stream; - jobject streamCallback; - JavaVM *vm; - JNIEnv *env; - jmethodID streamCallbackMethodID; - jmethodID streamFinishedCallbackMethodID; - long inputFrameSize; - long outputFrameSize; + PaStream *stream; + jobject streamCallback; + JavaVM *vm; + JNIEnv *env; + jmethodID streamCallbackMethodID; + jmethodID streamFinishedCallbackMethodID; + long inputFrameSize; + long outputFrameSize; double samplerate; SpeexResamplerState *outputResampler; @@ -49,34 +50,38 @@ typedef struct Buffer *first; Buffer *last; -} -PortAudioStream; +} PortAudioStream; #define DEFAULT_SAMPLE_RATE 44100.0 static void PortAudio_throwException(JNIEnv *env, PaError errorCode); static PaStreamParameters * PortAudio_fixInputParametersSuggestedLatency( - PaStreamParameters *inputParameters); + PaStreamParameters *inputParameters); static PaStreamParameters * PortAudio_fixOutputParametersSuggestedLatency( - PaStreamParameters *outputParameters); + PaStreamParameters *outputParameters); static long PortAudio_getFrameSize(PaStreamParameters *streamParameters); static int PortAudioStream_callback( - const void *input, - void *output, - unsigned long frameCount, - const PaStreamCallbackTimeInfo *timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData); + const void *input, + void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo *timeInfo, + PaStreamCallbackFlags statusFlags, + void *userData); static void PortAudioStream_finishedCallback(void *userData); static void PortAudioStream_free(JNIEnv *env, PortAudioStream *stream); static PortAudioStream * PortAudioStream_new( - JNIEnv *env, jobject streamCallback); + JNIEnv *env, jobject streamCallback); +static PaError PortAudioStream_write( + PortAudioStream *stream, + jbyte *buffer, + jlong frames); static void clear(PortAudioStream *st) { int cleared = 0; Buffer *curr = st->first; + while(curr != NULL) { Buffer *n = curr->next; @@ -85,12 +90,6 @@ static void clear(PortAudioStream *st) curr = n; cleared++; } - -/* - if(cleared > 0) - printf("cleared %d\n", cleared);fflush(stdout); -*/ - st->first = NULL; st->last = NULL; } @@ -117,21 +116,21 @@ static Buffer* getBuffer(PortAudioStream *st, int time) Buffer *res = st->first; st->first = st->first->next; - if(st->first == NULL) - { st->last = NULL; - } - return res; } JNIEXPORT void JNICALL -Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_setEchoCancelParams - (JNIEnv *env, jclass clazz, - jlong instream, jlong outstream, - jboolean enableDenoise, - jboolean enableEchoCancel, jint frameSize, jint filterLength) +Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_setEchoCancelParams( + JNIEnv *env, + jclass clazz, + jlong instream, + jlong outstream, + jboolean enableDenoise, + jboolean enableEchoCancel, + jint frameSize, + jint filterLength) { PortAudioStream *inAudioStream = (PortAudioStream *) instream; PortAudioStream *outAudioStream = (PortAudioStream *) outstream; @@ -184,7 +183,7 @@ Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1GetDefaultO JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1CloseStream( - JNIEnv *env, jclass clazz, jlong stream) + JNIEnv *env, jclass clazz, jlong stream) { PortAudioStream *portAudioStream = (PortAudioStream *) stream; @@ -245,86 +244,84 @@ Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1AbortStream PaError errorCode = Pa_AbortStream(((PortAudioStream *) stream)->stream); if (paNoError != errorCode) - PortAudio_throwException(env, errorCode); + PortAudio_throwException(env, errorCode); } JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceCount( - JNIEnv *env, jclass clazz) + JNIEnv *env, jclass clazz) { - PaDeviceIndex deviceCount = Pa_GetDeviceCount(); + PaDeviceIndex deviceCount = Pa_GetDeviceCount(); - if (deviceCount < 0) - PortAudio_throwException(env, deviceCount); - return deviceCount; + if (deviceCount < 0) + PortAudio_throwException(env, deviceCount); + return deviceCount; } JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1GetDeviceInfo( - JNIEnv *env, jclass clazz, jint deviceIndex) + JNIEnv *env, jclass clazz, jint deviceIndex) { - return (jlong) Pa_GetDeviceInfo(deviceIndex); + return (jlong) Pa_GetDeviceInfo(deviceIndex); } JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1Initialize( - JNIEnv *env, jclass clazz) + JNIEnv *env, jclass clazz) { - PaError errorCode = Pa_Initialize(); + PaError errorCode = Pa_Initialize(); - if (paNoError != errorCode) - PortAudio_throwException(env, errorCode); + if (paNoError != errorCode) + PortAudio_throwException(env, errorCode); } JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream( - JNIEnv *env, - jclass clazz, - jlong inputParameters, - jlong outputParameters, - jdouble sampleRate, - jlong framesPerBuffer, - jlong streamFlags, - jobject streamCallback) -{ - PortAudioStream *stream = PortAudioStream_new(env, streamCallback); - PaError errorCode; - PaStreamParameters *inputStreamParameters - = (PaStreamParameters *) inputParameters; - PaStreamParameters *outputStreamParameters - = (PaStreamParameters *) outputParameters; - - if (!stream) - return 0; - - double defSampleRate = DEFAULT_SAMPLE_RATE; - - /* - * Obay default sample rate of the device. some devices has - * default 44.1 kHz and some 48 kHz. - */ - if(outputStreamParameters) - { - defSampleRate = - Pa_GetDeviceInfo(outputStreamParameters->device)->defaultSampleRate; - } - else if(inputStreamParameters) - { - defSampleRate = - Pa_GetDeviceInfo(inputStreamParameters->device)->defaultSampleRate; - } + JNIEnv *env, + jclass clazz, + jlong inputParameters, + jlong outputParameters, + jdouble sampleRate, + jlong framesPerBuffer, + jlong streamFlags, + jobject streamCallback) +{ + PortAudioStream *stream = PortAudioStream_new(env, streamCallback); + PaError errorCode; + PaStreamParameters *inputStreamParameters + = (PaStreamParameters *) inputParameters; + PaStreamParameters *outputStreamParameters + = (PaStreamParameters *) outputParameters; + + if (!stream) + return 0; - errorCode - = Pa_OpenStream( - &(stream->stream), - PortAudio_fixInputParametersSuggestedLatency(inputStreamParameters), - PortAudio_fixOutputParametersSuggestedLatency( - outputStreamParameters), - defSampleRate, - framesPerBuffer, - streamFlags, - streamCallback ? PortAudioStream_callback : NULL, - stream); + double defSampleRate = DEFAULT_SAMPLE_RATE; + + /* + * Obay default sample rate of the device. some devices has default 44.1kHz + * and some 48kHz. + */ + if(outputStreamParameters) + defSampleRate + = Pa_GetDeviceInfo(outputStreamParameters->device) + ->defaultSampleRate; + else if(inputStreamParameters) + defSampleRate + = Pa_GetDeviceInfo(inputStreamParameters->device) + ->defaultSampleRate; + + errorCode + = Pa_OpenStream( + &(stream->stream), + PortAudio_fixInputParametersSuggestedLatency(inputStreamParameters), + PortAudio_fixOutputParametersSuggestedLatency( + outputStreamParameters), + defSampleRate, + framesPerBuffer, + streamFlags, + streamCallback ? PortAudioStream_callback : NULL, + stream); stream->samplerate = sampleRate; @@ -356,139 +353,98 @@ Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1OpenStream( stream->inputChannelCount, defSampleRate, sampleRate, 3, NULL); stream->inputFrameSize - = PortAudio_getFrameSize(inputStreamParameters); + = PortAudio_getFrameSize(inputStreamParameters); } } else stream->inputResampleFactor = 1.0; - if (paNoError == errorCode) - { - stream->outputFrameSize - = PortAudio_getFrameSize(outputStreamParameters); + if (paNoError == errorCode) + { stream->inputFrameSize - = PortAudio_getFrameSize(inputStreamParameters); - - if (streamCallback) - { - stream->inputFrameSize - = PortAudio_getFrameSize(inputStreamParameters); - stream->outputFrameSize - = PortAudio_getFrameSize(outputStreamParameters); - - errorCode - = Pa_SetStreamFinishedCallback( - stream->stream, - PortAudioStream_finishedCallback); - } - - return (jlong) stream; - } - else - { - PortAudioStream_free(env, stream); - PortAudio_throwException(env, errorCode); - return 0; - } + = PortAudio_getFrameSize(inputStreamParameters); + stream->outputFrameSize + = PortAudio_getFrameSize(outputStreamParameters); + + if (streamCallback) + errorCode + = Pa_SetStreamFinishedCallback( + stream->stream, + PortAudioStream_finishedCallback); + + return (jlong) stream; + } + else + { + PortAudioStream_free(env, stream); + PortAudio_throwException(env, errorCode); + return 0; + } } JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1StartStream( - JNIEnv *env, jclass clazz, jlong stream) + JNIEnv *env, jclass clazz, jlong stream) { - PaError errorCode = Pa_StartStream(((PortAudioStream *) stream)->stream); + PaError errorCode = Pa_StartStream(((PortAudioStream *) stream)->stream); - if (paNoError != errorCode) - PortAudio_throwException(env, errorCode); + if (paNoError != errorCode) + PortAudio_throwException(env, errorCode); } JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1StopStream( - JNIEnv *env, jclass clazz, jlong stream) + JNIEnv *env, jclass clazz, jlong stream) { - PaError errorCode = Pa_StopStream(((PortAudioStream *) stream)->stream); + PaError errorCode = Pa_StopStream(((PortAudioStream *) stream)->stream); - if (paNoError != errorCode) - PortAudio_throwException(env, errorCode); + if (paNoError != errorCode) + PortAudio_throwException(env, errorCode); } JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream( - JNIEnv *env, jclass clazz, jlong stream, jbyteArray buffer, jlong frames) + JNIEnv *env, + jclass clazz, + jlong stream, + jbyteArray buffer, + jint offset, + jlong frames, + jint numberOfWrites) { - jbyte* data = (*env)->GetByteArrayElements(env, buffer, NULL); - - PortAudioStream *outStream = (PortAudioStream *) stream; - if (data) - { - PaError errorCode; - - if(outStream->outputResampleFactor != 1) - { - spx_uint32_t out_len; - out_len = lrint( - frames - *outStream->outputChannelCount - *outStream->outputResampleFactor); - - short res[out_len]; - speex_resampler_process_interleaved_int( - outStream->outputResampler, - data, - &frames, - res, - &out_len); - - errorCode = Pa_WriteStream( - outStream->stream, - res, - out_len); - - - if(outStream->connectedToStream != NULL && - ((PortAudioStream *)outStream->connectedToStream)->echoState != NULL && - outStream->startCaching == 1) - { - struct timeval tv; - gettimeofday(&tv,NULL); - - Buffer *b; - b = (Buffer*)malloc(sizeof(Buffer)); - b->time = tv.tv_sec*1000 + tv.tv_usec/1000; - - b->data = malloc(sizeof(short)*frames); - memcpy(b->data, data, sizeof(short)*frames); + jbyte *bufferBytes; + jbyte* data; + PortAudioStream *portAudioStream; + long frameSize; + PaError errorCode; + jint i; + + bufferBytes = (*env)->GetByteArrayElements(env, buffer, NULL); + if (!bufferBytes) + return; - b->next = NULL; + data = bufferBytes + offset; + portAudioStream = (PortAudioStream *) stream; + frameSize = portAudioStream->outputFrameSize; - addBuffer(outStream, b); - } - } + for (i = 0; i < numberOfWrites; i++) + { + errorCode = PortAudioStream_write(portAudioStream, data, frames); + if ((paNoError != errorCode) && (errorCode != paOutputUnderflowed)) + break; else - { - errorCode = Pa_WriteStream( - outStream->stream, - data, - frames); - } - - (*env)->ReleaseByteArrayElements(env, buffer, data, 0); + data += frames * frameSize; + } - if (paNoError != errorCode && errorCode != paOutputUnderflowed) - PortAudio_throwException(env, errorCode); + (*env)->ReleaseByteArrayElements(env, buffer, bufferBytes, 0); -/* - if(errorCode == paOutputUnderflowed) - { - printf("OutputUnderflowed\n");fflush(stdout); - } -*/ - } + if ((paNoError != errorCode) && (errorCode != paOutputUnderflowed)) + PortAudio_throwException(env, errorCode); } JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1ReadStream - (JNIEnv *env, jclass clazz, jlong stream, jbyteArray buffer, jlong frames) + (JNIEnv *env, jclass clazz, jlong stream, jbyteArray buffer, jlong frames) { jbyte* data = (*env)->GetByteArrayElements(env, buffer, NULL); @@ -639,26 +595,26 @@ Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1IsFormatSup JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxInputChannels( - JNIEnv *env, jclass clazz, jlong deviceInfo) + JNIEnv *env, jclass clazz, jlong deviceInfo) { - return ((PaDeviceInfo *) deviceInfo)->maxInputChannels; + return ((PaDeviceInfo *) deviceInfo)->maxInputChannels; } JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getMaxOutputChannels( - JNIEnv *env, jclass clazz, jlong deviceInfo) + JNIEnv *env, jclass clazz, jlong deviceInfo) { - return ((PaDeviceInfo *) deviceInfo)->maxOutputChannels; + return ((PaDeviceInfo *) deviceInfo)->maxOutputChannels; } JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaDeviceInfo_1getName( - JNIEnv *env, jclass clazz, jlong deviceInfo) + JNIEnv *env, jclass clazz, jlong deviceInfo) { - const char *name = ((PaDeviceInfo *) deviceInfo)->name; + const char *name = ((PaDeviceInfo *) deviceInfo)->name; - return name ? (*env)->NewStringUTF(env, name) : NULL; + return name ? (*env)->NewStringUTF(env, name) : NULL; } JNIEXPORT jdouble JNICALL @@ -749,30 +705,30 @@ Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaHostApiInfo_1 JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_PaStreamParameters_1new( - JNIEnv *env, - jclass clazz, - jint deviceIndex, - jint channelCount, - jlong sampleFormat, + JNIEnv *env, + jclass clazz, + jint deviceIndex, + jint channelCount, + jlong sampleFormat, jdouble suggestedLatency) { - PaStreamParameters *streamParameters - = (PaStreamParameters *) malloc(sizeof(PaStreamParameters)); + 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) streamParameters; + if (streamParameters) + { + streamParameters->device = deviceIndex; + streamParameters->channelCount = channelCount; + streamParameters->sampleFormat = sampleFormat; + streamParameters->suggestedLatency = suggestedLatency; + streamParameters->hostApiSpecificStreamInfo = NULL; + } + return (jlong) streamParameters; } static PaStreamParameters * PortAudio_fixInputParametersSuggestedLatency( - PaStreamParameters *inputParameters) + PaStreamParameters *inputParameters) { if (inputParameters) { @@ -796,13 +752,13 @@ PortAudio_fixInputParametersSuggestedLatency( static PaStreamParameters * PortAudio_fixOutputParametersSuggestedLatency( - PaStreamParameters *outputParameters) + PaStreamParameters *outputParameters) { - if (outputParameters) - { - PaDeviceInfo *deviceInfo = Pa_GetDeviceInfo(outputParameters->device); + if (outputParameters) + { + PaDeviceInfo *deviceInfo = Pa_GetDeviceInfo(outputParameters->device); - if (deviceInfo) + if (deviceInfo) { if(outputParameters->suggestedLatency == net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_LATENCY_LOW) @@ -814,173 +770,173 @@ PortAudio_fixOutputParametersSuggestedLatency( outputParameters->suggestedLatency = deviceInfo->defaultHighOutputLatency; } - } - return outputParameters; + } + return outputParameters; } static long PortAudio_getFrameSize(PaStreamParameters *streamParameters) { - if (streamParameters) - { - PaError sampleSize = Pa_GetSampleSize(streamParameters->sampleFormat); + if (streamParameters) + { + PaError sampleSize = Pa_GetSampleSize(streamParameters->sampleFormat); - if (paSampleFormatNotSupported != sampleSize) - return sampleSize * streamParameters->channelCount; - } - return 0; + if (paSampleFormatNotSupported != sampleSize) + return sampleSize * streamParameters->channelCount; + } + return 0; } static void PortAudio_throwException(JNIEnv *env, PaError errorCode) { - jclass clazz - = (*env) - ->FindClass( - env, - "net/java/sip/communicator/impl/neomedia/portaudio/PortAudioException"); - - if (clazz) - (*env)->ThrowNew(env, clazz, Pa_GetErrorText(errorCode)); + jclass clazz + = (*env) + ->FindClass( + env, + "net/java/sip/communicator/impl/neomedia/portaudio/PortAudioException"); + + if (clazz) + (*env)->ThrowNew(env, clazz, Pa_GetErrorText(errorCode)); } static int PortAudioStream_callback( - const void *input, - void *output, - unsigned long frameCount, - const PaStreamCallbackTimeInfo *timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData) -{ - PortAudioStream *stream = (PortAudioStream *) userData; - jobject streamCallback = stream->streamCallback; - JNIEnv *env; - jmethodID streamCallbackMethodID; - - if (!streamCallback) - return paContinue; - - env = stream->env; - if (!env) - { - JavaVM *vm = stream->vm; - - if ((*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL) < 0) - return paAbort; - else - stream->env = env; - } - streamCallbackMethodID = stream->streamCallbackMethodID; - if (!streamCallbackMethodID) - { - jclass streamCallbackClass - = (*env)->GetObjectClass(env, streamCallback); - - streamCallbackMethodID - = (*env) - ->GetMethodID( - env, - streamCallbackClass, - "callback", - "(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"); - if (streamCallbackMethodID) - stream->streamCallbackMethodID = streamCallbackMethodID; - else - return paAbort; - } + const void *input, + void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo *timeInfo, + PaStreamCallbackFlags statusFlags, + void *userData) +{ + PortAudioStream *stream = (PortAudioStream *) userData; + jobject streamCallback = stream->streamCallback; + JNIEnv *env; + jmethodID streamCallbackMethodID; + + if (!streamCallback) + return paContinue; + + env = stream->env; + if (!env) + { + JavaVM *vm = stream->vm; + + if ((*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL) < 0) + return paAbort; + else + stream->env = env; + } + streamCallbackMethodID = stream->streamCallbackMethodID; + if (!streamCallbackMethodID) + { + jclass streamCallbackClass + = (*env)->GetObjectClass(env, streamCallback); + + streamCallbackMethodID + = (*env) + ->GetMethodID( + env, + streamCallbackClass, + "callback", + "(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I"); + if (streamCallbackMethodID) + stream->streamCallbackMethodID = streamCallbackMethodID; + else + return paAbort; + } return - (*env) - ->CallIntMethod( - env, - streamCallback, - streamCallbackMethodID, - input - ? (*env) - ->NewDirectByteBuffer( - env, - input, - frameCount * stream->inputFrameSize) - : NULL, - output - ? (*env) - ->NewDirectByteBuffer( - env, - output, - frameCount * stream->outputFrameSize) - : NULL); + (*env) + ->CallIntMethod( + env, + streamCallback, + streamCallbackMethodID, + input + ? (*env) + ->NewDirectByteBuffer( + env, + input, + frameCount * stream->inputFrameSize) + : NULL, + output + ? (*env) + ->NewDirectByteBuffer( + env, + output, + frameCount * stream->outputFrameSize) + : NULL); } static void PortAudioStream_finishedCallback(void *userData) { - PortAudioStream *stream = (PortAudioStream *) userData; - jobject streamCallback = stream->streamCallback; - JNIEnv *env; - jmethodID streamFinishedCallbackMethodID; - - if (!streamCallback) - return; - - env = stream->env; - if (!env) - { - JavaVM *vm = stream->vm; - - if ((*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL) < 0) - return; - else - stream->env = env; - } - streamFinishedCallbackMethodID = stream->streamFinishedCallbackMethodID; - if (!streamFinishedCallbackMethodID) - { - jclass streamCallbackClass - = (*env)->GetObjectClass(env, streamCallback); - - streamFinishedCallbackMethodID - = (*env) - ->GetMethodID( - env, - streamCallbackClass, - "finishedCallback", - "()V"); - if (streamFinishedCallbackMethodID) - stream->streamFinishedCallbackMethodID - = streamFinishedCallbackMethodID; - else - return; - } - - (*env)->CallVoidMethod(env, streamCallback, streamFinishedCallbackMethodID); + PortAudioStream *stream = (PortAudioStream *) userData; + jobject streamCallback = stream->streamCallback; + JNIEnv *env; + jmethodID streamFinishedCallbackMethodID; + + if (!streamCallback) + return; + + env = stream->env; + if (!env) + { + JavaVM *vm = stream->vm; + + if ((*vm)->AttachCurrentThreadAsDaemon(vm, (void **) &env, NULL) < 0) + return; + else + stream->env = env; + } + streamFinishedCallbackMethodID = stream->streamFinishedCallbackMethodID; + if (!streamFinishedCallbackMethodID) + { + jclass streamCallbackClass + = (*env)->GetObjectClass(env, streamCallback); + + streamFinishedCallbackMethodID + = (*env) + ->GetMethodID( + env, + streamCallbackClass, + "finishedCallback", + "()V"); + if (streamFinishedCallbackMethodID) + stream->streamFinishedCallbackMethodID + = streamFinishedCallbackMethodID; + else + return; + } + + (*env)->CallVoidMethod(env, streamCallback, streamFinishedCallbackMethodID); } static void PortAudioStream_free(JNIEnv *env, PortAudioStream *stream) { - if (stream->streamCallback) - { - (*env)->DeleteGlobalRef(env, stream->streamCallback); - stream->streamCallback = NULL; - } - stream->streamCallbackMethodID = NULL; - stream->streamFinishedCallbackMethodID = NULL; + if (stream->streamCallback) + { + (*env)->DeleteGlobalRef(env, stream->streamCallback); + stream->streamCallback = NULL; + } + stream->streamCallbackMethodID = NULL; + stream->streamFinishedCallbackMethodID = NULL; - free(stream); + free(stream); } static PortAudioStream * PortAudioStream_new(JNIEnv *env, jobject streamCallback) { - PortAudioStream *stream = malloc(sizeof(PortAudioStream)); + PortAudioStream *stream = malloc(sizeof(PortAudioStream)); - if (!stream) - { - PortAudio_throwException(env, paInsufficientMemory); - return NULL; - } - stream->stream = NULL; + if (!stream) + { + PortAudio_throwException(env, paInsufficientMemory); + return NULL; + } + stream->stream = NULL; stream->preprocessor = NULL; stream->echoState = NULL; stream->first = NULL; @@ -988,32 +944,95 @@ PortAudioStream_new(JNIEnv *env, jobject streamCallback) stream->connectedToStream = NULL; stream->startCaching = 0; - if (streamCallback) - { - if ((*env)->GetJavaVM(env, &(stream->vm)) < 0) - { - free(stream); - PortAudio_throwException(env, paInternalError); - return NULL; - } - - stream->streamCallback = (*env)->NewGlobalRef(env, streamCallback); - if (!(stream->streamCallback)) - { - free(stream); - PortAudio_throwException(env, paInsufficientMemory); - return NULL; - } - } - else - { - stream->vm = NULL; - stream->streamCallback = NULL; - } - - stream->env = NULL; - stream->streamCallbackMethodID = NULL; - stream->streamFinishedCallbackMethodID = NULL; - - return stream; + if (streamCallback) + { + if ((*env)->GetJavaVM(env, &(stream->vm)) < 0) + { + free(stream); + PortAudio_throwException(env, paInternalError); + return NULL; + } + + stream->streamCallback = (*env)->NewGlobalRef(env, streamCallback); + if (!(stream->streamCallback)) + { + free(stream); + PortAudio_throwException(env, paInsufficientMemory); + return NULL; + } + } + else + { + stream->vm = NULL; + stream->streamCallback = NULL; + } + + stream->env = NULL; + stream->streamCallbackMethodID = NULL; + stream->streamFinishedCallbackMethodID = NULL; + + return stream; +} + +static PaError +PortAudioStream_write( + PortAudioStream *stream, + jbyte *buffer, + jlong frames) +{ + PaError errorCode; + + if(stream->outputResampleFactor != 1) + { + spx_uint32_t out_len; + out_len = lrint( + frames + *stream->outputChannelCount + *stream->outputResampleFactor); + + short res[out_len]; + speex_resampler_process_interleaved_int( + stream->outputResampler, + buffer, + &frames, + res, + &out_len); + + errorCode = Pa_WriteStream(stream->stream, res, out_len); + + if(stream->connectedToStream + && ((PortAudioStream *)stream->connectedToStream) + ->echoState + && (stream->startCaching == 1)) + { + Buffer *b; + + b = malloc(sizeof(Buffer)); + if (b) + { + struct timeval tv; + + gettimeofday(&tv,NULL); + b->time = tv.tv_sec*1000 + tv.tv_usec/1000; + + b->data = malloc(sizeof(short)*frames); + if (b->data) + { + memcpy(b->data, buffer, sizeof(short)*frames); + b->next = NULL; + addBuffer(stream, b); + } + else + { + free(b); + errorCode = paInsufficientMemory; + } + } + else + errorCode = paInsufficientMemory; + } + } + else + errorCode = Pa_WriteStream(stream->stream, buffer, frames); + return errorCode; } diff --git a/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.h b/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.h index 662b360a7..59b8fa756 100644 --- a/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.h +++ b/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.h @@ -104,10 +104,10 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_Po /* * Class: net_java_sip_communicator_impl_neomedia_portaudio_PortAudio * Method: Pa_WriteStream - * Signature: (J[BJ)V + * Signature: (J[BIJI)V */ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_portaudio_PortAudio_Pa_1WriteStream - (JNIEnv *, jclass, jlong, jbyteArray, jlong); + (JNIEnv *, jclass, jlong, jbyteArray, jint, jlong, jint); /* * Class: net_java_sip_communicator_impl_neomedia_portaudio_PortAudio diff --git a/src/net/java/sip/communicator/impl/neomedia/device/DeviceConfiguration.java b/src/net/java/sip/communicator/impl/neomedia/device/DeviceConfiguration.java index 2abaa1f52..548153285 100644 --- a/src/net/java/sip/communicator/impl/neomedia/device/DeviceConfiguration.java +++ b/src/net/java/sip/communicator/impl/neomedia/device/DeviceConfiguration.java @@ -891,10 +891,10 @@ public void setEchoCancel(boolean enabled, boolean save) { try { - PortAudioManager.getInstance().setEchoCancel( - enabled, - PortAudioManager.getInstance().getFrameSize(), - PortAudioManager.getInstance().getFilterLength()); + PortAudioManager portAudioManager = PortAudioManager.getInstance(); + + portAudioManager + .setEchoCancel(enabled, portAudioManager.getFilterLength()); if(save) NeomediaActivator.getConfigurationService() diff --git a/src/net/java/sip/communicator/impl/neomedia/device/PortAudioAuto.java b/src/net/java/sip/communicator/impl/neomedia/device/PortAudioAuto.java index aaea7be92..4ee2b7a52 100644 --- a/src/net/java/sip/communicator/impl/neomedia/device/PortAudioAuto.java +++ b/src/net/java/sip/communicator/impl/neomedia/device/PortAudioAuto.java @@ -65,7 +65,7 @@ public class PortAudioAuto // if PortAudio has a problem initializing like missing native // components it will trow exception here and PortAudio rendering will // not be inited. - PortAudioManager.getInstance(); + PortAudioManager portAudioManager = PortAudioManager.getInstance(); // enable jmf logging, so we can track codec chains and formats if(logger.isDebugEnabled()) @@ -128,32 +128,32 @@ public class PortAudioAuto boolean echoCancelEnabled = config.getBoolean( DeviceConfiguration.PROP_AUDIO_ECHOCANCEL_ENABLED, - PortAudioManager.getInstance().isEnabledEchoCancel()); + portAudioManager.isEnabledEchoCancel()); if(echoCancelEnabled) { int echoCancelTail = config.getInt( DeviceConfiguration.PROP_AUDIO_ECHOCANCEL_TAIL, - PortAudioManager.getInstance().getFilterLength()); - PortAudioManager.getInstance().setEchoCancel( + portAudioManager.getFilterLength()); + portAudioManager.setEchoCancel( echoCancelEnabled, - PortAudioManager.getInstance().getFrameSize(), echoCancelTail); } boolean denoiseEnabled = config.getBoolean( DeviceConfiguration.PROP_AUDIO_DENOISE_ENABLED, - PortAudioManager.getInstance().isEnabledDeNoise()); - PortAudioManager.getInstance().setDeNoise(denoiseEnabled); + portAudioManager.isEnabledDeNoise()); + portAudioManager.setDeNoise(denoiseEnabled); // suggested latency is saved in configuration as // milliseconds but PortAudioManager use it as seconds + int defaultAudioLatency + = (int) (PortAudioManager.getSuggestedLatency()*1000); int audioLatency = config.getInt( DeviceConfiguration.PROP_AUDIO_LATENCY, - (int)(PortAudioManager.getSuggestedLatency()*1000)); - if(audioLatency != - (int)PortAudioManager.getSuggestedLatency()*1000) + defaultAudioLatency); + if(audioLatency != defaultAudioLatency) PortAudioManager.setSuggestedLatency( (double)audioLatency/1000d); } diff --git a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DSAudioStream.java b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DSAudioStream.java index 6cf93a529..e2e89c440 100644 --- a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DSAudioStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DSAudioStream.java @@ -6,9 +6,6 @@ */ package net.java.sip.communicator.impl.neomedia.jmfext.media.protocol.portaudio; -import net.java.sip.communicator.impl.neomedia.portaudio.*; -import net.java.sip.communicator.impl.neomedia.portaudio.streams.*; - import java.io.*; import javax.media.*; @@ -16,6 +13,8 @@ import javax.media.protocol.*; import net.java.sip.communicator.impl.neomedia.control.*; +import net.java.sip.communicator.impl.neomedia.portaudio.*; +import net.java.sip.communicator.impl.neomedia.portaudio.streams.*; /** * The stream used by jmf, wraps our InputPortAudioStream, which wraps @@ -28,8 +27,8 @@ public class DSAudioStream extends ControlsAdapter implements PullBufferStream { - private final static ContentDescriptor cd = - new ContentDescriptor(ContentDescriptor.RAW); + private static final ContentDescriptor cd + = new ContentDescriptor(ContentDescriptor.RAW); private final int deviceIndex; @@ -55,8 +54,7 @@ void start() { if(stream == null) { - AudioFormat audioFormat = - (AudioFormat)DataSource.getCaptureFormat(); + AudioFormat audioFormat = DataSource.getCaptureFormat(); stream = PortAudioManager.getInstance().getInputStream(deviceIndex, audioFormat.getSampleRate(), audioFormat.getChannels()); @@ -106,7 +104,7 @@ public void read(Buffer buffer) buffer.setData(bytebuff); buffer.setLength(bytebuff.length); - buffer.setFlags(0); + buffer.setFlags(Buffer.FLAG_SYSTEM_TIME); buffer.setFormat(getFormat()); buffer.setHeader(null); diff --git a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DataSource.java b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DataSource.java index 5160dd902..b869fb244 100644 --- a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DataSource.java +++ b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/protocol/portaudio/DataSource.java @@ -73,24 +73,24 @@ public class DataSource /** * The format of the media captured by the datasource. */ - private static AudioFormat captureAudioFormat = - new AudioFormat( + private static AudioFormat captureAudioFormat + = new AudioFormat( AudioFormat.LINEAR, - 8000, - 16, - 1, - AudioFormat.LITTLE_ENDIAN, - AudioFormat.SIGNED, - 16, - Format.NOT_SPECIFIED, - Format.byteArray); + 8000, + 16, + 1, + AudioFormat.LITTLE_ENDIAN, + AudioFormat.SIGNED, + 16, + Format.NOT_SPECIFIED, + Format.byteArray); /** * Return the formats supported by the datasource. * * @return the supported formats. */ - public static Format getCaptureFormat() + public static AudioFormat getCaptureFormat() { return captureAudioFormat; } diff --git a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/audio/PortAudioRenderer.java b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/audio/PortAudioRenderer.java index 54d3b88ef..457a1f91c 100644 --- a/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/audio/PortAudioRenderer.java +++ b/src/net/java/sip/communicator/impl/neomedia/jmfext/media/renderer/audio/PortAudioRenderer.java @@ -127,26 +127,22 @@ public synchronized void stop() /** * Processes the data and renders it * to the output device represented by this Renderer. - * @param inputBuffer the input data. + * @param buffer the input data. * @return BUFFER_PROCESSED_OK if the processing is successful. */ - public synchronized int process(Buffer inputBuffer) + public synchronized int process(Buffer buffer) { - byte[] buff = new byte[inputBuffer.getLength()]; - System.arraycopy( - (byte[])inputBuffer.getData(), - inputBuffer.getOffset(), - buff, - 0, - buff.length); - try { - stream.write(buff); + stream + .write( + (byte[]) buffer.getData(), + buffer.getOffset(), + buffer.getLength()); } - catch (PortAudioException e) + catch (PortAudioException paex) { - logger.error("Error writing to device", e); + logger.error("Error writing to device", paex); } return BUFFER_PROCESSED_OK; diff --git a/src/net/java/sip/communicator/impl/neomedia/notify/PortAudioClipImpl.java b/src/net/java/sip/communicator/impl/neomedia/notify/PortAudioClipImpl.java index 08ca56282..952402c26 100644 --- a/src/net/java/sip/communicator/impl/neomedia/notify/PortAudioClipImpl.java +++ b/src/net/java/sip/communicator/impl/neomedia/notify/PortAudioClipImpl.java @@ -37,7 +37,7 @@ public class PortAudioClipImpl private final URL url; - private Object syncObject = new Object(); + private final Object syncObject = new Object(); /** * Creates the audio clip and initialize the listener used from the @@ -110,6 +110,7 @@ private class PlayThread implements Runnable { private final byte[] buffer = new byte[1024]; + private OutputPortAudioStream portAudioStream = null; public void run() @@ -124,18 +125,22 @@ public void run() if (portAudioStream == null) { - int deviceIndex = - PortAudioUtils.getDeviceIndexFromLocator( + int deviceIndex + = PortAudioUtils.getDeviceIndexFromLocator( audioNotifier.getDeviceConfiguration(). getAudioNotifyDevice().getLocator()); - portAudioStream = PortAudioManager.getInstance(). - getOutputStream( - deviceIndex, - audioStreamFormat.getSampleRate(), - audioStreamFormat.getChannels(), - PortAudioUtils.getPortAudioSampleFormat( - audioStreamFormat.getSampleSizeInBits())); + portAudioStream + = PortAudioManager + .getInstance() + .getOutputStream( + deviceIndex, + audioStreamFormat.getSampleRate(), + audioStreamFormat.getChannels(), + PortAudioUtils + .getPortAudioSampleFormat( + audioStreamFormat + .getSampleSizeInBits())); portAudioStream.start(); } @@ -146,8 +151,12 @@ public void run() return; } - while(started && audioStream.read(buffer) != -1) - portAudioStream.write(buffer); + int bufferLength; + + while(started + && ((bufferLength = audioStream.read(buffer)) + != -1)) + portAudioStream.write(buffer, 0, bufferLength); if(!isLooping()) { @@ -158,12 +167,14 @@ public void run() else { synchronized(syncObject) { - if (started) { - try { + if (started) + try + { syncObject.wait(getLoopInterval()); - } catch (InterruptedException e) { } - } + catch (InterruptedException e) + { + } } } } diff --git a/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudio.java b/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudio.java index ae5ca7229..41768a60b 100644 --- a/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudio.java +++ b/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudio.java @@ -8,7 +8,9 @@ /** * PortAudio functions. + * * @author Lubomir Marinov + * @author Damian Minkov */ public final class PortAudio { @@ -262,10 +264,39 @@ public static native void Pa_StopStream(long stream) * @param frames The number of frames to be written from buffer. * @throws PortAudioException */ + public static void Pa_WriteStream(long stream, byte[] buffer, long frames) + throws PortAudioException + { + Pa_WriteStream(stream, buffer, 0, frames, 1); + } + + /** + * Writes samples to an output stream. Does not return until the specified + * samples have been consumed - this may involve waiting for the operating + * system to consume the data. + *

+ * Provides better efficiency than achieved through multiple consecutive + * calls to {@link #Pa_WriteStream(long, byte[], long)} with one and the + * same buffer because the JNI access to the bytes of the buffer which is + * likely to copy the whole buffer is only performed once. + *

+ * + * @param stream the pointer to the PortAudio stream to write the samples to + * @param buffer the buffer containing the samples to be written + * @param offset the byte offset in buffer at which the samples to + * be written start + * @param frames the number of frames from buffer starting at + * offset are to be written with a single write + * @param numberOfWrites the number of writes each writing frames + * number of frames to be performed + * @throws PortAudioException if anything goes wrong while writing + */ public static native void Pa_WriteStream( long stream, byte[] buffer, - long frames) + int offset, + long frames, + int numberOfWrites) throws PortAudioException; /** diff --git a/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudioManager.java b/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudioManager.java index bbb9928f7..99eb5a767 100644 --- a/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudioManager.java +++ b/src/net/java/sip/communicator/impl/neomedia/portaudio/PortAudioManager.java @@ -16,13 +16,17 @@ * them. * * @author Damian Minkov + * @author Lubomir Marinov */ public class PortAudioManager { + /** - * 20ms in 8kHz is 160 samples. + * The number of frames to be read from or written to a native PortAudio + * stream in a single transfer of data. The current value is based on 20ms + * of audio with 8kHz frame rate which is equal to 160 frames. */ - public static final int NUM_SAMPLES = 160; + private static final int FRAMES_PER_BUFFER = 160; /** * The static instance of portaudio manager. @@ -55,10 +59,11 @@ public class PortAudioManager private boolean enabledDeNoise = true; /** - * The default value for the frame size we use to read and write - * by portaudio. Currently 20 ms. + * The number of frames to be read from or written to a native PortAudio + * stream in a single transfer of data. The current value is based on 20ms + * of audio with 8kHz frame rate which is equal to 160 frames. */ - private int frameSize = NUM_SAMPLES; + private final int framesPerBuffer = FRAMES_PER_BUFFER; /** * The default value for number of samples of echo to cancel. @@ -113,24 +118,32 @@ public InputPortAudioStream getInputStream( throws PortAudioException { MasterPortAudioStream st = inputStreams.get(deviceIndex); + if(st == null) { st = new MasterPortAudioStream(deviceIndex, sampleRate, channels); inputStreams.put(deviceIndex, st); - // if there is a output streams, get the latest one - // and connect them - // todo: we must link input to all outputs ??? - if(isEnabledEchoCancel() && outputStreams.size() > 0) - { - OutputPortAudioStream out = outputStreams.get( - outputStreams.size() - 1); - st.setParams(out, isEnabledDeNoise(), - isEnabledEchoCancel(), getFrameSize(), getFilterLength()); - } + /* + * If there are output streams, get the latest one and connect them. + */ + // TODO We must link input to all outputs??? + boolean echoCancelIsEnabled = isEnabledEchoCancel(); + int outputStreamCount; + OutputPortAudioStream out; + + if(echoCancelIsEnabled + && ((outputStreamCount = outputStreams.size()) > 0)) + out = outputStreams.get(outputStreamCount - 1); else - st.setParams(null, isEnabledDeNoise(), - isEnabledEchoCancel(), getFrameSize(), getFilterLength()); + out = null; + + st.setParams( + out, + isEnabledDeNoise(), + echoCancelIsEnabled, + getFramesPerBuffer(), + getFilterLength()); } return new InputPortAudioStream(st); @@ -152,17 +165,26 @@ public OutputPortAudioStream getOutputStream(int deviceIndex, { OutputPortAudioStream out = new OutputPortAudioStream(deviceIndex, sampleRate, channels); + outputStreams.add(out); - // if there are input streams created, get the first one - // and link it to this output - // TODO what to do with the others - if(isEnabledEchoCancel() && inputStreams.size() > 0) + /* + * If there are input streams created, get the first one and link it to + * this output. + */ + // TODO What to do with the others? + boolean echoCancelIsEnabled = isEnabledEchoCancel(); + + if (echoCancelIsEnabled && (inputStreams.size() > 0)) { MasterPortAudioStream st = inputStreams.values().iterator().next(); - st.setParams(out, isEnabledEchoCancel(), - isEnabledDeNoise(), getFrameSize(), getFilterLength()); + st.setParams( + out, + echoCancelIsEnabled, + isEnabledDeNoise(), + getFramesPerBuffer(), + getFilterLength()); } return out; @@ -206,16 +228,13 @@ public OutputPortAudioStream getOutputStream( /** * Enables or disables echo cancel. - * @param enabled should we enable or disable echo cancelation - * @param frameSize Number of samples to process at one time - * (should correspond to 10-20 ms) + * @param enabled should we enable or disable echo cancellation * @param filterLength Number of samples of echo to cancel * (should generally correspond to 100-500 ms) */ - public void setEchoCancel(boolean enabled, int frameSize, int filterLength) + public void setEchoCancel(boolean enabled, int filterLength) { this.enabledEchoCancel = enabled; - this.frameSize = frameSize; this.filterLength = filterLength; } @@ -274,12 +293,14 @@ public boolean isEnabledDeNoise() } /** - * Number of samples to process at one time (should correspond to 10-20 ms). - * @return the frameSize. + * Gets the number of frames to process at a time (should correspond to + * 10-20ms). + * + * @return the number of frames to process at a time */ - public int getFrameSize() + public int getFramesPerBuffer() { - return frameSize; + return framesPerBuffer; } /** diff --git a/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/MasterPortAudioStream.java b/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/MasterPortAudioStream.java index 291931ec9..203132e60 100644 --- a/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/MasterPortAudioStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/MasterPortAudioStream.java @@ -38,7 +38,19 @@ public class MasterPortAudioStream /** * The frame size we use. */ - private int frameSize; + private final int frameSize; + + /** + * The number of frames to read from a native PortAudio stream in a single + * invocation. + */ + private final int framesPerBuffer; + + /** + * The number of bytes to read from a native PortAudio stream in a single + * invocation. Based on {@link #framesPerBuffer} and {@link #frameSize}. + */ + private final int bytesPerBuffer; /** * The sample rate for the current stream. @@ -85,6 +97,8 @@ public MasterPortAudioStream( frameSize = PortAudio.Pa_GetSampleSize(PortAudio.SAMPLE_FORMAT_INT16) * channels; + framesPerBuffer = PortAudioManager.getInstance().getFramesPerBuffer(); + bytesPerBuffer = frameSize * framesPerBuffer; } /** @@ -203,12 +217,11 @@ public synchronized byte[] read() if(!started) return new byte[0]; - byte[] bytebuff = new byte[PortAudioManager.NUM_SAMPLES*frameSize]; + byte[] bytebuff = new byte[bytesPerBuffer]; synchronized(connectedToStreamSync) { - PortAudio.Pa_ReadStream( - stream, bytebuff, PortAudioManager.NUM_SAMPLES); + PortAudio.Pa_ReadStream(stream, bytebuff, framesPerBuffer); } for(InputPortAudioStream slave : slaves) diff --git a/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/OutputPortAudioStream.java b/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/OutputPortAudioStream.java index 7b1cea133..96e6e29e8 100644 --- a/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/OutputPortAudioStream.java +++ b/src/net/java/sip/communicator/impl/neomedia/portaudio/streams/OutputPortAudioStream.java @@ -39,22 +39,42 @@ public class OutputPortAudioStream */ private final int frameSize; + /** + * The number of frames to write to the native PortAudioStream represented + * by this instance with a single invocation. + */ + private final int framesPerBuffer; + + /** + * The number of bytes to write to a native PortAudio stream with a single + * invocation. Based on {@link #framesPerBuffer} and {@link #frameSize}. + */ + private final int bytesPerBuffer; + /** * The stream pointer we are using or 0 if stopped and not initialized. */ private long stream; + /** * Whether this stream is started. */ private boolean started = false; /** - * Buffer left for writing from previous write, - * as everything is split into parts of PortAudioManager.NUM_SAMPLES, - * this is what has left. + * The audio samples left unwritten by a previous call to + * {@link #write(byte[], int, int)}. As {@link #bytesPerBuffer} number of + * bytes are always written, the number of the unwritten audio samples is + * always less than that. */ private byte[] bufferLeft = null; + /** + * The number of bytes in {@link #bufferLeft} representing unwritten audio + * samples. + */ + private int bufferLeftLength = 0; + /** * We use this object to sync input stream reads with this output stream * closes, if this output stream is connected to input stream(when using @@ -86,7 +106,7 @@ public OutputPortAudioStream( * @throws PortAudioException if stream fails to open. */ public OutputPortAudioStream( - int deviceIndex, double sampleRate, int channels, long sampleFormat) + int deviceIndex, double sampleRate, int channels, long sampleFormat) throws PortAudioException { this.deviceIndex = deviceIndex; @@ -95,6 +115,9 @@ public OutputPortAudioStream( this.sampleFormat = sampleFormat; frameSize = PortAudio.Pa_GetSampleSize(sampleFormat)*channels; + framesPerBuffer = PortAudioManager.getInstance().getFramesPerBuffer(); + bytesPerBuffer = frameSize * framesPerBuffer; + stream = createStream(); } @@ -149,77 +172,89 @@ private long createStream() } /** - * We will split everything into parts of PortAudioManager.NUM_SAMPLES. - * If something is left we will save it for next write and use it than. + * Writes a specific byte buffer of audio samples into the native + * PortAudio stream represented by this instance. + *

+ * Splits the specified buffer and performs multiple writes with + * {@link PortAudioManager#getFramesPerBuffer()} number of frames at a time. + * If any bytes from the specified buffer remain unwritten, they are + * retained for the next write to be prepended to its buffer. + *

* - * @param buffer the current buffer. - * @throws PortAudioException error while writing to device. + * @param buffer the byte buffer to the written into the native + * PortAudio stream represented by this instance + * @param offset the offset in buffer at which the audio samples to + * be written begin + * @param length the length of the audio samples in buffer to be + * written + * @throws PortAudioException if anything goes wrong while writing */ - public synchronized void write(byte[] buffer) + public synchronized void write(byte[] buffer, int offset, int length) throws PortAudioException { if((stream == 0) || !started) return; - int numSamples = PortAudioManager.NUM_SAMPLES*frameSize; + /* + * If there are audio samples left unwritten from a previous write, + * prepend them to the specified buffer. If it's possible to write them + * now, do it. + */ + if ((bufferLeft != null) && (bufferLeftLength > 0)) + { + int numberOfBytesInBufferLeftToBytesPerBuffer + = bytesPerBuffer - bufferLeftLength; + int numberOfBytesToCopyToBufferLeft + = (numberOfBytesInBufferLeftToBytesPerBuffer < length) + ? numberOfBytesInBufferLeftToBytesPerBuffer + : length; - int currentIx = 0; + System + .arraycopy( + buffer, + offset, + bufferLeft, + bufferLeftLength, + numberOfBytesToCopyToBufferLeft); + offset += numberOfBytesToCopyToBufferLeft; + length -= numberOfBytesToCopyToBufferLeft; + bufferLeftLength += numberOfBytesToCopyToBufferLeft; - // if there are bytes from previous run - if(bufferLeft != null && bufferLeft.length > 0) - { - if(buffer.length + bufferLeft.length >= numSamples) + if (bufferLeftLength == bytesPerBuffer) { - byte[] tmp = new byte[numSamples]; - System.arraycopy(bufferLeft, 0, tmp, 0, bufferLeft.length); - System.arraycopy(buffer, currentIx, tmp, - bufferLeft.length, numSamples - bufferLeft.length); - currentIx += numSamples - bufferLeft.length; - bufferLeft = null; - - PortAudio.Pa_WriteStream( - stream,tmp, tmp.length/frameSize); - } - else - { - // not enough bytes even with previous left - // so let store everything - byte[] tmp = new byte[numSamples]; - System.arraycopy(bufferLeft, 0, tmp, 0, bufferLeft.length); - System.arraycopy(buffer, currentIx, tmp, - bufferLeft.length, numSamples - bufferLeft.length); - bufferLeft = null; - return; + PortAudio.Pa_WriteStream(stream, bufferLeft, framesPerBuffer); + bufferLeftLength = 0; } } - // now use all the current buffer - if(buffer.length > numSamples) + // Write the audio samples from the specified buffer. + int numberOfWrites = length / bytesPerBuffer; + + if (numberOfWrites > 0) { - while(currentIx <= buffer.length - numSamples) - { - byte[] tmp = new byte[numSamples]; - System.arraycopy(buffer, currentIx, tmp, 0, numSamples); + PortAudio + .Pa_WriteStream( + stream, + buffer, + offset, + framesPerBuffer, + numberOfWrites); - PortAudio.Pa_WriteStream( - stream,tmp, tmp.length/frameSize); - currentIx += numSamples; - } + int bytesWritten = numberOfWrites * bytesPerBuffer; - if(currentIx < buffer.length) - { - bufferLeft = new byte[buffer.length - currentIx]; - System.arraycopy(buffer, currentIx, bufferLeft, 0, bufferLeft.length); - } - } - else if(buffer.length < numSamples) - { - bufferLeft = buffer; + offset += bytesWritten; + length -= bytesWritten; } - else + + // If anything was left unwritten, remember it for next time. + if (length > 0) { - PortAudio.Pa_WriteStream( - stream,buffer, buffer.length/frameSize); + if (bufferLeft == null) + { + bufferLeft = new byte[bytesPerBuffer]; + } + System.arraycopy(buffer, offset, bufferLeft, 0, length); + bufferLeftLength = length; } }