| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIB_MEDIA_AUDIO_CPP_PERCEIVED_LEVEL_H_ |
| #define LIB_MEDIA_AUDIO_CPP_PERCEIVED_LEVEL_H_ |
| |
| namespace media { |
| |
| // Provides functions that map gain into a linear perceived level for UI. |
| class PerceivedLevel { |
| public: |
| // Converts a gain in db to an audio 'level' in the range 0.0 to 1.0 |
| // inclusive. |gain_db| values of -60db or less yield level value 0.0. |
| // |gain_db| values of 0db or more yield level value 1.0. |
| static float GainToLevel(float gain_db); |
| |
| // Converts an audio 'level' in the range 0.0 to 1.0 inclusive to a gain |
| // in db. |level| values of 0.0 or less yield gain value -160db. |level| |
| // values slightly more than 0.0 yield gain values slightly more than |
| // -60db. |level| values of 1.0 or more yield gain value 0.0db. |
| static float LevelToGain(float level); |
| |
| // Converts a gain in db to an audio 'level' in the range 0 to |max_level| |
| // inclusive. |gain_db| values of -60db or less yield level value 0. |gain_db| |
| // values of 0db or more yield level value |max_level|. |max_level| must be |
| // at least 1. |
| static int GainToLevel(float gain_db, int max_level); |
| |
| // Converts an audio 'level' in the range 0 to |max_level| inclusive to a |
| // gain in db. |level| values of 0 or less yield gain value -160db. |level| |
| // value 1 yields gain value 60 / |max_level| - 60. |level| values of |
| // |max_level| or more yield gain value 0.0. |max_level| must be at least 1. |
| static float LevelToGain(int level, int max_level); |
| }; |
| |
| } // namespace media |
| |
| #endif // LIB_MEDIA_AUDIO_CPP_PERCEIVED_LEVEL_H_ |