summaryrefslogtreecommitdiff
path: root/src/audio_core/renderer/splitter.h
blob: 373656d444e8ecde8d0aa97f6ff929c59a6dc3db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

namespace AudioCore::Renderer {

class SplitterDestination {
public:
    void Update(const SplitterDestinationParameter& parameter, bool is_prev_volume_reset_supported) {
        if (is_prev_volume_reset_supported ? parameter.reset_prev_volume
                                         : (!is_used && parameter.is_used)) {
            // Reset previous mix volumes
            prev_mix_volumes = parameter.mix_volumes;
            mix_volumes = parameter.mix_volumes;
        }
        is_used = parameter.is_used;
    }

private:
    bool is_used{};
    std::array<float, MaxMixBuffers> mix_volumes{};
    std::array<float, MaxMixBuffers> prev_mix_volumes{};
};

} // namespace AudioCore::Renderer