diff options
author | Glenn Kasten <gkasten@google.com> | 2011-12-16 13:31:33 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-12-16 13:31:33 -0800 |
commit | 586995afe6768a8acfb8db202f7b9c69d49b73c4 (patch) | |
tree | f4b00ab212a8d8dcca5dc16984b739c0733ed6a4 | |
parent | b371925125f20b3b861d251f323c2291287047a8 (diff) | |
parent | bde164abbc1af76c081f081160c5395af9133796 (diff) | |
download | frameworks_base-586995afe6768a8acfb8db202f7b9c69d49b73c4.zip frameworks_base-586995afe6768a8acfb8db202f7b9c69d49b73c4.tar.gz frameworks_base-586995afe6768a8acfb8db202f7b9c69d49b73c4.tar.bz2 |
Merge "Use switch in AudioMixer::setParameter"
-rw-r--r-- | services/audioflinger/AudioMixer.cpp | 83 | ||||
-rw-r--r-- | services/audioflinger/AudioMixer.h | 2 |
2 files changed, 49 insertions, 36 deletions
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp index c6dd40b..59751ac 100644 --- a/services/audioflinger/AudioMixer.cpp +++ b/services/audioflinger/AudioMixer.cpp @@ -48,6 +48,8 @@ static inline int16_t clamp16(int32_t sample) AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate) : mActiveTrack(0), mTrackNames(0), mSampleRate(sampleRate) { + // AudioMixer is not yet capable of multi-channel beyond stereo + assert(2 == MAX_NUM_CHANNELS); mState.enabledTracks= 0; mState.needsChanged = 0; mState.frameCount = frameCount; @@ -169,68 +171,73 @@ void AudioMixer::setActiveTrack(int track) mActiveTrack = track; } -status_t AudioMixer::setParameter(int target, int name, void *value) +void AudioMixer::setParameter(int target, int name, void *value) { int valueInt = (int)value; int32_t *valueBuf = (int32_t *)value; switch (target) { + case TRACK: - if (name == CHANNEL_MASK) { + switch (name) { + case CHANNEL_MASK: { uint32_t mask = (uint32_t)value; if (mState.tracks[ mActiveTrack ].channelMask != mask) { uint8_t channelCount = popcount(mask); - if ((channelCount <= MAX_NUM_CHANNELS) && (channelCount)) { - mState.tracks[ mActiveTrack ].channelMask = mask; - mState.tracks[ mActiveTrack ].channelCount = channelCount; - ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", mask); - invalidateState(1<<mActiveTrack); - return NO_ERROR; - } - } else { - return NO_ERROR; + assert((channelCount <= MAX_NUM_CHANNELS) && (channelCount)); + mState.tracks[ mActiveTrack ].channelMask = mask; + mState.tracks[ mActiveTrack ].channelCount = channelCount; + ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", mask); + invalidateState(1<<mActiveTrack); } - } - if (name == MAIN_BUFFER) { + } break; + case MAIN_BUFFER: if (mState.tracks[ mActiveTrack ].mainBuffer != valueBuf) { mState.tracks[ mActiveTrack ].mainBuffer = valueBuf; ALOGV("setParameter(TRACK, MAIN_BUFFER, %p)", valueBuf); invalidateState(1<<mActiveTrack); } - return NO_ERROR; - } - if (name == AUX_BUFFER) { + break; + case AUX_BUFFER: if (mState.tracks[ mActiveTrack ].auxBuffer != valueBuf) { mState.tracks[ mActiveTrack ].auxBuffer = valueBuf; ALOGV("setParameter(TRACK, AUX_BUFFER, %p)", valueBuf); invalidateState(1<<mActiveTrack); } - return NO_ERROR; + break; + default: + // bad name + assert(false); } - break; + case RESAMPLE: - if (name == SAMPLE_RATE) { - if (valueInt > 0) { - track_t& track = mState.tracks[ mActiveTrack ]; - if (track.setResampler(uint32_t(valueInt), mSampleRate)) { - ALOGV("setParameter(RESAMPLE, SAMPLE_RATE, %u)", - uint32_t(valueInt)); - invalidateState(1<<mActiveTrack); - } - return NO_ERROR; + switch (name) { + case SAMPLE_RATE: { + assert(valueInt > 0); + track_t& track = mState.tracks[ mActiveTrack ]; + if (track.setResampler(uint32_t(valueInt), mSampleRate)) { + ALOGV("setParameter(RESAMPLE, SAMPLE_RATE, %u)", + uint32_t(valueInt)); + invalidateState(1<<mActiveTrack); } - } - if (name == RESET) { + } break; + case RESET: { track_t& track = mState.tracks[ mActiveTrack ]; track.resetResampler(); invalidateState(1<<mActiveTrack); - return NO_ERROR; + } break; + default: + // bad name + assert(false); } break; + case RAMP_VOLUME: case VOLUME: - if ((uint32_t(name-VOLUME0) < MAX_NUM_CHANNELS)) { + switch (name) { + case VOLUME0: + case VOLUME1: { track_t& track = mState.tracks[ mActiveTrack ]; if (track.volume[name-VOLUME0] != valueInt) { ALOGV("setParameter(VOLUME, VOLUME0/1: %04x)", valueInt); @@ -249,8 +256,8 @@ status_t AudioMixer::setParameter(int target, int name, void *value) } invalidateState(1<<mActiveTrack); } - return NO_ERROR; - } else if (name == AUXLEVEL) { + } break; + case AUXLEVEL: { track_t& track = mState.tracks[ mActiveTrack ]; if (track.auxLevel != valueInt) { ALOGV("setParameter(VOLUME, AUXLEVEL: %04x)", valueInt); @@ -269,11 +276,17 @@ status_t AudioMixer::setParameter(int target, int name, void *value) } invalidateState(1<<mActiveTrack); } - return NO_ERROR; + } break; + default: + // bad name + assert(false); } break; + + default: + // bad target + assert(false); } - return BAD_VALUE; } bool AudioMixer::track_t::setResampler(uint32_t value, uint32_t devSampleRate) diff --git a/services/audioflinger/AudioMixer.h b/services/audioflinger/AudioMixer.h index f380b35..288c70e 100644 --- a/services/audioflinger/AudioMixer.h +++ b/services/audioflinger/AudioMixer.h @@ -81,7 +81,7 @@ public: void disable(); void setActiveTrack(int track); - status_t setParameter(int target, int name, void *value); + void setParameter(int target, int name, void *value); void setBufferProvider(AudioBufferProvider* bufferProvider); void process(); |