summaryrefslogtreecommitdiff
path: root/src/audio_core/stream.cpp
diff options
context:
space:
mode:
authorGravatar Zach Hilman2019-06-19 10:29:42 -0400
committerGravatar GitHub2019-06-19 10:29:42 -0400
commit5c665fcc5b3086d8b7d6d84ccdec5356ec58f5fb (patch)
tree59fbc197a941e8a363cef85a3f75b2293c3c3bff /src/audio_core/stream.cpp
parentMerge pull request #2562 from ReinUsesLisp/split-cbuf-upload (diff)
parentAddressed issues (diff)
downloadyuzu-5c665fcc5b3086d8b7d6d84ccdec5356ec58f5fb.tar.gz
yuzu-5c665fcc5b3086d8b7d6d84ccdec5356ec58f5fb.tar.xz
yuzu-5c665fcc5b3086d8b7d6d84ccdec5356ec58f5fb.zip
Merge pull request #2584 from ogniK5377/cadence
Impl'd IsUserAccountSwitchLocked, SetAudioOutVolume, GetAudioOutVolume & Partial impl of GetAccumulatedSuspendedTickChangedEvent
Diffstat (limited to 'src/audio_core/stream.cpp')
-rw-r--r--src/audio_core/stream.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp
index 11481a776..982c7af2f 100644
--- a/src/audio_core/stream.cpp
+++ b/src/audio_core/stream.cpp
@@ -51,6 +51,10 @@ void Stream::Stop() {
51 UNIMPLEMENTED(); 51 UNIMPLEMENTED();
52} 52}
53 53
54void Stream::SetVolume(float volume) {
55 game_volume = volume;
56}
57
54Stream::State Stream::GetState() const { 58Stream::State Stream::GetState() const {
55 return state; 59 return state;
56} 60}
@@ -62,8 +66,8 @@ s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const {
62 return Core::Timing::usToCycles(us); 66 return Core::Timing::usToCycles(us);
63} 67}
64 68
65static void VolumeAdjustSamples(std::vector<s16>& samples) { 69static void VolumeAdjustSamples(std::vector<s16>& samples, float game_volume) {
66 const float volume{std::clamp(Settings::values.volume, 0.0f, 1.0f)}; 70 const float volume{std::clamp(Settings::values.volume - (1.0f - game_volume), 0.0f, 1.0f)};
67 71
68 if (volume == 1.0f) { 72 if (volume == 1.0f) {
69 return; 73 return;
@@ -97,7 +101,7 @@ void Stream::PlayNextBuffer() {
97 active_buffer = queued_buffers.front(); 101 active_buffer = queued_buffers.front();
98 queued_buffers.pop(); 102 queued_buffers.pop();
99 103
100 VolumeAdjustSamples(active_buffer->GetSamples()); 104 VolumeAdjustSamples(active_buffer->GetSamples(), game_volume);
101 105
102 sink_stream.EnqueueSamples(GetNumChannels(), active_buffer->GetSamples()); 106 sink_stream.EnqueueSamples(GetNumChannels(), active_buffer->GetSamples());
103 107