Remove AudioPortConfigType from AIDL interfaces
Switch to the canonical approach of making a field '@nullable'
if the value for it is not required. This makes AudioPortConfigType
redundant.
Refactor affected parceling code in libaudiofoundation to reuse
functions from AidlConversion.
Bug: 198812639
Test: atest audiofoundation_parcelable_test
Change-Id: If02a9d788e7aed21bca917ac193cf71598804b83
diff --git a/media/libaudiofoundation/AudioPort.cpp b/media/libaudiofoundation/AudioPort.cpp
index 905a0ca..329ff9a 100644
--- a/media/libaudiofoundation/AudioPort.cpp
+++ b/media/libaudiofoundation/AudioPort.cpp
@@ -341,45 +341,39 @@
status_t AudioPortConfig::writeToParcelable(
media::AudioPortConfig* parcelable, bool isInput) const {
- parcelable->sampleRate = VALUE_OR_RETURN_STATUS(convertIntegral<int32_t>(mSamplingRate));
+ media::Int aidl_sampleRate;
+ aidl_sampleRate.value = VALUE_OR_RETURN_STATUS(convertIntegral<int32_t>(mSamplingRate));
+ parcelable->sampleRate = aidl_sampleRate;
parcelable->format = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_format_t_AudioFormatDescription(mFormat));
parcelable->channelMask = VALUE_OR_RETURN_STATUS(
legacy2aidl_audio_channel_mask_t_AudioChannelLayout(mChannelMask, isInput));
parcelable->id = VALUE_OR_RETURN_STATUS(legacy2aidl_audio_port_handle_t_int32_t(mId));
- parcelable->gain.index = VALUE_OR_RETURN_STATUS(convertIntegral<int32_t>(mGain.index));
- parcelable->gain.mode = VALUE_OR_RETURN_STATUS(
- legacy2aidl_audio_gain_mode_t_int32_t_mask(mGain.mode));
- parcelable->gain.channelMask = VALUE_OR_RETURN_STATUS(
- legacy2aidl_audio_channel_mask_t_AudioChannelLayout(mGain.channel_mask, isInput));
- parcelable->gain.rampDurationMs = VALUE_OR_RETURN_STATUS(
- convertIntegral<int32_t>(mGain.ramp_duration_ms));
- parcelable->gain.values = VALUE_OR_RETURN_STATUS(convertContainer<std::vector<int32_t>>(
- mGain.values, convertIntegral<int32_t, int>));
+ media::audio::common::AudioGainConfig aidl_gain = VALUE_OR_RETURN_STATUS(
+ legacy2aidl_audio_gain_config_AudioGainConfig(mGain, isInput));
+ parcelable->gain = aidl_gain;
return OK;
}
status_t AudioPortConfig::readFromParcelable(
const media::AudioPortConfig& parcelable, bool isInput) {
- mSamplingRate = VALUE_OR_RETURN_STATUS(convertIntegral<unsigned int>(parcelable.sampleRate));
- mFormat = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioFormatDescription_audio_format_t(parcelable.format));
- mChannelMask = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioChannelLayout_audio_channel_mask_t(parcelable.channelMask, isInput));
- mId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(parcelable.id));
- mGain.index = VALUE_OR_RETURN_STATUS(convertIntegral<int>(parcelable.gain.index));
- mGain.mode = VALUE_OR_RETURN_STATUS(
- aidl2legacy_int32_t_audio_gain_mode_t_mask(parcelable.gain.mode));
- mGain.channel_mask = VALUE_OR_RETURN_STATUS(
- aidl2legacy_AudioChannelLayout_audio_channel_mask_t(
- parcelable.gain.channelMask, isInput));
- mGain.ramp_duration_ms = VALUE_OR_RETURN_STATUS(
- convertIntegral<unsigned int>(parcelable.gain.rampDurationMs));
- if (parcelable.gain.values.size() > std::size(mGain.values)) {
- return BAD_VALUE;
+ if (parcelable.sampleRate.has_value()) {
+ mSamplingRate = VALUE_OR_RETURN_STATUS(
+ convertIntegral<unsigned int>(parcelable.sampleRate.value().value));
}
- for (size_t i = 0; i < parcelable.gain.values.size(); ++i) {
- mGain.values[i] = VALUE_OR_RETURN_STATUS(convertIntegral<int>(parcelable.gain.values[i]));
+ if (parcelable.format.has_value()) {
+ mFormat = VALUE_OR_RETURN_STATUS(
+ aidl2legacy_AudioFormatDescription_audio_format_t(parcelable.format.value()));
+ }
+ if (parcelable.channelMask.has_value()) {
+ mChannelMask = VALUE_OR_RETURN_STATUS(
+ aidl2legacy_AudioChannelLayout_audio_channel_mask_t(
+ parcelable.channelMask.value(), isInput));
+ }
+ mId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(parcelable.id));
+ if (parcelable.gain.has_value()) {
+ mGain = VALUE_OR_RETURN_STATUS(
+ aidl2legacy_AudioGainConfig_audio_gain_config(parcelable.gain.value(), isInput));
}
return OK;
}