Audio attributes using public API
Bug: 112549970
Test: MediaPlayer2Test
Change-Id: Ia4091ff59172a9cd040d33bc6c2edd2ea7195f70
diff --git a/media/libmediaplayer2/JAudioTrack.cpp b/media/libmediaplayer2/JAudioTrack.cpp
index 3d6879e..033ff4c 100644
--- a/media/libmediaplayer2/JAudioTrack.cpp
+++ b/media/libmediaplayer2/JAudioTrack.cpp
@@ -34,7 +34,7 @@
callback_t cbf, // Offload
void* user, // Offload
size_t frameCount, // bufferSizeInBytes
- int32_t sessionId, // AudioTrack
+ int32_t sessionId, // AudioTrack
const jobject attributes, // AudioAttributes
float maxRequiredSpeed) { // bufferSizeInBytes
@@ -65,18 +65,20 @@
jmethodID jBuilderCtor = env->GetMethodID(jBuilderCls, "<init>", "()V");
jobject jBuilderObj = env->NewObject(jBuilderCls, jBuilderCtor);
- if (attributes != NULL) {
- mAudioAttributesObj = new JObjectHolder(attributes);
- } else {
- mAudioAttributesObj = new JObjectHolder(
- JAudioAttributes::createAudioAttributesObj(env, NULL));
+ {
+ sp<JObjectHolder> audioAttributesObj;
+ if (attributes != NULL) {
+ audioAttributesObj = new JObjectHolder(attributes);
+ } else {
+ audioAttributesObj = new JObjectHolder(
+ JAudioAttributes::createAudioAttributesObj(env, NULL));
+ }
+ jmethodID jSetAudioAttributes = env->GetMethodID(jBuilderCls, "setAudioAttributes",
+ "(Landroid/media/AudioAttributes;)Landroid/media/AudioTrack$Builder;");
+ jBuilderObj = env->CallObjectMethod(jBuilderObj,
+ jSetAudioAttributes, audioAttributesObj->getJObject());
}
- jmethodID jSetAudioAttributes = env->GetMethodID(jBuilderCls, "setAudioAttributes",
- "(Landroid/media/AudioAttributes;)Landroid/media/AudioTrack$Builder;");
- jBuilderObj = env->CallObjectMethod(jBuilderObj,
- jSetAudioAttributes, mAudioAttributesObj->getJObject());
-
jmethodID jSetAudioFormat = env->GetMethodID(jBuilderCls, "setAudioFormat",
"(Landroid/media/AudioFormat;)Landroid/media/AudioTrack$Builder;");
jBuilderObj = env->CallObjectMethod(jBuilderObj, jSetAudioFormat,
@@ -513,15 +515,14 @@
}
audio_stream_type_t JAudioTrack::getAudioStreamType() {
- if (mAudioAttributesObj == NULL) {
- return AUDIO_STREAM_DEFAULT;
- }
JNIEnv *env = JavaVMHelper::getJNIEnv();
+ jmethodID jGetAudioAttributes = env->GetMethodID(mAudioTrackCls, "getAudioAttributes",
+ "()Landroid/media/AudioAttributes;");
+ jobject jAudioAttributes = env->CallObjectMethod(mAudioTrackObj, jGetAudioAttributes);
jclass jAudioAttributesCls = env->FindClass("android/media/AudioAttributes");
jmethodID jGetVolumeControlStream = env->GetMethodID(jAudioAttributesCls,
"getVolumeControlStream", "()I");
- int javaAudioStreamType = env->CallIntMethod(
- mAudioAttributesObj->getJObject(), jGetVolumeControlStream);
+ int javaAudioStreamType = env->CallIntMethod(jAudioAttributes, jGetVolumeControlStream);
return (audio_stream_type_t)javaAudioStreamType;
}
diff --git a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
index 8ea70ef..87dc889 100644
--- a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
+++ b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
@@ -446,7 +446,6 @@
jclass mAudioTrackCls;
jobject mAudioTrackObj;
- sp<JObjectHolder> mAudioAttributesObj;
/* Creates a Java VolumeShaper.Configuration object from VolumeShaper::Configuration */
jobject createVolumeShaperConfigurationObj(