summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioMixer.cpp
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-10-04 12:05:44 -0700
committerGlenn Kasten <gkasten@google.com>2012-10-04 12:05:44 -0700
commitd192e5f15c395daa87f4f198154379ee7c93d528 (patch)
tree9dcd60888b97045ccf108808efb0c51fba974392 /services/audioflinger/AudioMixer.cpp
parente50eb89bad3cb457ed7930225c47c6c4cb8534f5 (diff)
parentf12b1c8162d5b8cd1021daf0e32c769dac3d5d56 (diff)
downloadframeworks_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.cpp14
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;