1441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent/*
2441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Copyright (C) 2010 The Android Open Source Project
3441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent *
4441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Licensed under the Apache License, Version 2.0 (the "License");
5441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * you may not use this file except in compliance with the License.
6441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * You may obtain a copy of the License at
7441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent *
8441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent *      http://www.apache.org/licenses/LICENSE-2.0
9441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent *
10441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Unless required by applicable law or agreed to in writing, software
11441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * distributed under the License is distributed on an "AS IS" BASIS,
12441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * See the License for the specific language governing permissions and
14441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * limitations under the License.
15441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */
16441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
17db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangpackage com.android.mediaframeworktest.functional.audio;
18441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
19441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport com.android.mediaframeworktest.MediaFrameworkTest;
20441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport com.android.mediaframeworktest.MediaNames;
21db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangimport com.android.mediaframeworktest.functional.EnergyProbe;
22441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.content.Context;
23441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.content.res.AssetFileDescriptor;
241a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.AudioEffect;
25441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.AudioManager;
261a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.BassBoost;
271a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.Visualizer;
28441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.MediaPlayer;
29441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
30441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.os.Looper;
31441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.LargeTest;
32441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.MediumTest;
33441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.Suppress;
34441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.ActivityInstrumentationTestCase2;
35441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.util.Log;
36441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
37441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteOrder;
38441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteBuffer;
39441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.util.UUID;
40441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
41441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent/**
42441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Junit / Instrumentation test case for the media AudioTrack api
43441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
44441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */
45441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentpublic class MediaBassBoostTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> {
46441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private String TAG = "MediaBassBoostTest";
47441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private final static short TEST_STRENGTH = 500;
48441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
49441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private BassBoost mBassBoost = null;
50441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private int mSession = -1;
51441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
52441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    public MediaBassBoostTest() {
53441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        super("com.android.mediaframeworktest", MediaFrameworkTest.class);
54441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
55441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
56441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    @Override
57441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    protected void setUp() throws Exception {
58441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent      super.setUp();
59441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
60441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
61441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    @Override
62441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    protected void tearDown() throws Exception {
63441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        super.tearDown();
64441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        releaseBassBoost();
65441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
66441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
67441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private static void assumeTrue(String message, boolean cond) {
68441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        assertTrue("(assume)"+message, cond);
69441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
70441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
71441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private void log(String testName, String message) {
72441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        Log.v(TAG, "["+testName+"] "+message);
73441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
74441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
75441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private void loge(String testName, String message) {
76441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        Log.e(TAG, "["+testName+"] "+message);
77441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
78441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
79441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //-----------------------------------------------------------------
80441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    // BASS BOOST TESTS:
81441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //----------------------------------
82441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
83441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
84441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //-----------------------------------------------------------------
85441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    // 0 - constructor
86441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //----------------------------------
87441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
88441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //Test case 0.0: test constructor and release
89441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    @LargeTest
90441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    public void test0_0ConstructorAndRelease() throws Exception {
91441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        boolean result = false;
92441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        String msg = "test1_0ConstructorAndRelease()";
93441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        BassBoost bb = null;
94441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent         try {
95441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            bb = new BassBoost(0, 0);
96441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            assertNotNull(msg + ": could not create BassBoost", bb);
97441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            try {
98441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                assertTrue(msg +": invalid effect ID", (bb.getId() != 0));
99441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            } catch (IllegalStateException e) {
100441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                msg = msg.concat(": BassBoost not initialized");
101441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            }
102441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            result = true;
103441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (IllegalArgumentException e) {
104441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": BassBoost not found");
105441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (UnsupportedOperationException e) {
106441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": Effect library not loaded");
107441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } finally {
108441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            if (bb != null) {
109441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                bb.release();
110441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            }
111441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        }
112441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        assertTrue(msg, result);
113441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
114441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
115441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //-----------------------------------------------------------------
116441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    // 1 - get/set parameters
117441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //----------------------------------
118441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
119441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //Test case 1.0: test strength
120441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    @LargeTest
121441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    public void test1_0Strength() throws Exception {
122441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        boolean result = false;
123441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        String msg = "test1_0Strength()";
124441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        getBassBoost(0);
125441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        try {
126441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            if (mBassBoost.getStrengthSupported()) {
127441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                mBassBoost.setStrength((short)TEST_STRENGTH);
128441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                short strength = mBassBoost.getRoundedStrength();
129441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                // allow 10% difference between set strength and rounded strength
130441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                assertTrue(msg +": got incorrect strength",
131441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                        ((float)strength > (float)TEST_STRENGTH * 0.9f) &&
132441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                        ((float)strength < (float)TEST_STRENGTH * 1.1f));
133441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            } else {
134441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                short strength = mBassBoost.getRoundedStrength();
135441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                assertTrue(msg +": got incorrect strength", strength >= 0 && strength <= 1000);
136441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            }
137441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            result = true;
138441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (IllegalArgumentException e) {
139441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": Bad parameter value");
140441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "Bad parameter value");
141441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (UnsupportedOperationException e) {
142441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": get parameter() rejected");
143441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "get parameter() rejected");
144441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (IllegalStateException e) {
145441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat("get parameter() called in wrong state");
146441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "get parameter() called in wrong state");
147441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } finally {
148441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            releaseBassBoost();
149441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        }
150441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        assertTrue(msg, result);
151441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
152441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
153441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //Test case 1.1: test properties
154441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    @LargeTest
155441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    public void test1_1Properties() throws Exception {
156441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        boolean result = false;
157441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        String msg = "test1_1Properties()";
158441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        getBassBoost(0);
159441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        try {
160441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            BassBoost.Settings settings = mBassBoost.getProperties();
161441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            String str = settings.toString();
162441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            settings = new BassBoost.Settings(str);
163441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            mBassBoost.setProperties(settings);
164441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            result = true;
165441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (IllegalArgumentException e) {
166441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": Bad parameter value");
167441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "Bad parameter value");
168441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (UnsupportedOperationException e) {
169441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat(": get parameter() rejected");
170441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "get parameter() rejected");
171441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } catch (IllegalStateException e) {
172441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            msg = msg.concat("get parameter() called in wrong state");
173441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            loge(msg, "get parameter() called in wrong state");
174441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        } finally {
175441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            releaseBassBoost();
176441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        }
177441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        assertTrue(msg, result);
178441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
179441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
180441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //-----------------------------------------------------------------
181441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    // private methods
182441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    //----------------------------------
183441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
184441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private void getBassBoost(int session) {
185441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent         if (mBassBoost == null || session != mSession) {
186441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent             if (session != mSession && mBassBoost != null) {
187441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                 mBassBoost.release();
188441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                 mBassBoost = null;
189441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent             }
190441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent             try {
191441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                mBassBoost = new BassBoost(0, session);
192441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                mSession = session;
193441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            } catch (IllegalArgumentException e) {
194441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                Log.e(TAG, "getBassBoost() BassBoost not found exception: "+e);
195441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            } catch (UnsupportedOperationException e) {
196441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent                Log.e(TAG, "getBassBoost() Effect library not loaded exception: "+e);
197441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            }
198441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent         }
199441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent         assertNotNull("could not create mBassBoost", mBassBoost);
200441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    }
201441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
202441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent    private void releaseBassBoost() {
203441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        if (mBassBoost != null) {
204441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            mBassBoost.release();
205441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent            mBassBoost = null;
206441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent        }
207441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent   }
208441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent
209441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent}
210