diff options
| author | 2011-08-11 17:06:10 -0700 | |
|---|---|---|
| committer | 2011-08-11 18:06:18 -0700 | |
| commit | 09f1735fadf985f321abef5fe696d0b80c6b46c7 (patch) | |
| tree | b2669d5a83942cfaca3fb09b64fada87b3f6a424 | |
| parent | 246ae5011c385d100f73b441ce7e47a6ea7e33ba (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.cpp | 2 | ||||
| -rw-r--r-- | media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaAudioEffectTest.java | 49 |
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; |