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

Commit dacb375e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix internal mute issues with bit-perfect playback." into main

parents 4a3d39de 783a1eb9
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -11613,6 +11613,7 @@ void BitPerfectThread::threadLoop_mix() {


void BitPerfectThread::setTracksInternalMute(
void BitPerfectThread::setTracksInternalMute(
        std::map<audio_port_handle_t, bool>* tracksInternalMute) {
        std::map<audio_port_handle_t, bool>* tracksInternalMute) {
    audio_utils::lock_guard _l(mutex());
    for (auto& track : mTracks) {
    for (auto& track : mTracks) {
        if (auto it = tracksInternalMute->find(track->portId()); it != tracksInternalMute->end()) {
        if (auto it = tracksInternalMute->find(track->portId()); it != tracksInternalMute->end()) {
            track->setInternalMute(it->second);
            track->setInternalMute(it->second);
@@ -11629,6 +11630,11 @@ sp<IAfTrack> BitPerfectThread::getTrackToStreamBitPerfectly_l() {
        // Return the bit perfect track if all other tracks are muted
        // Return the bit perfect track if all other tracks are muted
        for (const auto& track : mActiveTracks) {
        for (const auto& track : mActiveTracks) {
            if (track->isBitPerfect()) {
            if (track->isBitPerfect()) {
                if (track->getInternalMute()) {
                    // There can only be one bit-perfect client active. If it is mute internally,
                    // there is no need to stream bit-perfectly.
                    break;
                }
                bitPerfectTrack = track;
                bitPerfectTrack = track;
            } else if (track->getFinalVolume() != 0.f) {
            } else if (track->getFinalVolume() != 0.f) {
                allOtherTracksMuted = false;
                allOtherTracksMuted = false;