Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98cc211b authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "Use floating point volume in mixer for mute checking" into udc-dev am: 20d86c24

parents 7d54a734 20d86c24
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -471,9 +471,9 @@ void AudioMixerBase::setParameter(int name, int target, int param, void *value)
                        &track->mVolume[param - VOLUME0],
                        &track->mVolume[param - VOLUME0],
                        &track->mPrevVolume[param - VOLUME0],
                        &track->mPrevVolume[param - VOLUME0],
                        &track->mVolumeInc[param - VOLUME0])) {
                        &track->mVolumeInc[param - VOLUME0])) {
                    ALOGV("setParameter(%s, VOLUME%d: %04x)",
                    ALOGV("setParameter(%s, VOLUME%d: %f)",
                          target == VOLUME ? "VOLUME" : "RAMP_VOLUME", param - VOLUME0,
                          target == VOLUME ? "VOLUME" : "RAMP_VOLUME", param - VOLUME0,
                                    track->volume[param - VOLUME0]);
                          track->mVolume[param - VOLUME0]);
                    invalidate();
                    invalidate();
                }
                }
            } else {
            } else {
@@ -648,7 +648,7 @@ void AudioMixerBase::process__validate()


        if (t->volumeInc[0]|t->volumeInc[1]) {
        if (t->volumeInc[0]|t->volumeInc[1]) {
            volumeRamp = true;
            volumeRamp = true;
        } else if (!t->doesResample() && t->volumeRL == 0) {
        } else if (!t->doesResample() && t->isVolumeMuted()) {
            n |= NEEDS_MUTE;
            n |= NEEDS_MUTE;
        }
        }
        t->needs = n;
        t->needs = n;
@@ -748,7 +748,7 @@ void AudioMixerBase::process__validate()


        for (const int name : mEnabled) {
        for (const int name : mEnabled) {
            const std::shared_ptr<TrackBase> &t = mTracks[name];
            const std::shared_ptr<TrackBase> &t = mTracks[name];
            if (!t->doesResample() && t->volumeRL == 0) {
            if (!t->doesResample() && t->isVolumeMuted()) {
                t->needs |= NEEDS_MUTE;
                t->needs |= NEEDS_MUTE;
                t->hook = &TrackBase::track__nop;
                t->hook = &TrackBase::track__nop;
            } else {
            } else {
+10 −0
Original line number Original line Diff line number Diff line
@@ -299,6 +299,16 @@ public:


        uint32_t       mInputFrameSize; // The track input frame size, used for tee buffer
        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:
      protected:


        // hooks
        // hooks