summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-07-28 16:16:31 -0700
committerAndy Hung <hunga@google.com>2014-07-28 16:16:31 -0700
commit9a60538b9ee2b097770dcd378281b31f4218ae56 (patch)
tree2c1e28a60d4d561e7131d1b77ff67e933b9210d0 /services
parent141670d465d7673dfa6ad712ad100f84882dfa95 (diff)
downloadframeworks_av-9a60538b9ee2b097770dcd378281b31f4218ae56.zip
frameworks_av-9a60538b9ee2b097770dcd378281b31f4218ae56.tar.gz
frameworks_av-9a60538b9ee2b097770dcd378281b31f4218ae56.tar.bz2
Update multichannel audio policy handling
Ensure AUDIO_FORMAT_PCM_FLOAT and AUDIO_FORMAT_PCM_32_BIT have proper precedence. Allow more mixer channels than 2. Change-Id: I02af97dad6218b25cbada4d93077a213314c6725
Diffstat (limited to 'services')
-rw-r--r--services/audiopolicy/AudioPolicyManager.cpp6
-rw-r--r--services/audiopolicy/AudioPolicyManager.h5
2 files changed, 6 insertions, 5 deletions
diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp
index c5248fe..a0322d6 100644
--- a/services/audiopolicy/AudioPolicyManager.cpp
+++ b/services/audiopolicy/AudioPolicyManager.cpp
@@ -5494,12 +5494,14 @@ audio_channel_mask_t AudioPolicyManager::AudioPort::pickChannelMask() const
return channelMask;
}
+/* format in order of increasing preference */
const audio_format_t AudioPolicyManager::AudioPort::sPcmFormatCompareTable[] = {
AUDIO_FORMAT_DEFAULT,
AUDIO_FORMAT_PCM_16_BIT,
AUDIO_FORMAT_PCM_8_24_BIT,
AUDIO_FORMAT_PCM_24_BIT_PACKED,
AUDIO_FORMAT_PCM_32_BIT,
+ AUDIO_FORMAT_PCM_FLOAT,
};
int AudioPolicyManager::AudioPort::compareFormats(audio_format_t format1,
@@ -5541,7 +5543,9 @@ audio_format_t AudioPolicyManager::AudioPort::pickFormat() const
}
audio_format_t format = AUDIO_FORMAT_DEFAULT;
- audio_format_t bestFormat = BEST_MIXER_FORMAT;
+ audio_format_t bestFormat =
+ AudioPolicyManager::AudioPort::sPcmFormatCompareTable[
+ ARRAY_SIZE(AudioPolicyManager::AudioPort::sPcmFormatCompareTable) - 1];
// For mixed output and inputs, use best mixer output format. Do not
// limit format otherwise
if ((mType != AUDIO_PORT_TYPE_MIX) ||
diff --git a/services/audiopolicy/AudioPolicyManager.h b/services/audiopolicy/AudioPolicyManager.h
index 62b3ce5..13a9cf0 100644
--- a/services/audiopolicy/AudioPolicyManager.h
+++ b/services/audiopolicy/AudioPolicyManager.h
@@ -53,10 +53,7 @@ namespace android {
#define OFFLOAD_DEFAULT_MIN_DURATION_SECS 60
#define MAX_MIXER_SAMPLING_RATE 48000
-#define MAX_MIXER_CHANNEL_COUNT 2
-// See AudioPort::compareFormats()
-#define WORST_MIXER_FORMAT AUDIO_FORMAT_PCM_16_BIT
-#define BEST_MIXER_FORMAT AUDIO_FORMAT_PCM_24_BIT_PACKED
+#define MAX_MIXER_CHANNEL_COUNT 8
// ----------------------------------------------------------------------------
// AudioPolicyManager implements audio policy manager behavior common to all platforms.