Replace run-time modes by compile-time constants

Simplify the code to use the constant values of MODE_STATIC and
MODE_STREAM from AudioTrack.java.

There is already a comment in AudioTrack.java saying that these symbols
need to be kept in sync with this file, and they are public static final
so they can never be changed.

Change-Id: I6cb10ac511df4845610454d1659e64d9195d67cd
This commit is contained in:
Glenn Kasten
2012-01-16 14:46:54 -08:00
parent 3251d36313
commit 3d301cb2b1

View File

@@ -49,8 +49,6 @@ struct fields_t {
jmethodID postNativeEventInJava; //... event post callback method
int PCM16; //... format constants
int PCM8; //... format constants
int MODE_STREAM; //... memory mode
int MODE_STATIC; //... memory mode
jfieldID nativeTrackInJavaObj; // stores in Java the native AudioTrack object
jfieldID jniData; // stores in Java additional resources used by the native AudioTrack
};
@@ -63,6 +61,10 @@ struct audiotrack_callback_cookie {
Condition cond;
};
// keep these values in sync with AudioTrack.java
#define MODE_STATIC 0
#define MODE_STREAM 1
// ----------------------------------------------------------------------------
class AudioTrackJniStorage {
public:
@@ -258,7 +260,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
// so we declare everything as 16bitPCM, the 8->16bit conversion for MODE_STATIC will be handled
// in android_media_AudioTrack_native_write_byte()
if ((audioFormat == javaAudioTrackFields.PCM8)
&& (memoryMode == javaAudioTrackFields.MODE_STATIC)) {
&& (memoryMode == MODE_STATIC)) {
ALOGV("android_media_AudioTrack_native_setup(): requesting MODE_STATIC for 8bit \
buff size of %dbytes, switching to 16bit, buff size of %dbytes",
buffSizeInBytes, 2*buffSizeInBytes);
@@ -310,7 +312,8 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
lpJniStorage->mCallbackData.busy = false;
// initialize the native AudioTrack object
if (memoryMode == javaAudioTrackFields.MODE_STREAM) {
switch (memoryMode) {
case MODE_STREAM:
lpTrack->set(
atStreamType,// stream type
@@ -324,8 +327,9 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
0,// shared mem
true,// thread can call Java
sessionId);// audio session ID
break;
} else if (memoryMode == javaAudioTrackFields.MODE_STATIC) {
case MODE_STATIC:
// AudioTrack is using shared memory
if (!lpJniStorage->allocSharedMem(buffSizeInBytes)) {
@@ -345,6 +349,11 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
lpJniStorage->mMemBase,// shared mem
true,// thread can call Java
sessionId);// audio session ID
break;
default:
ALOGE("Unknown mode %d", memoryMode);
goto native_init_failure;
}
if (lpTrack->initCheck() != NO_ERROR) {
@@ -875,8 +884,6 @@ static JNINativeMethod gMethods[] = {
#define JAVA_CONST_STREAM_NOTIFICATION_NAME "STREAM_NOTIFICATION"
#define JAVA_CONST_STREAM_BLUETOOTH_SCO_NAME "STREAM_BLUETOOTH_SCO"
#define JAVA_CONST_STREAM_DTMF_NAME "STREAM_DTMF"
#define JAVA_CONST_MODE_STREAM_NAME "MODE_STREAM"
#define JAVA_CONST_MODE_STATIC_NAME "MODE_STATIC"
#define JAVA_NATIVETRACKINJAVAOBJ_FIELD_NAME "mNativeTrackInJavaObj"
#define JAVA_JNIDATA_FIELD_NAME "mJniData"
@@ -940,17 +947,6 @@ int register_android_media_AudioTrack(JNIEnv *env)
return -1;
}
// Get the memory mode constants
if ( !android_media_getIntConstantFromClass(env, audioTrackClass,
kClassPathName,
JAVA_CONST_MODE_STATIC_NAME, &(javaAudioTrackFields.MODE_STATIC))
|| !android_media_getIntConstantFromClass(env, audioTrackClass,
kClassPathName,
JAVA_CONST_MODE_STREAM_NAME, &(javaAudioTrackFields.MODE_STREAM)) ) {
// error log performed in android_media_getIntConstantFromClass()
return -1;
}
// Get the format constants from the AudioFormat class
jclass audioFormatClass = NULL;
audioFormatClass = env->FindClass(JAVA_AUDIOFORMAT_CLASS_NAME);