mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge changes from topic "engineConfigHalInterface"
* changes: Default implementation for IConfig engine configuration. Add engine configuration to the AIDL Audio HAL interface.
This commit is contained in:
@@ -35,4 +35,5 @@ package android.hardware.audio.core;
|
||||
@VintfStability
|
||||
interface IConfig {
|
||||
android.hardware.audio.core.SurroundSoundConfig getSurroundSoundConfig();
|
||||
android.media.audio.common.AudioHalEngineConfig getEngineConfig();
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.hardware.audio.core;
|
||||
|
||||
import android.hardware.audio.core.SurroundSoundConfig;
|
||||
import android.media.audio.common.AudioHalEngineConfig;
|
||||
|
||||
/**
|
||||
* This interface provides system-wide configuration parameters for audio I/O
|
||||
@@ -34,4 +35,19 @@ interface IConfig {
|
||||
* @return The surround sound configuration
|
||||
*/
|
||||
SurroundSoundConfig getSurroundSoundConfig();
|
||||
/**
|
||||
* Returns the configuration items used to determine the audio policy engine
|
||||
* flavor and initial configuration.
|
||||
*
|
||||
* Engine flavor is determined by presence of capSpecificConfig, which must
|
||||
* only be present if the device uses the Configurable Audio Policy (CAP)
|
||||
* engine. Clients normally use the default audio policy engine. The client
|
||||
* will use the CAP engine only when capSpecificConfig has a non-null value.
|
||||
*
|
||||
* This method is expected to only be called during the initialization of
|
||||
* the audio policy engine, and must always return the same result.
|
||||
*
|
||||
* @return The engine configuration
|
||||
*/
|
||||
AudioHalEngineConfig getEngineConfig();
|
||||
}
|
||||
|
||||
@@ -18,11 +18,14 @@ cc_defaults {
|
||||
"libfmq",
|
||||
"libstagefright_foundation",
|
||||
"libutils",
|
||||
"libxml2",
|
||||
"android.hardware.common-V2-ndk",
|
||||
"android.hardware.common.fmq-V1-ndk",
|
||||
],
|
||||
header_libs: [
|
||||
"libaudio_system_headers",
|
||||
"libaudioaidl_headers",
|
||||
"libxsdc-utils",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -35,12 +38,26 @@ cc_library_static {
|
||||
],
|
||||
export_include_dirs: ["include"],
|
||||
srcs: [
|
||||
"AudioPolicyConfigXmlConverter.cpp",
|
||||
"Config.cpp",
|
||||
"Configuration.cpp",
|
||||
"EngineConfigXmlConverter.cpp",
|
||||
"Module.cpp",
|
||||
"Stream.cpp",
|
||||
"Telephony.cpp",
|
||||
],
|
||||
generated_sources: [
|
||||
"audio_policy_configuration_aidl_default",
|
||||
"audio_policy_engine_configuration_aidl_default",
|
||||
],
|
||||
generated_headers: [
|
||||
"audio_policy_configuration_aidl_default",
|
||||
"audio_policy_engine_configuration_aidl_default",
|
||||
],
|
||||
export_generated_headers: [
|
||||
"audio_policy_configuration_aidl_default",
|
||||
"audio_policy_engine_configuration_aidl_default",
|
||||
],
|
||||
visibility: [
|
||||
":__subpackages__",
|
||||
],
|
||||
|
||||
130
audio/aidl/default/AudioPolicyConfigXmlConverter.cpp
Normal file
130
audio/aidl/default/AudioPolicyConfigXmlConverter.cpp
Normal file
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <functional>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <aidl/android/media/audio/common/AudioHalEngineConfig.h>
|
||||
#include <system/audio-base-utils.h>
|
||||
|
||||
#include "core-impl/AudioPolicyConfigXmlConverter.h"
|
||||
|
||||
using aidl::android::media::audio::common::AudioHalEngineConfig;
|
||||
using aidl::android::media::audio::common::AudioHalVolumeCurve;
|
||||
using aidl::android::media::audio::common::AudioHalVolumeGroup;
|
||||
using aidl::android::media::audio::common::AudioStreamType;
|
||||
|
||||
namespace xsd = android::audio::policy::configuration;
|
||||
|
||||
namespace aidl::android::hardware::audio::core::internal {
|
||||
|
||||
static const int kDefaultVolumeIndexMin = 0;
|
||||
static const int kDefaultVolumeIndexMax = 100;
|
||||
static const int KVolumeIndexDeferredToAudioService = -1;
|
||||
/**
|
||||
* Valid curve points take the form "<index>,<attenuationMb>", where the index
|
||||
* must be in the range [0,100]. kInvalidCurvePointIndex is used to indicate
|
||||
* that a point was formatted incorrectly (e.g. if a vendor accidentally typed a
|
||||
* '.' instead of a ',' in their XML) -- using such a curve point will result in
|
||||
* failed VTS tests.
|
||||
*/
|
||||
static const int8_t kInvalidCurvePointIndex = -1;
|
||||
|
||||
AudioHalVolumeCurve::CurvePoint AudioPolicyConfigXmlConverter::convertCurvePointToAidl(
|
||||
const std::string& xsdcCurvePoint) {
|
||||
AudioHalVolumeCurve::CurvePoint aidlCurvePoint{};
|
||||
if (sscanf(xsdcCurvePoint.c_str(), "%" SCNd8 ",%d", &aidlCurvePoint.index,
|
||||
&aidlCurvePoint.attenuationMb) != 2) {
|
||||
aidlCurvePoint.index = kInvalidCurvePointIndex;
|
||||
}
|
||||
return aidlCurvePoint;
|
||||
}
|
||||
|
||||
AudioHalVolumeCurve AudioPolicyConfigXmlConverter::convertVolumeCurveToAidl(
|
||||
const xsd::Volume& xsdcVolumeCurve) {
|
||||
AudioHalVolumeCurve aidlVolumeCurve;
|
||||
aidlVolumeCurve.deviceCategory =
|
||||
static_cast<AudioHalVolumeCurve::DeviceCategory>(xsdcVolumeCurve.getDeviceCategory());
|
||||
if (xsdcVolumeCurve.hasRef()) {
|
||||
if (mVolumesReferenceMap.empty()) {
|
||||
mVolumesReferenceMap = generateReferenceMap<xsd::Volumes, xsd::Reference>(
|
||||
getXsdcConfig()->getVolumes());
|
||||
}
|
||||
aidlVolumeCurve.curvePoints =
|
||||
convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
|
||||
mVolumesReferenceMap.at(xsdcVolumeCurve.getRef()).getPoint(),
|
||||
std::bind(&AudioPolicyConfigXmlConverter::convertCurvePointToAidl, this,
|
||||
std::placeholders::_1));
|
||||
} else {
|
||||
aidlVolumeCurve.curvePoints =
|
||||
convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
|
||||
xsdcVolumeCurve.getPoint(),
|
||||
std::bind(&AudioPolicyConfigXmlConverter::convertCurvePointToAidl, this,
|
||||
std::placeholders::_1));
|
||||
}
|
||||
return aidlVolumeCurve;
|
||||
}
|
||||
|
||||
void AudioPolicyConfigXmlConverter::mapStreamToVolumeCurve(const xsd::Volume& xsdcVolumeCurve) {
|
||||
mStreamToVolumeCurvesMap[xsdcVolumeCurve.getStream()].push_back(
|
||||
convertVolumeCurveToAidl(xsdcVolumeCurve));
|
||||
}
|
||||
|
||||
const AudioHalEngineConfig& AudioPolicyConfigXmlConverter::getAidlEngineConfig() {
|
||||
if (mAidlEngineConfig.volumeGroups.empty() && getXsdcConfig() &&
|
||||
getXsdcConfig()->hasVolumes()) {
|
||||
parseVolumes();
|
||||
}
|
||||
return mAidlEngineConfig;
|
||||
}
|
||||
|
||||
void AudioPolicyConfigXmlConverter::mapStreamsToVolumeCurves() {
|
||||
if (getXsdcConfig()->hasVolumes()) {
|
||||
for (const xsd::Volumes& xsdcWrapperType : getXsdcConfig()->getVolumes()) {
|
||||
for (const xsd::Volume& xsdcVolume : xsdcWrapperType.getVolume()) {
|
||||
mapStreamToVolumeCurve(xsdcVolume);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AudioPolicyConfigXmlConverter::addVolumeGroupstoEngineConfig() {
|
||||
for (const auto& [xsdcStream, volumeCurves] : mStreamToVolumeCurvesMap) {
|
||||
AudioHalVolumeGroup volumeGroup;
|
||||
volumeGroup.name = xsd::toString(xsdcStream);
|
||||
if (static_cast<int>(xsdcStream) >= AUDIO_STREAM_PUBLIC_CNT) {
|
||||
volumeGroup.minIndex = kDefaultVolumeIndexMin;
|
||||
volumeGroup.maxIndex = kDefaultVolumeIndexMax;
|
||||
} else {
|
||||
volumeGroup.minIndex = KVolumeIndexDeferredToAudioService;
|
||||
volumeGroup.maxIndex = KVolumeIndexDeferredToAudioService;
|
||||
}
|
||||
volumeGroup.volumeCurves = volumeCurves;
|
||||
mAidlEngineConfig.volumeGroups.push_back(std::move(volumeGroup));
|
||||
}
|
||||
}
|
||||
|
||||
void AudioPolicyConfigXmlConverter::parseVolumes() {
|
||||
if (mStreamToVolumeCurvesMap.empty() && getXsdcConfig()->hasVolumes()) {
|
||||
mapStreamsToVolumeCurves();
|
||||
addVolumeGroupstoEngineConfig();
|
||||
}
|
||||
}
|
||||
} // namespace aidl::android::hardware::audio::core::internal
|
||||
@@ -13,10 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#define LOG_TAG "AHAL_Module"
|
||||
|
||||
#define LOG_TAG "AHAL_Config"
|
||||
#include <android-base/logging.h>
|
||||
|
||||
#include <system/audio_config.h>
|
||||
|
||||
#include "core-impl/AudioPolicyConfigXmlConverter.h"
|
||||
#include "core-impl/Config.h"
|
||||
#include "core-impl/EngineConfigXmlConverter.h"
|
||||
|
||||
using aidl::android::media::audio::common::AudioHalEngineConfig;
|
||||
|
||||
namespace aidl::android::hardware::audio::core {
|
||||
ndk::ScopedAStatus Config::getSurroundSoundConfig(SurroundSoundConfig* _aidl_return) {
|
||||
@@ -26,4 +33,24 @@ ndk::ScopedAStatus Config::getSurroundSoundConfig(SurroundSoundConfig* _aidl_ret
|
||||
LOG(DEBUG) << __func__ << ": returning " << _aidl_return->toString();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Config::getEngineConfig(AudioHalEngineConfig* _aidl_return) {
|
||||
static const AudioHalEngineConfig returnEngCfg = [this]() {
|
||||
AudioHalEngineConfig engConfig;
|
||||
if (mEngConfigConverter.getStatus() == ::android::OK) {
|
||||
engConfig = mEngConfigConverter.getAidlEngineConfig();
|
||||
} else {
|
||||
LOG(INFO) << __func__ << mEngConfigConverter.getError();
|
||||
if (mAudioPolicyConverter.getStatus() == ::android::OK) {
|
||||
engConfig = mAudioPolicyConverter.getAidlEngineConfig();
|
||||
} else {
|
||||
LOG(WARNING) << __func__ << mAudioPolicyConverter.getError();
|
||||
}
|
||||
}
|
||||
return engConfig;
|
||||
}();
|
||||
*_aidl_return = returnEngCfg;
|
||||
LOG(DEBUG) << __func__ << ": returning " << _aidl_return->toString();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
} // namespace aidl::android::hardware::audio::core
|
||||
|
||||
303
audio/aidl/default/EngineConfigXmlConverter.cpp
Normal file
303
audio/aidl/default/EngineConfigXmlConverter.cpp
Normal file
@@ -0,0 +1,303 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
#include <unistd.h>
|
||||
#include <functional>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <aidl/android/media/audio/common/AudioHalEngineConfig.h>
|
||||
|
||||
#include "core-impl/EngineConfigXmlConverter.h"
|
||||
|
||||
using aidl::android::media::audio::common::AudioAttributes;
|
||||
using aidl::android::media::audio::common::AudioContentType;
|
||||
using aidl::android::media::audio::common::AudioFlag;
|
||||
using aidl::android::media::audio::common::AudioHalAttributesGroup;
|
||||
using aidl::android::media::audio::common::AudioHalCapCriterion;
|
||||
using aidl::android::media::audio::common::AudioHalCapCriterionType;
|
||||
using aidl::android::media::audio::common::AudioHalEngineConfig;
|
||||
using aidl::android::media::audio::common::AudioHalProductStrategy;
|
||||
using aidl::android::media::audio::common::AudioHalVolumeCurve;
|
||||
using aidl::android::media::audio::common::AudioHalVolumeGroup;
|
||||
using aidl::android::media::audio::common::AudioProductStrategyType;
|
||||
using aidl::android::media::audio::common::AudioSource;
|
||||
using aidl::android::media::audio::common::AudioStreamType;
|
||||
using aidl::android::media::audio::common::AudioUsage;
|
||||
|
||||
namespace xsd = android::audio::policy::engine::configuration;
|
||||
|
||||
namespace aidl::android::hardware::audio::core::internal {
|
||||
|
||||
/**
|
||||
* Valid curve points take the form "<index>,<attenuationMb>", where the index
|
||||
* must be in the range [0,100]. kInvalidCurvePointIndex is used to indicate
|
||||
* that a point was formatted incorrectly (e.g. if a vendor accidentally typed a
|
||||
* '.' instead of a ',' in their XML)-- using such a curve point will result in
|
||||
* failed VTS tests.
|
||||
*/
|
||||
static const int8_t kInvalidCurvePointIndex = -1;
|
||||
|
||||
void EngineConfigXmlConverter::initProductStrategyMap() {
|
||||
#define STRATEGY_ENTRY(name) {"STRATEGY_" #name, static_cast<int>(AudioProductStrategyType::name)}
|
||||
|
||||
mProductStrategyMap = {STRATEGY_ENTRY(MEDIA),
|
||||
STRATEGY_ENTRY(PHONE),
|
||||
STRATEGY_ENTRY(SONIFICATION),
|
||||
STRATEGY_ENTRY(SONIFICATION_RESPECTFUL),
|
||||
STRATEGY_ENTRY(DTMF),
|
||||
STRATEGY_ENTRY(ENFORCED_AUDIBLE),
|
||||
STRATEGY_ENTRY(TRANSMITTED_THROUGH_SPEAKER),
|
||||
STRATEGY_ENTRY(ACCESSIBILITY)};
|
||||
#undef STRATEGY_ENTRY
|
||||
}
|
||||
|
||||
int EngineConfigXmlConverter::convertProductStrategyNameToAidl(
|
||||
const std::string& xsdcProductStrategyName) {
|
||||
const auto [it, success] = mProductStrategyMap.insert(
|
||||
std::make_pair(xsdcProductStrategyName, mNextVendorStrategy));
|
||||
if (success) {
|
||||
mNextVendorStrategy++;
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
|
||||
bool isDefaultAudioAttributes(const AudioAttributes& attributes) {
|
||||
return ((attributes.contentType == AudioContentType::UNKNOWN) &&
|
||||
(attributes.usage == AudioUsage::UNKNOWN) &&
|
||||
(attributes.source == AudioSource::DEFAULT) && (attributes.flags == 0) &&
|
||||
(attributes.tags.empty()));
|
||||
}
|
||||
|
||||
AudioAttributes EngineConfigXmlConverter::convertAudioAttributesToAidl(
|
||||
const xsd::AttributesType& xsdcAudioAttributes) {
|
||||
if (xsdcAudioAttributes.hasAttributesRef()) {
|
||||
if (mAttributesReferenceMap.empty()) {
|
||||
mAttributesReferenceMap =
|
||||
generateReferenceMap<xsd::AttributesRef, xsd::AttributesRefType>(
|
||||
getXsdcConfig()->getAttributesRef());
|
||||
}
|
||||
return convertAudioAttributesToAidl(
|
||||
*(mAttributesReferenceMap.at(xsdcAudioAttributes.getAttributesRef())
|
||||
.getFirstAttributes()));
|
||||
}
|
||||
AudioAttributes aidlAudioAttributes;
|
||||
if (xsdcAudioAttributes.hasContentType()) {
|
||||
aidlAudioAttributes.contentType = static_cast<AudioContentType>(
|
||||
xsdcAudioAttributes.getFirstContentType()->getValue());
|
||||
}
|
||||
if (xsdcAudioAttributes.hasUsage()) {
|
||||
aidlAudioAttributes.usage =
|
||||
static_cast<AudioUsage>(xsdcAudioAttributes.getFirstUsage()->getValue());
|
||||
}
|
||||
if (xsdcAudioAttributes.hasSource()) {
|
||||
aidlAudioAttributes.source =
|
||||
static_cast<AudioSource>(xsdcAudioAttributes.getFirstSource()->getValue());
|
||||
}
|
||||
if (xsdcAudioAttributes.hasFlags()) {
|
||||
std::vector<xsd::FlagType> xsdcFlagTypeVec =
|
||||
xsdcAudioAttributes.getFirstFlags()->getValue();
|
||||
for (const xsd::FlagType& xsdcFlagType : xsdcFlagTypeVec) {
|
||||
if (xsdcFlagType != xsd::FlagType::AUDIO_FLAG_NONE) {
|
||||
aidlAudioAttributes.flags |= 1 << (static_cast<int>(xsdcFlagType) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (xsdcAudioAttributes.hasBundle()) {
|
||||
const xsd::BundleType* xsdcBundle = xsdcAudioAttributes.getFirstBundle();
|
||||
aidlAudioAttributes.tags[0] = xsdcBundle->getKey() + "=" + xsdcBundle->getValue();
|
||||
}
|
||||
if (isDefaultAudioAttributes(aidlAudioAttributes)) {
|
||||
mDefaultProductStrategyId = std::optional<int>{-1};
|
||||
}
|
||||
return aidlAudioAttributes;
|
||||
}
|
||||
|
||||
AudioHalAttributesGroup EngineConfigXmlConverter::convertAttributesGroupToAidl(
|
||||
const xsd::AttributesGroup& xsdcAttributesGroup) {
|
||||
AudioHalAttributesGroup aidlAttributesGroup;
|
||||
static const int kStreamTypeEnumOffset =
|
||||
static_cast<int>(xsd::Stream::AUDIO_STREAM_VOICE_CALL) -
|
||||
static_cast<int>(AudioStreamType::VOICE_CALL);
|
||||
aidlAttributesGroup.streamType = static_cast<AudioStreamType>(
|
||||
static_cast<int>(xsdcAttributesGroup.getStreamType()) - kStreamTypeEnumOffset);
|
||||
aidlAttributesGroup.volumeGroupName = xsdcAttributesGroup.getVolumeGroup();
|
||||
if (xsdcAttributesGroup.hasAttributes_optional()) {
|
||||
aidlAttributesGroup.attributes =
|
||||
convertCollectionToAidl<xsd::AttributesType, AudioAttributes>(
|
||||
xsdcAttributesGroup.getAttributes_optional(),
|
||||
std::bind(&EngineConfigXmlConverter::convertAudioAttributesToAidl, this,
|
||||
std::placeholders::_1));
|
||||
} else if (xsdcAttributesGroup.hasContentType_optional() ||
|
||||
xsdcAttributesGroup.hasUsage_optional() ||
|
||||
xsdcAttributesGroup.hasSource_optional() ||
|
||||
xsdcAttributesGroup.hasFlags_optional() ||
|
||||
xsdcAttributesGroup.hasBundle_optional()) {
|
||||
aidlAttributesGroup.attributes.push_back(convertAudioAttributesToAidl(xsd::AttributesType(
|
||||
xsdcAttributesGroup.getContentType_optional(),
|
||||
xsdcAttributesGroup.getUsage_optional(), xsdcAttributesGroup.getSource_optional(),
|
||||
xsdcAttributesGroup.getFlags_optional(), xsdcAttributesGroup.getBundle_optional(),
|
||||
std::nullopt)));
|
||||
|
||||
} else {
|
||||
// do nothing;
|
||||
// TODO: check if this is valid or if we should treat as an error.
|
||||
// Currently, attributes are not mandatory in schema, but an AttributesGroup
|
||||
// without attributes does not make much sense.
|
||||
}
|
||||
return aidlAttributesGroup;
|
||||
}
|
||||
|
||||
AudioHalProductStrategy EngineConfigXmlConverter::convertProductStrategyToAidl(
|
||||
const xsd::ProductStrategies::ProductStrategy& xsdcProductStrategy) {
|
||||
AudioHalProductStrategy aidlProductStrategy;
|
||||
|
||||
aidlProductStrategy.id = convertProductStrategyNameToAidl(xsdcProductStrategy.getName());
|
||||
|
||||
if (xsdcProductStrategy.hasAttributesGroup()) {
|
||||
aidlProductStrategy.attributesGroups =
|
||||
convertCollectionToAidl<xsd::AttributesGroup, AudioHalAttributesGroup>(
|
||||
xsdcProductStrategy.getAttributesGroup(),
|
||||
std::bind(&EngineConfigXmlConverter::convertAttributesGroupToAidl, this,
|
||||
std::placeholders::_1));
|
||||
}
|
||||
if ((mDefaultProductStrategyId != std::nullopt) && (mDefaultProductStrategyId.value() == -1)) {
|
||||
mDefaultProductStrategyId = aidlProductStrategy.id;
|
||||
}
|
||||
return aidlProductStrategy;
|
||||
}
|
||||
|
||||
AudioHalVolumeCurve::CurvePoint EngineConfigXmlConverter::convertCurvePointToAidl(
|
||||
const std::string& xsdcCurvePoint) {
|
||||
AudioHalVolumeCurve::CurvePoint aidlCurvePoint{};
|
||||
if (sscanf(xsdcCurvePoint.c_str(), "%" SCNd8 ",%d", &aidlCurvePoint.index,
|
||||
&aidlCurvePoint.attenuationMb) != 2) {
|
||||
aidlCurvePoint.index = kInvalidCurvePointIndex;
|
||||
}
|
||||
return aidlCurvePoint;
|
||||
}
|
||||
|
||||
AudioHalVolumeCurve EngineConfigXmlConverter::convertVolumeCurveToAidl(
|
||||
const xsd::Volume& xsdcVolumeCurve) {
|
||||
AudioHalVolumeCurve aidlVolumeCurve;
|
||||
aidlVolumeCurve.deviceCategory =
|
||||
static_cast<AudioHalVolumeCurve::DeviceCategory>(xsdcVolumeCurve.getDeviceCategory());
|
||||
if (xsdcVolumeCurve.hasRef()) {
|
||||
if (mVolumesReferenceMap.empty()) {
|
||||
mVolumesReferenceMap = generateReferenceMap<xsd::VolumesType, xsd::VolumeRef>(
|
||||
getXsdcConfig()->getVolumes());
|
||||
}
|
||||
aidlVolumeCurve.curvePoints =
|
||||
convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
|
||||
mVolumesReferenceMap.at(xsdcVolumeCurve.getRef()).getPoint(),
|
||||
std::bind(&EngineConfigXmlConverter::convertCurvePointToAidl, this,
|
||||
std::placeholders::_1));
|
||||
} else {
|
||||
aidlVolumeCurve.curvePoints =
|
||||
convertCollectionToAidl<std::string, AudioHalVolumeCurve::CurvePoint>(
|
||||
xsdcVolumeCurve.getPoint(),
|
||||
std::bind(&EngineConfigXmlConverter::convertCurvePointToAidl, this,
|
||||
std::placeholders::_1));
|
||||
}
|
||||
return aidlVolumeCurve;
|
||||
}
|
||||
|
||||
AudioHalVolumeGroup EngineConfigXmlConverter::convertVolumeGroupToAidl(
|
||||
const xsd::VolumeGroupsType::VolumeGroup& xsdcVolumeGroup) {
|
||||
AudioHalVolumeGroup aidlVolumeGroup;
|
||||
aidlVolumeGroup.name = xsdcVolumeGroup.getName();
|
||||
aidlVolumeGroup.minIndex = xsdcVolumeGroup.getIndexMin();
|
||||
aidlVolumeGroup.maxIndex = xsdcVolumeGroup.getIndexMax();
|
||||
aidlVolumeGroup.volumeCurves = convertCollectionToAidl<xsd::Volume, AudioHalVolumeCurve>(
|
||||
xsdcVolumeGroup.getVolume(),
|
||||
std::bind(&EngineConfigXmlConverter::convertVolumeCurveToAidl, this,
|
||||
std::placeholders::_1));
|
||||
return aidlVolumeGroup;
|
||||
}
|
||||
|
||||
AudioHalCapCriterion EngineConfigXmlConverter::convertCapCriterionToAidl(
|
||||
const xsd::CriterionType& xsdcCriterion) {
|
||||
AudioHalCapCriterion aidlCapCriterion;
|
||||
aidlCapCriterion.name = xsdcCriterion.getName();
|
||||
aidlCapCriterion.criterionTypeName = xsdcCriterion.getType();
|
||||
aidlCapCriterion.defaultLiteralValue = xsdcCriterion.get_default();
|
||||
return aidlCapCriterion;
|
||||
}
|
||||
|
||||
std::string EngineConfigXmlConverter::convertCriterionTypeValueToAidl(
|
||||
const xsd::ValueType& xsdcCriterionTypeValue) {
|
||||
return xsdcCriterionTypeValue.getLiteral();
|
||||
}
|
||||
|
||||
AudioHalCapCriterionType EngineConfigXmlConverter::convertCapCriterionTypeToAidl(
|
||||
const xsd::CriterionTypeType& xsdcCriterionType) {
|
||||
AudioHalCapCriterionType aidlCapCriterionType;
|
||||
aidlCapCriterionType.name = xsdcCriterionType.getName();
|
||||
aidlCapCriterionType.isInclusive = !(static_cast<bool>(xsdcCriterionType.getType()));
|
||||
aidlCapCriterionType.values =
|
||||
convertWrappedCollectionToAidl<xsd::ValuesType, xsd::ValueType, std::string>(
|
||||
xsdcCriterionType.getValues(), &xsd::ValuesType::getValue,
|
||||
std::bind(&EngineConfigXmlConverter::convertCriterionTypeValueToAidl, this,
|
||||
std::placeholders::_1));
|
||||
return aidlCapCriterionType;
|
||||
}
|
||||
|
||||
AudioHalEngineConfig& EngineConfigXmlConverter::getAidlEngineConfig() {
|
||||
return mAidlEngineConfig;
|
||||
}
|
||||
|
||||
void EngineConfigXmlConverter::init() {
|
||||
initProductStrategyMap();
|
||||
if (getXsdcConfig()->hasProductStrategies()) {
|
||||
mAidlEngineConfig.productStrategies =
|
||||
convertWrappedCollectionToAidl<xsd::ProductStrategies,
|
||||
xsd::ProductStrategies::ProductStrategy,
|
||||
AudioHalProductStrategy>(
|
||||
getXsdcConfig()->getProductStrategies(),
|
||||
&xsd::ProductStrategies::getProductStrategy,
|
||||
std::bind(&EngineConfigXmlConverter::convertProductStrategyToAidl, this,
|
||||
std::placeholders::_1));
|
||||
if (mDefaultProductStrategyId) {
|
||||
mAidlEngineConfig.defaultProductStrategyId = mDefaultProductStrategyId.value();
|
||||
}
|
||||
}
|
||||
if (getXsdcConfig()->hasVolumeGroups()) {
|
||||
mAidlEngineConfig.volumeGroups = convertWrappedCollectionToAidl<
|
||||
xsd::VolumeGroupsType, xsd::VolumeGroupsType::VolumeGroup, AudioHalVolumeGroup>(
|
||||
getXsdcConfig()->getVolumeGroups(), &xsd::VolumeGroupsType::getVolumeGroup,
|
||||
std::bind(&EngineConfigXmlConverter::convertVolumeGroupToAidl, this,
|
||||
std::placeholders::_1));
|
||||
}
|
||||
if (getXsdcConfig()->hasCriteria() && getXsdcConfig()->hasCriterion_types()) {
|
||||
AudioHalEngineConfig::CapSpecificConfig capSpecificConfig;
|
||||
capSpecificConfig.criteria =
|
||||
convertWrappedCollectionToAidl<xsd::CriteriaType, xsd::CriterionType,
|
||||
AudioHalCapCriterion>(
|
||||
getXsdcConfig()->getCriteria(), &xsd::CriteriaType::getCriterion,
|
||||
std::bind(&EngineConfigXmlConverter::convertCapCriterionToAidl, this,
|
||||
std::placeholders::_1));
|
||||
capSpecificConfig.criterionTypes =
|
||||
convertWrappedCollectionToAidl<xsd::CriterionTypesType, xsd::CriterionTypeType,
|
||||
AudioHalCapCriterionType>(
|
||||
getXsdcConfig()->getCriterion_types(),
|
||||
&xsd::CriterionTypesType::getCriterion_type,
|
||||
std::bind(&EngineConfigXmlConverter::convertCapCriterionTypeToAidl, this,
|
||||
std::placeholders::_1));
|
||||
mAidlEngineConfig.capSpecificConfig = capSpecificConfig;
|
||||
}
|
||||
}
|
||||
} // namespace aidl::android::hardware::audio::core::internal
|
||||
15
audio/aidl/default/config/audioPolicy/Android.bp
Normal file
15
audio/aidl/default/config/audioPolicy/Android.bp
Normal file
@@ -0,0 +1,15 @@
|
||||
package {
|
||||
// See: http://go/android-license-faq
|
||||
// A large-scale-change added 'default_applicable_licenses' to import
|
||||
// all of the 'license_kinds' from "hardware_interfaces_license"
|
||||
// to get the below license kinds:
|
||||
// SPDX-license-identifier-Apache-2.0
|
||||
default_applicable_licenses: ["hardware_interfaces_license"],
|
||||
}
|
||||
|
||||
xsd_config {
|
||||
name: "audio_policy_configuration_aidl_default",
|
||||
srcs: ["audio_policy_configuration.xsd"],
|
||||
package_name: "android.audio.policy.configuration",
|
||||
nullability: true,
|
||||
}
|
||||
607
audio/aidl/default/config/audioPolicy/api/current.txt
Normal file
607
audio/aidl/default/config/audioPolicy/api/current.txt
Normal file
@@ -0,0 +1,607 @@
|
||||
// Signature format: 2.0
|
||||
package android.audio.policy.configuration {
|
||||
|
||||
public class AttachedDevices {
|
||||
ctor public AttachedDevices();
|
||||
method @Nullable public java.util.List<java.lang.String> getItem();
|
||||
}
|
||||
|
||||
public enum AudioChannelMask {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_10;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_11;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_12;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_13;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_14;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_15;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_16;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_17;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_18;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_19;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_20;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_21;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_22;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_23;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_24;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_5;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_6;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_7;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_8;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_INDEX_MASK_9;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_2POINT0POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_2POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_3POINT0POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_3POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_5POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_6;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_FRONT_BACK;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_MONO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_STEREO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_VOICE_CALL_MONO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_NONE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_13POINT_360RA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_22POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_2POINT0POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_2POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_2POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_3POINT0POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_3POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_3POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_5POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_5POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_5POINT1POINT4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_5POINT1_BACK;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_5POINT1_SIDE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_6POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_7POINT1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_7POINT1POINT2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_7POINT1POINT4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_9POINT1POINT4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_9POINT1POINT6;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_HAPTIC_AB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_MONO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_MONO_HAPTIC_A;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_MONO_HAPTIC_AB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_PENTA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_QUAD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_QUAD_BACK;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_QUAD_SIDE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_STEREO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_STEREO_HAPTIC_AB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_SURROUND;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_TRI;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioChannelMask AUDIO_CHANNEL_OUT_TRI_BACK;
|
||||
}
|
||||
|
||||
public enum AudioContentType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_MOVIE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_MUSIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_SONIFICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_SPEECH;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_ULTRASOUND;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioContentType AUDIO_CONTENT_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
public enum AudioDevice {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_AMBIENT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_AUX_DIGITAL;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BACK_MIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BLE_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BLUETOOTH_A2DP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BLUETOOTH_BLE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BUILTIN_MIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_BUS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_COMMUNICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_ECHO_REFERENCE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_FM_TUNER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_HDMI;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_HDMI_ARC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_HDMI_EARC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_IP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_LINE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_LOOPBACK;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_PROXY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_REMOTE_SUBMIX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_SPDIF;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_STUB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_TELEPHONY_RX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_TV_TUNER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_USB_ACCESSORY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_USB_DEVICE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_USB_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_VOICE_CALL;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_IN_WIRED_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_NONE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_AUX_DIGITAL;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_AUX_LINE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLE_BROADCAST;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLE_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLE_SPEAKER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_A2DP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_SCO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_BUS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_EARPIECE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_ECHO_CANCELLER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_FM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_HDMI;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_HDMI_ARC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_HDMI_EARC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_HEARING_AID;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_IP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_LINE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_PROXY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_SPDIF;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_SPEAKER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_SPEAKER_SAFE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_STUB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_TELEPHONY_TX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_USB_ACCESSORY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_USB_DEVICE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_USB_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioDevice AUDIO_DEVICE_OUT_WIRED_HEADSET;
|
||||
}
|
||||
|
||||
public enum AudioEncapsulationType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioEncapsulationType AUDIO_ENCAPSULATION_TYPE_IEC61937;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioEncapsulationType AUDIO_ENCAPSULATION_TYPE_NONE;
|
||||
}
|
||||
|
||||
public enum AudioFormat {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADIF;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_ELD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_ERLC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_HE_V1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_HE_V2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_LC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_LD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_LTP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_MAIN;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_SCALABLE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_SSR;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ADTS_XHE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ELD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_ERLC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_HE_V1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_HE_V2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LATM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LATM_HE_V1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LATM_HE_V2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LATM_LC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_LTP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_MAIN;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_SCALABLE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_SSR;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AAC_XHE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AC3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AC4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_ALAC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AMR_NB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AMR_WB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_AMR_WB_PLUS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX_ADAPTIVE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX_ADAPTIVE_QLEA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX_ADAPTIVE_R4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX_HD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_APTX_TWSP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_CELT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DOLBY_TRUEHD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DRA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DSD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DTS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DTS_HD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DTS_HD_MA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DTS_UHD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_DTS_UHD_P2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_EVRC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_EVRCB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_EVRCNW;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_EVRCWB;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_E_AC3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_E_AC3_JOC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_FLAC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_HE_AAC_V1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_HE_AAC_V2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IEC60958;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_IEC61937;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_LC3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_LDAC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_LHDC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_LHDC_LL;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MAT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MAT_1_0;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MAT_2_0;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MAT_2_1;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MP2;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MP3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MPEGH_BL_L3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MPEGH_BL_L4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MPEGH_LC_L3;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_MPEGH_LC_L4;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_OPUS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_16_BIT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_24_BIT_PACKED;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_32_BIT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_8_24_BIT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_8_BIT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_PCM_FLOAT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_QCELP;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_SBC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_VORBIS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_WMA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioFormat AUDIO_FORMAT_WMA_PRO;
|
||||
}
|
||||
|
||||
public enum AudioGainMode {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioGainMode AUDIO_GAIN_MODE_CHANNELS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioGainMode AUDIO_GAIN_MODE_JOINT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioGainMode AUDIO_GAIN_MODE_RAMP;
|
||||
}
|
||||
|
||||
public enum AudioInOutFlag {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_DIRECT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_FAST;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_HW_AV_SYNC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_HW_HOTWORD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_MMAP_NOIRQ;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_RAW;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_SYNC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_ULTRASOUND;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_INPUT_FLAG_VOIP_TX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_DEEP_BUFFER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_DIRECT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_DIRECT_PCM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_FAST;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_HW_AV_SYNC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_INCALL_MUSIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_MMAP_NOIRQ;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_NON_BLOCKING;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_PRIMARY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_RAW;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_SPATIALIZER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_SYNC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_TTS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_ULTRASOUND;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioInOutFlag AUDIO_OUTPUT_FLAG_VOIP_RX;
|
||||
}
|
||||
|
||||
public class AudioPolicyConfiguration {
|
||||
ctor public AudioPolicyConfiguration();
|
||||
method @Nullable public android.audio.policy.configuration.GlobalConfiguration getGlobalConfiguration();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Modules> getModules();
|
||||
method @Nullable public android.audio.policy.configuration.SurroundSound getSurroundSound();
|
||||
method @Nullable public android.audio.policy.configuration.Version getVersion();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Volumes> getVolumes();
|
||||
method public void setGlobalConfiguration(@Nullable android.audio.policy.configuration.GlobalConfiguration);
|
||||
method public void setSurroundSound(@Nullable android.audio.policy.configuration.SurroundSound);
|
||||
method public void setVersion(@Nullable android.audio.policy.configuration.Version);
|
||||
}
|
||||
|
||||
public enum AudioSource {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_CAMCORDER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_ECHO_REFERENCE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_FM_TUNER;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_HOTWORD;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_MIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_REMOTE_SUBMIX;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_ULTRASOUND;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_UNPROCESSED;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_CALL;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_DOWNLINK;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_PERFORMANCE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_RECOGNITION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioSource AUDIO_SOURCE_VOICE_UPLINK;
|
||||
}
|
||||
|
||||
public enum AudioStreamType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_ACCESSIBILITY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_ALARM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_BLUETOOTH_SCO;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_CALL_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_DTMF;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_ENFORCED_AUDIBLE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_MUSIC;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_NOTIFICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_PATCH;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_REROUTING;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_RING;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_SYSTEM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_TTS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioStreamType AUDIO_STREAM_VOICE_CALL;
|
||||
}
|
||||
|
||||
public enum AudioUsage {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ALARM;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ANNOUNCEMENT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ASSISTANCE_SONIFICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_CALL_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_EMERGENCY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_GAME;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_MEDIA;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_NOTIFICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_NOTIFICATION_EVENT;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_SAFETY;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_UNKNOWN;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_VEHICLE_STATUS;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_VIRTUAL_SOURCE;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final android.audio.policy.configuration.AudioUsage AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING;
|
||||
}
|
||||
|
||||
public enum DeviceCategory {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.DeviceCategory DEVICE_CATEGORY_EARPIECE;
|
||||
enum_constant public static final android.audio.policy.configuration.DeviceCategory DEVICE_CATEGORY_EXT_MEDIA;
|
||||
enum_constant public static final android.audio.policy.configuration.DeviceCategory DEVICE_CATEGORY_HEADSET;
|
||||
enum_constant public static final android.audio.policy.configuration.DeviceCategory DEVICE_CATEGORY_HEARING_AID;
|
||||
enum_constant public static final android.audio.policy.configuration.DeviceCategory DEVICE_CATEGORY_SPEAKER;
|
||||
}
|
||||
|
||||
public class DevicePorts {
|
||||
ctor public DevicePorts();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.DevicePorts.DevicePort> getDevicePort();
|
||||
}
|
||||
|
||||
public static class DevicePorts.DevicePort {
|
||||
ctor public DevicePorts.DevicePort();
|
||||
method @Nullable public String getAddress();
|
||||
method @Nullable public java.util.List<java.lang.String> getEncodedFormats();
|
||||
method @Nullable public android.audio.policy.configuration.Gains getGains();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Profile> getProfile();
|
||||
method @Nullable public android.audio.policy.configuration.Role getRole();
|
||||
method @Nullable public String getTagName();
|
||||
method @Nullable public String getType();
|
||||
method @Nullable public boolean get_default();
|
||||
method public void setAddress(@Nullable String);
|
||||
method public void setEncodedFormats(@Nullable java.util.List<java.lang.String>);
|
||||
method public void setGains(@Nullable android.audio.policy.configuration.Gains);
|
||||
method public void setRole(@Nullable android.audio.policy.configuration.Role);
|
||||
method public void setTagName(@Nullable String);
|
||||
method public void setType(@Nullable String);
|
||||
method public void set_default(@Nullable boolean);
|
||||
}
|
||||
|
||||
public enum EngineSuffix {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.EngineSuffix _default;
|
||||
enum_constant public static final android.audio.policy.configuration.EngineSuffix configurable;
|
||||
}
|
||||
|
||||
public class Gains {
|
||||
ctor public Gains();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Gains.Gain> getGain();
|
||||
}
|
||||
|
||||
public static class Gains.Gain {
|
||||
ctor public Gains.Gain();
|
||||
method @Nullable public android.audio.policy.configuration.AudioChannelMask getChannel_mask();
|
||||
method @Nullable public int getDefaultValueMB();
|
||||
method @Nullable public int getMaxRampMs();
|
||||
method @Nullable public int getMaxValueMB();
|
||||
method @Nullable public int getMinRampMs();
|
||||
method @Nullable public int getMinValueMB();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.AudioGainMode> getMode();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public int getStepValueMB();
|
||||
method @Nullable public boolean getUseForVolume();
|
||||
method public void setChannel_mask(@Nullable android.audio.policy.configuration.AudioChannelMask);
|
||||
method public void setDefaultValueMB(@Nullable int);
|
||||
method public void setMaxRampMs(@Nullable int);
|
||||
method public void setMaxValueMB(@Nullable int);
|
||||
method public void setMinRampMs(@Nullable int);
|
||||
method public void setMinValueMB(@Nullable int);
|
||||
method public void setMode(@Nullable java.util.List<android.audio.policy.configuration.AudioGainMode>);
|
||||
method public void setName(@Nullable String);
|
||||
method public void setStepValueMB(@Nullable int);
|
||||
method public void setUseForVolume(@Nullable boolean);
|
||||
}
|
||||
|
||||
public class GlobalConfiguration {
|
||||
ctor public GlobalConfiguration();
|
||||
method @Nullable public boolean getCall_screen_mode_supported();
|
||||
method @Nullable public android.audio.policy.configuration.EngineSuffix getEngine_library();
|
||||
method @Nullable public boolean getSpeaker_drc_enabled();
|
||||
method public void setCall_screen_mode_supported(@Nullable boolean);
|
||||
method public void setEngine_library(@Nullable android.audio.policy.configuration.EngineSuffix);
|
||||
method public void setSpeaker_drc_enabled(@Nullable boolean);
|
||||
}
|
||||
|
||||
public enum HalVersion {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.HalVersion _2_0;
|
||||
enum_constant public static final android.audio.policy.configuration.HalVersion _3_0;
|
||||
}
|
||||
|
||||
public class MixPorts {
|
||||
ctor public MixPorts();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.MixPorts.MixPort> getMixPort();
|
||||
}
|
||||
|
||||
public static class MixPorts.MixPort {
|
||||
ctor public MixPorts.MixPort();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.AudioInOutFlag> getFlags();
|
||||
method @Nullable public android.audio.policy.configuration.Gains getGains();
|
||||
method @Nullable public long getMaxActiveCount();
|
||||
method @Nullable public long getMaxOpenCount();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.AudioUsage> getPreferredUsage();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Profile> getProfile();
|
||||
method @Nullable public long getRecommendedMuteDurationMs();
|
||||
method @Nullable public android.audio.policy.configuration.Role getRole();
|
||||
method public void setFlags(@Nullable java.util.List<android.audio.policy.configuration.AudioInOutFlag>);
|
||||
method public void setGains(@Nullable android.audio.policy.configuration.Gains);
|
||||
method public void setMaxActiveCount(@Nullable long);
|
||||
method public void setMaxOpenCount(@Nullable long);
|
||||
method public void setName(@Nullable String);
|
||||
method public void setPreferredUsage(@Nullable java.util.List<android.audio.policy.configuration.AudioUsage>);
|
||||
method public void setRecommendedMuteDurationMs(@Nullable long);
|
||||
method public void setRole(@Nullable android.audio.policy.configuration.Role);
|
||||
}
|
||||
|
||||
public enum MixType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.MixType mix;
|
||||
enum_constant public static final android.audio.policy.configuration.MixType mux;
|
||||
}
|
||||
|
||||
public class Modules {
|
||||
ctor public Modules();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Modules.Module> getModule();
|
||||
}
|
||||
|
||||
public static class Modules.Module {
|
||||
ctor public Modules.Module();
|
||||
method @Nullable public android.audio.policy.configuration.AttachedDevices getAttachedDevices();
|
||||
method @Nullable public String getDefaultOutputDevice();
|
||||
method @Nullable public android.audio.policy.configuration.DevicePorts getDevicePorts();
|
||||
method @Nullable public android.audio.policy.configuration.HalVersion getHalVersion();
|
||||
method @Nullable public android.audio.policy.configuration.MixPorts getMixPorts();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public android.audio.policy.configuration.Routes getRoutes();
|
||||
method public void setAttachedDevices(@Nullable android.audio.policy.configuration.AttachedDevices);
|
||||
method public void setDefaultOutputDevice(@Nullable String);
|
||||
method public void setDevicePorts(@Nullable android.audio.policy.configuration.DevicePorts);
|
||||
method public void setHalVersion(@Nullable android.audio.policy.configuration.HalVersion);
|
||||
method public void setMixPorts(@Nullable android.audio.policy.configuration.MixPorts);
|
||||
method public void setName(@Nullable String);
|
||||
method public void setRoutes(@Nullable android.audio.policy.configuration.Routes);
|
||||
}
|
||||
|
||||
public class Profile {
|
||||
ctor public Profile();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.AudioChannelMask> getChannelMasks();
|
||||
method @Nullable public android.audio.policy.configuration.AudioEncapsulationType getEncapsulationType();
|
||||
method @Nullable public String getFormat();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<java.math.BigInteger> getSamplingRates();
|
||||
method public void setChannelMasks(@Nullable java.util.List<android.audio.policy.configuration.AudioChannelMask>);
|
||||
method public void setEncapsulationType(@Nullable android.audio.policy.configuration.AudioEncapsulationType);
|
||||
method public void setFormat(@Nullable String);
|
||||
method public void setName(@Nullable String);
|
||||
method public void setSamplingRates(@Nullable java.util.List<java.math.BigInteger>);
|
||||
}
|
||||
|
||||
public class Reference {
|
||||
ctor public Reference();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<java.lang.String> getPoint();
|
||||
method public void setName(@Nullable String);
|
||||
}
|
||||
|
||||
public enum Role {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.Role sink;
|
||||
enum_constant public static final android.audio.policy.configuration.Role source;
|
||||
}
|
||||
|
||||
public class Routes {
|
||||
ctor public Routes();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Routes.Route> getRoute();
|
||||
}
|
||||
|
||||
public static class Routes.Route {
|
||||
ctor public Routes.Route();
|
||||
method @Nullable public String getSink();
|
||||
method @Nullable public String getSources();
|
||||
method @Nullable public android.audio.policy.configuration.MixType getType();
|
||||
method public void setSink(@Nullable String);
|
||||
method public void setSources(@Nullable String);
|
||||
method public void setType(@Nullable android.audio.policy.configuration.MixType);
|
||||
}
|
||||
|
||||
public class SurroundFormats {
|
||||
ctor public SurroundFormats();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.SurroundFormats.Format> getFormat();
|
||||
}
|
||||
|
||||
public static class SurroundFormats.Format {
|
||||
ctor public SurroundFormats.Format();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<java.lang.String> getSubformats();
|
||||
method public void setName(@Nullable String);
|
||||
method public void setSubformats(@Nullable java.util.List<java.lang.String>);
|
||||
}
|
||||
|
||||
public class SurroundSound {
|
||||
ctor public SurroundSound();
|
||||
method @Nullable public android.audio.policy.configuration.SurroundFormats getFormats();
|
||||
method public void setFormats(@Nullable android.audio.policy.configuration.SurroundFormats);
|
||||
}
|
||||
|
||||
public enum Version {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.configuration.Version _7_0;
|
||||
enum_constant public static final android.audio.policy.configuration.Version _7_1;
|
||||
}
|
||||
|
||||
public class Volume {
|
||||
ctor public Volume();
|
||||
method @Nullable public android.audio.policy.configuration.DeviceCategory getDeviceCategory();
|
||||
method @Nullable public java.util.List<java.lang.String> getPoint();
|
||||
method @Nullable public String getRef();
|
||||
method @Nullable public android.audio.policy.configuration.AudioStreamType getStream();
|
||||
method public void setDeviceCategory(@Nullable android.audio.policy.configuration.DeviceCategory);
|
||||
method public void setRef(@Nullable String);
|
||||
method public void setStream(@Nullable android.audio.policy.configuration.AudioStreamType);
|
||||
}
|
||||
|
||||
public class Volumes {
|
||||
ctor public Volumes();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Reference> getReference();
|
||||
method @Nullable public java.util.List<android.audio.policy.configuration.Volume> getVolume();
|
||||
}
|
||||
|
||||
public class XmlParser {
|
||||
ctor public XmlParser();
|
||||
method @Nullable public static android.audio.policy.configuration.AudioPolicyConfiguration read(@NonNull java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method @Nullable public static String readText(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method public static void skip(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1
audio/aidl/default/config/audioPolicy/api/removed.txt
Normal file
1
audio/aidl/default/config/audioPolicy/api/removed.txt
Normal file
@@ -0,0 +1 @@
|
||||
// Signature format: 2.0
|
||||
15
audio/aidl/default/config/audioPolicy/engine/Android.bp
Normal file
15
audio/aidl/default/config/audioPolicy/engine/Android.bp
Normal file
@@ -0,0 +1,15 @@
|
||||
package {
|
||||
// See: http://go/android-license-faq
|
||||
// A large-scale-change added 'default_applicable_licenses' to import
|
||||
// all of the 'license_kinds' from "hardware_interfaces_license"
|
||||
// to get the below license kinds:
|
||||
// SPDX-license-identifier-Apache-2.0
|
||||
default_applicable_licenses: ["hardware_interfaces_license"],
|
||||
}
|
||||
|
||||
xsd_config {
|
||||
name: "audio_policy_engine_configuration_aidl_default",
|
||||
srcs: ["audio_policy_engine_configuration.xsd"],
|
||||
package_name: "android.audio.policy.engine.configuration",
|
||||
nullability: true,
|
||||
}
|
||||
302
audio/aidl/default/config/audioPolicy/engine/api/current.txt
Normal file
302
audio/aidl/default/config/audioPolicy/engine/api/current.txt
Normal file
@@ -0,0 +1,302 @@
|
||||
// Signature format: 2.0
|
||||
package android.audio.policy.engine.configuration {
|
||||
|
||||
public class AttributesGroup {
|
||||
ctor public AttributesGroup();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.AttributesType> getAttributes_optional();
|
||||
method @Nullable public android.audio.policy.engine.configuration.BundleType getBundle_optional();
|
||||
method @Nullable public android.audio.policy.engine.configuration.ContentTypeType getContentType_optional();
|
||||
method @Nullable public android.audio.policy.engine.configuration.FlagsType getFlags_optional();
|
||||
method @Nullable public android.audio.policy.engine.configuration.SourceType getSource_optional();
|
||||
method @Nullable public android.audio.policy.engine.configuration.Stream getStreamType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.UsageType getUsage_optional();
|
||||
method @Nullable public String getVolumeGroup();
|
||||
method public void setBundle_optional(@Nullable android.audio.policy.engine.configuration.BundleType);
|
||||
method public void setContentType_optional(@Nullable android.audio.policy.engine.configuration.ContentTypeType);
|
||||
method public void setFlags_optional(@Nullable android.audio.policy.engine.configuration.FlagsType);
|
||||
method public void setSource_optional(@Nullable android.audio.policy.engine.configuration.SourceType);
|
||||
method public void setStreamType(@Nullable android.audio.policy.engine.configuration.Stream);
|
||||
method public void setUsage_optional(@Nullable android.audio.policy.engine.configuration.UsageType);
|
||||
method public void setVolumeGroup(@Nullable String);
|
||||
}
|
||||
|
||||
public class AttributesRef {
|
||||
ctor public AttributesRef();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.AttributesRefType> getReference();
|
||||
}
|
||||
|
||||
public class AttributesRefType {
|
||||
ctor public AttributesRefType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.AttributesType getAttributes();
|
||||
method @Nullable public String getName();
|
||||
method public void setAttributes(@Nullable android.audio.policy.engine.configuration.AttributesType);
|
||||
method public void setName(@Nullable String);
|
||||
}
|
||||
|
||||
public class AttributesType {
|
||||
ctor public AttributesType();
|
||||
method @Nullable public String getAttributesRef();
|
||||
method @Nullable public android.audio.policy.engine.configuration.BundleType getBundle();
|
||||
method @Nullable public android.audio.policy.engine.configuration.ContentTypeType getContentType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.FlagsType getFlags();
|
||||
method @Nullable public android.audio.policy.engine.configuration.SourceType getSource();
|
||||
method @Nullable public android.audio.policy.engine.configuration.UsageType getUsage();
|
||||
method public void setAttributesRef(@Nullable String);
|
||||
method public void setBundle(@Nullable android.audio.policy.engine.configuration.BundleType);
|
||||
method public void setContentType(@Nullable android.audio.policy.engine.configuration.ContentTypeType);
|
||||
method public void setFlags(@Nullable android.audio.policy.engine.configuration.FlagsType);
|
||||
method public void setSource(@Nullable android.audio.policy.engine.configuration.SourceType);
|
||||
method public void setUsage(@Nullable android.audio.policy.engine.configuration.UsageType);
|
||||
}
|
||||
|
||||
public class BundleType {
|
||||
ctor public BundleType();
|
||||
method @Nullable public String getKey();
|
||||
method @Nullable public String getValue();
|
||||
method public void setKey(@Nullable String);
|
||||
method public void setValue(@Nullable String);
|
||||
}
|
||||
|
||||
public class Configuration {
|
||||
ctor public Configuration();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.AttributesRef> getAttributesRef();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.CriteriaType> getCriteria();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.CriterionTypesType> getCriterion_types();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.ProductStrategies> getProductStrategies();
|
||||
method @Nullable public android.audio.policy.engine.configuration.Version getVersion();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.VolumeGroupsType> getVolumeGroups();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.VolumesType> getVolumes();
|
||||
method public void setVersion(@Nullable android.audio.policy.engine.configuration.Version);
|
||||
}
|
||||
|
||||
public enum ContentType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_MOVIE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_MUSIC;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_SONIFICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_SPEECH;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.ContentType AUDIO_CONTENT_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
public class ContentTypeType {
|
||||
ctor public ContentTypeType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.ContentType getValue();
|
||||
method public void setValue(@Nullable android.audio.policy.engine.configuration.ContentType);
|
||||
}
|
||||
|
||||
public class CriteriaType {
|
||||
ctor public CriteriaType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.CriterionType> getCriterion();
|
||||
}
|
||||
|
||||
public class CriterionType {
|
||||
ctor public CriterionType();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public String getType();
|
||||
method @Nullable public String get_default();
|
||||
method public void setName(@Nullable String);
|
||||
method public void setType(@Nullable String);
|
||||
method public void set_default(@Nullable String);
|
||||
}
|
||||
|
||||
public class CriterionTypeType {
|
||||
ctor public CriterionTypeType();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public android.audio.policy.engine.configuration.PfwCriterionTypeEnum getType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.ValuesType getValues();
|
||||
method public void setName(@Nullable String);
|
||||
method public void setType(@Nullable android.audio.policy.engine.configuration.PfwCriterionTypeEnum);
|
||||
method public void setValues(@Nullable android.audio.policy.engine.configuration.ValuesType);
|
||||
}
|
||||
|
||||
public class CriterionTypesType {
|
||||
ctor public CriterionTypesType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.CriterionTypeType> getCriterion_type();
|
||||
}
|
||||
|
||||
public enum DeviceCategory {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_EARPIECE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_EXT_MEDIA;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_HEADSET;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_HEARING_AID;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.DeviceCategory DEVICE_CATEGORY_SPEAKER;
|
||||
}
|
||||
|
||||
public enum FlagType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_AUDIBILITY_ENFORCED;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_BEACON;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_BYPASS_MUTE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_CAPTURE_PRIVATE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_DEEP_BUFFER;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_HW_AV_SYNC;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_HW_HOTWORD;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_LOW_LATENCY;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_MUTE_HAPTIC;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_NONE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_NO_MEDIA_PROJECTION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_NO_SYSTEM_CAPTURE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_SCO;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.FlagType AUDIO_FLAG_SECURE;
|
||||
}
|
||||
|
||||
public class FlagsType {
|
||||
ctor public FlagsType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.FlagType> getValue();
|
||||
method public void setValue(@Nullable java.util.List<android.audio.policy.engine.configuration.FlagType>);
|
||||
}
|
||||
|
||||
public enum PfwCriterionTypeEnum {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.PfwCriterionTypeEnum exclusive;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.PfwCriterionTypeEnum inclusive;
|
||||
}
|
||||
|
||||
public class ProductStrategies {
|
||||
ctor public ProductStrategies();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.ProductStrategies.ProductStrategy> getProductStrategy();
|
||||
}
|
||||
|
||||
public static class ProductStrategies.ProductStrategy {
|
||||
ctor public ProductStrategies.ProductStrategy();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.AttributesGroup> getAttributesGroup();
|
||||
method @Nullable public String getName();
|
||||
method public void setName(@Nullable String);
|
||||
}
|
||||
|
||||
public enum SourceEnumType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_CAMCORDER;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_ECHO_REFERENCE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_FM_TUNER;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_MIC;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_REMOTE_SUBMIX;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_UNPROCESSED;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_CALL;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_DOWNLINK;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_PERFORMANCE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_RECOGNITION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.SourceEnumType AUDIO_SOURCE_VOICE_UPLINK;
|
||||
}
|
||||
|
||||
public class SourceType {
|
||||
ctor public SourceType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.SourceEnumType getValue();
|
||||
method public void setValue(@Nullable android.audio.policy.engine.configuration.SourceEnumType);
|
||||
}
|
||||
|
||||
public enum Stream {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_ACCESSIBILITY;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_ALARM;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_BLUETOOTH_SCO;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_DEFAULT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_DTMF;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_ENFORCED_AUDIBLE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_MUSIC;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_NOTIFICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_RING;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_SYSTEM;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_TTS;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Stream AUDIO_STREAM_VOICE_CALL;
|
||||
}
|
||||
|
||||
public enum UsageEnumType {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ALARM;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANCE_SONIFICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_CALL_ASSISTANT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_GAME;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_MEDIA;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_EVENT;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_UNKNOWN;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VIRTUAL_SOURCE;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final android.audio.policy.engine.configuration.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING;
|
||||
}
|
||||
|
||||
public class UsageType {
|
||||
ctor public UsageType();
|
||||
method @Nullable public android.audio.policy.engine.configuration.UsageEnumType getValue();
|
||||
method public void setValue(@Nullable android.audio.policy.engine.configuration.UsageEnumType);
|
||||
}
|
||||
|
||||
public class ValueType {
|
||||
ctor public ValueType();
|
||||
method @Nullable public String getAndroid_type();
|
||||
method @Nullable public String getLiteral();
|
||||
method @Nullable public long getNumerical();
|
||||
method public void setAndroid_type(@Nullable String);
|
||||
method public void setLiteral(@Nullable String);
|
||||
method public void setNumerical(@Nullable long);
|
||||
}
|
||||
|
||||
public class ValuesType {
|
||||
ctor public ValuesType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.ValueType> getValue();
|
||||
}
|
||||
|
||||
public enum Version {
|
||||
method @NonNull public String getRawName();
|
||||
enum_constant public static final android.audio.policy.engine.configuration.Version _1_0;
|
||||
}
|
||||
|
||||
public class Volume {
|
||||
ctor public Volume();
|
||||
method @Nullable public android.audio.policy.engine.configuration.DeviceCategory getDeviceCategory();
|
||||
method @Nullable public java.util.List<java.lang.String> getPoint();
|
||||
method @Nullable public String getRef();
|
||||
method public void setDeviceCategory(@Nullable android.audio.policy.engine.configuration.DeviceCategory);
|
||||
method public void setRef(@Nullable String);
|
||||
}
|
||||
|
||||
public class VolumeGroupsType {
|
||||
ctor public VolumeGroupsType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.VolumeGroupsType.VolumeGroup> getVolumeGroup();
|
||||
}
|
||||
|
||||
public static class VolumeGroupsType.VolumeGroup {
|
||||
ctor public VolumeGroupsType.VolumeGroup();
|
||||
method @Nullable public int getIndexMax();
|
||||
method @Nullable public int getIndexMin();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.Volume> getVolume();
|
||||
method public void setIndexMax(@Nullable int);
|
||||
method public void setIndexMin(@Nullable int);
|
||||
method public void setName(@Nullable String);
|
||||
}
|
||||
|
||||
public class VolumeRef {
|
||||
ctor public VolumeRef();
|
||||
method @Nullable public String getName();
|
||||
method @Nullable public java.util.List<java.lang.String> getPoint();
|
||||
method public void setName(@Nullable String);
|
||||
}
|
||||
|
||||
public class VolumesType {
|
||||
ctor public VolumesType();
|
||||
method @Nullable public java.util.List<android.audio.policy.engine.configuration.VolumeRef> getReference();
|
||||
}
|
||||
|
||||
public class XmlParser {
|
||||
ctor public XmlParser();
|
||||
method @Nullable public static android.audio.policy.engine.configuration.Configuration read(@NonNull java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method @Nullable public static String readText(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method public static void skip(@NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
// Signature format: 2.0
|
||||
@@ -0,0 +1,418 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!-- Copyright (C) 2019 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xs:schema version="2.0"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- List the config versions supported by audio policy engine. -->
|
||||
<xs:simpleType name="version">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:enumeration value="1.0"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ProductStrategies" type="ProductStrategies" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="criterion_types" type="criterionTypesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="criteria" type="criteriaType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="volumeGroups" type="volumeGroupsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="volumes" type="volumesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="attributesRef" type="attributesRef" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="version" type="version" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:key name="volumeCurveNameKey">
|
||||
<xs:selector xpath="volumes/reference"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeCurveRef" refer="volumeCurveNameKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup"/>
|
||||
<xs:field xpath="@ref"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:key name="attributesRefNameKey">
|
||||
<xs:selector xpath="attributesRef/reference"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeGroupAttributesRef" refer="attributesRefNameKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup/volume"/>
|
||||
<xs:field xpath="@attributesRef"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="ProductStrategyAttributesRef" refer="attributesRefNameKey">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy/Attributes"/>
|
||||
<xs:field xpath="@attributesRef"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:unique name="productStrategyNameUniqueness">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:unique>
|
||||
|
||||
<!-- ensure validity of volume group referred in product strategy-->
|
||||
<xs:key name="volumeGroupKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup/name"/>
|
||||
<xs:field xpath="."/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeGroupRef" refer="volumeGroupKey">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy/AttributesGroup"/>
|
||||
<xs:field xpath="@volumeGroup"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:unique name="volumeTargetUniqueness">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup"/>
|
||||
<xs:field xpath="@name"/>
|
||||
<xs:field xpath="@deviceCategory"/>
|
||||
</xs:unique>
|
||||
|
||||
<!-- ensure validity of criterion type referred in criterion-->
|
||||
<xs:key name="criterionTypeKey">
|
||||
<xs:selector xpath="criterion_types/criterion_type"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="criterionTypeKeyRef" refer="criterionTypeKey">
|
||||
<xs:selector xpath="criteria/criterion"/>
|
||||
<xs:field xpath="@type"/>
|
||||
</xs:keyref>
|
||||
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="ProductStrategies">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="ProductStrategy" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="AttributesGroup" type="AttributesGroup" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="AttributesGroup">
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Usage" type="UsageType" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="streamType" type="stream" use="optional"/>
|
||||
<xs:attribute name="volumeGroup" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumeGroupsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="volumeGroup" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:token"/>
|
||||
<xs:element name="indexMin" type="xs:int" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="indexMax" type="xs:int" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="volume" type="volume" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="volumeAttributesUniqueness">
|
||||
<xs:selector xpath="volume"/>
|
||||
<xs:field xpath="deviceCategory"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="reference" type="volumeRef" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="attributesRef">
|
||||
<xs:sequence>
|
||||
<xs:element name="reference" type="attributesRefType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="criteriaType">
|
||||
<xs:sequence>
|
||||
<xs:element name="criterion" type="criterionType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="criterionType">
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="type" type="xs:string" use="required"/>
|
||||
<xs:attribute name="default" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="criterionTypesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="criterion_type" type="criterionTypeType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="criterionTypeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="values" type="valuesType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
<xs:attribute name="type" type="pfwCriterionTypeEnum" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="valuesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="valueType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="valueType">
|
||||
<xs:attribute name="literal" type="xs:string" use="required"/>
|
||||
<xs:attribute name="numerical" type="xs:long" use="required"/>
|
||||
<xs:attribute name="android_type" type="longDecimalOrHexType" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="longDecimalOrHexType">
|
||||
<xs:union memberTypes="xs:long longHexType" />
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="longHexType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="0x[0-9A-Fa-f]{1,16}"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="attributesRefType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="AttributesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Usage" type="UsageType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="attributesRef" type="xs:token" use="optional"/>
|
||||
<!-- with xsd 1.1, it is impossible to make choice on either attributes or element...-->
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ContentTypeType">
|
||||
<xs:attribute name="value" type="contentType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UsageType">
|
||||
<xs:attribute name="value" type="usageEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SourceType">
|
||||
<xs:attribute name="value" type="sourceEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FlagsType">
|
||||
<xs:attribute name="value" type="flagsEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BundleType">
|
||||
<xs:attribute name="key" type="xs:string" use="required"/>
|
||||
<xs:attribute name="value" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volume">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Volume section defines a volume curve for a given use case and device category.
|
||||
It contains a list of points of this curve expressing the attenuation in Millibels
|
||||
for a given volume index from 0 to 100.
|
||||
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER">
|
||||
<point>0,-9600</point>
|
||||
<point>100,0</point>
|
||||
</volume>
|
||||
|
||||
It may also reference a reference/@name to avoid duplicating curves.
|
||||
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
|
||||
<reference name="DEFAULT_MEDIA_VOLUME_CURVE">
|
||||
<point>0,-9600</point>
|
||||
<point>100,0</point>
|
||||
</reference>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="point" type="volumePoint" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="deviceCategory" type="deviceCategory"/>
|
||||
<xs:attribute name="ref" type="xs:token" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumeRef">
|
||||
<xs:sequence>
|
||||
<xs:element name="point" type="volumePoint" minOccurs="2" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="volumePoint">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Comma separated pair of number.
|
||||
The fist one is the framework level (between 0 and 100).
|
||||
The second one is the volume to send to the HAL.
|
||||
The framework will interpolate volumes not specified.
|
||||
Their MUST be at least 2 points specified.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([0-9]{1,2}|100),-?[0-9]+"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
|
||||
<xs:simpleType name="streamsCsv">
|
||||
<xs:list>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="stream">
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:list>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- Enum values of audio_stream_type_t in audio-base.h
|
||||
TODO: avoid manual sync. -->
|
||||
<xs:simpleType name="stream">
|
||||
<xs:restriction base="xs:NMTOKEN">
|
||||
<!--xs:pattern value="\c+(,\c+)*"/-->
|
||||
<xs:enumeration value="AUDIO_STREAM_DEFAULT"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_VOICE_CALL"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_SYSTEM"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_RING"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_MUSIC"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ALARM"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_NOTIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_BLUETOOTH_SCO"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ENFORCED_AUDIBLE"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_DTMF"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_TTS"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ACCESSIBILITY"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ASSISTANT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="deviceCategory">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEVICE_CATEGORY_HEADSET"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_SPEAKER"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_EARPIECE"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_EXT_MEDIA"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_HEARING_AID"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="contentType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_UNKNOWN"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_SPEECH"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_MUSIC"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_MOVIE"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_SONIFICATION"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="usageEnumType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_USAGE_UNKNOWN"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_MEDIA"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ALARM"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE"/>
|
||||
<!-- Note: the following 3 values were deprecated in Android T (13) SDK -->
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_EVENT"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_SONIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_GAME"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VIRTUAL_SOURCE"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANT"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_CALL_ASSISTANT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="flagsEnumType">
|
||||
<xs:list>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="flagType">
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:list>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="flagType">
|
||||
<xs:restriction base="xs:NMTOKEN">
|
||||
<xs:enumeration value="AUDIO_FLAG_NONE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_AUDIBILITY_ENFORCED"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_SECURE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_SCO"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BEACON"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_HW_AV_SYNC"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_HW_HOTWORD"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BYPASS_MUTE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_LOW_LATENCY"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_DEEP_BUFFER"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_NO_MEDIA_PROJECTION"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_MUTE_HAPTIC"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_NO_SYSTEM_CAPTURE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_CAPTURE_PRIVATE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="sourceEnumType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_SOURCE_DEFAULT"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_MIC"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_UPLINK"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_DOWNLINK"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_CALL"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_CAMCORDER"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_RECOGNITION"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_COMMUNICATION"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_REMOTE_SUBMIX"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_UNPROCESSED"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_PERFORMANCE"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_ECHO_REFERENCE"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_FM_TUNER"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="pfwCriterionTypeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="inclusive"/>
|
||||
<xs:enumeration value="exclusive"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <aidl/android/media/audio/common/AudioHalEngineConfig.h>
|
||||
#include <android_audio_policy_configuration.h>
|
||||
#include <android_audio_policy_configuration_enums.h>
|
||||
|
||||
#include "core-impl/XmlConverter.h"
|
||||
|
||||
namespace aidl::android::hardware::audio::core::internal {
|
||||
|
||||
class AudioPolicyConfigXmlConverter {
|
||||
public:
|
||||
explicit AudioPolicyConfigXmlConverter(const std::string& configFilePath)
|
||||
: mConverter(configFilePath, &::android::audio::policy::configuration::read) {}
|
||||
|
||||
std::string getError() const { return mConverter.getError(); }
|
||||
::android::status_t getStatus() const { return mConverter.getStatus(); }
|
||||
|
||||
const ::aidl::android::media::audio::common::AudioHalEngineConfig& getAidlEngineConfig();
|
||||
|
||||
private:
|
||||
const std::optional<::android::audio::policy::configuration::AudioPolicyConfiguration>&
|
||||
getXsdcConfig() const {
|
||||
return mConverter.getXsdcConfig();
|
||||
}
|
||||
void addVolumeGroupstoEngineConfig();
|
||||
void mapStreamToVolumeCurve(
|
||||
const ::android::audio::policy::configuration::Volume& xsdcVolumeCurve);
|
||||
void mapStreamsToVolumeCurves();
|
||||
void parseVolumes();
|
||||
::aidl::android::media::audio::common::AudioHalVolumeCurve::CurvePoint convertCurvePointToAidl(
|
||||
const std::string& xsdcCurvePoint);
|
||||
|
||||
::aidl::android::media::audio::common::AudioHalVolumeCurve convertVolumeCurveToAidl(
|
||||
const ::android::audio::policy::configuration::Volume& xsdcVolumeCurve);
|
||||
|
||||
::aidl::android::media::audio::common::AudioHalEngineConfig mAidlEngineConfig;
|
||||
XmlConverter<::android::audio::policy::configuration::AudioPolicyConfiguration> mConverter;
|
||||
std::unordered_map<std::string, ::android::audio::policy::configuration::Reference>
|
||||
mVolumesReferenceMap;
|
||||
std::unordered_map<::android::audio::policy::configuration::AudioStreamType,
|
||||
std::vector<::aidl::android::media::audio::common::AudioHalVolumeCurve>>
|
||||
mStreamToVolumeCurvesMap;
|
||||
};
|
||||
|
||||
} // namespace aidl::android::hardware::audio::core::internal
|
||||
@@ -17,11 +17,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <aidl/android/hardware/audio/core/BnConfig.h>
|
||||
#include <system/audio_config.h>
|
||||
|
||||
#include "AudioPolicyConfigXmlConverter.h"
|
||||
#include "EngineConfigXmlConverter.h"
|
||||
|
||||
namespace aidl::android::hardware::audio::core {
|
||||
static const std::string kEngineConfigFileName = "audio_policy_engine_configuration.xml";
|
||||
|
||||
class Config : public BnConfig {
|
||||
ndk::ScopedAStatus getSurroundSoundConfig(SurroundSoundConfig* _aidl_return) override;
|
||||
ndk::ScopedAStatus getEngineConfig(
|
||||
aidl::android::media::audio::common::AudioHalEngineConfig* _aidl_return) override;
|
||||
internal::AudioPolicyConfigXmlConverter mAudioPolicyConverter{
|
||||
::android::audio_get_audio_policy_config_file()};
|
||||
internal::EngineConfigXmlConverter mEngConfigConverter{
|
||||
::android::audio_find_readable_configuration_file(kEngineConfigFileName.c_str())};
|
||||
};
|
||||
|
||||
} // namespace aidl::android::hardware::audio::core
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <utils/Errors.h>
|
||||
|
||||
#include <android_audio_policy_engine_configuration.h>
|
||||
#include <android_audio_policy_engine_configuration_enums.h>
|
||||
|
||||
#include "core-impl/XmlConverter.h"
|
||||
|
||||
namespace aidl::android::hardware::audio::core::internal {
|
||||
|
||||
class EngineConfigXmlConverter {
|
||||
public:
|
||||
explicit EngineConfigXmlConverter(const std::string& configFilePath)
|
||||
: mConverter(configFilePath, &::android::audio::policy::engine::configuration::read) {
|
||||
if (mConverter.getXsdcConfig()) {
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
std::string getError() const { return mConverter.getError(); }
|
||||
::android::status_t getStatus() const { return mConverter.getStatus(); }
|
||||
|
||||
::aidl::android::media::audio::common::AudioHalEngineConfig& getAidlEngineConfig();
|
||||
|
||||
private:
|
||||
const std::optional<::android::audio::policy::engine::configuration::Configuration>&
|
||||
getXsdcConfig() {
|
||||
return mConverter.getXsdcConfig();
|
||||
}
|
||||
void init();
|
||||
void initProductStrategyMap();
|
||||
::aidl::android::media::audio::common::AudioAttributes convertAudioAttributesToAidl(
|
||||
const ::android::audio::policy::engine::configuration::AttributesType&
|
||||
xsdcAudioAttributes);
|
||||
::aidl::android::media::audio::common::AudioHalAttributesGroup convertAttributesGroupToAidl(
|
||||
const ::android::audio::policy::engine::configuration::AttributesGroup&
|
||||
xsdcAttributesGroup);
|
||||
::aidl::android::media::audio::common::AudioHalCapCriterion convertCapCriterionToAidl(
|
||||
const ::android::audio::policy::engine::configuration::CriterionType& xsdcCriterion);
|
||||
::aidl::android::media::audio::common::AudioHalCapCriterionType convertCapCriterionTypeToAidl(
|
||||
const ::android::audio::policy::engine::configuration::CriterionTypeType&
|
||||
xsdcCriterionType);
|
||||
std::string convertCriterionTypeValueToAidl(
|
||||
const ::android::audio::policy::engine::configuration::ValueType&
|
||||
xsdcCriterionTypeValue);
|
||||
::aidl::android::media::audio::common::AudioHalVolumeCurve::CurvePoint convertCurvePointToAidl(
|
||||
const std::string& xsdcCurvePoint);
|
||||
::aidl::android::media::audio::common::AudioHalProductStrategy convertProductStrategyToAidl(
|
||||
const ::android::audio::policy::engine::configuration::ProductStrategies::
|
||||
ProductStrategy& xsdcProductStrategy);
|
||||
int convertProductStrategyNameToAidl(const std::string& xsdcProductStrategyName);
|
||||
::aidl::android::media::audio::common::AudioHalVolumeCurve convertVolumeCurveToAidl(
|
||||
const ::android::audio::policy::engine::configuration::Volume& xsdcVolumeCurve);
|
||||
::aidl::android::media::audio::common::AudioHalVolumeGroup convertVolumeGroupToAidl(
|
||||
const ::android::audio::policy::engine::configuration::VolumeGroupsType::VolumeGroup&
|
||||
xsdcVolumeGroup);
|
||||
|
||||
::aidl::android::media::audio::common::AudioHalEngineConfig mAidlEngineConfig;
|
||||
XmlConverter<::android::audio::policy::engine::configuration::Configuration> mConverter;
|
||||
std::unordered_map<std::string,
|
||||
::android::audio::policy::engine::configuration::AttributesRefType>
|
||||
mAttributesReferenceMap;
|
||||
std::unordered_map<std::string, ::android::audio::policy::engine::configuration::VolumeRef>
|
||||
mVolumesReferenceMap;
|
||||
std::unordered_map<std::string, int> mProductStrategyMap;
|
||||
int mNextVendorStrategy = ::aidl::android::media::audio::common::AudioHalProductStrategy::
|
||||
VENDOR_STRATEGY_ID_START;
|
||||
std::optional<int> mDefaultProductStrategyId;
|
||||
};
|
||||
|
||||
} // namespace aidl::android::hardware::audio::core::internal
|
||||
142
audio/aidl/default/include/core-impl/XmlConverter.h
Normal file
142
audio/aidl/default/include/core-impl/XmlConverter.h
Normal file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <system/audio_config.h>
|
||||
#include <utils/Errors.h>
|
||||
|
||||
namespace aidl::android::hardware::audio::core::internal {
|
||||
|
||||
template <typename T>
|
||||
class XmlConverter {
|
||||
public:
|
||||
XmlConverter(const std::string& configFilePath,
|
||||
std::function<std::optional<T>(const char*)> readXmlConfig)
|
||||
: XmlConverter(configFilePath,
|
||||
::android::audio_is_readable_configuration_file(configFilePath.c_str()),
|
||||
readXmlConfig) {}
|
||||
|
||||
const ::android::status_t& getStatus() const { return mStatus; }
|
||||
|
||||
const std::string& getError() const { return mErrorMessage; }
|
||||
|
||||
const std::optional<T>& getXsdcConfig() const { return mXsdcConfig; }
|
||||
|
||||
private:
|
||||
XmlConverter(const std::string& configFilePath, const bool& isReadableConfigFile,
|
||||
const std::function<std::optional<T>(const char*)>& readXmlConfig)
|
||||
: mXsdcConfig{isReadableConfigFile ? readXmlConfig(configFilePath.c_str()) : std::nullopt},
|
||||
mStatus(mXsdcConfig ? ::android::OK : ::android::NO_INIT),
|
||||
mErrorMessage(generateError(configFilePath, isReadableConfigFile, mStatus)) {}
|
||||
|
||||
static std::string generateError(const std::string& configFilePath,
|
||||
const bool& isReadableConfigFile,
|
||||
const ::android::status_t& status) {
|
||||
std::string errorMessage;
|
||||
if (status != ::android::OK) {
|
||||
if (!isReadableConfigFile) {
|
||||
errorMessage = "Could not read requested config file:" + configFilePath;
|
||||
} else {
|
||||
errorMessage = "Invalid config file: " + configFilePath;
|
||||
}
|
||||
}
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
const std::optional<T> mXsdcConfig;
|
||||
const ::android::status_t mStatus;
|
||||
const std::string mErrorMessage;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts a vector of an xsd wrapper type to a flat vector of the
|
||||
* corresponding AIDL type.
|
||||
*
|
||||
* Wrapper types are used in order to have well-formed xIncludes. In the
|
||||
* example below, Modules is the wrapper type for Module.
|
||||
* <Modules>
|
||||
* <Module> ... </Module>
|
||||
* <Module> ... </Module>
|
||||
* </Modules>
|
||||
*/
|
||||
template <typename W, typename X, typename A>
|
||||
static std::vector<A> convertWrappedCollectionToAidl(
|
||||
const std::vector<W>& xsdcWrapperTypeVec,
|
||||
std::function<const std::vector<X>&(const W&)> getInnerTypeVec,
|
||||
std::function<A(const X&)> convertToAidl) {
|
||||
std::vector<A> resultAidlTypeVec;
|
||||
if (!xsdcWrapperTypeVec.empty()) {
|
||||
/*
|
||||
* xsdcWrapperTypeVec likely only contains one element; that is, it's
|
||||
* likely that all the inner types that we need to convert are inside of
|
||||
* xsdcWrapperTypeVec[0].
|
||||
*/
|
||||
resultAidlTypeVec.reserve(getInnerTypeVec(xsdcWrapperTypeVec[0]).size());
|
||||
for (const W& xsdcWrapperType : xsdcWrapperTypeVec) {
|
||||
std::transform(getInnerTypeVec(xsdcWrapperType).begin(),
|
||||
getInnerTypeVec(xsdcWrapperType).end(),
|
||||
std::back_inserter(resultAidlTypeVec), convertToAidl);
|
||||
}
|
||||
}
|
||||
return resultAidlTypeVec;
|
||||
}
|
||||
|
||||
template <typename X, typename A>
|
||||
static std::vector<A> convertCollectionToAidl(const std::vector<X>& xsdcTypeVec,
|
||||
std::function<A(const X&)> convertToAidl) {
|
||||
std::vector<A> resultAidlTypeVec;
|
||||
resultAidlTypeVec.reserve(xsdcTypeVec.size());
|
||||
std::transform(xsdcTypeVec.begin(), xsdcTypeVec.end(), std::back_inserter(resultAidlTypeVec),
|
||||
convertToAidl);
|
||||
return resultAidlTypeVec;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a map of xsd references, keyed by reference name, given a
|
||||
* vector of wrapper types for the reference.
|
||||
*
|
||||
* Wrapper types are used in order to have well-formed xIncludes. In the
|
||||
* example below, Wrapper is the wrapper type for Reference.
|
||||
* <Wrapper>
|
||||
* <Reference> ... </Reference>
|
||||
* <Reference> ... </Reference>
|
||||
* </Wrapper>
|
||||
*/
|
||||
template <typename W, typename R>
|
||||
static std::unordered_map<std::string, R> generateReferenceMap(
|
||||
const std::vector<W>& xsdcWrapperTypeVec) {
|
||||
std::unordered_map<std::string, R> resultMap;
|
||||
if (!xsdcWrapperTypeVec.empty()) {
|
||||
/*
|
||||
* xsdcWrapperTypeVec likely only contains one element; that is, it's
|
||||
* likely that all the inner types that we need to convert are inside of
|
||||
* xsdcWrapperTypeVec[0].
|
||||
*/
|
||||
resultMap.reserve(xsdcWrapperTypeVec[0].getReference().size());
|
||||
for (const W& xsdcWrapperType : xsdcWrapperTypeVec) {
|
||||
for (const R& xsdcReference : xsdcWrapperType.getReference()) {
|
||||
resultMap.insert({xsdcReference.getName(), xsdcReference});
|
||||
}
|
||||
}
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
} // namespace aidl::android::hardware::audio::core::internal
|
||||
@@ -17,14 +17,14 @@
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
|
||||
#include "core-impl/Config.h"
|
||||
#include "core-impl/Module.h"
|
||||
|
||||
#include <android-base/logging.h>
|
||||
#include <android/binder_ibinder_platform.h>
|
||||
#include <android/binder_manager.h>
|
||||
#include <android/binder_process.h>
|
||||
|
||||
#include "core-impl/Config.h"
|
||||
#include "core-impl/Module.h"
|
||||
|
||||
using aidl::android::hardware::audio::core::Config;
|
||||
using aidl::android::hardware::audio::core::Module;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user