Add AudioAttributes and AudioFlag for use in HAL interface for engine configuration.
This requires a version bump to android.media.audio.common.types. cc_defaults and java_defaults are used in order to avoid explicitly updating version references in several Android.bp files when we do future version bumps. Test: m Merged-In: I481d4b4e7b4f1302d508ab6eb2c7ed4336a8f801 Change-Id: I481d4b4e7b4f1302d508ab6eb2c7ed4336a8f801 (cherry picked from commit 6088f4b7bb3d3f569328b7c332dd7bce0dcedbed)
This commit is contained in:
parent
2e933599ed
commit
4cd3884564
@ -255,7 +255,10 @@ filegroup {
|
||||
|
||||
java_defaults {
|
||||
name: "framework-minus-apex-defaults",
|
||||
defaults: ["framework-aidl-export-defaults"],
|
||||
defaults: [
|
||||
"framework-aidl-export-defaults",
|
||||
"latest_android_hardware_soundtrigger3_java_static",
|
||||
],
|
||||
srcs: [
|
||||
":framework-non-updatable-sources",
|
||||
"core/java/**/*.logtags",
|
||||
@ -312,8 +315,6 @@ java_defaults {
|
||||
sdk_version: "core_platform",
|
||||
static_libs: [
|
||||
"android.hardware.common.fmq-V1-java",
|
||||
// TODO(b/184162091)
|
||||
"android.hardware.soundtrigger3-V1-java",
|
||||
"bouncycastle-repackaged-unbundled",
|
||||
"framework-internal-utils",
|
||||
// If MimeMap ever becomes its own APEX, then this dependency would need to be removed
|
||||
|
@ -80,6 +80,10 @@ cc_library_shared {
|
||||
"include",
|
||||
],
|
||||
|
||||
defaults: [
|
||||
"latest_android_media_audio_common_types_cpp_target_shared",
|
||||
],
|
||||
|
||||
target: {
|
||||
android: {
|
||||
srcs: [
|
||||
@ -243,7 +247,6 @@ cc_library_shared {
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"android.media.audio.common.types-V1-cpp",
|
||||
"audioclient-types-aidl-cpp",
|
||||
"audioflinger-aidl-cpp",
|
||||
"audiopolicy-types-aidl-cpp",
|
||||
|
@ -35,8 +35,8 @@ aidl_interface {
|
||||
"aidl/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl",
|
||||
],
|
||||
imports: [
|
||||
"android.media.audio.common.types-V1",
|
||||
"android.media.soundtrigger.types-V1",
|
||||
"android.media.audio.common.types",
|
||||
"android.media.soundtrigger.types",
|
||||
"media_permission-aidl",
|
||||
],
|
||||
}
|
||||
@ -52,6 +52,7 @@ aidl_interface {
|
||||
],
|
||||
local_include_dir: "aidl",
|
||||
srcs: [
|
||||
"aidl/android/media/audio/common/AudioAttributes.aidl",
|
||||
"aidl/android/media/audio/common/AudioChannelLayout.aidl",
|
||||
"aidl/android/media/audio/common/AudioConfig.aidl",
|
||||
"aidl/android/media/audio/common/AudioConfigBase.aidl",
|
||||
@ -63,6 +64,7 @@ aidl_interface {
|
||||
"aidl/android/media/audio/common/AudioEncapsulationMetadataType.aidl",
|
||||
"aidl/android/media/audio/common/AudioEncapsulationMode.aidl",
|
||||
"aidl/android/media/audio/common/AudioEncapsulationType.aidl",
|
||||
"aidl/android/media/audio/common/AudioFlag.aidl",
|
||||
"aidl/android/media/audio/common/AudioFormatDescription.aidl",
|
||||
"aidl/android/media/audio/common/AudioFormatType.aidl",
|
||||
"aidl/android/media/audio/common/AudioGain.aidl",
|
||||
@ -122,10 +124,77 @@ aidl_interface {
|
||||
version: "1",
|
||||
imports: [],
|
||||
},
|
||||
// IMPORTANT: Update latest_android_media_audio_common_types every time
|
||||
// you add the latest frozen version to versions_with_info
|
||||
],
|
||||
|
||||
}
|
||||
|
||||
// Note: This should always be one version ahead of the last frozen version
|
||||
latest_android_media_audio_common_types = "android.media.audio.common.types-V2"
|
||||
|
||||
// Modules that depend on android.media.audio.common.types directly can include
|
||||
// the following cc_defaults to avoid explicitly managing dependency versions
|
||||
// across many scattered files.
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_cpp_shared",
|
||||
shared_libs: [
|
||||
latest_android_media_audio_common_types + "-cpp",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_cpp_export_shared",
|
||||
defaults: [
|
||||
"latest_android_media_audio_common_types_cpp_shared",
|
||||
],
|
||||
export_shared_lib_headers: [
|
||||
latest_android_media_audio_common_types + "-cpp",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_cpp_static",
|
||||
static_libs: [
|
||||
latest_android_media_audio_common_types + "-cpp",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_cpp_export_static",
|
||||
defaults: [
|
||||
"latest_android_media_audio_common_types_cpp_static",
|
||||
],
|
||||
export_static_lib_headers: [
|
||||
latest_android_media_audio_common_types + "-cpp",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_ndk_shared",
|
||||
shared_libs: [
|
||||
latest_android_media_audio_common_types + "-ndk",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_ndk_static",
|
||||
static_libs: [
|
||||
latest_android_media_audio_common_types + "-ndk",
|
||||
],
|
||||
}
|
||||
|
||||
cc_defaults {
|
||||
name: "latest_android_media_audio_common_types_cpp_target_shared",
|
||||
target: {
|
||||
android: {
|
||||
shared_libs: [
|
||||
latest_android_media_audio_common_types + "-cpp",
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
aidl_interface {
|
||||
name: "android.media.soundtrigger.types",
|
||||
vendor_available: true,
|
||||
|
59
media/aidl/android/media/audio/common/AudioAttributes.aidl
Normal file
59
media/aidl/android/media/audio/common/AudioAttributes.aidl
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package android.media.audio.common;
|
||||
|
||||
import android.media.audio.common.AudioContentType;
|
||||
import android.media.audio.common.AudioFlag;
|
||||
import android.media.audio.common.AudioSource;
|
||||
import android.media.audio.common.AudioUsage;
|
||||
|
||||
/**
|
||||
* AudioAttributes give information about an audio stream that is more
|
||||
* descriptive than stream type alone.
|
||||
*/
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
@VintfStability
|
||||
parcelable AudioAttributes {
|
||||
/**
|
||||
* Classifies the content of the audio signal using categories such as
|
||||
* speech or music
|
||||
*/
|
||||
AudioContentType contentType = AudioContentType.UNKNOWN;
|
||||
/**
|
||||
* Classifies the intended use of the audio signal using categories such as
|
||||
* alarm or ringtone
|
||||
*/
|
||||
AudioUsage usage = AudioUsage.UNKNOWN;
|
||||
/**
|
||||
* Classifies the audio source using categories such as voice uplink or
|
||||
* remote submix
|
||||
*/
|
||||
AudioSource source = AudioSource.DEFAULT;
|
||||
/**
|
||||
* Bitmask describing how playback is to be affected.
|
||||
*/
|
||||
int flags = AudioFlag.NONE;
|
||||
/**
|
||||
* Tag is an additional use case qualifier complementing AudioUsage and
|
||||
* AudioContentType. Tags are set by vendor-specific applications and must
|
||||
* be prefixed by "VX_". Vendors must namespace their tag names using the
|
||||
* name of their company to avoid conflicts. The namespace must use at least
|
||||
* three characters, and must go directly after the "VX_" prefix.
|
||||
* For example: "VX_MYCOMPANY_VR".
|
||||
*/
|
||||
@utf8InCpp String[] tags;
|
||||
}
|
116
media/aidl/android/media/audio/common/AudioFlag.aidl
Normal file
116
media/aidl/android/media/audio/common/AudioFlag.aidl
Normal file
@ -0,0 +1,116 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package android.media.audio.common;
|
||||
|
||||
/**
|
||||
* Defines the audio flags that are used in AudioAttributes
|
||||
*/
|
||||
@Backing(type="int")
|
||||
@VintfStability
|
||||
enum AudioFlag {
|
||||
NONE = 0x0,
|
||||
/**
|
||||
* Flag defining a behavior where the audibility of the sound will be
|
||||
* ensured by the system. To ensure sound audibility, the system only uses
|
||||
* built-in speakers or wired headphones and specifically excludes wireless
|
||||
* audio devices. Note this flag should only be used for sounds subject to
|
||||
* regulatory behaviors in some countries, such as for camera shutter sound,
|
||||
* and not for routing behaviors.
|
||||
*/
|
||||
AUDIBILITY_ENFORCED = 0x1 << 0,
|
||||
/**
|
||||
* Skipping 0x1 << 1. This was previously used for SECURE flag, but because
|
||||
* the security feature was never implemented using this flag, and the flag
|
||||
* was never made public, this value may be used for another flag.
|
||||
*/
|
||||
/**
|
||||
* Flag to enable when the stream is associated with SCO usage.
|
||||
* Internal use only for dealing with legacy STREAM_BLUETOOTH_SCO
|
||||
*/
|
||||
SCO = 0x1 << 2,
|
||||
/**
|
||||
* Flag defining a behavior where the system ensures that the playback of
|
||||
* the sound will be compatible with its use as a broadcast for surrounding
|
||||
* people and/or devices. Ensures audibility with no or minimal
|
||||
* post-processing applied.
|
||||
*/
|
||||
BEACON = 0x1 << 3,
|
||||
/**
|
||||
* Flag requesting the use of an output stream supporting hardware A/V
|
||||
* synchronization.
|
||||
*/
|
||||
HW_AV_SYNC = 0x1 << 4,
|
||||
/**
|
||||
* Flag requesting capture from the source used for hardware hotword
|
||||
* detection. To be used with capture preset MediaRecorder.AudioSource
|
||||
* HOTWORD or MediaRecorder.AudioSource.VOICE_RECOGNITION.
|
||||
*/
|
||||
HW_HOTWORD = 0x1 << 5,
|
||||
/**
|
||||
* Flag requesting audible playback even under limited interruptions.
|
||||
*/
|
||||
BYPASS_INTERRUPTION_POLICY = 0x1 << 6,
|
||||
/**
|
||||
* Flag requesting audible playback even when the underlying stream is muted
|
||||
*/
|
||||
BYPASS_MUTE = 0x1 << 7,
|
||||
/**
|
||||
* Flag requesting a low latency path when creating an AudioTrack.
|
||||
* When using this flag, the sample rate must match the native sample rate
|
||||
* of the device. Effects processing is also unavailable.
|
||||
*/
|
||||
LOW_LATENCY = 0x1 << 8,
|
||||
/**
|
||||
* Flag requesting a deep buffer path when creating an AudioTrack.
|
||||
*
|
||||
* A deep buffer path, if available, may consume less power and is
|
||||
* suitable for media playback where latency is not a concern.
|
||||
*/
|
||||
DEEP_BUFFER = 0x1 << 9,
|
||||
/**
|
||||
* Flag specifying that the audio shall not be captured by third-party apps
|
||||
* with a MediaProjection.
|
||||
*/
|
||||
NO_MEDIA_PROJECTION = 0x1 << 10,
|
||||
/**
|
||||
* Flag indicating force muting haptic channels.
|
||||
*/
|
||||
MUTE_HAPTIC = 0x1 << 11,
|
||||
/**
|
||||
* Flag specifying that the audio shall not be captured by any apps, not
|
||||
* even system apps.
|
||||
*/
|
||||
NO_SYSTEM_CAPTURE = 0x1 << 12,
|
||||
/**
|
||||
* Flag requesting private audio capture.
|
||||
*/
|
||||
CAPTURE_PRIVATE = 0x1 << 13,
|
||||
/**
|
||||
* Flag indicating the audio content has been processed to provide a virtual
|
||||
* multichannel audio experience.
|
||||
*/
|
||||
CONTENT_SPATIALIZED = 0x1 << 14,
|
||||
/**
|
||||
* Flag indicating the audio content is never to be spatialized.
|
||||
*/
|
||||
NEVER_SPATIALIZE = 0x1 << 15,
|
||||
/**
|
||||
* Flag indicating the audio is part of a call redirection.
|
||||
* Valid for playback and capture.
|
||||
*/
|
||||
CALL_REDIRECTION = 0x1 << 16,
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.media.audio.common;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable AudioAttributes {
|
||||
android.media.audio.common.AudioContentType contentType = android.media.audio.common.AudioContentType.UNKNOWN;
|
||||
android.media.audio.common.AudioUsage usage = android.media.audio.common.AudioUsage.UNKNOWN;
|
||||
android.media.audio.common.AudioSource source = android.media.audio.common.AudioSource.DEFAULT;
|
||||
int flags = 0;
|
||||
@utf8InCpp String[] tags;
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.media.audio.common;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AudioFlag {
|
||||
NONE = 0,
|
||||
AUDIBILITY_ENFORCED = 1,
|
||||
SCO = 4,
|
||||
BEACON = 8,
|
||||
HW_AV_SYNC = 16,
|
||||
HW_HOTWORD = 32,
|
||||
BYPASS_INTERRUPTION_POLICY = 64,
|
||||
BYPASS_MUTE = 128,
|
||||
LOW_LATENCY = 256,
|
||||
DEEP_BUFFER = 512,
|
||||
NO_MEDIA_PROJECTION = 1024,
|
||||
MUTE_HAPTIC = 2048,
|
||||
NO_SYSTEM_CAPTURE = 4096,
|
||||
CAPTURE_PRIVATE = 8192,
|
||||
CONTENT_SPATIALIZED = 16384,
|
||||
NEVER_SPATIALIZE = 32768,
|
||||
CALL_REDIRECTION = 65536,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user