Home | History | Annotate | Download | only in audio
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.mediaframeworktest.functional.audio;
     18 
     19 import com.android.mediaframeworktest.MediaFrameworkTest;
     20 import com.android.mediaframeworktest.MediaNames;
     21 import com.android.mediaframeworktest.functional.EnergyProbe;
     22 import android.content.Context;
     23 import android.content.res.AssetFileDescriptor;
     24 import android.media.audiofx.AudioEffect;
     25 import android.media.AudioManager;
     26 import android.media.audiofx.Virtualizer;
     27 import android.media.audiofx.Visualizer;
     28 import android.media.MediaPlayer;
     29 
     30 import android.os.Looper;
     31 import android.test.suitebuilder.annotation.LargeTest;
     32 import android.test.suitebuilder.annotation.MediumTest;
     33 import android.test.suitebuilder.annotation.Suppress;
     34 import android.test.ActivityInstrumentationTestCase2;
     35 import android.util.Log;
     36 
     37 import java.nio.ByteOrder;
     38 import java.nio.ByteBuffer;
     39 import java.util.UUID;
     40 
     41 /**
     42  * Junit / Instrumentation test case for the media AudioTrack api
     43 
     44  */
     45 public class MediaVirtualizerTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> {
     46     private String TAG = "MediaVirtualizerTest";
     47     private final static short TEST_STRENGTH = 500;
     48 
     49     private Virtualizer mVirtualizer = null;
     50     private int mSession = -1;
     51 
     52     public MediaVirtualizerTest() {
     53         super("com.android.mediaframeworktest", MediaFrameworkTest.class);
     54     }
     55 
     56     @Override
     57     protected void setUp() throws Exception {
     58       super.setUp();
     59     }
     60 
     61     @Override
     62     protected void tearDown() throws Exception {
     63         super.tearDown();
     64         releaseVirtualizer();
     65     }
     66 
     67     private static void assumeTrue(String message, boolean cond) {
     68         assertTrue("(assume)"+message, cond);
     69     }
     70 
     71     private void log(String testName, String message) {
     72         Log.v(TAG, "["+testName+"] "+message);
     73     }
     74 
     75     private void loge(String testName, String message) {
     76         Log.e(TAG, "["+testName+"] "+message);
     77     }
     78 
     79     //-----------------------------------------------------------------
     80     // VIRTUALIZER TESTS:
     81     //----------------------------------
     82 
     83 
     84     //-----------------------------------------------------------------
     85     // 0 - constructor
     86     //----------------------------------
     87 
     88     //Test case 0.0: test constructor and release
     89     @LargeTest
     90     public void test0_0ConstructorAndRelease() throws Exception {
     91         boolean result = false;
     92         String msg = "test1_0ConstructorAndRelease()";
     93         Virtualizer virtualizer = null;
     94          try {
     95             virtualizer = new Virtualizer(0, 0);
     96             assertNotNull(msg + ": could not create Virtualizer", virtualizer);
     97             try {
     98                 assertTrue(msg +": invalid effect ID", (virtualizer.getId() != 0));
     99             } catch (IllegalStateException e) {
    100                 msg = msg.concat(": Virtualizer not initialized");
    101             }
    102             result = true;
    103         } catch (IllegalArgumentException e) {
    104             msg = msg.concat(": Virtualizer not found");
    105         } catch (UnsupportedOperationException e) {
    106             msg = msg.concat(": Effect library not loaded");
    107         } finally {
    108             if (virtualizer != null) {
    109                 virtualizer.release();
    110             }
    111         }
    112         assertTrue(msg, result);
    113     }
    114 
    115 
    116     //-----------------------------------------------------------------
    117     // 1 - get/set parameters
    118     //----------------------------------
    119 
    120     //Test case 1.0: test strength
    121     @LargeTest
    122     public void test1_0Strength() throws Exception {
    123         boolean result = false;
    124         String msg = "test1_0Strength()";
    125         getVirtualizer(0);
    126         try {
    127             if (mVirtualizer.getStrengthSupported()) {
    128                 mVirtualizer.setStrength((short)TEST_STRENGTH);
    129                 short strength = mVirtualizer.getRoundedStrength();
    130                 // allow 10% difference between set strength and rounded strength
    131                 assertTrue(msg +": got incorrect strength",
    132                         ((float)strength > (float)TEST_STRENGTH * 0.9f) &&
    133                         ((float)strength < (float)TEST_STRENGTH * 1.1f));
    134             } else {
    135                 short strength = mVirtualizer.getRoundedStrength();
    136                 assertTrue(msg +": got incorrect strength", strength >= 0 && strength <= 1000);
    137             }
    138             result = true;
    139         } catch (IllegalArgumentException e) {
    140             msg = msg.concat(": Bad parameter value");
    141             loge(msg, "Bad parameter value");
    142         } catch (UnsupportedOperationException e) {
    143             msg = msg.concat(": get parameter() rejected");
    144             loge(msg, "get parameter() rejected");
    145         } catch (IllegalStateException e) {
    146             msg = msg.concat("get parameter() called in wrong state");
    147             loge(msg, "get parameter() called in wrong state");
    148         } finally {
    149             releaseVirtualizer();
    150         }
    151         assertTrue(msg, result);
    152     }
    153 
    154     //Test case 1.1: test properties
    155     @LargeTest
    156     public void test1_1Properties() throws Exception {
    157         boolean result = false;
    158         String msg = "test1_1Properties()";
    159         getVirtualizer(0);
    160         try {
    161             Virtualizer.Settings settings = mVirtualizer.getProperties();
    162             String str = settings.toString();
    163             settings = new Virtualizer.Settings(str);
    164             mVirtualizer.setProperties(settings);
    165             result = true;
    166         } catch (IllegalArgumentException e) {
    167             msg = msg.concat(": Bad parameter value");
    168             loge(msg, "Bad parameter value");
    169         } catch (UnsupportedOperationException e) {
    170             msg = msg.concat(": get parameter() rejected");
    171             loge(msg, "get parameter() rejected");
    172         } catch (IllegalStateException e) {
    173             msg = msg.concat("get parameter() called in wrong state");
    174             loge(msg, "get parameter() called in wrong state");
    175         } finally {
    176             releaseVirtualizer();
    177         }
    178         assertTrue(msg, result);
    179     }
    180 
    181     //-----------------------------------------------------------------
    182     // private methods
    183     //----------------------------------
    184 
    185     private void getVirtualizer(int session) {
    186          if (mVirtualizer == null || session != mSession) {
    187              if (session != mSession && mVirtualizer != null) {
    188                  mVirtualizer.release();
    189                  mVirtualizer = null;
    190              }
    191              try {
    192                 mVirtualizer = new Virtualizer(0, session);
    193                 mSession = session;
    194             } catch (IllegalArgumentException e) {
    195                 Log.e(TAG, "getVirtualizer() Virtualizer not found exception: "+e);
    196             } catch (UnsupportedOperationException e) {
    197                 Log.e(TAG, "getVirtualizer() Effect library not loaded exception: "+e);
    198             }
    199          }
    200          assertNotNull("could not create mVirtualizer", mVirtualizer);
    201     }
    202 
    203     private void releaseVirtualizer() {
    204         if (mVirtualizer != null) {
    205             mVirtualizer.release();
    206             mVirtualizer = null;
    207         }
    208    }
    209 
    210 }
    211