Loading media/audioserver/main_audioserver.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -24,9 +24,9 @@ #include <sys/wait.h> #include <cutils/properties.h> #include <android/media/AudioMMapPolicy.h> #include <android/media/AudioMMapPolicyInfo.h> #include <android/media/AudioMMapPolicyType.h> #include <android/media/audio/common/AudioMMapPolicy.h> #include <android/media/audio/common/AudioMMapPolicyInfo.h> #include <android/media/audio/common/AudioMMapPolicyType.h> #include <android/media/IAudioFlingerService.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> Loading @@ -44,6 +44,10 @@ using namespace android; using android::media::audio::common::AudioMMapPolicy; using android::media::audio::common::AudioMMapPolicyInfo; using android::media::audio::common::AudioMMapPolicyType; int main(int argc __unused, char **argv) { // TODO: update with refined parameters Loading Loading @@ -155,15 +159,15 @@ int main(int argc __unused, char **argv) // attempting to call audio flinger on a null pointer could make the process crash // and attract attentions. sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); std::vector<media::AudioMMapPolicyInfo> policyInfos; std::vector<AudioMMapPolicyInfo> policyInfos; status_t status = af->getMmapPolicyInfos( media::AudioMMapPolicyType::DEFAULT, &policyInfos); AudioMMapPolicyType::DEFAULT, &policyInfos); // Initialize aaudio service when querying mmap policy succeeds and // any of the policy supports MMAP. if (status == NO_ERROR && std::any_of(policyInfos.begin(), policyInfos.end(), [](const auto& info) { return info.mmapPolicy == media::AudioMMapPolicy::AUTO || info.mmapPolicy == media::AudioMMapPolicy::ALWAYS; return info.mmapPolicy == AudioMMapPolicy::AUTO || info.mmapPolicy == AudioMMapPolicy::ALWAYS; })) { AAudioService::instantiate(); } else { Loading media/libaaudio/src/core/AudioStreamBuilder.cpp +16 −12 Original line number Diff line number Diff line Loading @@ -24,9 +24,9 @@ #include <aaudio/AAudio.h> #include <aaudio/AAudioTesting.h> #include <android/media/AudioMMapPolicy.h> #include <android/media/AudioMMapPolicyInfo.h> #include <android/media/AudioMMapPolicyType.h> #include <android/media/audio/common/AudioMMapPolicy.h> #include <android/media/audio/common/AudioMMapPolicyInfo.h> #include <android/media/audio/common/AudioMMapPolicyType.h> #include <media/AudioSystem.h> #include "binding/AAudioBinderClient.h" Loading @@ -40,6 +40,10 @@ using namespace aaudio; using android::media::audio::common::AudioMMapPolicy; using android::media::audio::common::AudioMMapPolicyInfo; using android::media::audio::common::AudioMMapPolicyType; #define AAUDIO_MMAP_POLICY_DEFAULT AAUDIO_POLICY_NEVER #define AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT AAUDIO_POLICY_NEVER Loading Loading @@ -93,15 +97,15 @@ static aaudio_result_t builder_createStream(aaudio_direction_t direction, namespace { aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) { aaudio_policy_t aidl2legacy_aaudio_policy(AudioMMapPolicy aidl) { switch (aidl) { case android::media::AudioMMapPolicy::NEVER: case AudioMMapPolicy::NEVER: return AAUDIO_POLICY_NEVER; case android::media::AudioMMapPolicy::AUTO: case AudioMMapPolicy::AUTO: return AAUDIO_POLICY_AUTO; case android::media::AudioMMapPolicy::ALWAYS: case AudioMMapPolicy::ALWAYS: return AAUDIO_POLICY_ALWAYS; case android::media::AudioMMapPolicy::UNSPECIFIED: case AudioMMapPolicy::UNSPECIFIED: default: return AAUDIO_UNSPECIFIED; } Loading @@ -110,7 +114,7 @@ aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) // The aaudio policy will be ALWAYS, NEVER, UNSPECIFIED only when all policy info are // ALWAYS, NEVER or UNSPECIFIED. Otherwise, the aaudio policy will be AUTO. aaudio_policy_t getAAudioPolicy( const std::vector<android::media::AudioMMapPolicyInfo>& policyInfos) { const std::vector<AudioMMapPolicyInfo>& policyInfos) { if (policyInfos.empty()) return AAUDIO_POLICY_AUTO; for (size_t i = 1; i < policyInfos.size(); ++i) { if (policyInfos.at(i).mmapPolicy != policyInfos.at(0).mmapPolicy) { Loading Loading @@ -140,12 +144,12 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) { return result; } std::vector<android::media::AudioMMapPolicyInfo> policyInfos; std::vector<AudioMMapPolicyInfo> policyInfos; // The API setting is the highest priority. aaudio_policy_t mmapPolicy = AudioGlobal_getMMapPolicy(); // If not specified then get from a system property. if (mmapPolicy == AAUDIO_UNSPECIFIED && android::AudioSystem::getMmapPolicyInfo( android::media::AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) { AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) { mmapPolicy = getAAudioPolicy(policyInfos); } // If still not specified then use the default. Loading @@ -156,7 +160,7 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) { policyInfos.clear(); aaudio_policy_t mmapExclusivePolicy = AAUDIO_UNSPECIFIED; if (android::AudioSystem::getMmapPolicyInfo( android::media::AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) { AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) { mmapExclusivePolicy = getAAudioPolicy(policyInfos); } if (mmapExclusivePolicy == AAUDIO_UNSPECIFIED) { Loading media/libaudioclient/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -321,9 +321,6 @@ aidl_interface { "aidl/android/media/AudioIoConfigEvent.aidl", "aidl/android/media/AudioIoDescriptor.aidl", "aidl/android/media/AudioIoFlags.aidl", "aidl/android/media/AudioMMapPolicy.aidl", "aidl/android/media/AudioMMapPolicyInfo.aidl", "aidl/android/media/AudioMMapPolicyType.aidl", "aidl/android/media/AudioMixLatencyClass.aidl", "aidl/android/media/AudioOutputFlags.aidl", "aidl/android/media/AudioPatch.aidl", Loading media/libaudioclient/AudioSystem.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ using media::audio::common::AudioDevice; using media::audio::common::AudioDeviceAddress; using media::audio::common::AudioDeviceDescription; using media::audio::common::AudioFormatDescription; using media::audio::common::AudioMMapPolicyInfo; using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioOffloadInfo; using media::audio::common::AudioSource; using media::audio::common::AudioStreamType; Loading Loading @@ -2357,8 +2359,7 @@ status_t AudioSystem::setVibratorInfos( } status_t AudioSystem::getMmapPolicyInfo( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *policyInfos) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); if (af == nullptr) { return PERMISSION_DENIED; Loading media/libaudioclient/IAudioFlinger.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ using aidl_utils::statusTFromBinderStatus; using binder::Status; using media::audio::common::AudioChannelLayout; using media::audio::common::AudioFormatDescription; using media::audio::common::AudioMMapPolicyInfo; using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioMode; using media::audio::common::AudioStreamType; using media::audio::common::AudioUuid; Loading Loading @@ -782,8 +784,7 @@ status_t AudioFlingerClientAdapter::updateSecondaryOutputs( } status_t AudioFlingerClientAdapter::getMmapPolicyInfos( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *policyInfos) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) { return statusTFromBinderStatus(mDelegate->getMmapPolicyInfos(policyType, policyInfos)); } Loading Loading @@ -1260,8 +1261,7 @@ Status AudioFlingerServerAdapter::updateSecondaryOutputs( } Status AudioFlingerServerAdapter::getMmapPolicyInfos( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *_aidl_return) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *_aidl_return) { return Status::fromStatusT(mDelegate->getMmapPolicyInfos(policyType, _aidl_return)); } Loading Loading
media/audioserver/main_audioserver.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -24,9 +24,9 @@ #include <sys/wait.h> #include <cutils/properties.h> #include <android/media/AudioMMapPolicy.h> #include <android/media/AudioMMapPolicyInfo.h> #include <android/media/AudioMMapPolicyType.h> #include <android/media/audio/common/AudioMMapPolicy.h> #include <android/media/audio/common/AudioMMapPolicyInfo.h> #include <android/media/audio/common/AudioMMapPolicyType.h> #include <android/media/IAudioFlingerService.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> Loading @@ -44,6 +44,10 @@ using namespace android; using android::media::audio::common::AudioMMapPolicy; using android::media::audio::common::AudioMMapPolicyInfo; using android::media::audio::common::AudioMMapPolicyType; int main(int argc __unused, char **argv) { // TODO: update with refined parameters Loading Loading @@ -155,15 +159,15 @@ int main(int argc __unused, char **argv) // attempting to call audio flinger on a null pointer could make the process crash // and attract attentions. sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); std::vector<media::AudioMMapPolicyInfo> policyInfos; std::vector<AudioMMapPolicyInfo> policyInfos; status_t status = af->getMmapPolicyInfos( media::AudioMMapPolicyType::DEFAULT, &policyInfos); AudioMMapPolicyType::DEFAULT, &policyInfos); // Initialize aaudio service when querying mmap policy succeeds and // any of the policy supports MMAP. if (status == NO_ERROR && std::any_of(policyInfos.begin(), policyInfos.end(), [](const auto& info) { return info.mmapPolicy == media::AudioMMapPolicy::AUTO || info.mmapPolicy == media::AudioMMapPolicy::ALWAYS; return info.mmapPolicy == AudioMMapPolicy::AUTO || info.mmapPolicy == AudioMMapPolicy::ALWAYS; })) { AAudioService::instantiate(); } else { Loading
media/libaaudio/src/core/AudioStreamBuilder.cpp +16 −12 Original line number Diff line number Diff line Loading @@ -24,9 +24,9 @@ #include <aaudio/AAudio.h> #include <aaudio/AAudioTesting.h> #include <android/media/AudioMMapPolicy.h> #include <android/media/AudioMMapPolicyInfo.h> #include <android/media/AudioMMapPolicyType.h> #include <android/media/audio/common/AudioMMapPolicy.h> #include <android/media/audio/common/AudioMMapPolicyInfo.h> #include <android/media/audio/common/AudioMMapPolicyType.h> #include <media/AudioSystem.h> #include "binding/AAudioBinderClient.h" Loading @@ -40,6 +40,10 @@ using namespace aaudio; using android::media::audio::common::AudioMMapPolicy; using android::media::audio::common::AudioMMapPolicyInfo; using android::media::audio::common::AudioMMapPolicyType; #define AAUDIO_MMAP_POLICY_DEFAULT AAUDIO_POLICY_NEVER #define AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT AAUDIO_POLICY_NEVER Loading Loading @@ -93,15 +97,15 @@ static aaudio_result_t builder_createStream(aaudio_direction_t direction, namespace { aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) { aaudio_policy_t aidl2legacy_aaudio_policy(AudioMMapPolicy aidl) { switch (aidl) { case android::media::AudioMMapPolicy::NEVER: case AudioMMapPolicy::NEVER: return AAUDIO_POLICY_NEVER; case android::media::AudioMMapPolicy::AUTO: case AudioMMapPolicy::AUTO: return AAUDIO_POLICY_AUTO; case android::media::AudioMMapPolicy::ALWAYS: case AudioMMapPolicy::ALWAYS: return AAUDIO_POLICY_ALWAYS; case android::media::AudioMMapPolicy::UNSPECIFIED: case AudioMMapPolicy::UNSPECIFIED: default: return AAUDIO_UNSPECIFIED; } Loading @@ -110,7 +114,7 @@ aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) // The aaudio policy will be ALWAYS, NEVER, UNSPECIFIED only when all policy info are // ALWAYS, NEVER or UNSPECIFIED. Otherwise, the aaudio policy will be AUTO. aaudio_policy_t getAAudioPolicy( const std::vector<android::media::AudioMMapPolicyInfo>& policyInfos) { const std::vector<AudioMMapPolicyInfo>& policyInfos) { if (policyInfos.empty()) return AAUDIO_POLICY_AUTO; for (size_t i = 1; i < policyInfos.size(); ++i) { if (policyInfos.at(i).mmapPolicy != policyInfos.at(0).mmapPolicy) { Loading Loading @@ -140,12 +144,12 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) { return result; } std::vector<android::media::AudioMMapPolicyInfo> policyInfos; std::vector<AudioMMapPolicyInfo> policyInfos; // The API setting is the highest priority. aaudio_policy_t mmapPolicy = AudioGlobal_getMMapPolicy(); // If not specified then get from a system property. if (mmapPolicy == AAUDIO_UNSPECIFIED && android::AudioSystem::getMmapPolicyInfo( android::media::AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) { AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) { mmapPolicy = getAAudioPolicy(policyInfos); } // If still not specified then use the default. Loading @@ -156,7 +160,7 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) { policyInfos.clear(); aaudio_policy_t mmapExclusivePolicy = AAUDIO_UNSPECIFIED; if (android::AudioSystem::getMmapPolicyInfo( android::media::AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) { AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) { mmapExclusivePolicy = getAAudioPolicy(policyInfos); } if (mmapExclusivePolicy == AAUDIO_UNSPECIFIED) { Loading
media/libaudioclient/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -321,9 +321,6 @@ aidl_interface { "aidl/android/media/AudioIoConfigEvent.aidl", "aidl/android/media/AudioIoDescriptor.aidl", "aidl/android/media/AudioIoFlags.aidl", "aidl/android/media/AudioMMapPolicy.aidl", "aidl/android/media/AudioMMapPolicyInfo.aidl", "aidl/android/media/AudioMMapPolicyType.aidl", "aidl/android/media/AudioMixLatencyClass.aidl", "aidl/android/media/AudioOutputFlags.aidl", "aidl/android/media/AudioPatch.aidl", Loading
media/libaudioclient/AudioSystem.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ using media::audio::common::AudioDevice; using media::audio::common::AudioDeviceAddress; using media::audio::common::AudioDeviceDescription; using media::audio::common::AudioFormatDescription; using media::audio::common::AudioMMapPolicyInfo; using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioOffloadInfo; using media::audio::common::AudioSource; using media::audio::common::AudioStreamType; Loading Loading @@ -2357,8 +2359,7 @@ status_t AudioSystem::setVibratorInfos( } status_t AudioSystem::getMmapPolicyInfo( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *policyInfos) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); if (af == nullptr) { return PERMISSION_DENIED; Loading
media/libaudioclient/IAudioFlinger.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ using aidl_utils::statusTFromBinderStatus; using binder::Status; using media::audio::common::AudioChannelLayout; using media::audio::common::AudioFormatDescription; using media::audio::common::AudioMMapPolicyInfo; using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioMode; using media::audio::common::AudioStreamType; using media::audio::common::AudioUuid; Loading Loading @@ -782,8 +784,7 @@ status_t AudioFlingerClientAdapter::updateSecondaryOutputs( } status_t AudioFlingerClientAdapter::getMmapPolicyInfos( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *policyInfos) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) { return statusTFromBinderStatus(mDelegate->getMmapPolicyInfos(policyType, policyInfos)); } Loading Loading @@ -1260,8 +1261,7 @@ Status AudioFlingerServerAdapter::updateSecondaryOutputs( } Status AudioFlingerServerAdapter::getMmapPolicyInfos( media::AudioMMapPolicyType policyType, std::vector<media::AudioMMapPolicyInfo> *_aidl_return) { AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *_aidl_return) { return Status::fromStatusT(mDelegate->getMmapPolicyInfos(policyType, _aidl_return)); } Loading