SoundPool: Improve tests
Add repeated sound IDs.
Add more Stream logging.
Test: soundpool_stress
Test: android.media.cts.SoundPool*Test
Bug: 140807581
Change-Id: Icc249791c43a943d3cdb237d476eee58c669216e
diff --git a/media/jni/soundpool/StreamManager.cpp b/media/jni/soundpool/StreamManager.cpp
index 64f81d5..79e4d8a 100644
--- a/media/jni/soundpool/StreamManager.cpp
+++ b/media/jni/soundpool/StreamManager.cpp
@@ -148,16 +148,18 @@
sanityCheckQueue_l();
// find an available stream, prefer one that has matching sound id.
if (mAvailableStreams.size() > 0) {
- newStream = *mAvailableStreams.begin();
for (auto stream : mAvailableStreams) {
if (stream->getSoundID() == soundID) {
newStream = stream;
+ ALOGV("%s: found soundID %d in available queue", __func__, soundID);
break;
}
}
- if (newStream != nullptr) {
- newStream->setStopTimeNs(systemTime());
+ if (newStream == nullptr) {
+ ALOGV("%s: found stream in available queue", __func__);
+ newStream = *mAvailableStreams.begin();
}
+ newStream->setStopTimeNs(systemTime());
fromAvailableQueue = true;
}
@@ -166,10 +168,12 @@
for (auto [unused , stream] : mRestartStreams) {
if (!stream->getPairStream()->hasSound()) {
if (stream->getSoundID() == soundID) {
+ ALOGV("%s: found soundID %d in restart queue", __func__, soundID);
newStream = stream;
fromAvailableQueue = false;
break;
} else if (newStream == nullptr) {
+ ALOGV("%s: found stream in restart queue", __func__);
newStream = stream;
}
}
@@ -183,6 +187,7 @@
if (newStream == nullptr
|| newStream->getPriority() > stream->getPriority()) {
newStream = stream;
+ ALOGV("%s: found stream in active queue", __func__);
}
}
}
@@ -195,6 +200,7 @@
if (newStream == nullptr) {
for (auto [unused, stream] : mRestartStreams) {
if (stream->getPairPriority() <= priority) {
+ ALOGV("%s: evict stream from restart queue", __func__);
newStream = stream;
break;
}
@@ -210,6 +216,8 @@
Stream *pairStream = newStream->getPairStream();
streamID = getNextIdForStream(pairStream);
+ ALOGV("%s: newStream:%p pairStream:%p, streamID:%d",
+ __func__, newStream, pairStream, streamID);
pairStream->setPlay(
streamID, sound, soundID, leftVolume, rightVolume, priority, loop, rate);
if (fromAvailableQueue && kPlayOnCallingThread) {