diff options
author | Andy Hung <hunga@google.com> | 2015-05-12 00:36:07 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-12 00:36:07 +0000 |
commit | fedef1384d5ff758285fb19161a0348e1e32ab3f (patch) | |
tree | 659818942c7df772681839a0fbdc0aefe6b69c0e /services | |
parent | af49160aa75d4e1750f3ed56b812ec9cc448fa46 (diff) | |
parent | 18aa27016a94d0fee243637a80fd0741f89e08f2 (diff) | |
download | frameworks_av-fedef1384d5ff758285fb19161a0348e1e32ab3f.zip frameworks_av-fedef1384d5ff758285fb19161a0348e1e32ab3f.tar.gz frameworks_av-fedef1384d5ff758285fb19161a0348e1e32ab3f.tar.bz2 |
Merge "Support channel index masks for output hal" into mnc-dev
Diffstat (limited to 'services')
-rw-r--r-- | services/audioflinger/BufferProviders.cpp | 42 | ||||
-rw-r--r-- | services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp | 6 |
2 files changed, 8 insertions, 40 deletions
diff --git a/services/audioflinger/BufferProviders.cpp b/services/audioflinger/BufferProviders.cpp index 77bf4ac..8a580e8 100644 --- a/services/audioflinger/BufferProviders.cpp +++ b/services/audioflinger/BufferProviders.cpp @@ -292,46 +292,8 @@ RemixBufferProvider::RemixBufferProvider(audio_channel_mask_t inputChannelMask, ALOGV("RemixBufferProvider(%p)(%#x, %#x, %#x) %zu %zu", this, format, inputChannelMask, outputChannelMask, mInputChannels, mOutputChannels); - - const audio_channel_representation_t inputRepresentation = - audio_channel_mask_get_representation(inputChannelMask); - const audio_channel_representation_t outputRepresentation = - audio_channel_mask_get_representation(outputChannelMask); - const uint32_t inputBits = audio_channel_mask_get_bits(inputChannelMask); - const uint32_t outputBits = audio_channel_mask_get_bits(outputChannelMask); - - switch (inputRepresentation) { - case AUDIO_CHANNEL_REPRESENTATION_POSITION: - switch (outputRepresentation) { - case AUDIO_CHANNEL_REPRESENTATION_POSITION: - memcpy_by_index_array_initialization(mIdxAry, ARRAY_SIZE(mIdxAry), - outputBits, inputBits); - return; - case AUDIO_CHANNEL_REPRESENTATION_INDEX: - // TODO: output channel index mask not currently allowed - // fall through - default: - break; - } - break; - case AUDIO_CHANNEL_REPRESENTATION_INDEX: - switch (outputRepresentation) { - case AUDIO_CHANNEL_REPRESENTATION_POSITION: - memcpy_by_index_array_initialization_src_index(mIdxAry, ARRAY_SIZE(mIdxAry), - outputBits, inputBits); - return; - case AUDIO_CHANNEL_REPRESENTATION_INDEX: - // TODO: output channel index mask not currently allowed - // fall through - default: - break; - } - break; - default: - break; - } - LOG_ALWAYS_FATAL("invalid channel mask conversion from %#x to %#x", - inputChannelMask, outputChannelMask); + (void) memcpy_by_index_array_initialization_from_channel_mask( + mIdxAry, ARRAY_SIZE(mIdxAry), outputChannelMask, inputChannelMask); } void RemixBufferProvider::copyFrames(void *dst, const void *src, size_t frames) diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp index 64f883a..2e4d423 100644 --- a/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp +++ b/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp @@ -272,6 +272,12 @@ void AudioPort::loadOutChannels(char *name) (audio_channel_mask_t)ConfigParsingUtils::stringToEnum(sOutChannelsNameToEnumTable, ARRAY_SIZE(sOutChannelsNameToEnumTable), str); + if (channelMask == 0) { // if not found, check the channel index table + channelMask = (audio_channel_mask_t) + ConfigParsingUtils::stringToEnum(sIndexChannelsNameToEnumTable, + ARRAY_SIZE(sIndexChannelsNameToEnumTable), + str); + } if (channelMask != 0) { mChannelMasks.add(channelMask); } |