summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-01-03 14:22:33 -0800
committerGlenn Kasten <gkasten@google.com>2012-01-13 15:25:14 -0800
commit05632a5fa4b88ca474294887fc92a9fcdf0e2352 (patch)
tree28e36d2cce839d66870ea066a2b334dd9b63c833 /services
parent09192653e836b21689f004bf8dee375356641181 (diff)
downloadframeworks_av-05632a5fa4b88ca474294887fc92a9fcdf0e2352.zip
frameworks_av-05632a5fa4b88ca474294887fc92a9fcdf0e2352.tar.gz
frameworks_av-05632a5fa4b88ca474294887fc92a9fcdf0e2352.tar.bz2
AudioTrack and AudioFlinger send level cleanup
Add an API to control block for getting/setting send level. This allow us to make the mSendLevel field private. Document the lack of barriers. Use 0.0f to initialize floating-point values (for doc only). Change-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/AudioFlinger.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 9fb666e..7f43100 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -2183,7 +2183,13 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track
vl = (uint32_t)(v * cblk->volume[0]) << 12;
vr = (uint32_t)(v * cblk->volume[1]) << 12;
- va = (uint32_t)(v * cblk->sendLevel);
+ uint16_t sendLevel = cblk->getSendLevel_U4_12();
+ // send level comes from shared memory and so may be corrupt
+ if (sendLevel >= 0x1000) {
+ ALOGV("Track send level out of range: %04X", sendLevel);
+ sendLevel = 0x1000;
+ }
+ va = (uint32_t)(v * sendLevel);
}
// Delegate volume control to effect in track effect chain if needed
if (chain != 0 && chain->setVolume_l(&vl, &vr)) {