📄 org_tritonus_lowlevel_alsa_alsapcm.c
字号:
JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_getSWParams(JNIEnv *env, jobject obj, jobject objSwParams){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_getSWParams(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_getSWParams(): swparams handle: %p\n", swParams); } nReturn = snd_pcm_sw_params_current(handle, swParams); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_getSWParams(): snd_pcm_sw_params_any() returns: %d\n", nReturn); } if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_getSWParams(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsStartMode * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartMode(JNIEnv *env, jobject obj, jobject objSwParams, jint nStartMode){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartMode(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_start_mode(handle, swParams, (snd_pcm_start_t) nStartMode); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartMode(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsXrunMode * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXrunMode(JNIEnv *env, jobject obj, jobject objSwParams, jint nXrunMode){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXrunMode(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_xrun_mode(handle, swParams, (snd_pcm_xrun_t) nXrunMode); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXrunMode(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsTStampMode * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsTStampMode(JNIEnv *env, jobject obj, jobject objSwParams, jint nTStampMode){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsTStampMode(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_tstamp_mode(handle, swParams, (snd_pcm_tstamp_t) nTStampMode); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsTStampMode(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsSleepMin * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSleepMin(JNIEnv *env, jobject obj, jobject objSwParams, jint nSleepMin){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSleepMin(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_sleep_min(handle, swParams, nSleepMin); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSleepMin(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsAvailMin * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsAvailMin(JNIEnv *env, jobject obj, jobject objSwParams, jint nAvailMin){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsAvailMin(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_avail_min(handle, swParams, nAvailMin); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsAvailMin(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsXferAlign * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXferAlign(JNIEnv *env, jobject obj, jobject objSwParams, jint nXferAlign){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXferAlign(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_xfer_align(handle, swParams, nXferAlign); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsXferAlign(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsStartThreshold * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartThreshold(JNIEnv *env, jobject obj, jobject objSwParams, jint nStartThreshold){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartThreshold(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_start_threshold(handle, swParams, nStartThreshold); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStartThreshold(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsStopThreshold * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStopThreshold(JNIEnv *env, jobject obj, jobject objSwParams, jint nStopThreshold){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStopThreshold(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_stop_threshold(handle, swParams, nStopThreshold); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsStopThreshold(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsSilenceThreshold * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceThreshold(JNIEnv *env, jobject obj, jobject objSwParams, jint nSilenceThreshold){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceThreshold(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_silence_threshold(handle, swParams, nSilenceThreshold); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceThreshold(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParamsSilenceSize * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;I)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceSize(JNIEnv *env, jobject obj, jobject objSwParams, jint nSilenceSize){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceSize(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params_set_silence_size(handle, swParams, nSilenceSize); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParamsSilenceSize(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setSWParams * Signature: (Lorg/tritonus/lowlevel/alsa/AlsaPcm$SWParams;)I */JNIEXPORT jint JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParams(JNIEnv *env, jobject obj, jobject objSwParams){ snd_pcm_t* handle; snd_pcm_sw_params_t* swParams; int nReturn; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParams(): begin\n"); } handle = getHandle(env, obj); swParams = getSWParamsNativeHandle(env, objSwParams); nReturn = snd_pcm_sw_params(handle, swParams); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_setSWParams(): end\n"); } return nReturn;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: writei * Signature: ([BJJ)J */JNIEXPORT jlong JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_writei(JNIEnv *env, jobject obj, jbyteArray abData, jlong lOffset, jlong lFrameCount){ snd_pcm_t* handle; signed char* data; snd_pcm_sframes_t lWritten; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_writei(): begin\n"); } handle = getHandle(env, obj); data = (*env)->GetByteArrayElements(env, abData, NULL); if (data == NULL) { throwRuntimeException(env, "GetByteArrayElements() failed"); } if (debug_flag) { printf("Java_org_tritonus_lowlevel_alsa_AlsaPcm_writei(): trying to write (frames): %lld\n", lFrameCount); } lWritten = snd_pcm_writei(handle, data + lOffset, lFrameCount); if (debug_flag) { printf("Java_org_tritonus_lowlevel_alsa_AlsaPcm_writei(): Written: %ld\n", lWritten); } // we can do a JNI_ABORT because we know the data wasn't altered. // This may improve performance (no copying back). (*env)->ReleaseByteArrayElements(env, abData, data, JNI_ABORT); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_writei(): end\n"); } return lWritten;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: readi * Signature: ([BJJ)J */JNIEXPORT jlong JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_readi(JNIEnv *env, jobject obj, jbyteArray abData, jlong lOffset, jlong lFrameCount){ snd_pcm_t* handle; signed char* data; snd_pcm_sframes_t lRead; if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_readi(): begin\n"); } handle = getHandle(env, obj); data = (*env)->GetByteArrayElements(env, abData, NULL); printf("native array: %p\n", data); if (data == NULL) { throwRuntimeException(env, "GetByteArrayElements() failed"); } if (debug_flag) { printf("Java_org_tritonus_lowlevel_alsa_AlsaPcm_readi(): trying to read (frames): %lld\n", lFrameCount); } // To the ALSA method, frame count means number of complete PCM frames. // Frame: sample data vector for all channels. For 16 Bit stereo data, one frame has a length of four bytes. lRead = snd_pcm_readi(handle, data + lOffset, lFrameCount); if (debug_flag) { printf("Java_org_tritonus_lowlevel_alsa_AlsaPcm_readi(): Read: %ld\n", lRead); } // printf("1\n"); (*env)->ReleaseByteArrayElements(env, abData, data, 0); // printf("2\n"); if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaPcm_readi(): end\n"); } return lRead;}/* * Class: org_tritonus_lowlevel_alsa_AlsaPcm * Method: setTrace * Signature: (Z)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaPcm_setTrace(JNIEnv* env UNUSED, jclass cls UNUSED, jboolean bTrace){ debug_flag = bTrace; debug_file = stderr;}/*** org_tritonus_lowlevel_alsa_AlsaPcm.c ***/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -