Merge "audio: Add fields belonged to APM XSD schema to HAL structs"
diff --git a/media/libaudioclient/AidlConversion.cpp b/media/libaudioclient/AidlConversion.cpp
index 5f63a69..fad861a 100644
--- a/media/libaudioclient/AidlConversion.cpp
+++ b/media/libaudioclient/AidlConversion.cpp
@@ -50,8 +50,12 @@
using media::audio::common::AudioGain;
using media::audio::common::AudioGainConfig;
using media::audio::common::AudioGainMode;
+using media::audio::common::AudioInputFlags;
+using media::audio::common::AudioIoFlags;
using media::audio::common::AudioMode;
using media::audio::common::AudioOffloadInfo;
+using media::audio::common::AudioOutputFlags;
+using media::audio::common::AudioPortDeviceExt;
using media::audio::common::AudioPortExt;
using media::audio::common::AudioPortMixExt;
using media::audio::common::AudioPortMixExtUseCase;
@@ -1281,129 +1285,129 @@
}
ConversionResult<audio_input_flags_t> aidl2legacy_AudioInputFlags_audio_input_flags_t(
- media::AudioInputFlags aidl) {
+ AudioInputFlags aidl) {
switch (aidl) {
- case media::AudioInputFlags::FAST:
+ case AudioInputFlags::FAST:
return AUDIO_INPUT_FLAG_FAST;
- case media::AudioInputFlags::HW_HOTWORD:
+ case AudioInputFlags::HW_HOTWORD:
return AUDIO_INPUT_FLAG_HW_HOTWORD;
- case media::AudioInputFlags::RAW:
+ case AudioInputFlags::RAW:
return AUDIO_INPUT_FLAG_RAW;
- case media::AudioInputFlags::SYNC:
+ case AudioInputFlags::SYNC:
return AUDIO_INPUT_FLAG_SYNC;
- case media::AudioInputFlags::MMAP_NOIRQ:
+ case AudioInputFlags::MMAP_NOIRQ:
return AUDIO_INPUT_FLAG_MMAP_NOIRQ;
- case media::AudioInputFlags::VOIP_TX:
+ case AudioInputFlags::VOIP_TX:
return AUDIO_INPUT_FLAG_VOIP_TX;
- case media::AudioInputFlags::HW_AV_SYNC:
+ case AudioInputFlags::HW_AV_SYNC:
return AUDIO_INPUT_FLAG_HW_AV_SYNC;
- case media::AudioInputFlags::DIRECT:
+ case AudioInputFlags::DIRECT:
return AUDIO_INPUT_FLAG_DIRECT;
}
return unexpected(BAD_VALUE);
}
-ConversionResult<media::AudioInputFlags> legacy2aidl_audio_input_flags_t_AudioInputFlags(
+ConversionResult<AudioInputFlags> legacy2aidl_audio_input_flags_t_AudioInputFlags(
audio_input_flags_t legacy) {
switch (legacy) {
case AUDIO_INPUT_FLAG_NONE:
break; // shouldn't get here. must be listed -Werror,-Wswitch
case AUDIO_INPUT_FLAG_FAST:
- return media::AudioInputFlags::FAST;
+ return AudioInputFlags::FAST;
case AUDIO_INPUT_FLAG_HW_HOTWORD:
- return media::AudioInputFlags::HW_HOTWORD;
+ return AudioInputFlags::HW_HOTWORD;
case AUDIO_INPUT_FLAG_RAW:
- return media::AudioInputFlags::RAW;
+ return AudioInputFlags::RAW;
case AUDIO_INPUT_FLAG_SYNC:
- return media::AudioInputFlags::SYNC;
+ return AudioInputFlags::SYNC;
case AUDIO_INPUT_FLAG_MMAP_NOIRQ:
- return media::AudioInputFlags::MMAP_NOIRQ;
+ return AudioInputFlags::MMAP_NOIRQ;
case AUDIO_INPUT_FLAG_VOIP_TX:
- return media::AudioInputFlags::VOIP_TX;
+ return AudioInputFlags::VOIP_TX;
case AUDIO_INPUT_FLAG_HW_AV_SYNC:
- return media::AudioInputFlags::HW_AV_SYNC;
+ return AudioInputFlags::HW_AV_SYNC;
case AUDIO_INPUT_FLAG_DIRECT:
- return media::AudioInputFlags::DIRECT;
+ return AudioInputFlags::DIRECT;
}
return unexpected(BAD_VALUE);
}
ConversionResult<audio_output_flags_t> aidl2legacy_AudioOutputFlags_audio_output_flags_t(
- media::AudioOutputFlags aidl) {
+ AudioOutputFlags aidl) {
switch (aidl) {
- case media::AudioOutputFlags::DIRECT:
+ case AudioOutputFlags::DIRECT:
return AUDIO_OUTPUT_FLAG_DIRECT;
- case media::AudioOutputFlags::PRIMARY:
+ case AudioOutputFlags::PRIMARY:
return AUDIO_OUTPUT_FLAG_PRIMARY;
- case media::AudioOutputFlags::FAST:
+ case AudioOutputFlags::FAST:
return AUDIO_OUTPUT_FLAG_FAST;
- case media::AudioOutputFlags::DEEP_BUFFER:
+ case AudioOutputFlags::DEEP_BUFFER:
return AUDIO_OUTPUT_FLAG_DEEP_BUFFER;
- case media::AudioOutputFlags::COMPRESS_OFFLOAD:
+ case AudioOutputFlags::COMPRESS_OFFLOAD:
return AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD;
- case media::AudioOutputFlags::NON_BLOCKING:
+ case AudioOutputFlags::NON_BLOCKING:
return AUDIO_OUTPUT_FLAG_NON_BLOCKING;
- case media::AudioOutputFlags::HW_AV_SYNC:
+ case AudioOutputFlags::HW_AV_SYNC:
return AUDIO_OUTPUT_FLAG_HW_AV_SYNC;
- case media::AudioOutputFlags::TTS:
+ case AudioOutputFlags::TTS:
return AUDIO_OUTPUT_FLAG_TTS;
- case media::AudioOutputFlags::RAW:
+ case AudioOutputFlags::RAW:
return AUDIO_OUTPUT_FLAG_RAW;
- case media::AudioOutputFlags::SYNC:
+ case AudioOutputFlags::SYNC:
return AUDIO_OUTPUT_FLAG_SYNC;
- case media::AudioOutputFlags::IEC958_NONAUDIO:
+ case AudioOutputFlags::IEC958_NONAUDIO:
return AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO;
- case media::AudioOutputFlags::DIRECT_PCM:
+ case AudioOutputFlags::DIRECT_PCM:
return AUDIO_OUTPUT_FLAG_DIRECT_PCM;
- case media::AudioOutputFlags::MMAP_NOIRQ:
+ case AudioOutputFlags::MMAP_NOIRQ:
return AUDIO_OUTPUT_FLAG_MMAP_NOIRQ;
- case media::AudioOutputFlags::VOIP_RX:
+ case AudioOutputFlags::VOIP_RX:
return AUDIO_OUTPUT_FLAG_VOIP_RX;
- case media::AudioOutputFlags::INCALL_MUSIC:
+ case AudioOutputFlags::INCALL_MUSIC:
return AUDIO_OUTPUT_FLAG_INCALL_MUSIC;
- case media::AudioOutputFlags::GAPLESS_OFFLOAD:
+ case AudioOutputFlags::GAPLESS_OFFLOAD:
return AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD;
}
return unexpected(BAD_VALUE);
}
-ConversionResult<media::AudioOutputFlags> legacy2aidl_audio_output_flags_t_AudioOutputFlags(
+ConversionResult<AudioOutputFlags> legacy2aidl_audio_output_flags_t_AudioOutputFlags(
audio_output_flags_t legacy) {
switch (legacy) {
case AUDIO_OUTPUT_FLAG_NONE:
break; // shouldn't get here. must be listed -Werror,-Wswitch
case AUDIO_OUTPUT_FLAG_DIRECT:
- return media::AudioOutputFlags::DIRECT;
+ return AudioOutputFlags::DIRECT;
case AUDIO_OUTPUT_FLAG_PRIMARY:
- return media::AudioOutputFlags::PRIMARY;
+ return AudioOutputFlags::PRIMARY;
case AUDIO_OUTPUT_FLAG_FAST:
- return media::AudioOutputFlags::FAST;
+ return AudioOutputFlags::FAST;
case AUDIO_OUTPUT_FLAG_DEEP_BUFFER:
- return media::AudioOutputFlags::DEEP_BUFFER;
+ return AudioOutputFlags::DEEP_BUFFER;
case AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD:
- return media::AudioOutputFlags::COMPRESS_OFFLOAD;
+ return AudioOutputFlags::COMPRESS_OFFLOAD;
case AUDIO_OUTPUT_FLAG_NON_BLOCKING:
- return media::AudioOutputFlags::NON_BLOCKING;
+ return AudioOutputFlags::NON_BLOCKING;
case AUDIO_OUTPUT_FLAG_HW_AV_SYNC:
- return media::AudioOutputFlags::HW_AV_SYNC;
+ return AudioOutputFlags::HW_AV_SYNC;
case AUDIO_OUTPUT_FLAG_TTS:
- return media::AudioOutputFlags::TTS;
+ return AudioOutputFlags::TTS;
case AUDIO_OUTPUT_FLAG_RAW:
- return media::AudioOutputFlags::RAW;
+ return AudioOutputFlags::RAW;
case AUDIO_OUTPUT_FLAG_SYNC:
- return media::AudioOutputFlags::SYNC;
+ return AudioOutputFlags::SYNC;
case AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO:
- return media::AudioOutputFlags::IEC958_NONAUDIO;
+ return AudioOutputFlags::IEC958_NONAUDIO;
case AUDIO_OUTPUT_FLAG_DIRECT_PCM:
- return media::AudioOutputFlags::DIRECT_PCM;
+ return AudioOutputFlags::DIRECT_PCM;
case AUDIO_OUTPUT_FLAG_MMAP_NOIRQ:
- return media::AudioOutputFlags::MMAP_NOIRQ;
+ return AudioOutputFlags::MMAP_NOIRQ;
case AUDIO_OUTPUT_FLAG_VOIP_RX:
- return media::AudioOutputFlags::VOIP_RX;
+ return AudioOutputFlags::VOIP_RX;
case AUDIO_OUTPUT_FLAG_INCALL_MUSIC:
- return media::AudioOutputFlags::INCALL_MUSIC;
+ return AudioOutputFlags::INCALL_MUSIC;
case AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD:
- return media::AudioOutputFlags::GAPLESS_OFFLOAD;
+ return AudioOutputFlags::GAPLESS_OFFLOAD;
}
return unexpected(BAD_VALUE);
}
@@ -1413,9 +1417,9 @@
using LegacyMask = std::underlying_type_t<audio_input_flags_t>;
LegacyMask converted = VALUE_OR_RETURN(
- (convertBitmask<LegacyMask, int32_t, audio_input_flags_t, media::AudioInputFlags>(
+ (convertBitmask<LegacyMask, int32_t, audio_input_flags_t, AudioInputFlags>(
aidl, aidl2legacy_AudioInputFlags_audio_input_flags_t,
- indexToEnum_index<media::AudioInputFlags>,
+ indexToEnum_index<AudioInputFlags>,
enumToMask_bitmask<LegacyMask, audio_input_flags_t>)));
return static_cast<audio_input_flags_t>(converted);
}
@@ -1425,10 +1429,10 @@
using LegacyMask = std::underlying_type_t<audio_input_flags_t>;
LegacyMask legacyMask = static_cast<LegacyMask>(legacy);
- return convertBitmask<int32_t, LegacyMask, media::AudioInputFlags, audio_input_flags_t>(
+ return convertBitmask<int32_t, LegacyMask, AudioInputFlags, audio_input_flags_t>(
legacyMask, legacy2aidl_audio_input_flags_t_AudioInputFlags,
indexToEnum_bitmask<audio_input_flags_t>,
- enumToMask_index<int32_t, media::AudioInputFlags>);
+ enumToMask_index<int32_t, AudioInputFlags>);
}
ConversionResult<audio_output_flags_t> aidl2legacy_int32_t_audio_output_flags_t_mask(
@@ -1436,9 +1440,9 @@
return convertBitmask<audio_output_flags_t,
int32_t,
audio_output_flags_t,
- media::AudioOutputFlags>(
+ AudioOutputFlags>(
aidl, aidl2legacy_AudioOutputFlags_audio_output_flags_t,
- indexToEnum_index<media::AudioOutputFlags>,
+ indexToEnum_index<AudioOutputFlags>,
enumToMask_bitmask<audio_output_flags_t, audio_output_flags_t>);
}
@@ -1447,14 +1451,14 @@
using LegacyMask = std::underlying_type_t<audio_output_flags_t>;
LegacyMask legacyMask = static_cast<LegacyMask>(legacy);
- return convertBitmask<int32_t, LegacyMask, media::AudioOutputFlags, audio_output_flags_t>(
+ return convertBitmask<int32_t, LegacyMask, AudioOutputFlags, audio_output_flags_t>(
legacyMask, legacy2aidl_audio_output_flags_t_AudioOutputFlags,
indexToEnum_bitmask<audio_output_flags_t>,
- enumToMask_index<int32_t, media::AudioOutputFlags>);
+ enumToMask_index<int32_t, AudioOutputFlags>);
}
ConversionResult<audio_io_flags> aidl2legacy_AudioIoFlags_audio_io_flags(
- const media::AudioIoFlags& aidl, media::AudioPortRole role, media::AudioPortType type) {
+ const AudioIoFlags& aidl, media::AudioPortRole role, media::AudioPortType type) {
audio_io_flags legacy;
Direction dir = VALUE_OR_RETURN(direction(role, type));
switch (dir) {
@@ -1476,9 +1480,9 @@
return legacy;
}
-ConversionResult<media::AudioIoFlags> legacy2aidl_audio_io_flags_AudioIoFlags(
+ConversionResult<AudioIoFlags> legacy2aidl_audio_io_flags_AudioIoFlags(
const audio_io_flags& legacy, audio_port_role_t role, audio_port_type_t type) {
- media::AudioIoFlags aidl;
+ AudioIoFlags aidl;
Direction dir = VALUE_OR_RETURN(direction(role, type));
switch (dir) {
@@ -1497,21 +1501,22 @@
}
ConversionResult<audio_port_config_device_ext>
-aidl2legacy_AudioDevice_audio_port_config_device_ext(
- const AudioDevice& aidl, const media::AudioPortDeviceExtSys& aidlDeviceExt) {
+aidl2legacy_AudioPortDeviceExt_audio_port_config_device_ext(
+ const AudioPortDeviceExt& aidl, const media::AudioPortDeviceExtSys& aidlDeviceExt) {
audio_port_config_device_ext legacy;
legacy.hw_module = VALUE_OR_RETURN(
aidl2legacy_int32_t_audio_module_handle_t(aidlDeviceExt.hwModule));
- RETURN_IF_ERROR(aidl2legacy_AudioDevice_audio_device(aidl, &legacy.type, legacy.address));
+ RETURN_IF_ERROR(aidl2legacy_AudioDevice_audio_device(
+ aidl.device, &legacy.type, legacy.address));
return legacy;
}
-status_t legacy2aidl_audio_port_config_device_ext_AudioDevice(
+status_t legacy2aidl_audio_port_config_device_ext_AudioPortDeviceExt(
const audio_port_config_device_ext& legacy,
- AudioDevice* aidl, media::AudioPortDeviceExtSys* aidlDeviceExt) {
+ AudioPortDeviceExt* aidl, media::AudioPortDeviceExtSys* aidlDeviceExt) {
aidlDeviceExt->hwModule = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_module_handle_t_int32_t(legacy.hw_module));
- *aidl = VALUE_OR_RETURN_STATUS(
+ aidl->device = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_device_AudioDevice(legacy.type, legacy.address));
return OK;
}
@@ -1777,7 +1782,7 @@
return legacy;
case media::AudioPortType::DEVICE:
legacy.device = VALUE_OR_RETURN(
- aidl2legacy_AudioDevice_audio_port_config_device_ext(
+ aidl2legacy_AudioPortDeviceExt_audio_port_config_device_ext(
VALUE_OR_RETURN(UNION_GET(aidl, device)),
VALUE_OR_RETURN(UNION_GET(aidlSys, device))));
return legacy;
@@ -1806,10 +1811,10 @@
UNION_SET(*aidlSys, unspecified, false);
return OK;
case AUDIO_PORT_TYPE_DEVICE: {
- AudioDevice device;
+ AudioPortDeviceExt device;
media::AudioPortDeviceExtSys deviceSys;
RETURN_STATUS_IF_ERROR(
- legacy2aidl_audio_port_config_device_ext_AudioDevice(
+ legacy2aidl_audio_port_config_device_ext_AudioPortDeviceExt(
legacy.device, &device, &deviceSys));
UNION_SET(*aidl, device, device);
UNION_SET(*aidlSys, device, deviceSys);
@@ -1862,10 +1867,10 @@
aidl.hal.gain.value(), isInput));
legacy.config_mask |= AUDIO_PORT_CONFIG_GAIN;
}
- if (aidl.sys.flags.has_value()) {
+ if (aidl.hal.flags.has_value()) {
legacy.flags = VALUE_OR_RETURN(
aidl2legacy_AudioIoFlags_audio_io_flags(
- aidl.sys.flags.value(), aidl.sys.role, aidl.sys.type));
+ aidl.hal.flags.value(), aidl.sys.role, aidl.sys.type));
legacy.config_mask |= AUDIO_PORT_CONFIG_FLAGS;
}
legacy.ext = VALUE_OR_RETURN(
@@ -1900,7 +1905,7 @@
legacy2aidl_audio_gain_config_AudioGainConfig(legacy.gain, isInput));
}
if (legacy.config_mask & AUDIO_PORT_CONFIG_FLAGS) {
- aidl.sys.flags = VALUE_OR_RETURN(
+ aidl.hal.flags = VALUE_OR_RETURN(
legacy2aidl_audio_io_flags_AudioIoFlags(legacy.flags, legacy.role, legacy.type));
}
RETURN_IF_ERROR(legacy2aidl_AudioPortExt(legacy.ext, legacy.type, legacy.role,
@@ -2581,12 +2586,13 @@
}
ConversionResult<audio_port_device_ext>
-aidl2legacy_AudioDevice_audio_port_device_ext(
- const AudioDevice& aidl, const media::AudioPortDeviceExtSys& aidlSys) {
+aidl2legacy_AudioPortDeviceExt_audio_port_device_ext(
+ const AudioPortDeviceExt& aidl, const media::AudioPortDeviceExtSys& aidlSys) {
audio_port_device_ext legacy;
legacy.hw_module = VALUE_OR_RETURN(
aidl2legacy_int32_t_audio_module_handle_t(aidlSys.hwModule));
- RETURN_IF_ERROR(aidl2legacy_AudioDevice_audio_device(aidl, &legacy.type, legacy.address));
+ RETURN_IF_ERROR(aidl2legacy_AudioDevice_audio_device(
+ aidl.device, &legacy.type, legacy.address));
legacy.encapsulation_modes = VALUE_OR_RETURN(
aidl2legacy_AudioEncapsulationMode_mask(aidlSys.encapsulationModes));
legacy.encapsulation_metadata_types = VALUE_OR_RETURN(
@@ -2595,12 +2601,12 @@
return legacy;
}
-status_t legacy2aidl_audio_port_device_ext_AudioDevice(
+status_t legacy2aidl_audio_port_device_ext_AudioPortDeviceExt(
const audio_port_device_ext& legacy,
- AudioDevice* aidl, media::AudioPortDeviceExtSys* aidlDeviceExt) {
+ AudioPortDeviceExt* aidl, media::AudioPortDeviceExtSys* aidlDeviceExt) {
aidlDeviceExt->hwModule = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_module_handle_t_int32_t(legacy.hw_module));
- *aidl = VALUE_OR_RETURN_STATUS(
+ aidl->device = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_device_AudioDevice(legacy.type, legacy.address));
aidlDeviceExt->encapsulationModes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMode_mask(legacy.encapsulation_modes));
@@ -2653,7 +2659,7 @@
return legacy;
case media::AudioPortType::DEVICE:
legacy.device = VALUE_OR_RETURN(
- aidl2legacy_AudioDevice_audio_port_device_ext(
+ aidl2legacy_AudioPortDeviceExt_audio_port_device_ext(
VALUE_OR_RETURN(UNION_GET(aidl, device)),
VALUE_OR_RETURN(UNION_GET(aidlSys, device))));
return legacy;
@@ -2682,10 +2688,10 @@
UNION_SET(*aidlSys, unspecified, false);
return OK;
case AUDIO_PORT_TYPE_DEVICE: {
- AudioDevice device;
+ AudioPortDeviceExt device;
media::AudioPortDeviceExtSys deviceSys;
RETURN_STATUS_IF_ERROR(
- legacy2aidl_audio_port_device_ext_AudioDevice(
+ legacy2aidl_audio_port_device_ext_AudioPortDeviceExt(
legacy.device, &device, &deviceSys));
UNION_SET(*aidl, device, device);
UNION_SET(*aidlSys, device, deviceSys);
diff --git a/media/libaudioclient/Android.bp b/media/libaudioclient/Android.bp
index 9dd9fd6..d63a002 100644
--- a/media/libaudioclient/Android.bp
+++ b/media/libaudioclient/Android.bp
@@ -316,11 +316,8 @@
"aidl/android/media/AudioDualMonoMode.aidl",
"aidl/android/media/AudioFlag.aidl",
"aidl/android/media/AudioGainSys.aidl",
- "aidl/android/media/AudioInputFlags.aidl",
"aidl/android/media/AudioIoConfigEvent.aidl",
"aidl/android/media/AudioIoDescriptor.aidl",
- "aidl/android/media/AudioIoFlags.aidl",
- "aidl/android/media/AudioOutputFlags.aidl",
"aidl/android/media/AudioPatch.aidl",
"aidl/android/media/AudioPlaybackRate.aidl",
"aidl/android/media/AudioPort.aidl",
diff --git a/media/libaudioclient/aidl/android/media/AudioGainSys.aidl b/media/libaudioclient/aidl/android/media/AudioGainSys.aidl
index 9ec8390..426f4ed 100644
--- a/media/libaudioclient/aidl/android/media/AudioGainSys.aidl
+++ b/media/libaudioclient/aidl/android/media/AudioGainSys.aidl
@@ -24,5 +24,4 @@
parcelable AudioGainSys {
int index;
boolean isInput;
- boolean useForVolume;
}
diff --git a/media/libaudioclient/aidl/android/media/AudioInputFlags.aidl b/media/libaudioclient/aidl/android/media/AudioInputFlags.aidl
deleted file mode 100644
index bfc0eb0..0000000
--- a/media/libaudioclient/aidl/android/media/AudioInputFlags.aidl
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-/**
- * {@hide}
- */
-@Backing(type="int")
-enum AudioInputFlags {
- FAST = 0,
- HW_HOTWORD = 1,
- RAW = 2,
- SYNC = 3,
- MMAP_NOIRQ = 4,
- VOIP_TX = 5,
- HW_AV_SYNC = 6,
- DIRECT = 7,
-}
diff --git a/media/libaudioclient/aidl/android/media/AudioIoFlags.aidl b/media/libaudioclient/aidl/android/media/AudioIoFlags.aidl
deleted file mode 100644
index f9b25bf..0000000
--- a/media/libaudioclient/aidl/android/media/AudioIoFlags.aidl
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-/**
- * {@hide}
- */
-union AudioIoFlags {
- /** Bitmask indexed by AudioInputFlags. */
- int input;
- /** Bitmask indexed by AudioOutputFlags. */
- int output;
-}
diff --git a/media/libaudioclient/aidl/android/media/AudioOutputFlags.aidl b/media/libaudioclient/aidl/android/media/AudioOutputFlags.aidl
deleted file mode 100644
index cebd8f0..0000000
--- a/media/libaudioclient/aidl/android/media/AudioOutputFlags.aidl
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-/**
- * {@hide}
- */
-@Backing(type="int")
-enum AudioOutputFlags {
- DIRECT = 0,
- PRIMARY = 1,
- FAST = 2,
- DEEP_BUFFER = 3,
- COMPRESS_OFFLOAD = 4,
- NON_BLOCKING = 5,
- HW_AV_SYNC = 6,
- TTS = 7,
- RAW = 8,
- SYNC = 9,
- IEC958_NONAUDIO = 10,
- DIRECT_PCM = 11,
- MMAP_NOIRQ = 12,
- VOIP_RX = 13,
- INCALL_MUSIC = 14,
- GAPLESS_OFFLOAD = 15,
-}
diff --git a/media/libaudioclient/aidl/android/media/AudioPortConfigSys.aidl b/media/libaudioclient/aidl/android/media/AudioPortConfigSys.aidl
index 6a615cd..8692848 100644
--- a/media/libaudioclient/aidl/android/media/AudioPortConfigSys.aidl
+++ b/media/libaudioclient/aidl/android/media/AudioPortConfigSys.aidl
@@ -16,7 +16,6 @@
package android.media;
-import android.media.AudioIoFlags;
import android.media.AudioPortExtSys;
import android.media.AudioPortRole;
import android.media.AudioPortType;
@@ -29,7 +28,5 @@
AudioPortRole role;
/** Device, mix ... */
AudioPortType type;
- /** Flags: HW_AV_SYNC, DIRECT, ... Can be left unspecified. */
- @nullable AudioIoFlags flags;
AudioPortExtSys ext;
}
diff --git a/media/libaudioclient/include/media/AidlConversion.h b/media/libaudioclient/include/media/AidlConversion.h
index 52ea91b..fda9efb 100644
--- a/media/libaudioclient/include/media/AidlConversion.h
+++ b/media/libaudioclient/include/media/AidlConversion.h
@@ -25,10 +25,8 @@
#include <android/media/AudioClient.h>
#include <android/media/AudioDualMonoMode.h>
#include <android/media/AudioFlag.h>
-#include <android/media/AudioInputFlags.h>
#include <android/media/AudioIoConfigEvent.h>
#include <android/media/AudioIoDescriptor.h>
-#include <android/media/AudioOutputFlags.h>
#include <android/media/AudioPlaybackRate.h>
#include <android/media/AudioPort.h>
#include <android/media/AudioPortConfig.h>
@@ -49,8 +47,10 @@
#include <android/media/audio/common/AudioGain.h>
#include <android/media/audio/common/AudioGainConfig.h>
#include <android/media/audio/common/AudioGainMode.h>
+#include <android/media/audio/common/AudioInputFlags.h>
#include <android/media/audio/common/AudioMode.h>
#include <android/media/audio/common/AudioOffloadInfo.h>
+#include <android/media/audio/common/AudioOutputFlags.h>
#include <android/media/audio/common/AudioPortExt.h>
#include <android/media/audio/common/AudioPortMixExt.h>
#include <android/media/audio/common/AudioProfile.h>
@@ -173,15 +173,15 @@
ConversionResult<media::audio::common::AudioGainConfig>
legacy2aidl_audio_gain_config_AudioGainConfig(const audio_gain_config& legacy, bool isInput);
-ConversionResult<audio_input_flags_t> aidl2legacy_AudioInputFlags_audio_input_flags_t(
- media::AudioInputFlags aidl);
-ConversionResult<media::AudioInputFlags> legacy2aidl_audio_input_flags_t_AudioInputFlags(
- audio_input_flags_t legacy);
+ConversionResult<audio_input_flags_t>
+aidl2legacy_AudioInputFlags_audio_input_flags_t(media::audio::common::AudioInputFlags aidl);
+ConversionResult<media::audio::common::AudioInputFlags>
+legacy2aidl_audio_input_flags_t_AudioInputFlags(audio_input_flags_t legacy);
-ConversionResult<audio_output_flags_t> aidl2legacy_AudioOutputFlags_audio_output_flags_t(
- media::AudioOutputFlags aidl);
-ConversionResult<media::AudioOutputFlags> legacy2aidl_audio_output_flags_t_AudioOutputFlags(
- audio_output_flags_t legacy);
+ConversionResult<audio_output_flags_t>
+aidl2legacy_AudioOutputFlags_audio_output_flags_t(media::audio::common::AudioOutputFlags aidl);
+ConversionResult<media::audio::common::AudioOutputFlags>
+legacy2aidl_audio_output_flags_t_AudioOutputFlags(audio_output_flags_t legacy);
ConversionResult<audio_input_flags_t> aidl2legacy_int32_t_audio_input_flags_t_mask(
int32_t aidl);
@@ -194,17 +194,19 @@
audio_output_flags_t legacy);
ConversionResult<audio_io_flags> aidl2legacy_AudioIoFlags_audio_io_flags(
- const media::AudioIoFlags& aidl, media::AudioPortRole role, media::AudioPortType type);
-ConversionResult<media::AudioIoFlags> legacy2aidl_audio_io_flags_AudioIoFlags(
+ const media::audio::common::AudioIoFlags& aidl,
+ media::AudioPortRole role, media::AudioPortType type);
+ConversionResult<media::audio::common::AudioIoFlags> legacy2aidl_audio_io_flags_AudioIoFlags(
const audio_io_flags& legacy, audio_port_role_t role, audio_port_type_t type);
ConversionResult<audio_port_config_device_ext>
-aidl2legacy_AudioDevice_audio_port_config_device_ext(
- const media::audio::common::AudioDevice& aidl,
+aidl2legacy_AudioPortDeviceExt_audio_port_config_device_ext(
+ const media::audio::common::AudioPortDeviceExt& aidl,
const media::AudioPortDeviceExtSys& aidlDeviceExt);
-status_t legacy2aidl_audio_port_config_device_ext_AudioDevice(
+status_t legacy2aidl_audio_port_config_device_ext_AudioPortDeviceExt(
const audio_port_config_device_ext& legacy,
- media::audio::common::AudioDevice* aidl, media::AudioPortDeviceExtSys* aidlDeviceExt);
+ media::audio::common::AudioPortDeviceExt* aidl,
+ media::AudioPortDeviceExtSys* aidlDeviceExt);
ConversionResult<audio_stream_type_t> aidl2legacy_AudioStreamType_audio_stream_type_t(
media::audio::common::AudioStreamType aidl);
@@ -344,12 +346,12 @@
legacy2aidl_AudioEncapsulationMetadataType_mask(uint32_t legacy);
ConversionResult<audio_port_device_ext>
-aidl2legacy_AudioDevice_audio_port_device_ext(
- const media::audio::common::AudioDevice& aidl,
+aidl2legacy_AudioPortDeviceExt_audio_port_device_ext(
+ const media::audio::common::AudioPortDeviceExt& aidl,
const media::AudioPortDeviceExtSys& aidlDeviceExt);
-status_t legacy2aidl_audio_port_device_ext_AudioDevice(
+status_t legacy2aidl_audio_port_device_ext_AudioPortDeviceExt(
const audio_port_device_ext& legacy,
- media::audio::common::AudioDevice* aidl,
+ media::audio::common::AudioPortDeviceExt* aidl,
media::AudioPortDeviceExtSys* aidlDeviceExt);
ConversionResult<audio_port_mix_ext>
diff --git a/media/libaudiofoundation/AudioGain.cpp b/media/libaudiofoundation/AudioGain.cpp
index 1a8fbf0..47e0edb 100644
--- a/media/libaudiofoundation/AudioGain.cpp
+++ b/media/libaudiofoundation/AudioGain.cpp
@@ -122,20 +122,20 @@
ConversionResult<AudioGain::Aidl> AudioGain::toParcelable() const {
media::audio::common::AudioGain aidl = VALUE_OR_RETURN(
legacy2aidl_audio_gain_AudioGain(mGain, mIsInput));
+ aidl.useForVolume = mUseForVolume;
media::AudioGainSys aidlSys;
aidlSys.index = VALUE_OR_RETURN(convertIntegral<int32_t>(mIndex));
aidlSys.isInput = mIsInput;
- aidlSys.useForVolume = mUseForVolume;
return std::make_pair(aidl, aidlSys);
}
ConversionResult<sp<AudioGain>> AudioGain::fromParcelable(const AudioGain::Aidl& aidl) {
+ const media::audio::common::AudioGain& hal = aidl.first;
const media::AudioGainSys& sys = aidl.second;
auto index = VALUE_OR_RETURN(convertIntegral<int>(sys.index));
sp<AudioGain> legacy = sp<AudioGain>::make(index, sys.isInput);
- legacy->mGain = VALUE_OR_RETURN(
- aidl2legacy_AudioGain_audio_gain(aidl.first, sys.isInput));
- legacy->mUseForVolume = sys.useForVolume;
+ legacy->mGain = VALUE_OR_RETURN(aidl2legacy_AudioGain_audio_gain(hal, sys.isInput));
+ legacy->mUseForVolume = hal.useForVolume;
return legacy;
}
diff --git a/media/libaudiofoundation/AudioPort.cpp b/media/libaudiofoundation/AudioPort.cpp
index 099aff4..a00e00d 100644
--- a/media/libaudiofoundation/AudioPort.cpp
+++ b/media/libaudiofoundation/AudioPort.cpp
@@ -219,6 +219,14 @@
auto aidlGains = VALUE_OR_RETURN_STATUS(legacy2aidl_AudioGains(mGains));
parcelable->hal.gains = aidlGains.first;
parcelable->sys.gains = aidlGains.second;
+ if (mType == AUDIO_PORT_TYPE_MIX) {
+ media::audio::common::AudioPortMixExt mixExt{};
+ mixExt.maxOpenStreamCount = maxOpenCount;
+ mixExt.maxActiveStreamCount = maxActiveCount;
+ mixExt.recommendedMuteDurationMs = recommendedMuteDurationMs;
+ parcelable->hal.ext = media::audio::common::AudioPortExt::make<
+ media::audio::common::AudioPortExt::mix>(mixExt);
+ }
return OK;
}
@@ -241,6 +249,13 @@
mExtraAudioDescriptors = parcelable.hal.extraAudioDescriptors;
mGains = VALUE_OR_RETURN_STATUS(
aidl2legacy_AudioGains(std::make_pair(parcelable.hal.gains, parcelable.sys.gains)));
+ if (mType == AUDIO_PORT_TYPE_MIX) {
+ const media::audio::common::AudioPortMixExt& mixExt =
+ parcelable.hal.ext.get<media::audio::common::AudioPortExt::mix>();
+ maxOpenCount = mixExt.maxOpenStreamCount;
+ maxActiveCount = mixExt.maxActiveStreamCount;
+ recommendedMuteDurationMs = mixExt.recommendedMuteDurationMs;
+ }
return OK;
}
diff --git a/media/libaudiofoundation/DeviceDescriptorBase.cpp b/media/libaudiofoundation/DeviceDescriptorBase.cpp
index cf829b5..b383db4 100644
--- a/media/libaudiofoundation/DeviceDescriptorBase.cpp
+++ b/media/libaudiofoundation/DeviceDescriptorBase.cpp
@@ -30,16 +30,20 @@
{
}
-DeviceDescriptorBase::DeviceDescriptorBase(audio_devices_t type, const std::string& address) :
- DeviceDescriptorBase(AudioDeviceTypeAddr(type, address))
+DeviceDescriptorBase::DeviceDescriptorBase(
+ audio_devices_t type, const std::string& address,
+ const FormatVector &encodedFormats) :
+ DeviceDescriptorBase(AudioDeviceTypeAddr(type, address), encodedFormats)
{
}
-DeviceDescriptorBase::DeviceDescriptorBase(const AudioDeviceTypeAddr &deviceTypeAddr) :
+DeviceDescriptorBase::DeviceDescriptorBase(
+ const AudioDeviceTypeAddr &deviceTypeAddr, const FormatVector &encodedFormats) :
AudioPort("", AUDIO_PORT_TYPE_DEVICE,
audio_is_output_device(deviceTypeAddr.mType) ? AUDIO_PORT_ROLE_SINK :
AUDIO_PORT_ROLE_SOURCE),
- mDeviceTypeAddr(deviceTypeAddr)
+ mDeviceTypeAddr(deviceTypeAddr),
+ mEncodedFormats(encodedFormats)
{
if (mDeviceTypeAddr.address().empty() && audio_is_remote_submix_device(mDeviceTypeAddr.mType)) {
mDeviceTypeAddr.setAddress("0");
@@ -148,12 +152,35 @@
AudioPort::log(" ");
}
+template<typename T>
+bool checkEqual(const T& f1, const T& f2)
+{
+ std::set<typename T::value_type> s1(f1.begin(), f1.end());
+ std::set<typename T::value_type> s2(f2.begin(), f2.end());
+ return s1 == s2;
+}
+
bool DeviceDescriptorBase::equals(const sp<DeviceDescriptorBase> &other) const
{
return other != nullptr &&
static_cast<const AudioPort*>(this)->equals(other) &&
static_cast<const AudioPortConfig*>(this)->equals(other) &&
- mDeviceTypeAddr.equals(other->mDeviceTypeAddr);
+ mDeviceTypeAddr.equals(other->mDeviceTypeAddr) &&
+ checkEqual(mEncodedFormats, other->mEncodedFormats);
+}
+
+bool DeviceDescriptorBase::supportsFormat(audio_format_t format)
+{
+ if (mEncodedFormats.empty()) {
+ return true;
+ }
+
+ for (const auto& devFormat : mEncodedFormats) {
+ if (devFormat == format) {
+ return true;
+ }
+ }
+ return false;
}
@@ -169,9 +196,13 @@
AudioPortConfig::writeToParcelable(&parcelable->hal.activeConfig, useInputChannelMask());
parcelable->hal.id = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_handle_t_int32_t(mId));
- media::audio::common::AudioDevice device = VALUE_OR_RETURN_STATUS(
+ media::audio::common::AudioPortDeviceExt deviceExt;
+ deviceExt.device = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioDeviceTypeAddress(mDeviceTypeAddr));
- UNION_SET(parcelable->hal.ext, device, device);
+ deviceExt.encodedFormats = VALUE_OR_RETURN_STATUS(
+ convertContainer<std::vector<media::audio::common::AudioFormatDescription>>(
+ mEncodedFormats, legacy2aidl_audio_format_t_AudioFormatDescription));
+ UNION_SET(parcelable->hal.ext, device, deviceExt);
media::AudioPortDeviceExtSys deviceSys;
deviceSys.encapsulationModes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMode_mask(mEncapsulationModes));
@@ -198,10 +229,13 @@
return status;
}
- media::audio::common::AudioDevice device = VALUE_OR_RETURN_STATUS(
+ media::audio::common::AudioPortDeviceExt deviceExt = VALUE_OR_RETURN_STATUS(
UNION_GET(parcelable.hal.ext, device));
mDeviceTypeAddr = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioDeviceTypeAddress(device));
+ aidl2legacy_AudioDeviceTypeAddress(deviceExt.device));
+ mEncodedFormats = VALUE_OR_RETURN_STATUS(
+ convertContainer<FormatVector>(deviceExt.encodedFormats,
+ aidl2legacy_AudioFormatDescription_audio_format_t));
media::AudioPortDeviceExtSys deviceSys = VALUE_OR_RETURN_STATUS(
UNION_GET(parcelable.sys.ext, device));
mEncapsulationModes = VALUE_OR_RETURN_STATUS(
diff --git a/media/libaudiofoundation/include/media/AudioPort.h b/media/libaudiofoundation/include/media/AudioPort.h
index aa9b5f6..b5a17c9 100644
--- a/media/libaudiofoundation/include/media/AudioPort.h
+++ b/media/libaudiofoundation/include/media/AudioPort.h
@@ -106,6 +106,21 @@
status_t readFromParcelable(const media::AudioPort& parcelable);
AudioGains mGains; // gain controllers
+ // Maximum number of input or output streams that can be simultaneously
+ // opened for this profile. By convention 0 means no limit. To respect
+ // legacy behavior, initialized to 1 for output profiles and 0 for input
+ // profiles
+ // FIXME: IOProfile code used the same value for both cases.
+ uint32_t maxOpenCount = 1;
+ // Maximum number of input or output streams that can be simultaneously
+ // active for this profile. By convention 0 means no limit. To respect
+ // legacy behavior, initialized to 0 for output profiles and 1 for input
+ // profiles
+ // FIXME: IOProfile code used the same value for both cases.
+ uint32_t maxActiveCount = 1;
+ // Mute duration while changing device on this output profile.
+ uint32_t recommendedMuteDurationMs = 0;
+
protected:
std::string mName;
audio_port_type_t mType;
diff --git a/media/libaudiofoundation/include/media/DeviceDescriptorBase.h b/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
index 140ce36..a4092eb 100644
--- a/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
+++ b/media/libaudiofoundation/include/media/DeviceDescriptorBase.h
@@ -36,16 +36,21 @@
public:
// Note that empty name refers by convention to a generic device.
explicit DeviceDescriptorBase(audio_devices_t type);
- DeviceDescriptorBase(audio_devices_t type, const std::string& address);
- explicit DeviceDescriptorBase(const AudioDeviceTypeAddr& deviceTypeAddr);
+ DeviceDescriptorBase(audio_devices_t type, const std::string& address,
+ const FormatVector &encodedFormats = FormatVector{});
+ DeviceDescriptorBase(const AudioDeviceTypeAddr& deviceTypeAddr,
+ const FormatVector &encodedFormats = FormatVector{});
- virtual ~DeviceDescriptorBase() {}
+ virtual ~DeviceDescriptorBase() = default;
audio_devices_t type() const { return mDeviceTypeAddr.mType; }
const std::string& address() const { return mDeviceTypeAddr.address(); }
void setAddress(const std::string &address);
const AudioDeviceTypeAddr& getDeviceTypeAddr() const { return mDeviceTypeAddr; }
+ const FormatVector& encodedFormats() const { return mEncodedFormats; }
+ bool supportsFormat(audio_format_t format);
+
// AudioPortConfig
virtual sp<AudioPort> getAudioPort() const {
return static_cast<AudioPort*>(const_cast<DeviceDescriptorBase*>(this));
@@ -82,6 +87,7 @@
protected:
AudioDeviceTypeAddr mDeviceTypeAddr;
+ FormatVector mEncodedFormats;
uint32_t mEncapsulationModes = 0;
uint32_t mEncapsulationMetadataTypes = 0;
private:
diff --git a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
index 58d05c6..b444fd7 100644
--- a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
+++ b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
@@ -43,7 +43,7 @@
DeviceDescriptor(const AudioDeviceTypeAddr &deviceTypeAddr, const std::string &tagName = "",
const FormatVector &encodedFormats = FormatVector{});
- virtual ~DeviceDescriptor() {}
+ virtual ~DeviceDescriptor() = default;
virtual void addAudioProfile(const sp<AudioProfile> &profile) {
addAudioProfileAndSort(mProfiles, profile);
@@ -51,8 +51,6 @@
virtual const std::string getTagName() const { return mTagName; }
- const FormatVector& encodedFormats() const { return mEncodedFormats; }
-
audio_format_t getEncodedFormat() { return mCurrentEncodedFormat; }
void setEncodedFormat(audio_format_t format) {
@@ -63,8 +61,6 @@
bool hasCurrentEncodedFormat() const;
- bool supportsFormat(audio_format_t format);
-
void setDynamic() { mIsDynamic = true; }
bool isDynamic() const { return mIsDynamic; }
@@ -106,7 +102,6 @@
}
std::string mTagName; // Unique human readable identifier for a device port found in conf file.
- FormatVector mEncodedFormats;
audio_format_t mCurrentEncodedFormat;
bool mIsDynamic = false;
const std::string mDeclaredAddress; // Original device address
diff --git a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
index 81828ed..0e1548f 100644
--- a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
+++ b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
@@ -37,9 +37,7 @@
public:
IOProfile(const std::string &name, audio_port_role_t role)
: AudioPort(name, AUDIO_PORT_TYPE_MIX, role),
- maxOpenCount(1),
curOpenCount(0),
- maxActiveCount(1),
curActiveCount(0) {}
virtual ~IOProfile() = default;
@@ -194,21 +192,11 @@
return false;
}
- // Maximum number of input or output streams that can be simultaneously opened for this profile.
- // By convention 0 means no limit. To respect legacy behavior, initialized to 1 for output
- // profiles and 0 for input profiles
- uint32_t maxOpenCount;
// Number of streams currently opened for this profile.
uint32_t curOpenCount;
- // Maximum number of input or output streams that can be simultaneously active for this profile.
- // By convention 0 means no limit. To respect legacy behavior, initialized to 0 for output
- // profiles and 1 for input profiles
- uint32_t maxActiveCount;
// Number of streams currently active for this profile. This is not the number of active clients
// (AudioTrack or AudioRecord) but the number of active HAL streams.
uint32_t curActiveCount;
- // Mute duration while changing device on this output profile.
- uint32_t recommendedMuteDurationMs = 0;
private:
DeviceVector mSupportedDevices; // supported devices: this input/output can be routed from/to
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index c9c8ede..4a4ee12 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -54,7 +54,7 @@
DeviceDescriptor::DeviceDescriptor(const AudioDeviceTypeAddr &deviceTypeAddr,
const std::string &tagName,
const FormatVector &encodedFormats) :
- DeviceDescriptorBase(deviceTypeAddr), mTagName(tagName), mEncodedFormats(encodedFormats),
+ DeviceDescriptorBase(deviceTypeAddr, encodedFormats), mTagName(tagName),
mDeclaredAddress(DeviceDescriptorBase::address())
{
mCurrentEncodedFormat = AUDIO_FORMAT_DEFAULT;
@@ -109,20 +109,6 @@
return (mCurrentEncodedFormat != AUDIO_FORMAT_DEFAULT);
}
-bool DeviceDescriptor::supportsFormat(audio_format_t format)
-{
- if (mEncodedFormats.empty()) {
- return true;
- }
-
- for (const auto& devFormat : mEncodedFormats) {
- if (devFormat == format) {
- return true;
- }
- }
- return false;
-}
-
status_t DeviceDescriptor::applyAudioPortConfig(const struct audio_port_config *config,
audio_port_config *backupConfig)
{