diff options
author | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2012-05-08 08:47:41 +0000 |
---|---|---|
committer | Lyubomir Marinov <lyubomir.marinov@jitsi.org> | 2012-05-08 08:47:41 +0000 |
commit | 8c6817d0425fc26ca94bdd9a95e1d07ca8b82ffb (patch) | |
tree | 151789d8a78cfe5b41f31c7b0bb37e4efd58eaba /src/native/linux | |
parent | 94f6566e68aecd3eaf1f788d07e39d4eefbd31e2 (diff) | |
download | jitsi-8c6817d0425fc26ca94bdd9a95e1d07ca8b82ffb.zip jitsi-8c6817d0425fc26ca94bdd9a95e1d07ca8b82ffb.tar.gz jitsi-8c6817d0425fc26ca94bdd9a95e1d07ca8b82ffb.tar.bz2 |
Implements (native) volume control for the PulseAudio backend (on GNU/Linux).
Diffstat (limited to 'src/native/linux')
-rw-r--r-- | src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.c | 290 | ||||
-rw-r--r-- | src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.h | 136 |
2 files changed, 400 insertions, 26 deletions
diff --git a/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.c b/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.c index e152c66..c0bcef2 100644 --- a/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.c +++ b/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.c @@ -10,6 +10,9 @@ #include <stdint.h> static void PulseAudio_contextStateCallback(pa_context *c, void *userdata); +static jlongArray PulseAudio_getFormatInfos(JNIEnv *env, jclass clazz, jsize length, pa_format_info **formats); +static void PulseAudio_infoCallback(pa_context *c, jlong i, int eol, void *userdata, jmethodID methodID); +static void PulseAudio_sinkInfoCallback(pa_context *c, const pa_sink_info *i, int eol, void *userdata); static void PulseAudio_sourceInfoCallback(pa_context *c, const pa_source_info *i, int eol, void *userdata); static void PulseAudio_stateCallback(void *userdata); static void PulseAudio_streamRequestCallback(pa_stream *s, size_t nbytes, void *userdata); @@ -17,6 +20,8 @@ static void PulseAudio_streamStateCallback(pa_stream *s, void *userdata); static jclass PulseAudio_runnableClass = NULL; static jmethodID PulseAudio_runnableMethodID = 0; +static jclass PulseAudio_sinkInfoCbClass = NULL; +static jmethodID PulseAudio_sinkInfoCbMethodID = 0; static jclass PulseAudio_sourceInfoCbClass = NULL; static jmethodID PulseAudio_sourceInfoCbMethodID = 0; static jclass PulseAudio_streamRequestCbClass = NULL; @@ -81,6 +86,27 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1disconnect } JNIEXPORT jlong JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1get_1sink_1info_1list + (JNIEnv *env, jclass clazz, jlong c, jobject cb) +{ + jweak weakCb = cb ? (*env)->NewWeakGlobalRef(env, cb) : NULL; + pa_operation *o; + + if ((*env)->ExceptionCheck(env)) + o = NULL; + else + { + o + = pa_context_get_sink_info_list( + (pa_context *) (intptr_t) c, + weakCb ? PulseAudio_sinkInfoCallback : NULL, + (void *) weakCb); + } + + return (intptr_t) o; +} + +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1get_1source_1info_1list (JNIEnv *env, jclass clazz, jlong c, jobject cb) { @@ -133,6 +159,34 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1new_1with_1p return (intptr_t) ret; } +JNIEXPORT jlong JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1set_1sink_1input_1volume + (JNIEnv *env, jclass clazz, jlong c, jint idx, jlong volume, jobject cb) +{ + return + (intptr_t) + pa_context_set_sink_input_volume( + (pa_context *) (intptr_t) c, + (uint32_t) idx, + (const pa_cvolume *) (intptr_t) volume, + NULL, + NULL); +} + +JNIEXPORT jlong JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1set_1source_1output_1volume + (JNIEnv *env, jclass clazz, jlong c, jint idx, jlong volume, jobject cb) +{ + return + (intptr_t) + pa_context_set_source_output_volume( + (pa_context *) (intptr_t) c, + (uint32_t) idx, + (const pa_cvolume *) (intptr_t) volume, + NULL, + NULL); +} + JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1set_1state_1callback (JNIEnv *env, jclass clazz, jlong c, jobject cb) @@ -152,6 +206,36 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1unref pa_context_unref((pa_context *) (intptr_t) c); } +JNIEXPORT void JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1free + (JNIEnv *env, jclass clazz, jlong cv) +{ + pa_xfree((void *) (intptr_t) cv); +} + +JNIEXPORT jlong JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1new + (JNIEnv *env, jclass clazz) +{ + pa_cvolume *cv = pa_xmalloc(sizeof(pa_cvolume)); + + if (cv) + cv = pa_cvolume_init(cv); + return (intptr_t) cv; +} + +JNIEXPORT jlong JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1set + (JNIEnv *env, jclass clazz, jlong cv, jint channels, jint v) +{ + return + (intptr_t) + pa_cvolume_set( + (pa_cvolume *) (intptr_t) cv, + (unsigned) channels, + (pa_volume_t) v); +} + JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_format_1info_1get_1encoding (JNIEnv *env, jclass clazz, jlong f) @@ -284,6 +368,82 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sample_1spec_1new } JNIEXPORT jstring JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1description + (JNIEnv *env, jclass clazz, jlong i) +{ + const char *description = ((pa_sink_info *) (intptr_t) i)->description; + + return description ? (*env)->NewStringUTF(env, description) : NULL; +} + +JNIEXPORT jlongArray JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1formats + (JNIEnv *env, jclass clazz, jlong i) +{ + pa_sink_info *sinkInfo = (pa_sink_info *) (intptr_t) i; + + return + PulseAudio_getFormatInfos( + env, clazz, + sinkInfo->n_formats, sinkInfo->formats); +} + +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1index + (JNIEnv *env, jclass clazz, jlong i) +{ + return ((pa_sink_info *) (intptr_t) i)->index; +} + +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1monitor_1source + (JNIEnv *env, jclass clazz, jlong i) +{ + return ((pa_sink_info *) (intptr_t) i)->monitor_source; +} + +JNIEXPORT jstring JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1monitor_1source_1name + (JNIEnv *env, jclass clazz, jlong i) +{ + const char *monitorSourceName + = ((pa_sink_info *) (intptr_t) i)->monitor_source_name; + + return + monitorSourceName ? (*env)->NewStringUTF(env, monitorSourceName) : NULL; +} + +JNIEXPORT jstring JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1name + (JNIEnv *env, jclass clazz, jlong i) +{ + const char *name = ((pa_sink_info *) (intptr_t) i)->name; + + return name ? (*env)->NewStringUTF(env, name) : NULL; +} + +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1channels + (JNIEnv *env, jclass clazz, jlong i) +{ + return ((pa_sink_info *) (intptr_t) i)->sample_spec.channels; +} + +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1format + (JNIEnv *env, jclass clazz, jlong i) +{ + return ((pa_sink_info *) (intptr_t) i)->sample_spec.format; +} + +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1rate + (JNIEnv *env, jclass clazz, jlong i) +{ + return ((pa_sink_info *) (intptr_t) i)->sample_spec.rate; +} + +JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1description (JNIEnv *env, jclass clazz, jlong i) { @@ -297,22 +457,11 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1fo (JNIEnv *env, jclass clazz, jlong i) { pa_source_info *sourceInfo = (pa_source_info *) (intptr_t) i; - jsize length = sourceInfo->n_formats; - jlongArray ret = (*env)->NewLongArray(env, length); - - if (ret) - { - jsize i; - pa_format_info **formats = sourceInfo->formats; - - for (i = 0; i < length; i++, formats++) - { - jlong format = (intptr_t) (*formats); - (*env)->SetLongArrayRegion(env, ret, i, 1, &format); - } - } - return ret; + return + PulseAudio_getFormatInfos( + env, clazz, + sourceInfo->n_formats, sourceInfo->formats); } JNIEXPORT jint JNICALL @@ -340,23 +489,23 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1na JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1sample_1spec_1channels - (JNIEnv *env, jclass clazz, jlong f) + (JNIEnv *env, jclass clazz, jlong i) { - return ((pa_source_info *) (intptr_t) f)->sample_spec.channels; + return ((pa_source_info *) (intptr_t) i)->sample_spec.channels; } JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1sample_1spec_1format - (JNIEnv *env, jclass clazz, jlong f) + (JNIEnv *env, jclass clazz, jlong i) { - return ((pa_source_info *) (intptr_t) f)->sample_spec.format; + return ((pa_source_info *) (intptr_t) i)->sample_spec.format; } JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_source_1info_1get_1sample_1spec_1rate - (JNIEnv *env, jclass clazz, jlong f) + (JNIEnv *env, jclass clazz, jlong i) { - return ((pa_source_info *) (intptr_t) f)->sample_spec.rate; + return ((pa_source_info *) (intptr_t) i)->sample_spec.rate; } JNIEXPORT jint @@ -429,6 +578,13 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_stream_1drop } JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_stream_1get_1index + (JNIEnv *env, jclass clazz, jlong s) +{ + return pa_stream_get_index((pa_stream *) (intptr_t) s); +} + +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_stream_1get_1state (JNIEnv *env, jclass clazz, jlong s) { @@ -589,6 +745,13 @@ Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_stream_1write return ret; } +JNIEXPORT jint JNICALL +Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sw_1volume_1from_1linear + (JNIEnv *env, jclass clazz, jdouble v) +{ + return pa_sw_volume_from_linear(v); +} + JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_threaded_1mainloop_1free (JNIEnv *env, jclass clazz, jlong m) @@ -686,6 +849,29 @@ JNI_OnLoad(JavaVM *vm, void *reserved) clazz = (*env)->FindClass( env, + "net/java/sip/communicator/impl/neomedia/pulseaudio/PA$sink_info_cb_t"); + + if (clazz) + { + jmethodID methodID + = (*env)->GetMethodID(env, clazz, "callback", "(JJI)V"); + + if (methodID) + { + clazz = (*env)->NewGlobalRef(env, clazz); + if (clazz) + { + PulseAudio_sinkInfoCbClass = clazz; + PulseAudio_sinkInfoCbMethodID = methodID; + } + } + } + } + if (PulseAudio_sinkInfoCbMethodID) + { + clazz + = (*env)->FindClass( + env, "net/java/sip/communicator/impl/neomedia/pulseaudio/PA$source_info_cb_t"); if (clazz) @@ -735,17 +921,23 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { jclass runnableClass = PulseAudio_runnableClass; + jclass sinkInfoCbClass = PulseAudio_sinkInfoCbClass; jclass sourceInfoCbClass = PulseAudio_sourceInfoCbClass; jclass streamRequestCbClass = PulseAudio_streamRequestCbClass; PulseAudio_runnableClass = NULL; PulseAudio_runnableMethodID = 0; + PulseAudio_sinkInfoCbClass = NULL; + PulseAudio_sinkInfoCbMethodID = 0; PulseAudio_sourceInfoCbClass = NULL; PulseAudio_sourceInfoCbMethodID = 0; PulseAudio_streamRequestCbClass = NULL; PulseAudio_streamRequestCbMethodID = 0; PulseAudio_vm = NULL; - if (runnableClass || sourceInfoCbClass || streamRequestCbClass) + if (runnableClass + || sinkInfoCbClass + || sourceInfoCbClass + || streamRequestCbClass) { JNIEnv *env; jint version = JNI_VERSION_1_4; @@ -754,6 +946,8 @@ JNI_OnUnload(JavaVM *vm, void *reserved) { if (runnableClass) (*env)->DeleteGlobalRef(env, runnableClass); + if (sinkInfoCbClass) + (*env)->DeleteGlobalRef(env, sinkInfoCbClass); if (sourceInfoCbClass) (*env)->DeleteGlobalRef(env, sourceInfoCbClass); if (streamRequestCbClass) @@ -768,9 +962,29 @@ PulseAudio_contextStateCallback(pa_context *c, void *userdata) PulseAudio_stateCallback(userdata); } +static jlongArray +PulseAudio_getFormatInfos + (JNIEnv *env, jclass clazz, jsize length, pa_format_info **formats) +{ + jlongArray ret = (*env)->NewLongArray(env, length); + + if (ret) + { + jsize i; + + for (i = 0; i < length; i++, formats++) + { + jlong format = (intptr_t) (*formats); + + (*env)->SetLongArrayRegion(env, ret, i, 1, &format); + } + } + return ret; +} + static void -PulseAudio_sourceInfoCallback - (pa_context *c, const pa_source_info *i, int eol, void *userdata) +PulseAudio_infoCallback + (pa_context *c, jlong i, int eol, void *userdata, jmethodID methodID) { jweak weakCb = (jweak) userdata; @@ -792,9 +1006,9 @@ PulseAudio_sourceInfoCallback (*env)->CallVoidMethod( env, cb, - PulseAudio_sourceInfoCbMethodID, + methodID, (jlong) (intptr_t) c, - (jlong) (intptr_t) i, + i, (jint) eol); (*env)->DeleteLocalRef(env, cb); } @@ -804,6 +1018,30 @@ PulseAudio_sourceInfoCallback } static void +PulseAudio_sinkInfoCallback + (pa_context *c, const pa_sink_info *i, int eol, void *userdata) +{ + PulseAudio_infoCallback( + c, + (intptr_t) i, + eol, + userdata, + PulseAudio_sinkInfoCbMethodID); +} + +static void +PulseAudio_sourceInfoCallback + (pa_context *c, const pa_source_info *i, int eol, void *userdata) +{ + PulseAudio_infoCallback( + c, + (intptr_t) i, + eol, + userdata, + PulseAudio_sourceInfoCbMethodID); +} + +static void PulseAudio_stateCallback(void *userdata) { jweak weakCb = (jobject) userdata; diff --git a/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.h b/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.h index 4839f46..a0c0a7c 100644 --- a/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.h +++ b/src/native/linux/pulseaudio/net_java_sip_communicator_impl_neomedia_pulseaudio_PA.h @@ -41,6 +41,14 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_P /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: context_get_sink_info_list + * Signature: (JLnet/java/sip/communicator/impl/neomedia/pulseaudio/PA/sink_info_cb_t;)J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1get_1sink_1info_1list + (JNIEnv *, jclass, jlong, jobject); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: context_get_source_info_list * Signature: (JLnet/java/sip/communicator/impl/neomedia/pulseaudio/PA/source_info_cb_t;)J */ @@ -65,6 +73,22 @@ JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_ /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: context_set_sink_input_volume + * Signature: (JIJLnet/java/sip/communicator/impl/neomedia/pulseaudio/PA/context_success_cb_t;)J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1set_1sink_1input_1volume + (JNIEnv *, jclass, jlong, jint, jlong, jobject); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: context_set_source_output_volume + * Signature: (JIJLnet/java/sip/communicator/impl/neomedia/pulseaudio/PA/context_success_cb_t;)J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_context_1set_1source_1output_1volume + (JNIEnv *, jclass, jlong, jint, jlong, jobject); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: context_set_state_callback * Signature: (JLjava/lang/Runnable;)V */ @@ -81,6 +105,30 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_P /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: cvolume_free + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1free + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: cvolume_new + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1new + (JNIEnv *, jclass); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: cvolume_set + * Signature: (JII)J + */ +JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_cvolume_1set + (JNIEnv *, jclass, jlong, jint, jint); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: format_info_get_encoding * Signature: (J)I */ @@ -161,6 +209,78 @@ JNIEXPORT jlong JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_ /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_description + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1description + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_formats + * Signature: (J)[J + */ +JNIEXPORT jlongArray JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1formats + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_index + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1index + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_monitor_source + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1monitor_1source + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_monitor_source_name + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1monitor_1source_1name + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_name + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1name + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_sample_spec_channels + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1channels + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_sample_spec_format + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1format + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sink_info_get_sample_spec_rate + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sink_1info_1get_1sample_1spec_1rate + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: source_info_get_description * Signature: (J)Ljava/lang/String; */ @@ -265,6 +385,14 @@ JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_P /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: stream_get_index + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_stream_1get_1index + (JNIEnv *, jclass, jlong); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: stream_get_state * Signature: (J)I */ @@ -345,6 +473,14 @@ JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_P /* * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA + * Method: sw_volume_from_linear + * Signature: (D)I + */ +JNIEXPORT jint JNICALL Java_net_java_sip_communicator_impl_neomedia_pulseaudio_PA_sw_1volume_1from_1linear + (JNIEnv *, jclass, jdouble); + +/* + * Class: net_java_sip_communicator_impl_neomedia_pulseaudio_PA * Method: threaded_mainloop_free * Signature: (J)V */ |