kodi
AdvancedSettings.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 "pictures/PictureScalingAlgorithm.h"
12 #include "settings/lib/ISettingCallback.h"
13 #include "settings/lib/ISettingsHandler.h"
14 #include "utils/SortUtils.h"
15 
16 #include <set>
17 #include <string>
18 #include <utility>
19 #include <vector>
20 
21 class CProfileManager;
22 class CSettingsManager;
23 class CVariant;
25 
26 class TiXmlElement;
27 namespace ADDON
28 {
29  class IAddon;
30 }
31 
33 {
34 public:
35  DatabaseSettings() { Reset(); }
36  void Reset()
37  {
38  type.clear();
39  host.clear();
40  port.clear();
41  user.clear();
42  pass.clear();
43  name.clear();
44  key.clear();
45  cert.clear();
46  ca.clear();
47  capath.clear();
48  ciphers.clear();
49  compression = false;
50  };
51  std::string type;
52  std::string host;
53  std::string port;
54  std::string user;
55  std::string pass;
56  std::string name;
57  std::string key;
58  std::string cert;
59  std::string ca;
60  std::string capath;
61  std::string ciphers;
62  bool compression;
63 };
64 
66 {
67  bool byDate;
68  bool byTitle;
69  std::string regexp;
70  int defaultSeason;
71  TVShowRegexp(bool d, const std::string& r, int s = 1, bool t = false) : regexp(r)
72  {
73  byDate = d;
74  defaultSeason = s;
75  byTitle = t;
76  }
77 };
78 
80 {
81  float fpsmin;
82  float fpsmax;
83 
84  float refreshmin;
85  float refreshmax;
86 
87  bool fallback;
88 };
89 
90 
92 {
93  float refreshmin;
94  float refreshmax;
95 
96  float delay;
97  float hdrextradelay;
98 };
99 
100 typedef std::vector<TVShowRegexp> SETTINGS_TVSHOWLIST;
101 
103 {
104  public:
106 
107  void OnSettingsLoaded() override;
108  void OnSettingsUnloaded() override;
109 
110  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
111 
112  void Initialize(CSettingsManager& settingsMgr);
113  void Uninitialize(CSettingsManager& settingsMgr);
114  bool Initialized() const { return m_initialized; }
115  void AddSettingsFile(const std::string &filename);
116  bool Load(const CProfileManager &profileManager);
117 
118  static void GetCustomTVRegexps(TiXmlElement *pRootElement, SETTINGS_TVSHOWLIST& settings);
119  static void GetCustomRegexps(TiXmlElement *pRootElement, std::vector<std::string> &settings);
120  static void GetCustomExtensions(TiXmlElement *pRootElement, std::string& extensions);
121 
122  std::string m_audioDefaultPlayer;
123  float m_audioPlayCountMinimumPercent;
124  bool m_VideoPlayerIgnoreDTSinWAV;
125  float m_limiterHold;
126  float m_limiterRelease;
127 
128  bool m_omlSync = true;
129 
130  float m_videoSubsDelayRange;
131  float m_videoAudioDelayRange;
132  bool m_videoUseTimeSeeking;
133  int m_videoTimeSeekForward;
134  int m_videoTimeSeekBackward;
135  int m_videoTimeSeekForwardBig;
136  int m_videoTimeSeekBackwardBig;
137  int m_videoPercentSeekForward;
138  int m_videoPercentSeekBackward;
139  int m_videoPercentSeekForwardBig;
140  int m_videoPercentSeekBackwardBig;
141  std::vector<int> m_seekSteps;
142  std::string m_videoPPFFmpegPostProc;
143  bool m_videoVDPAUtelecine;
144  bool m_videoVDPAUdeintSkipChromaHD;
145  bool m_musicUseTimeSeeking;
146  int m_musicTimeSeekForward;
147  int m_musicTimeSeekBackward;
148  int m_musicTimeSeekForwardBig;
149  int m_musicTimeSeekBackwardBig;
150  int m_musicPercentSeekForward;
151  int m_musicPercentSeekBackward;
152  int m_musicPercentSeekForwardBig;
153  int m_musicPercentSeekBackwardBig;
154  int m_videoIgnoreSecondsAtStart;
155  float m_videoIgnorePercentAtEnd;
156  float m_audioApplyDrc;
157  unsigned int m_maxPassthroughOffSyncDuration = 10; // when 10 ms off adjust
158  bool m_AllowMultiChannelFloat = false; // Android only switch to be removed in v22
159  bool m_superviseAudioDelay = false; // Android only to correct broken audio firmwares
160 
161  int m_videoVDPAUScaling;
162  float m_videoNonLinStretchRatio;
163  float m_videoAutoScaleMaxFps;
164  std::vector<RefreshOverride> m_videoAdjustRefreshOverrides;
165  std::vector<RefreshVideoLatency> m_videoRefreshLatency;
166  float m_videoDefaultLatency;
167  float m_videoDefaultHdrExtraLatency;
168  int m_videoCaptureUseOcclusionQuery;
169  bool m_DXVACheckCompatibility;
170  bool m_DXVACheckCompatibilityPresent;
171  int m_videoFpsDetect;
172  float m_maxTempo;
173  bool m_videoPreferStereoStream = false;
174 
175  std::string m_videoDefaultPlayer;
176  float m_videoPlayCountMinimumPercent;
177 
178  float m_slideshowBlackBarCompensation;
179  float m_slideshowZoomAmount;
180  float m_slideshowPanAmount;
181 
182  int m_songInfoDuration;
183  int m_logLevel;
184  int m_logLevelHint;
185  std::string m_cddbAddress;
187 
188  //airtunes + airplay
189  int m_airTunesPort;
190  int m_airPlayPort;
191 
201  bool m_autoMountOpticalMedia{true};
202 
203  bool m_fullScreenOnMovieStart;
204  std::string m_cachePath;
205  std::string m_videoCleanDateTimeRegExp;
206  std::string m_videoFilenameIdentifierRegExp;
207  std::vector<std::string> m_videoCleanStringRegExps;
208  std::vector<std::string> m_videoExcludeFromListingRegExps;
209  std::vector<std::string> m_allExcludeFromScanRegExps;
210  std::vector<std::string> m_moviesExcludeFromScanRegExps;
211  std::vector<std::string> m_tvshowExcludeFromScanRegExps;
212  std::vector<std::string> m_audioExcludeFromListingRegExps;
213  std::vector<std::string> m_audioExcludeFromScanRegExps;
214  std::vector<std::string> m_pictureExcludeFromListingRegExps;
215  std::vector<std::string> m_videoStackRegExps;
216  std::vector<std::string> m_folderStackRegExps;
217  std::vector<std::string> m_trailerMatchRegExps;
218  SETTINGS_TVSHOWLIST m_tvshowEnumRegExps;
219  std::string m_tvshowMultiPartEnumRegExp;
220  typedef std::vector< std::pair<std::string, std::string> > StringMapping;
221  StringMapping m_pathSubstitutions;
223  bool m_bScanIRServer;
224 
225  bool m_playlistAsFolders;
226  bool m_detectAsUdf;
227 
228  unsigned int m_fanartRes;
229  unsigned int m_imageRes;
230  CPictureScalingAlgorithm::Algorithm m_imageScalingAlgorithm;
231  unsigned int
233 
234  int m_sambaclienttimeout;
235  std::string m_sambadoscodepage;
236  bool m_sambastatfiles;
237 
238  bool m_bHTTPDirectoryStatFilesize;
239 
240  bool m_bFTPThumbs;
241  bool m_bShoutcastArt;
242 
243  std::string m_musicThumbs;
244 
245  int m_iMusicLibraryRecentlyAddedItems;
246  int m_iMusicLibraryDateAdded;
247  bool m_bMusicLibraryAllItemsOnBottom;
248  bool m_bMusicLibraryCleanOnUpdate;
249  bool m_bMusicLibraryArtistSortOnUpdate;
250  bool m_bMusicLibraryUseISODates;
251  bool m_bMusicLibraryArtistNavigatesToSongs;
252  std::string m_strMusicLibraryAlbumFormat;
253  bool m_prioritiseAPEv2tags;
254  std::string m_musicItemSeparator;
255  std::vector<std::string> m_musicArtistSeparators;
256  std::string m_videoItemSeparator;
257  std::vector<std::string> m_musicTagsFromFileFilters;
258 
259  bool m_bVideoLibraryAllItemsOnBottom;
260  int m_iVideoLibraryRecentlyAddedItems;
261  bool m_bVideoLibraryCleanOnUpdate;
262  bool m_bVideoLibraryUseFastHash;
263  bool m_bVideoLibraryImportWatchedState{true};
264  bool m_bVideoLibraryImportResumePoint{true};
265 
266  bool m_bVideoScannerIgnoreErrors;
267  int m_iVideoLibraryDateAdded;
268 
269  std::set<std::string> m_vecTokens;
270 
271  int m_iEpgUpdateCheckInterval; // seconds
272  int m_iEpgCleanupInterval; // seconds
273  int m_iEpgActiveTagCheckInterval; // seconds
274  int m_iEpgRetryInterruptedUpdateInterval; // seconds
275  int m_iEpgUpdateEmptyTagsInterval; // seconds
276  bool m_bEpgDisplayUpdatePopup;
277  bool m_bEpgDisplayIncrementalUpdatePopup;
278 
279  // EDL Commercial Break
282  bool m_EdlDisplayCommbreakNotifications;
283  int m_iEdlMaxCommBreakLength; // seconds
284  int m_iEdlMinCommBreakLength; // seconds
285  int m_iEdlMaxCommBreakGap; // seconds
286  int m_iEdlMaxStartGap; // seconds
287  int m_iEdlCommBreakAutowait; // seconds
288  int m_iEdlCommBreakAutowind; // seconds
289 
290  int m_curlconnecttimeout;
291  int m_curllowspeedtime;
292  int m_curlretries;
293  int m_curlKeepAliveInterval; // seconds
294  bool m_curlDisableIPV6;
295  bool m_curlDisableHTTP2;
296 
297  std::string m_caTrustFile;
298 
299  bool m_minimizeToTray; /* win32 only */
300  bool m_fullScreen;
301  bool m_startFullScreen;
302  bool m_showExitButton; /* Ideal for appliances to hide a 'useless' button */
303  bool m_canWindowed;
304  bool m_splashImage;
305  bool m_alwaysOnTop; /* makes xbmc to run always on top .. osx/win32 only .. */
306  int m_playlistRetries;
307  int m_playlistTimeout;
308  bool m_GLRectangleHack;
309  int m_iSkipLoopFilter;
310 
311  bool m_bVirtualShares;
312 
313  std::string m_cpuTempCmd;
314  std::string m_gpuTempCmd;
315 
316  /* PVR/TV related advanced settings */
326  DatabaseSettings m_databaseMusic; // advanced music database setup
327  DatabaseSettings m_databaseVideo; // advanced video database setup
328  DatabaseSettings m_databaseTV; // advanced tv database setup
331  bool m_useLocaleCollation;
332 
333  bool m_guiVisualizeDirtyRegions;
334  int m_guiAlgorithmDirtyRegions;
335  bool m_guiSmartRedraw;
336  int32_t m_guiAnisotropicFiltering{0};
337  unsigned int m_addonPackageFolderSize;
338 
339  bool m_jsonOutputCompact;
340  unsigned int m_jsonTcpPort;
341 
342  bool m_enableMultimediaKeys;
343  std::vector<std::string> m_settingsFiles;
344  void ParseSettingsFile(const std::string &file);
345 
346  float GetLatencyTweak(float refreshrate, bool isHDREnabled);
347  bool m_initialized;
348 
349  void SetDebugMode(bool debug);
350 
353  {
354  m_guiVisualizeDirtyRegions = !m_guiVisualizeDirtyRegions;
355  }
356 
357  // runtime settings which cannot be set from advancedsettings.xml
358  std::string m_videoExtensions;
359  std::string m_discStubExtensions;
360  std::string m_subtitlesExtensions;
361  std::string m_musicExtensions;
362  std::string m_pictureExtensions;
363 
364  std::string m_stereoscopicregex_3d;
365  std::string m_stereoscopicregex_sbs;
366  std::string m_stereoscopicregex_tab;
367 
368  bool m_openGlDebugging;
369 
370  std::string m_userAgent;
371  uint32_t m_nfsTimeout;
372  int m_nfsRetries;
373 
374  private:
375  void Initialize();
376  void Clear();
377  void SetExtraArtwork(const TiXmlElement* arttypes, std::vector<std::string>& artworkMap);
378 };
bool m_addSourceOnTop
True to put &#39;add source&#39; buttons on top.
Definition: AdvancedSettings.h:186
Definition: ISettingCallback.h:16
Definition: Variant.h:31
bool m_bPVRChannelIconsAutoScan
automatically scan user defined folder for channel icons when loading internal channel groups ...
Definition: AdvancedSettings.h:319
Definition: AdvancedSettings.h:32
bool m_handleMounting
Only used in linux for the udisks and udisks2 providers defines if kodi should automount media drives...
Definition: AdvancedSettings.h:197
int m_iPVRTimeCorrection
correct all times (epg tags, timer tags, recording tags) by this amount of minutes. defaults to 0.
Definition: AdvancedSettings.h:317
int m_iPVRInfoToggleInterval
if there are more than 1 pvr gui info item available (e.g. multiple recordings active at the same tim...
Definition: AdvancedSettings.h:318
bool m_bPVRAutoScanIconsUserSet
mark channel icons populated by auto scan as "user set"
Definition: AdvancedSettings.h:320
Definition: AdvancedSettings.h:65
unsigned int m_imageRes
the maximal resolution to cache images at (assumes 16x9)
Definition: AdvancedSettings.h:229
Definition: SettingDefinitions.h:66
int m_iPVRTimeshiftThreshold
time diff between current playing time and timeshift buffer end, in seconds, before a playing stream ...
Definition: AdvancedSettings.h:322
DatabaseSettings m_databaseEpg
Definition: AdvancedSettings.h:329
Definition: AdvancedSettings.h:79
Definition: ProfileManager.h:25
Definition: settings.py:1
Interface defining methods being called by the settings system if an action is performed on multiple/...
Definition: ISettingsHandler.h:16
Settings manager responsible for initializing, loading and handling all settings. ...
Definition: SettingsManager.h:41
void ToggleDirtyRegionVisualization()
Toggles dirty-region visualization.
Definition: AdvancedSettings.h:352
unsigned int m_imageQualityJpeg
the stored jpeg quality the lower the better (default: 4)
Definition: AdvancedSettings.h:232
Definition: AdvancedSettings.h:102
SortDescription m_PVRDefaultSortOrder
SortDecription used to store default recording sort type and sort order.
Definition: AdvancedSettings.h:324
Definition: Addon.cpp:39
int m_remoteDelay
number of remote messages to ignore before repeating
Definition: AdvancedSettings.h:222
unsigned int m_fanartRes
the maximal resolution to cache fanart at (assumes 16x9)
Definition: AdvancedSettings.h:228
bool m_bEdlMergeShortCommBreaks
If GUI notifications should be shown when reaching the start of commercial breaks.
Definition: AdvancedSettings.h:280
Definition: AdvancedSettings.h:91
Definition: SortUtils.h:176
bool m_bPVRTimeshiftSimpleOSD
use simple timeshift OSD (with progress only for the playing event instead of progress for the whole ...
Definition: AdvancedSettings.h:323
int m_iPVRNumericChannelSwitchTimeout
time in msecs after that a channel switch occurs after entering a channel number, if confirmchannelsw...
Definition: AdvancedSettings.h:321