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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user