1 #ifndef VIDEO_DISPLAY_PROFILE_H_
2 #define VIDEO_DISPLAY_PROFILE_H_
9 #include <QRecursiveMutex>
26 static constexpr
const char*
COND_WIDTH {
"cond_width" };
28 static constexpr
const char*
COND_RATE {
"cond_framerate" };
30 static constexpr
const char*
PREF_DEC {
"pref_decoder" };
31 static constexpr
const char*
PREF_CPUS {
"pref_max_cpus" };
32 static constexpr
const char*
PREF_LOOP {
"pref_skiploop" };
33 static constexpr
const char*
PREF_RENDER {
"pref_videorenderer" };
59 void SetProfileID(
uint Id);
60 void Set(
const QString &Value,
const QString &Data);
63 uint GetProfileID()
const;
64 QString Get(
const QString &Value)
const;
65 uint GetPriority()
const;
66 QMap<QString,QString> GetAll()
const;
69 bool CheckRange(
const QString& Key,
float Value,
bool *Ok =
nullptr)
const;
70 bool CheckRange(
const QString& Key,
int Value,
bool *Ok =
nullptr)
const;
71 bool CheckRange(
const QString& Key,
float FValue,
int IValue,
bool IsFloat,
bool *Ok =
nullptr)
const;
72 bool IsMatch(QSize Size,
float Framerate,
const QString &CodecName,
73 const QStringList &DisallowedDecoders = QStringList())
const;
88 void DeinterlacersChanged(
const QString& Single,
const QString& Double);
89 void UpscalerChanged(
const QString& Upscaler);
95 void SetInput(QSize Size,
float Framerate = 0,
const QString &CodecName = QString(),
96 const QStringList &DisallowedDecoders = QStringList());
97 void SetOutput(
float Framerate);
98 float GetOutput()
const;
99 void SetVideoRenderer(
const QString &VideoRenderer);
100 QString GetDecoder()
const;
101 bool IsDecoderCompatible(
const QString &
Decoder)
const;
102 uint GetMaxCPUs()
const ;
103 bool IsSkipLoopEnabled()
const;
104 QString GetVideoRenderer()
const;
106 QString GetSingleRatePreferences()
const;
107 QString GetDoubleRatePreferences()
const;
108 QString GetUpscaler()
const;
111 static void InitStatics(
bool Reinit =
false);
112 static const QList<QPair<QString,QString> >& GetDeinterlacers();
113 static QStringList GetDecoders();
114 static QStringList GetDecoderNames();
115 static std::vector<std::pair<QString,QString>> GetUpscalers();
116 static QString GetDecoderName(
const QString &
Decoder);
117 static QString GetDecoderHelp(
const QString &
Decoder = QString());
118 static QString GetVideoRendererName(
const QString &Renderer);
119 static QString GetDefaultProfileName(
const QString &HostName);
120 static void SetDefaultProfileName(
const QString &ProfileName,
const QString &HostName);
121 static uint GetProfileGroupID(
const QString &ProfileName,
const QString &HostName);
122 static QStringList GetProfiles(
const QString &HostName);
123 static bool DeleteProfileGroup(
const QString &GroupName,
const QString &HostName);
124 static uint CreateProfileGroup(
const QString &ProfileName,
const QString &HostName);
126 const QString& Width,
const QString& Height,
127 const QString& Codecs,
const QString&
Decoder,
128 uint MaxCpus,
bool SkipLoop,
const QString& VideoRenderer,
129 const QString& Deint1,
const QString& Deint2,
131 static void CreateProfiles(
const QString &HostName);
132 static QStringList GetVideoRenderers(
const QString &
Decoder);
133 static QString GetVideoRendererHelp(
const QString &Renderer);
134 static QString GetPreferredVideoRenderer(
const QString &
Decoder);
135 static QStringList GetFilteredRenderers(
const QString &
Decoder,
const QStringList &Renderers);
136 static QString GetBestVideoRenderer(
const QStringList &Renderers);
137 static std::vector<MythVideoProfileItem> LoadDB(
uint GroupId);
138 static bool DeleteDB(
uint GroupId,
const std::vector<MythVideoProfileItem>& Items);
139 static bool SaveDB(
uint GroupId, std::vector<MythVideoProfileItem>& Items);
142 std::vector<MythVideoProfileItem>::const_iterator
143 FindMatch(QSize Size,
float Framerate,
const QString &CodecName,
144 const QStringList& DisallowedDecoders = QStringList());
145 void LoadBestPreferences(QSize Size,
float Framerate,
const QString &CodecName,
146 const QStringList &DisallowedDecoders = QStringList());
147 QString GetPreference(
const QString &Key)
const;
148 void SetPreference(
const QString &Key,
const QString &Value);
152 QSize m_lastSize { 0, 0 };
153 float m_lastRate { 0.0F };
159 static inline bool kSafeInitialized =
false;
160 static inline QMap<QString,QStringList> kSafeRenderer = {};
161 static inline QMap<QString,QStringList> kSafeRendererGroup = {};
162 static inline QMap<QString,QStringList> kSafeEquivDec = {};
163 static inline QStringList kSafeCustom = {};
164 static inline QMap<QString,uint> kSafeRendererPriority = {};
165 static inline QMap<QString,QString> kDecName = {};
166 static inline QMap<QString,QString> kRendName = {};
167 static inline QStringList kSafeDecoders = {};