MPD: ReplayGainInfo.hxx Source File

MPD 0.20.18

ReplayGainInfo.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_REPLAY_GAIN_INFO_HXX
21 #define MPD_REPLAY_GAIN_INFO_HXX
22
23 #include "check.h"
24 #include "Compiler.h"
25 #include "ReplayGainMode.hxx"
26
27 struct ReplayGainConfig;
28
29 struct ReplayGainTuple {
30 float gain;
31 float peak;
32
33 void Clear() {
34 gain = -200;
35 peak = 0.0;
36 }
37
38 constexpr bool IsDefined() const {
39 return gain > -100;
40 }
41
42 gcc_pure
43 float CalculateScale(const ReplayGainConfig &config) const noexcept;
44 };
45
46 struct ReplayGainInfo {
47 ReplayGainTuple track, album;
48
49 constexpr bool IsDefined() const noexcept {
50 return track.IsDefined() || album.IsDefined();
51 }
52
53 const ReplayGainTuple &Get(ReplayGainMode mode) const noexcept {
54 return mode == ReplayGainMode::ALBUM
55 ? (album.IsDefined() ? album : track)
56 : (track.IsDefined() ? track : album);
57 }
58
59 void Clear() noexcept {
60 track.Clear();
61 album.Clear();
62 }
63 };
64
65 #endif
ReplayGainTuple::Clear
void Clear()
Definition: ReplayGainInfo.hxx:33
check.h
ReplayGainMode::ALBUM
ReplayGainMode
ReplayGainMode
Definition: ReplayGainMode.hxx:27
ReplayGainMode.hxx
ReplayGainConfig
Definition: ReplayGainConfig.hxx:25
ReplayGainTuple::IsDefined
constexpr bool IsDefined() const
Definition: ReplayGainInfo.hxx:38
ReplayGainTuple::CalculateScale
gcc_pure float CalculateScale(const ReplayGainConfig &config) const noexcept
ReplayGainInfo::album
ReplayGainTuple album
Definition: ReplayGainInfo.hxx:47
ReplayGainInfo::track
ReplayGainTuple track
Definition: ReplayGainInfo.hxx:47
ReplayGainInfo::Get
const ReplayGainTuple & Get(ReplayGainMode mode) const noexcept
Definition: ReplayGainInfo.hxx:53
ReplayGainTuple::gain
float gain
Definition: ReplayGainInfo.hxx:30
Compiler.h
ReplayGainTuple
Definition: ReplayGainInfo.hxx:29
ReplayGainInfo
Definition: ReplayGainInfo.hxx:46
ReplayGainInfo::Clear
void Clear() noexcept
Definition: ReplayGainInfo.hxx:59
ReplayGainTuple::peak
float peak
Definition: ReplayGainInfo.hxx:31
ReplayGainInfo::IsDefined
constexpr bool IsDefined() const noexcept
Definition: ReplayGainInfo.hxx:49
gcc_pure
#define gcc_pure
Definition: Compiler.h:116