org_tritonus_lowlevel_alsa_alsapcm.c

来自「kaffe Java 解释器语言,源码,Java的子集系统,开放源代码」· C语言 代码 · 共 723 行 · 第 1/2 页

C
723
字号
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, jclass cls, jboolean bTrace){	debug_flag = bTrace;	debug_file = stderr;}/*** org_tritonus_lowlevel_alsa_AlsaPcm.c ***/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?