Refactor AudioPort and AudioPortConfig
The goals are to split framework-only fields from common,
and to simplify and unify structures where possible.
What has got changed:
1. Removed 'AudioPort[Config]SessionExt' parcelables.
These parcelables correspond to 'audio_port[_config]_session_ext',
which is trivial--contains only 'session' field, and hasn't been
extented since the inception. Remove AIDL types since each
type requires its own file, which adds mental burden.
2. Removed 'AudioPort[Config]DeviceExt' parcelables.
At the HAL level only the 'AudioDevice' field is needed.
Moved remaining framework-only fields to 'AudioPortDeviceExtSys'
which is reused between 'AudioPort' and 'AudioPortConfig'.
3. Merged 'AudioPortConfigMixExt' with 'AudioPortMixExt'.
Moved remaining framework-only fields to 'AudioPortMixExtSys'.
4. The previous item allowed using 'AudioPortExt' instead of
'AudioPortConfigExt'.
5. 'AudioPortDeviceExtSys' and 'AudioPortMixExtSys' put into
'AudioPortExtSys' which is a system-only companion to 'AudioPortExt'.
Bug: 198812639
Test: atest audiofoundation_parcelable_test
Change-Id: I27306f7ce33b136860db6a9784d34960816987cd
diff --git a/media/libaudiofoundation/DeviceDescriptorBase.cpp b/media/libaudiofoundation/DeviceDescriptorBase.cpp
index 3cce722..2e9b005 100644
--- a/media/libaudiofoundation/DeviceDescriptorBase.cpp
+++ b/media/libaudiofoundation/DeviceDescriptorBase.cpp
@@ -169,13 +169,15 @@
AudioPortConfig::writeToParcelable(&parcelable->activeConfig, useInputChannelMask());
parcelable->id = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_handle_t_int32_t(mId));
- media::AudioPortDeviceExt ext;
- ext.device = VALUE_OR_RETURN_STATUS(legacy2aidl_AudioDeviceTypeAddress(mDeviceTypeAddr));
- ext.encapsulationModes = VALUE_OR_RETURN_STATUS(
+ media::audio::common::AudioDevice device = VALUE_OR_RETURN_STATUS(
+ legacy2aidl_AudioDeviceTypeAddress(mDeviceTypeAddr));
+ UNION_SET(parcelable->ext, device, device);
+ media::AudioPortDeviceExtSys deviceSys;
+ deviceSys.encapsulationModes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMode_mask(mEncapsulationModes));
- ext.encapsulationMetadataTypes = VALUE_OR_RETURN_STATUS(
+ deviceSys.encapsulationMetadataTypes = VALUE_OR_RETURN_STATUS(
legacy2aidl_AudioEncapsulationMetadataType_mask(mEncapsulationMetadataTypes));
- UNION_SET(parcelable->ext, device, std::move(ext));
+ UNION_SET(parcelable->extSys, device, deviceSys);
return OK;
}
@@ -195,13 +197,16 @@
return status;
}
- media::AudioPortDeviceExt ext = VALUE_OR_RETURN_STATUS(UNION_GET(parcelable.ext, device));
+ media::audio::common::AudioDevice device = VALUE_OR_RETURN_STATUS(
+ UNION_GET(parcelable.ext, device));
mDeviceTypeAddr = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioDeviceTypeAddress(ext.device));
+ aidl2legacy_AudioDeviceTypeAddress(device));
+ media::AudioPortDeviceExtSys deviceSys = VALUE_OR_RETURN_STATUS(
+ UNION_GET(parcelable.extSys, device));
mEncapsulationModes = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioEncapsulationMode_mask(ext.encapsulationModes));
+ aidl2legacy_AudioEncapsulationMode_mask(deviceSys.encapsulationModes));
mEncapsulationMetadataTypes = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioEncapsulationMetadataType_mask(ext.encapsulationMetadataTypes));
+ aidl2legacy_AudioEncapsulationMetadataType_mask(deviceSys.encapsulationMetadataTypes));
return OK;
}