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

Commit d97c3ae9 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

audiopolicy: speaker cleanup AudioAttributes usage

Flag: android.media.audio.speaker_cleanup_usage
Bug: 355050846
Test: atest CtsMediaAudioTestCases:AudioAttributesTest
Change-Id: Ic9fa523d3c7ad4204fb2732b0c0e2c166ff4a085
parent 3570b809
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1797,6 +1797,8 @@ aidl2legacy_AudioUsage_audio_usage_t(AudioUsage aidl) {
            return AUDIO_USAGE_VEHICLE_STATUS;
        case AudioUsage::ANNOUNCEMENT:
            return AUDIO_USAGE_ANNOUNCEMENT;
        case AudioUsage::SPEAKER_CLEANUP:
            return AUDIO_USAGE_SPEAKER_CLEANUP;
    }
    return unexpected(BAD_VALUE);
}
@@ -1848,6 +1850,8 @@ legacy2aidl_audio_usage_t_AudioUsage(audio_usage_t legacy) {
            return AudioUsage::VEHICLE_STATUS;
        case AUDIO_USAGE_ANNOUNCEMENT:
            return AudioUsage::ANNOUNCEMENT;
        case AUDIO_USAGE_SPEAKER_CLEANUP:
            return AudioUsage::SPEAKER_CLEANUP;
    }
    return unexpected(BAD_VALUE);
}
+2 −0
Original line number Diff line number Diff line
@@ -131,6 +131,8 @@ const engineConfig::ProductStrategies gOrderedStrategies = {
              {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
                AUDIO_FLAG_BEACON, ""},
              {AUDIO_CONTENT_TYPE_ULTRASOUND, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT,
                AUDIO_FLAG_NONE, ""},
              {AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_SPEAKER_CLEANUP, AUDIO_SOURCE_DEFAULT,
                AUDIO_FLAG_NONE, ""}
          }
         }
+11 −0
Original line number Diff line number Diff line
@@ -425,6 +425,17 @@ Status AudioPolicyService::getOutputForAttr(const media::audio::common::AudioAtt
        }
    }

    //TODO this permission check should extend to all system usages
    if (attr.usage == AUDIO_USAGE_SPEAKER_CLEANUP) {
        if (!(audioserver_permissions() ?
              CHECK_PERM(MODIFY_AUDIO_ROUTING, attributionSource.uid)
              : modifyAudioRoutingAllowed())) {
            ALOGE("%s: permission denied: SPEAKER_CLEANUP not allowed for uid %d pid %d",
                    __func__, attributionSource.uid, attributionSource.pid);
            return binderStatusFromStatusT(PERMISSION_DENIED);
        }
    }

    AutoCallerClear acc;
    AudioPolicyInterface::output_type_t outputType;
    bool isSpatialized = false;