summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/audioflinger/AudioFlinger.cpp6
-rw-r--r--services/audioflinger/AudioFlinger.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 0a0529a..e4c055a 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -1051,6 +1051,7 @@ status_t AudioFlinger::setStreamVolume(audio_stream_type_t stream, float value,
ALOGV("setStreamVolume for mAudioTracks size %d desc %p",mDirectAudioTracks.size(),desc);
if (desc->mStreamType == stream) {
mStreamTypes[stream].volume = value;
+ desc->mVolumeScale = value;
desc->stream->set_volume(desc->stream,
desc->mVolumeLeft * mStreamTypes[stream].volume,
desc->mVolumeRight* mStreamTypes[stream].volume);
@@ -6163,6 +6164,7 @@ AudioFlinger::DirectAudioTrack::DirectAudioTrack(const sp<AudioFlinger>& audioFl
allocateBufPool();
}
+ outputDesc->mVolumeScale = 1.0;
mDeathRecipient = new PMDeathRecipient(this);
acquireWakeLock();
}
@@ -6247,7 +6249,9 @@ void AudioFlinger::DirectAudioTrack::mute(bool muted) {
void AudioFlinger::DirectAudioTrack::setVolume(float left, float right) {
mOutputDesc->mVolumeLeft = left;
mOutputDesc->mVolumeRight = right;
- mOutputDesc->stream->set_volume(mOutputDesc->stream,left,right);
+ mOutputDesc->stream->set_volume(mOutputDesc->stream,
+ left * mOutputDesc->mVolumeScale,
+ right* mOutputDesc->mVolumeScale);
}
int64_t AudioFlinger::DirectAudioTrack::getTimeStamp() {
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index dcdc55c..cbda3fe 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -2160,6 +2160,7 @@ mutable Mutex mLock; // mutex for process, commands and handl
int mStreamType;
float mVolumeLeft;
float mVolumeRight;
+ float mVolumeScale;
audio_hw_device_t *hwDev;
audio_stream_out_t *stream;
audio_output_flags_t flag;