xbmc
GUIDialogAudioSettings.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "cores/VideoPlayer/Interface/StreamInfo.h"
12 #include "settings/dialogs/GUIDialogSettingsManualBase.h"
13 
14 #include <string>
15 #include <utility>
16 #include <vector>
17 
18 class CVariant;
20 
22 {
23 public:
25  ~CGUIDialogAudioSettings() override;
26 
27  // specialization of CGUIWindow
28  void FrameMove() override;
29 
30  static std::string FormatDelay(float value, float interval);
31  static std::string FormatDecibel(float value);
32  static std::string FormatPercentAsDecibel(float value);
33 
34 protected:
35  // implementations of ISettingCallback
36  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
37  void OnSettingAction(const std::shared_ptr<const CSetting>& setting) override;
38 
39  // specialization of CGUIDialogSettingsBase
40  bool AllowResettingSettings() const override { return false; }
41  bool Save() override;
42  void SetupView() override;
43 
44  // specialization of CGUIDialogSettingsManualBase
45  void InitializeSettings() override;
46 
47  bool SupportsAudioFeature(int feature);
48 
49  void AddAudioStreams(const std::shared_ptr<CSettingGroup>& group, const std::string& settingId);
50 
51  static bool IsPlayingPassthrough(const std::string& condition,
52  const std::string& value,
53  const std::shared_ptr<const CSetting>& setting,
54  void* data);
55 
56  static void AudioStreamsOptionFiller(const std::shared_ptr<const CSetting>& setting,
57  std::vector<IntegerSettingOption>& list,
58  int& current,
59  void* data);
60 
61  static std::string SettingFormatterDelay(
62  const std::shared_ptr<const CSettingControlSlider>& control,
63  const CVariant& value,
64  const CVariant& minimum,
65  const CVariant& step,
66  const CVariant& maximum);
67  static std::string SettingFormatterPercentAsDecibel(
68  const std::shared_ptr<const CSettingControlSlider>& control,
69  const CVariant& value,
70  const CVariant& minimum,
71  const CVariant& step,
72  const CVariant& maximum);
73 
74  float m_volume;
75  int m_audioStream;
76  bool m_passthrough = false;
77 
78  typedef std::vector<int> Features;
79  Features m_audioCaps;
80 private:
81  static std::string FormatFlags(StreamFlags flags);
82 };
void OnSettingChanged(const std::shared_ptr< const CSetting > &setting) override
The value of the given setting has changed.
Definition: GUIDialogAudioSettings.cpp:97
Definition: Variant.h:29
void FrameMove() override
Main update function, called every frame prior to rendering Any window that requires updating on a fr...
Definition: GUIDialogAudioSettings.cpp:53
Definition: SettingDefinitions.h:66
void OnSettingAction(const std::shared_ptr< const CSetting > &setting) override
The given setting has been activated.
Definition: GUIDialogAudioSettings.cpp:146
Definition: SmartPlayList.cpp:137
Definition: GUIDialogSettingsManualBase.h:37
Definition: GUIDialogAudioSettings.h:21