am a582bd4b: Merge "AudioSystem JNI: fix AudioPortConfig mask usage" into lmp-mr1-dev
* commit 'a582bd4b42e6bd52cb611bd551d0b60ba1ed664f': AudioSystem JNI: fix AudioPortConfig mask usage
This commit is contained in:
@@ -484,7 +484,8 @@ static void convertAudioGainConfigToNative(JNIEnv *env,
|
|||||||
|
|
||||||
static jint convertAudioPortConfigToNative(JNIEnv *env,
|
static jint convertAudioPortConfigToNative(JNIEnv *env,
|
||||||
struct audio_port_config *nAudioPortConfig,
|
struct audio_port_config *nAudioPortConfig,
|
||||||
const jobject jAudioPortConfig)
|
const jobject jAudioPortConfig,
|
||||||
|
bool useConfigMask)
|
||||||
{
|
{
|
||||||
jobject jAudioPort = env->GetObjectField(jAudioPortConfig, gAudioPortConfigFields.mPort);
|
jobject jAudioPort = env->GetObjectField(jAudioPortConfig, gAudioPortConfigFields.mPort);
|
||||||
jobject jHandle = env->GetObjectField(jAudioPort, gAudioPortFields.mHandle);
|
jobject jHandle = env->GetObjectField(jAudioPort, gAudioPortFields.mHandle);
|
||||||
@@ -503,8 +504,13 @@ static jint convertAudioPortConfigToNative(JNIEnv *env,
|
|||||||
ALOGV("convertAudioPortConfigToNative handle %d role %d type %d",
|
ALOGV("convertAudioPortConfigToNative handle %d role %d type %d",
|
||||||
nAudioPortConfig->id, nAudioPortConfig->role, nAudioPortConfig->type);
|
nAudioPortConfig->id, nAudioPortConfig->role, nAudioPortConfig->type);
|
||||||
|
|
||||||
|
unsigned int configMask = 0;
|
||||||
|
|
||||||
nAudioPortConfig->sample_rate = env->GetIntField(jAudioPortConfig,
|
nAudioPortConfig->sample_rate = env->GetIntField(jAudioPortConfig,
|
||||||
gAudioPortConfigFields.mSamplingRate);
|
gAudioPortConfigFields.mSamplingRate);
|
||||||
|
if (nAudioPortConfig->sample_rate != 0) {
|
||||||
|
configMask |= AUDIO_PORT_CONFIG_SAMPLE_RATE;
|
||||||
|
}
|
||||||
|
|
||||||
bool useInMask = useInChannelMask(nAudioPortConfig->type, nAudioPortConfig->role);
|
bool useInMask = useInChannelMask(nAudioPortConfig->type, nAudioPortConfig->role);
|
||||||
audio_channel_mask_t nMask;
|
audio_channel_mask_t nMask;
|
||||||
@@ -518,22 +524,34 @@ static jint convertAudioPortConfigToNative(JNIEnv *env,
|
|||||||
ALOGV("convertAudioPortConfigToNative OUT mask java %x native %x", jMask, nMask);
|
ALOGV("convertAudioPortConfigToNative OUT mask java %x native %x", jMask, nMask);
|
||||||
}
|
}
|
||||||
nAudioPortConfig->channel_mask = nMask;
|
nAudioPortConfig->channel_mask = nMask;
|
||||||
|
if (nAudioPortConfig->channel_mask != AUDIO_CHANNEL_NONE) {
|
||||||
|
configMask |= AUDIO_PORT_CONFIG_CHANNEL_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
jint jFormat = env->GetIntField(jAudioPortConfig, gAudioPortConfigFields.mFormat);
|
jint jFormat = env->GetIntField(jAudioPortConfig, gAudioPortConfigFields.mFormat);
|
||||||
audio_format_t nFormat = audioFormatToNative(jFormat);
|
audio_format_t nFormat = audioFormatToNative(jFormat);
|
||||||
ALOGV("convertAudioPortConfigToNative format %d native %d", jFormat, nFormat);
|
ALOGV("convertAudioPortConfigToNative format %d native %d", jFormat, nFormat);
|
||||||
nAudioPortConfig->format = nFormat;
|
nAudioPortConfig->format = nFormat;
|
||||||
|
if (nAudioPortConfig->format != AUDIO_FORMAT_DEFAULT &&
|
||||||
|
nAudioPortConfig->format != AUDIO_FORMAT_INVALID) {
|
||||||
|
configMask |= AUDIO_PORT_CONFIG_FORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
jobject jGain = env->GetObjectField(jAudioPortConfig, gAudioPortConfigFields.mGain);
|
jobject jGain = env->GetObjectField(jAudioPortConfig, gAudioPortConfigFields.mGain);
|
||||||
if (jGain != NULL) {
|
if (jGain != NULL) {
|
||||||
convertAudioGainConfigToNative(env, &nAudioPortConfig->gain, jGain, useInMask);
|
convertAudioGainConfigToNative(env, &nAudioPortConfig->gain, jGain, useInMask);
|
||||||
env->DeleteLocalRef(jGain);
|
env->DeleteLocalRef(jGain);
|
||||||
|
configMask |= AUDIO_PORT_CONFIG_GAIN;
|
||||||
} else {
|
} else {
|
||||||
ALOGV("convertAudioPortConfigToNative no gain");
|
ALOGV("convertAudioPortConfigToNative no gain");
|
||||||
nAudioPortConfig->gain.index = -1;
|
nAudioPortConfig->gain.index = -1;
|
||||||
}
|
}
|
||||||
nAudioPortConfig->config_mask = env->GetIntField(jAudioPortConfig,
|
if (useConfigMask) {
|
||||||
gAudioPortConfigFields.mConfigMask);
|
nAudioPortConfig->config_mask = env->GetIntField(jAudioPortConfig,
|
||||||
|
gAudioPortConfigFields.mConfigMask);
|
||||||
|
} else {
|
||||||
|
nAudioPortConfig->config_mask = configMask;
|
||||||
|
}
|
||||||
env->DeleteLocalRef(jAudioPort);
|
env->DeleteLocalRef(jAudioPort);
|
||||||
env->DeleteLocalRef(jHandle);
|
env->DeleteLocalRef(jHandle);
|
||||||
return (jint)AUDIO_JAVA_SUCCESS;
|
return (jint)AUDIO_JAVA_SUCCESS;
|
||||||
@@ -998,7 +1016,7 @@ android_media_AudioSystem_createAudioPatch(JNIEnv *env, jobject clazz,
|
|||||||
jStatus = (jint)AUDIO_JAVA_BAD_VALUE;
|
jStatus = (jint)AUDIO_JAVA_BAD_VALUE;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
jStatus = convertAudioPortConfigToNative(env, &nPatch.sources[i], jSource);
|
jStatus = convertAudioPortConfigToNative(env, &nPatch.sources[i], jSource, false);
|
||||||
env->DeleteLocalRef(jSource);
|
env->DeleteLocalRef(jSource);
|
||||||
jSource = NULL;
|
jSource = NULL;
|
||||||
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
||||||
@@ -1013,7 +1031,7 @@ android_media_AudioSystem_createAudioPatch(JNIEnv *env, jobject clazz,
|
|||||||
jStatus = (jint)AUDIO_JAVA_BAD_VALUE;
|
jStatus = (jint)AUDIO_JAVA_BAD_VALUE;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
jStatus = convertAudioPortConfigToNative(env, &nPatch.sinks[i], jSink);
|
jStatus = convertAudioPortConfigToNative(env, &nPatch.sinks[i], jSink, false);
|
||||||
env->DeleteLocalRef(jSink);
|
env->DeleteLocalRef(jSink);
|
||||||
jSink = NULL;
|
jSink = NULL;
|
||||||
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
||||||
@@ -1268,7 +1286,7 @@ android_media_AudioSystem_setAudioPortConfig(JNIEnv *env, jobject clazz,
|
|||||||
return AUDIO_JAVA_BAD_VALUE;
|
return AUDIO_JAVA_BAD_VALUE;
|
||||||
}
|
}
|
||||||
struct audio_port_config nAudioPortConfig;
|
struct audio_port_config nAudioPortConfig;
|
||||||
jint jStatus = convertAudioPortConfigToNative(env, &nAudioPortConfig, jAudioPortConfig);
|
jint jStatus = convertAudioPortConfigToNative(env, &nAudioPortConfig, jAudioPortConfig, true);
|
||||||
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
if (jStatus != AUDIO_JAVA_SUCCESS) {
|
||||||
return jStatus;
|
return jStatus;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user