~aleteoryx/muditaos

ref: f6b6cd9f8cd6718eb6ec5db8b232086d67fb1f83 muditaos/module-audio/Audio/VolumeScaler.cpp -rw-r--r-- 908 bytes
f6b6cd9f — Kuba [EGD-6986] Add Store timezone in settings db 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "VolumeScaler.hpp"

namespace audio::volume::scaler
{
    Volume toSystemVolume(std::uint8_t avrcpVolume) noexcept
    {
        constexpr auto avrcpMaxVolume = float{0x7F}; // from AVRCP documentation
        const auto systemVolume       = (avrcpVolume / avrcpMaxVolume) * audio::maxVolume;
        // prevents conversion to 0 while in fact sound is not muted
        if (systemVolume > 0.01f && systemVolume < 1.0f) {
            return 1;
        }
        return systemVolume;
    }

    std::uint8_t toAvrcpVolume(float systemVolume) noexcept
    {
        constexpr auto avrcpMaxVolume = std::uint8_t{0x7F}; // from AVRCP documentation
        return std::round(systemVolume * avrcpMaxVolume / audio::maxVolume);
    }
} // namespace audio::volume::scaler