Merge "Use floating point volume in mixer for mute checking" into udc-dev
diff --git a/media/libaudioprocessing/AudioMixerBase.cpp b/media/libaudioprocessing/AudioMixerBase.cpp
index 427bd55..3d11d92 100644
--- a/media/libaudioprocessing/AudioMixerBase.cpp
+++ b/media/libaudioprocessing/AudioMixerBase.cpp
@@ -471,9 +471,9 @@
&track->mVolume[param - VOLUME0],
&track->mPrevVolume[param - VOLUME0],
&track->mVolumeInc[param - VOLUME0])) {
- ALOGV("setParameter(%s, VOLUME%d: %04x)",
- target == VOLUME ? "VOLUME" : "RAMP_VOLUME", param - VOLUME0,
- track->volume[param - VOLUME0]);
+ ALOGV("setParameter(%s, VOLUME%d: %f)",
+ target == VOLUME ? "VOLUME" : "RAMP_VOLUME", param - VOLUME0,
+ track->mVolume[param - VOLUME0]);
invalidate();
}
} else {
@@ -648,7 +648,7 @@
if (t->volumeInc[0]|t->volumeInc[1]) {
volumeRamp = true;
- } else if (!t->doesResample() && t->volumeRL == 0) {
+ } else if (!t->doesResample() && t->isVolumeMuted()) {
n |= NEEDS_MUTE;
}
t->needs = n;
@@ -748,7 +748,7 @@
for (const int name : mEnabled) {
const std::shared_ptr<TrackBase> &t = mTracks[name];
- if (!t->doesResample() && t->volumeRL == 0) {
+ if (!t->doesResample() && t->isVolumeMuted()) {
t->needs |= NEEDS_MUTE;
t->hook = &TrackBase::track__nop;
} else {
diff --git a/media/libaudioprocessing/include/media/AudioMixerBase.h b/media/libaudioprocessing/include/media/AudioMixerBase.h
index 4bd85d8..b44ff20 100644
--- a/media/libaudioprocessing/include/media/AudioMixerBase.h
+++ b/media/libaudioprocessing/include/media/AudioMixerBase.h
@@ -299,6 +299,16 @@
uint32_t mInputFrameSize; // The track input frame size, used for tee buffer
+ // consider volume muted only if all channel volume (floating point) is 0.f
+ inline bool isVolumeMuted() const {
+ for (const auto volume : mVolume) {
+ if (volume != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+
protected:
// hooks