summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Laurent <elaurent@google.com> 2011-08-11 17:06:10 -0700
committer Eric Laurent <elaurent@google.com> 2011-08-11 18:06:18 -0700
commit09f1735fadf985f321abef5fe696d0b80c6b46c7 (patch)
treeb2669d5a83942cfaca3fb09b64fada87b3f6a424
parent246ae5011c385d100f73b441ce7e47a6ea7e33ba (diff)
Fix issue 5144429: CTS test fails for AudioEffects
android_media_AudioEffect_native_setup() was not initializing properly the effect descriptor for audio pre processings. AudioEffect tests should create per processing effects on a valid AudioRecord session. Change-Id: Ia1862ca91c98e272f9374b9225a7d4ce7ef132fc
-rw-r--r--media/jni/audioeffect/android_media_AudioEffect.cpp2
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java49
2 files changed, 49 insertions, 2 deletions
diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp
index 57cabe2775cb..277ea557a253 100644
--- a/media/jni/audioeffect/android_media_AudioEffect.cpp
+++ b/media/jni/audioeffect/android_media_AudioEffect.cpp
@@ -360,6 +360,8 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t
if ((desc.flags & EFFECT_FLAG_TYPE_MASK) == EFFECT_FLAG_TYPE_AUXILIARY) {
jdescConnect = env->NewStringUTF("Auxiliary");
+ } else if ((desc.flags & EFFECT_FLAG_TYPE_MASK) == EFFECT_FLAG_TYPE_PRE_PROC) {
+ jdescConnect = env->NewStringUTF("Pre Processing");
} else {
jdescConnect = env->NewStringUTF("Insert");
}
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java
index 90be041dec7f..1511cd795229 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java
@@ -23,9 +23,11 @@ import android.media.audiofx.AudioEffect;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
+import android.media.AudioRecord;
import android.media.audiofx.EnvironmentalReverb;
import android.media.audiofx.Equalizer;
import android.media.MediaPlayer;
+import android.media.MediaRecorder;
import android.os.Looper;
import android.test.suitebuilder.annotation.LargeTest;
@@ -54,6 +56,7 @@ public class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<Media
private Looper mLooper = null;
private int mError = 0;
private final Object lock = new Object();
+ private final static int SAMPLING_RATE = 44100;
public MediaAudioEffectTest() {
super("com.android.mediaframeworktest", MediaFrameworkTest.class);
@@ -124,6 +127,25 @@ public class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<Media
// 1 - constructor
//----------------------------------
+ private AudioRecord getAudioRecord() {
+ AudioRecord ar = null;
+ try {
+ ar = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
+ SAMPLING_RATE,
+ AudioFormat.CHANNEL_CONFIGURATION_MONO,
+ AudioFormat.ENCODING_PCM_16BIT,
+ AudioRecord.getMinBufferSize(SAMPLING_RATE,
+ AudioFormat.CHANNEL_CONFIGURATION_MONO,
+ AudioFormat.ENCODING_PCM_16BIT) * 10);
+ assertNotNull("Could not create AudioRecord", ar);
+ assertEquals("AudioRecord not initialized",
+ AudioRecord.STATE_INITIALIZED, ar.getState());
+ } catch (IllegalArgumentException e) {
+ fail("AudioRecord invalid parameter");
+ }
+ return ar;
+ }
+
//Test case 1.0: test constructor from effect type and get effect ID
@LargeTest
public void test1_0ConstructorFromType() throws Exception {
@@ -132,10 +154,19 @@ public class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<Media
AudioEffect.Descriptor[] desc = AudioEffect.queryEffects();
assertTrue(msg+": no effects found", (desc.length != 0));
try {
+ int sessionId;
+ AudioRecord ar = null;
+ if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[0].connectMode)) {
+ ar = getAudioRecord();
+ sessionId = ar.getAudioSessionId();
+ } else {
+ sessionId = 0;
+ }
+
AudioEffect effect = new AudioEffect(desc[0].type,
AudioEffect.EFFECT_TYPE_NULL,
0,
- 0);
+ sessionId);
assertNotNull(msg + ": could not create AudioEffect", effect);
try {
assertTrue(msg +": invalid effect ID", (effect.getId() != 0));
@@ -144,6 +175,9 @@ public class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<Media
result = false;
} finally {
effect.release();
+ if (ar != null) {
+ ar.release();
+ }
}
} catch (IllegalArgumentException e) {
msg = msg.concat(": Effect not found: "+desc[0].name);
@@ -163,12 +197,23 @@ public class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<Media
AudioEffect.Descriptor[] desc = AudioEffect.queryEffects();
assertTrue(msg+"no effects found", (desc.length != 0));
try {
+ int sessionId;
+ AudioRecord ar = null;
+ if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[0].connectMode)) {
+ ar = getAudioRecord();
+ sessionId = ar.getAudioSessionId();
+ } else {
+ sessionId = 0;
+ }
AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_NULL,
desc[0].uuid,
0,
- 0);
+ sessionId);
assertNotNull(msg + ": could not create AudioEffect", effect);
effect.release();
+ if (ar != null) {
+ ar.release();
+ }
} catch (IllegalArgumentException e) {
msg = msg.concat(": Effect not found: "+desc[0].name);
result = false;