Split AudioPort/Config between fwk and android.media.audio.common
a.m.a.c adds versions of AudioPort/Config structs which
are similar to Audio HIDL HAL V7. They lack some bits used only
by the framework. These are carried in AudioPortSys/PortConfigSys.
media::AudioPort/Config join the HAL part and the system part
together.
Updated to/from AIDL conversions in libaudiofondation.
Bug: 198812639
Test: atest audiofoundation_parcelable_test
Change-Id: I383cf2b07d9931dbea1ba0d10bb60cdd0b57039c
diff --git a/media/libaudiofoundation/AudioPort.cpp b/media/libaudiofoundation/AudioPort.cpp
index 329ff9a..099aff4 100644
--- a/media/libaudiofoundation/AudioPort.cpp
+++ b/media/libaudiofoundation/AudioPort.cpp
@@ -18,7 +18,6 @@
#include <algorithm>
#include <utility>
-#include <android/media/ExtraAudioDescriptor.h>
#include <android-base/stringprintf.h>
#include <media/AudioPort.h>
#include <utils/Log.h>
@@ -207,17 +206,19 @@
}
status_t AudioPort::writeToParcelable(media::AudioPort* parcelable) const {
- parcelable->name = mName;
- parcelable->type = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_type_t_AudioPortType(mType));
- parcelable->role = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_role_t_AudioPortRole(mRole));
+ parcelable->hal.name = mName;
+ parcelable->sys.type = VALUE_OR_RETURN_STATUS(
+ legacy2aidl_audio_port_type_t_AudioPortType(mType));
+ parcelable->sys.role = VALUE_OR_RETURN_STATUS(
+ legacy2aidl_audio_port_role_t_AudioPortRole(mRole));
auto aidlProfiles = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioProfileVector(mProfiles, useInputChannelMask()));
- parcelable->profiles = aidlProfiles.first;
- parcelable->profilesSys = aidlProfiles.second;
- parcelable->extraAudioDescriptors = mExtraAudioDescriptors;
+ parcelable->hal.profiles = aidlProfiles.first;
+ parcelable->sys.profiles = aidlProfiles.second;
+ parcelable->hal.extraAudioDescriptors = mExtraAudioDescriptors;
auto aidlGains = VALUE_OR_RETURN_STATUS(legacy2aidl_AudioGains(mGains));
- parcelable->gains = aidlGains.first;
- parcelable->gainsSys = aidlGains.second;
+ parcelable->hal.gains = aidlGains.first;
+ parcelable->sys.gains = aidlGains.second;
return OK;
}
@@ -228,16 +229,18 @@
}
status_t AudioPort::readFromParcelable(const media::AudioPort& parcelable) {
- mName = parcelable.name;
- mType = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioPortType_audio_port_type_t(parcelable.type));
- mRole = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioPortRole_audio_port_role_t(parcelable.role));
+ mName = parcelable.hal.name;
+ mType = VALUE_OR_RETURN_STATUS(
+ aidl2legacy_AudioPortType_audio_port_type_t(parcelable.sys.type));
+ mRole = VALUE_OR_RETURN_STATUS(
+ aidl2legacy_AudioPortRole_audio_port_role_t(parcelable.sys.role));
mProfiles = VALUE_OR_RETURN_STATUS(
aidl2legacy_AudioProfileVector(
- std::make_pair(parcelable.profiles, parcelable.profilesSys),
+ std::make_pair(parcelable.hal.profiles, parcelable.sys.profiles),
useInputChannelMask()));
- mExtraAudioDescriptors = parcelable.extraAudioDescriptors;
+ mExtraAudioDescriptors = parcelable.hal.extraAudioDescriptors;
mGains = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioGains(std::make_pair(parcelable.gains, parcelable.gainsSys)));
+ aidl2legacy_AudioGains(std::make_pair(parcelable.hal.gains, parcelable.sys.gains)));
return OK;
}
@@ -340,8 +343,8 @@
}
status_t AudioPortConfig::writeToParcelable(
- media::AudioPortConfig* parcelable, bool isInput) const {
- media::Int aidl_sampleRate;
+ media::audio::common::AudioPortConfig* parcelable, bool isInput) const {
+ media::audio::common::Int aidl_sampleRate;
aidl_sampleRate.value = VALUE_OR_RETURN_STATUS(convertIntegral<int32_t>(mSamplingRate));
parcelable->sampleRate = aidl_sampleRate;
parcelable->format = VALUE_OR_RETURN_STATUS(
@@ -356,7 +359,7 @@
}
status_t AudioPortConfig::readFromParcelable(
- const media::AudioPortConfig& parcelable, bool isInput) {
+ const media::audio::common::AudioPortConfig& parcelable, bool isInput) {
if (parcelable.sampleRate.has_value()) {
mSamplingRate = VALUE_OR_RETURN_STATUS(
convertIntegral<unsigned int>(parcelable.sampleRate.value().value));
diff --git a/media/libaudiofoundation/DeviceDescriptorBase.cpp b/media/libaudiofoundation/DeviceDescriptorBase.cpp
index 2e9b005..cf829b5 100644
--- a/media/libaudiofoundation/DeviceDescriptorBase.cpp
+++ b/media/libaudiofoundation/DeviceDescriptorBase.cpp
@@ -166,18 +166,18 @@
status_t DeviceDescriptorBase::writeToParcelable(media::AudioPort* parcelable) const {
AudioPort::writeToParcelable(parcelable);
- AudioPortConfig::writeToParcelable(&parcelable->activeConfig, useInputChannelMask());
- parcelable->id = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_handle_t_int32_t(mId));
+ 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(
legacy2aidl_AudioDeviceTypeAddress(mDeviceTypeAddr));
- UNION_SET(parcelable->ext, device, device);
+ UNION_SET(parcelable->hal.ext, device, device);
media::AudioPortDeviceExtSys deviceSys;
deviceSys.encapsulationModes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMode_mask(mEncapsulationModes));
deviceSys.encapsulationMetadataTypes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMetadataType_mask(mEncapsulationMetadataTypes));
- UNION_SET(parcelable->extSys, device, deviceSys);
+ UNION_SET(parcelable->sys.ext, device, deviceSys);
return OK;
}
@@ -188,21 +188,22 @@
}
status_t DeviceDescriptorBase::readFromParcelable(const media::AudioPort& parcelable) {
- if (parcelable.type != media::AudioPortType::DEVICE) {
+ if (parcelable.sys.type != media::AudioPortType::DEVICE) {
return BAD_VALUE;
}
status_t status = AudioPort::readFromParcelable(parcelable)
- ?: AudioPortConfig::readFromParcelable(parcelable.activeConfig, useInputChannelMask());
+ ?: AudioPortConfig::readFromParcelable(
+ parcelable.hal.activeConfig, useInputChannelMask());
if (status != OK) {
return status;
}
media::audio::common::AudioDevice device = VALUE_OR_RETURN_STATUS(
- UNION_GET(parcelable.ext, device));
+ UNION_GET(parcelable.hal.ext, device));
mDeviceTypeAddr = VALUE_OR_RETURN_STATUS(
aidl2legacy_AudioDeviceTypeAddress(device));
media::AudioPortDeviceExtSys deviceSys = VALUE_OR_RETURN_STATUS(
- UNION_GET(parcelable.extSys, device));
+ UNION_GET(parcelable.sys.ext, device));
mEncapsulationModes = VALUE_OR_RETURN_STATUS(
aidl2legacy_AudioEncapsulationMode_mask(deviceSys.encapsulationModes));
mEncapsulationMetadataTypes = VALUE_OR_RETURN_STATUS(
diff --git a/media/libaudiofoundation/include/media/AudioPort.h b/media/libaudiofoundation/include/media/AudioPort.h
index 6e1d032..aa9b5f6 100644
--- a/media/libaudiofoundation/include/media/AudioPort.h
+++ b/media/libaudiofoundation/include/media/AudioPort.h
@@ -21,7 +21,7 @@
#include <android/media/AudioPort.h>
#include <android/media/AudioPortConfig.h>
-#include <android/media/ExtraAudioDescriptor.h>
+#include <android/media/audio/common/ExtraAudioDescriptor.h>
#include <binder/Parcel.h>
#include <binder/Parcelable.h>
#include <media/AudioGain.h>
@@ -69,10 +69,10 @@
AudioProfileVector &getAudioProfiles() { return mProfiles; }
void setExtraAudioDescriptors(
- const std::vector<media::ExtraAudioDescriptor> extraAudioDescriptors) {
+ const std::vector<media::audio::common::ExtraAudioDescriptor> extraAudioDescriptors) {
mExtraAudioDescriptors = extraAudioDescriptors;
}
- std::vector<media::ExtraAudioDescriptor> &getExtraAudioDescriptors() {
+ std::vector<media::audio::common::ExtraAudioDescriptor> &getExtraAudioDescriptors() {
return mExtraAudioDescriptors;
}
@@ -114,7 +114,7 @@
// Audio capabilities that are defined by hardware descriptors when the format is unrecognized
// by the platform, e.g. short audio descriptor in EDID for HDMI.
- std::vector<media::ExtraAudioDescriptor> mExtraAudioDescriptors;
+ std::vector<media::audio::common::ExtraAudioDescriptor> mExtraAudioDescriptors;
private:
template <typename T, std::enable_if_t<std::is_same<T, struct audio_port>::value
|| std::is_same<T, struct audio_port_v7>::value, int> = 0>
@@ -152,8 +152,10 @@
bool equals(const sp<AudioPortConfig>& other) const;
- status_t writeToParcelable(media::AudioPortConfig* parcelable, bool isInput) const;
- status_t readFromParcelable(const media::AudioPortConfig& parcelable, bool isInput);
+ status_t writeToParcelable(
+ media::audio::common::AudioPortConfig* parcelable, bool isInput) const;
+ status_t readFromParcelable(
+ const media::audio::common::AudioPortConfig& parcelable, bool isInput);
protected:
unsigned int mSamplingRate = 0u;
diff --git a/media/libaudiofoundation/tests/audiofoundation_parcelable_test.cpp b/media/libaudiofoundation/tests/audiofoundation_parcelable_test.cpp
index 3a7ddd7..0315a59 100644
--- a/media/libaudiofoundation/tests/audiofoundation_parcelable_test.cpp
+++ b/media/libaudiofoundation/tests/audiofoundation_parcelable_test.cpp
@@ -130,11 +130,11 @@
Parcel data;
sp<AudioPortConfig> audioPortConfig = new AudioPortConfigTestStub();
audioPortConfig->applyAudioPortConfig(&TEST_AUDIO_PORT_CONFIG);
- media::AudioPortConfig parcelable{};
+ media::audio::common::AudioPortConfig parcelable{};
ASSERT_EQ(NO_ERROR, audioPortConfig->writeToParcelable(&parcelable, false /*isInput*/));
ASSERT_EQ(NO_ERROR, data.writeParcelable(parcelable));
data.setDataPosition(0);
- media::AudioPortConfig parcelableFromParcel{};
+ media::audio::common::AudioPortConfig parcelableFromParcel{};
ASSERT_EQ(NO_ERROR, data.readParcelable(&parcelableFromParcel));
sp<AudioPortConfig> audioPortConfigFromParcel = new AudioPortConfigTestStub();
ASSERT_EQ(NO_ERROR, audioPortConfigFromParcel->readFromParcelable(