diff options
author | Glenn Kasten <gkasten@google.com> | 2012-03-09 13:44:14 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-03-09 13:44:14 -0800 |
commit | e61e667d53e76f1286844d8bcdf61bd3b13cfdf7 (patch) | |
tree | 5839f99f923801d69a10ee00ce30275cac441ae1 /services/audioflinger | |
parent | 6df8876f79e4b784150eb46d5c63b623eac9f90d (diff) | |
parent | d8f32c2989f79ca5da0e8df96f9a71bb3cefaf86 (diff) | |
download | frameworks_base-e61e667d53e76f1286844d8bcdf61bd3b13cfdf7.zip frameworks_base-e61e667d53e76f1286844d8bcdf61bd3b13cfdf7.tar.gz frameworks_base-e61e667d53e76f1286844d8bcdf61bd3b13cfdf7.tar.bz2 |
Merge "Replace hard-coded 3 by FCC_2 to simplify searches"
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 8 | ||||
-rw-r--r-- | services/audioflinger/AudioFlinger.h | 9 |
2 files changed, 13 insertions, 4 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index f9b033b..37f15e2 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -5192,8 +5192,8 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l() reqFormat == mInput->stream->common.get_format(&mInput->stream->common) && reqFormat == AUDIO_FORMAT_PCM_16_BIT && ((int)mInput->stream->common.get_sample_rate(&mInput->stream->common) <= (2 * reqSamplingRate)) && - (popcount(mInput->stream->common.get_channels(&mInput->stream->common)) < 3) && - (reqChannelCount < 3)) { + popcount(mInput->stream->common.get_channels(&mInput->stream->common)) <= FCC_2 && + (reqChannelCount <= FCC_2)) { status = NO_ERROR; } if (status == NO_ERROR) { @@ -5270,7 +5270,7 @@ void AudioFlinger::RecordThread::readInputParameters() mFrameCount = mInputBytes / mFrameSize; mRsmpInBuffer = new int16_t[mFrameCount * mChannelCount]; - if (mSampleRate != mReqSampleRate && mChannelCount < 3 && mReqChannelCount < 3) + if (mSampleRate != mReqSampleRate && mChannelCount <= FCC_2 && mReqChannelCount <= FCC_2) { int channelCount; // optmization: if mono to mono, use the resampler in stereo to stereo mode to avoid @@ -5559,7 +5559,7 @@ audio_io_handle_t AudioFlinger::openInput(uint32_t *pDevices, if (inStream == NULL && status == BAD_VALUE && reqFormat == format && format == AUDIO_FORMAT_PCM_16_BIT && (samplingRate <= 2 * reqSamplingRate) && - (popcount(channels) < 3) && (popcount(reqChannels) < 3)) { + (popcount(channels) <= FCC_2) && (popcount(reqChannels) <= FCC_2)) { ALOGV("openInput() reopening with proposed sampling rate and channels"); status = inHwDev->open_input_stream(inHwDev, *pDevices, &format, &channels, &samplingRate, diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h index 2e259c0..d9f2972 100644 --- a/services/audioflinger/AudioFlinger.h +++ b/services/audioflinger/AudioFlinger.h @@ -58,6 +58,15 @@ class AudioResampler; // ---------------------------------------------------------------------------- +// AudioFlinger has a hard-coded upper limit of 2 channels for capture and playback. +// There is support for > 2 channel tracks down-mixed to 2 channel output via a down-mix effect. +// Adding full support for > 2 channel capture or playback would require more than simply changing +// this #define. There is an independent hard-coded upper limit in AudioMixer; +// removing that AudioMixer limit would be necessary but insufficient to support > 2 channels. +// The macro FCC_2 highlights some (but not all) places where there is are 2-channel assumptions. +// Search also for "2", "left", "right", "[0]", "[1]", ">> 16", "<< 16", etc. +#define FCC_2 2 // FCC_2 = Fixed Channel Count 2 + static const nsecs_t kDefaultStandbyTimeInNsecs = seconds(3); class AudioFlinger : |