SoundPool: Ramp volume down when forcibly reclaiming track

Test: Soundbar menu scrolling
Bug: 119284313
Change-Id: I4e3e1dc616c4e53780dda5492bb755750be794a0
This commit is contained in:
Andy Hung
2019-02-01 18:24:51 -08:00
parent 2b92401717
commit 5470761fba

View File

@@ -17,8 +17,9 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "SoundPool"
#include <chrono>
#include <inttypes.h>
#include <thread>
#include <utils/Log.h>
#define USE_SHARED_MEM_BUFFER
@@ -967,6 +968,12 @@ bool SoundChannel::doStop_l()
if (mState != IDLE) {
setVolume_l(0, 0);
ALOGV("stop");
// Since we're forcibly halting the previously playing content,
// we sleep here to ensure the volume is ramped down before we stop the track.
// Ideally the sleep time is the mixer period, or an approximation thereof
// (Fast vs Normal tracks are different).
// TODO: consider pausing instead of stop here.
std::this_thread::sleep_for(std::chrono::milliseconds(20));
mAudioTrack->stop();
mPrevSampleID = mSample->sampleID();
mSample.clear();