diff options
author | Glenn Kasten <gkasten@google.com> | 2012-01-03 14:22:33 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-01-13 15:25:14 -0800 |
commit | 05632a5fa4b88ca474294887fc92a9fcdf0e2352 (patch) | |
tree | 28e36d2cce839d66870ea066a2b334dd9b63c833 /services | |
parent | 09192653e836b21689f004bf8dee375356641181 (diff) | |
download | frameworks_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.cpp | 8 |
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)) { |