AudioMixer: Change setBufferProvider order of reset
Test: stress test
Bug: 111313529
Change-Id: I1269c1e7f1609ee6edca31625cf508ff3101a0a0
diff --git a/media/libaudioprocessing/AudioMixer.cpp b/media/libaudioprocessing/AudioMixer.cpp
index f3ea826..af54b21 100644
--- a/media/libaudioprocessing/AudioMixer.cpp
+++ b/media/libaudioprocessing/AudioMixer.cpp
@@ -337,6 +337,7 @@
void AudioMixer::Track::reconfigureBufferProviders()
{
+ // configure from upstream to downstream buffer providers.
bufferProvider = mInputBufferProvider;
if (mReformatBufferProvider.get() != nullptr) {
mReformatBufferProvider->setBufferProvider(bufferProvider);
@@ -813,14 +814,15 @@
if (track->mInputBufferProvider == bufferProvider) {
return; // don't reset any buffer providers if identical.
}
- if (track->mReformatBufferProvider.get() != nullptr) {
- track->mReformatBufferProvider->reset();
- } else if (track->mDownmixerBufferProvider != nullptr) {
- track->mDownmixerBufferProvider->reset();
+ // reset order from downstream to upstream buffer providers.
+ if (track->mTimestretchBufferProvider.get() != nullptr) {
+ track->mTimestretchBufferProvider->reset();
} else if (track->mPostDownmixReformatBufferProvider.get() != nullptr) {
track->mPostDownmixReformatBufferProvider->reset();
- } else if (track->mTimestretchBufferProvider.get() != nullptr) {
- track->mTimestretchBufferProvider->reset();
+ } else if (track->mDownmixerBufferProvider != nullptr) {
+ track->mDownmixerBufferProvider->reset();
+ } else if (track->mReformatBufferProvider.get() != nullptr) {
+ track->mReformatBufferProvider->reset();
}
track->mInputBufferProvider = bufferProvider;