39 #include "com_portaudio_PortAudio.h"
41 #include "jpa_tools.h"
43 jint jpa_GetIntField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName )
46 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"I");
49 jpa_ThrowError( env,
"Cannot find integer JNI field." );
54 return (*env)->GetIntField(env, obj, fid );
58 void jpa_SetIntField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName, jint value )
61 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"I");
64 jpa_ThrowError( env,
"Cannot find integer JNI field." );
68 (*env)->SetIntField(env, obj, fid, value );
72 jlong jpa_GetLongField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName )
75 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"J");
78 jpa_ThrowError( env,
"Cannot find long JNI field." );
83 return (*env)->GetLongField(env, obj, fid );
87 void jpa_SetLongField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName, jlong value )
90 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"J");
93 jpa_ThrowError( env,
"Cannot find long JNI field." );
97 (*env)->SetLongField(env, obj, fid, value );
102 void jpa_SetDoubleField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName, jdouble value )
105 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"D");
108 jpa_ThrowError( env,
"Cannot find double JNI field." );
112 (*env)->SetDoubleField(env, obj, fid, value );
117 jdouble jpa_GetDoubleField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName )
120 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"D");
123 jpa_ThrowError( env,
"Cannot find double JNI field." );
128 return (*env)->GetDoubleField(env, obj, fid );
132 void jpa_SetStringField( JNIEnv *env, jclass cls, jobject obj,
const char *fieldName,
const char *value )
135 jfieldID fid = (*env)->GetFieldID(env, cls, fieldName,
"Ljava/lang/String;");
138 jpa_ThrowError( env,
"Cannot find String JNI field." );
142 jstring jstr = (*env)->NewStringUTF(env, value);
145 jpa_ThrowError( env,
"Cannot create new String." );
149 (*env)->SetObjectField(env, obj, fid, jstr );
158 if( jstreamParam == NULL )
return NULL;
160 cls = (*env)->GetObjectClass(env, jstreamParam);
162 myParams->
channelCount = jpa_GetIntField( env, cls, jstreamParam,
"channelCount" );
163 myParams->
device = jpa_GetIntField( env, cls, jstreamParam,
"device" );
164 myParams->
sampleFormat = jpa_GetIntField( env, cls, jstreamParam,
"sampleFormat" );
165 myParams->
suggestedLatency = jpa_GetDoubleField( env, cls, jstreamParam,
"suggestedLatency" );
172 jint jpa_ThrowError( JNIEnv *env,
const char *message )
174 return (*env)->ThrowNew(env, (*env)->FindClass( env,
"java/lang/RuntimeException"),
179 jint jpa_CheckError( JNIEnv *env,
PaError err )
183 return jpa_ThrowError( env,
"-1, possibly no available default device" );
187 if( err == paUnanticipatedHostError )
190 return jpa_ThrowError( env, hostErrorInfo->
errorText );
204 PaStream *jpa_GetStreamPointer( JNIEnv *env, jobject blockingStream )
206 jclass cls = (*env)->GetObjectClass(env, blockingStream);
207 return (
PaStream *) jpa_GetLongField( env, cls, blockingStream,
"nativeStream" );
const PaHostErrorInfo * Pa_GetLastHostErrorInfo(void)
void * hostApiSpecificStreamInfo
The portable PortAudio API.
PaSampleFormat sampleFormat
const char * Pa_GetErrorText(PaError errorCode)