audio: fix profile of digital device incorrect
1. Channel mask of profiles is not assigned properly.
2. The profiles from getAudioPort should be dynamic.
Bug: 300850096
Test: Manual
Change-Id: Ibc0dac194b6d4e8e4c72389562abe0d697d18c4c
diff --git a/media/libaudiofoundation/AudioPort.cpp b/media/libaudiofoundation/AudioPort.cpp
index 6e05abc..ae0457f 100644
--- a/media/libaudiofoundation/AudioPort.cpp
+++ b/media/libaudiofoundation/AudioPort.cpp
@@ -57,14 +57,21 @@
void AudioPort::importAudioPort(const audio_port_v7 &port) {
for (size_t i = 0; i < port.num_audio_profiles; ++i) {
+ if (port.audio_profiles[i].format == AUDIO_FORMAT_DEFAULT) {
+ // The dynamic format from AudioPort should not be AUDIO_FORMAT_DEFAULT.
+ continue;
+ }
sp<AudioProfile> profile = new AudioProfile(port.audio_profiles[i].format,
ChannelMaskSet(port.audio_profiles[i].channel_masks,
port.audio_profiles[i].channel_masks +
- port.audio_profiles->num_channel_masks),
+ port.audio_profiles[i].num_channel_masks),
SampleRateSet(port.audio_profiles[i].sample_rates,
port.audio_profiles[i].sample_rates +
port.audio_profiles[i].num_sample_rates),
port.audio_profiles[i].encapsulation_type);
+ profile->setDynamicFormat(true);
+ profile->setDynamicChannels(true);
+ profile->setDynamicRate(true);
if (!mProfiles.contains(profile)) {
addAudioProfile(profile);
}