diff options
author | Glenn Kasten <gkasten@google.com> | 2012-10-04 12:05:44 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-10-04 12:05:44 -0700 |
commit | d192e5f15c395daa87f4f198154379ee7c93d528 (patch) | |
tree | 9dcd60888b97045ccf108808efb0c51fba974392 /services/audioflinger/AudioMixer.cpp | |
parent | e50eb89bad3cb457ed7930225c47c6c4cb8534f5 (diff) | |
parent | f12b1c8162d5b8cd1021daf0e32c769dac3d5d56 (diff) | |
download | frameworks_av-d192e5f15c395daa87f4f198154379ee7c93d528.zip frameworks_av-d192e5f15c395daa87f4f198154379ee7c93d528.tar.gz frameworks_av-d192e5f15c395daa87f4f198154379ee7c93d528.tar.bz2 |
resolved conflicts for merge of f12b1c81 to master
Change-Id: I914a11706bd01a198e2137e0c12af0fc92ffa02b
Diffstat (limited to 'services/audioflinger/AudioMixer.cpp')
-rw-r--r-- | services/audioflinger/AudioMixer.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp index 1f13625..e652d14 100644 --- a/services/audioflinger/AudioMixer.cpp +++ b/services/audioflinger/AudioMixer.cpp @@ -538,11 +538,23 @@ bool AudioMixer::track_t::setResampler(uint32_t value, uint32_t devSampleRate) if (sampleRate != value) { sampleRate = value; if (resampler == NULL) { + ALOGV("creating resampler from track %d Hz to device %d Hz", value, devSampleRate); + AudioResampler::src_quality quality; + // force lowest quality level resampler if use case isn't music or video + // FIXME this is flawed for dynamic sample rates, as we choose the resampler + // quality level based on the initial ratio, but that could change later. + // Should have a way to distinguish tracks with static ratios vs. dynamic ratios. + if (!((value == 44100 && devSampleRate == 48000) || + (value == 48000 && devSampleRate == 44100))) { + quality = AudioResampler::LOW_QUALITY; + } else { + quality = AudioResampler::DEFAULT_QUALITY; + } resampler = AudioResampler::create( format, // the resampler sees the number of channels after the downmixer, if any downmixerBufferProvider != NULL ? MAX_NUM_CHANNELS : channelCount, - devSampleRate); + devSampleRate, quality); resampler->setLocalTimeFreq(sLocalTimeFreq); } return true; |