39 #include "com_portaudio_PortAudio.h"
41 #include "jpa_tools.h"
48 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getVersion
49 (JNIEnv *env, jclass clazz)
59 JNIEXPORT jstring JNICALL Java_com_portaudio_PortAudio_getVersionText
60 (JNIEnv *env, jclass clazz)
70 JNIEXPORT
void JNICALL Java_com_portaudio_PortAudio_initialize
71 (JNIEnv *env, jclass clazz)
74 jpa_CheckError( env, err );
82 JNIEXPORT
void JNICALL Java_com_portaudio_PortAudio_terminate
83 (JNIEnv *env, jclass clazz)
86 jpa_CheckError( env, err );
94 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDeviceCount
95 (JNIEnv *env, jclass clazz)
98 return jpa_CheckError( env, count );
106 JNIEXPORT
void JNICALL Java_com_portaudio_PortAudio_getDeviceInfo
107 (JNIEnv *env, jclass clazz, jint index, jobject deviceInfo)
111 jclass cls = (*env)->GetObjectClass(env, deviceInfo);
116 jpa_ThrowError( env,
"Pa_GetDeviceInfo returned NULL." );
120 jpa_SetStringField( env, cls, deviceInfo,
"name", info->name );
121 jpa_SetIntField( env, cls, deviceInfo,
"maxInputChannels", info->maxInputChannels );
122 jpa_SetIntField( env, cls, deviceInfo,
"maxOutputChannels", info->maxOutputChannels );
123 jpa_SetIntField( env, cls, deviceInfo,
"hostApi", info->
hostApi );
124 jpa_SetDoubleField( env, cls, deviceInfo,
"defaultSampleRate", info->defaultSampleRate );
127 jpa_SetDoubleField( env, cls, deviceInfo,
"defaultLowOutputLatency", info->defaultLowOutputLatency );
128 jpa_SetDoubleField( env, cls, deviceInfo,
"defaultHighOutputLatency", info->defaultHighOutputLatency );
137 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getHostApiCount
138 (JNIEnv *env, jclass clazz)
141 return jpa_CheckError( env, count );
150 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiTypeIdToHostApiIndex
151 (JNIEnv *env, jclass clazz, jint hostApiType)
161 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiDeviceIndexToDeviceIndex
162 (JNIEnv *env, jclass clazz, jint hostApiIndex, jint apiDeviceIndex)
173 JNIEXPORT
void JNICALL Java_com_portaudio_PortAudio_getHostApiInfo
174 (JNIEnv *env, jclass clazz, jint index, jobject hostApiInfo)
178 jclass cls = (*env)->GetObjectClass(env, hostApiInfo);
183 jpa_ThrowError( env,
"Pa_GetHostApiInfo returned NULL." );
187 jpa_SetIntField( env, cls, hostApiInfo,
"version", info->
structVersion );
188 jpa_SetIntField( env, cls, hostApiInfo,
"type", info->
type );
189 jpa_SetStringField( env, cls, hostApiInfo,
"name", info->
name );
190 jpa_SetIntField( env, cls, hostApiInfo,
"deviceCount", info->
deviceCount );
191 jpa_SetIntField( env, cls, hostApiInfo,
"defaultInputDevice", info->
defaultInputDevice );
192 jpa_SetIntField( env, cls, hostApiInfo,
"defaultOutputDevice", info->
defaultOutputDevice );
201 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultInputDevice
202 (JNIEnv *env, jclass clazz)
205 return jpa_CheckError( env, deviceId );
213 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultOutputDevice
214 (JNIEnv *env, jclass clazz)
217 return jpa_CheckError( env, deviceId );
225 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultHostApi
226 (JNIEnv *env, jclass clazz)
229 return jpa_CheckError( env, deviceId );
237 JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_isFormatSupported
238 (JNIEnv *env, jclass clazz, jobject inParams, jobject outParams, jint sampleRate )
243 paInParams = jpa_FillStreamParameters( env, inParams, &myInParams );
244 paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams );
255 JNIEXPORT
void JNICALL Java_com_portaudio_PortAudio_openStream
256 (JNIEnv *env, jclass clazz, jobject blockingStream, jobject inParams, jobject outParams, jint sampleRate, jint framesPerBuffer, jint flags )
263 paInParams = jpa_FillStreamParameters( env, inParams, &myInParams );
264 paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams );
265 err =
Pa_OpenStream( &stream, paInParams, paOutParams, sampleRate, framesPerBuffer, flags, NULL, NULL );
266 if( jpa_CheckError( env, err ) == 0 )
268 jclass cls = (*env)->GetObjectClass(env, blockingStream);
269 jpa_SetLongField( env, cls, blockingStream,
"nativeStream", (jlong) stream );
270 if( paInParams != NULL )
272 jpa_SetIntField( env, cls, blockingStream,
"inputFormat", paInParams->
sampleFormat );
274 if( paOutParams != NULL )
276 jpa_SetIntField( env, cls, blockingStream,
"outputFormat", paOutParams->
sampleFormat );