1#ifndef VIDEO_DISPLAY_PROFILE_H_
2#define VIDEO_DISPLAY_PROFILE_H_
10#include <QRecursiveMutex>
28static constexpr const char*
COND_RATE {
"cond_framerate" };
30static constexpr const char*
PREF_DEC {
"pref_decoder" };
31static constexpr const char*
PREF_CPUS {
"pref_max_cpus" };
32static constexpr const char*
PREF_LOOP {
"pref_skiploop" };
33static 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;
100 void SetInput(QSize Size,
float Framerate = 0,
const QString &CodecName = QString(),
101 const QStringList &DisallowedDecoders = QStringList());
102 void SetOutput(
float Framerate);
104 void SetVideoRenderer(
const QString &VideoRenderer);
105 QString GetDecoder()
const;
106 bool IsDecoderCompatible(
const QString &
Decoder)
const;
107 uint GetMaxCPUs()
const ;
108 bool IsSkipLoopEnabled()
const;
109 QString GetVideoRenderer()
const;
111 QString GetSingleRatePreferences()
const;
112 QString GetDoubleRatePreferences()
const;
113 QString GetUpscaler()
const;
116 static void InitStatics(
bool Reinit =
false);
117 static const QList<QPair<QString,QString> >& GetDeinterlacers();
118 static QStringList GetDecoders();
119 static QStringList GetDecoderNames();
120 static std::vector<std::pair<QString,QString>> GetUpscalers();
121 static QString GetDecoderName(
const QString &
Decoder);
122 static QString GetDecoderHelp(
const QString &
Decoder = QString());
123 static QString GetVideoRendererName(
const QString &Renderer);
124 static QString GetDefaultProfileName(
const QString &HostName);
125 static void SetDefaultProfileName(
const QString &ProfileName,
const QString &HostName);
126 static uint GetProfileGroupID(
const QString &ProfileName,
const QString &HostName);
127 static QStringList GetProfiles(
const QString &HostName);
128 static bool DeleteProfileGroup(
const QString &GroupName,
const QString &HostName);
129 static uint CreateProfileGroup(
const QString &ProfileName,
const QString &HostName);
131 const QString& Width,
const QString& Height,
132 const QString& Codecs,
const QString&
Decoder,
133 uint MaxCpus,
bool SkipLoop,
const QString& VideoRenderer,
134 const QString& Deint1,
const QString& Deint2,
136 static void CreateProfiles(
const QString &HostName);
137 static QStringList GetVideoRenderers(
const QString &
Decoder);
138 static QString GetVideoRendererHelp(
const QString &Renderer);
139 static QString GetPreferredVideoRenderer(
const QString &
Decoder);
140 static QStringList GetFilteredRenderers(
const QString &
Decoder,
const QStringList &Renderers);
141 static QString GetBestVideoRenderer(
const QStringList &Renderers);
142 static std::vector<MythVideoProfileItem> LoadDB(
uint GroupId);
143 static bool DeleteDB(
uint GroupId,
const std::vector<MythVideoProfileItem>& Items);
144 static bool SaveDB(
uint GroupId, std::vector<MythVideoProfileItem>& Items);
147 std::vector<MythVideoProfileItem>::const_iterator
148 FindMatch(QSize Size,
float Framerate,
const QString &CodecName,
149 const QStringList& DisallowedDecoders = QStringList());
150 void LoadBestPreferences(QSize Size,
float Framerate,
const QString &CodecName,
151 const QStringList &DisallowedDecoders = QStringList());
152 QString GetPreference(
const QString &Key)
const;
153 void SetPreference(
const QString &Key,
const QString &Value);
157 QSize m_lastSize { 0, 0 };
158 float m_lastRate { 0.0F };
164 static inline bool kSafeInitialized =
false;
165 static inline QMap<QString,QStringList> kSafeRenderer = {};
166 static inline QMap<QString,QStringList> kSafeRendererGroup = {};
167 static inline QMap<QString,QStringList> kSafeEquivDec = {};
168 static inline QStringList kSafeCustom = {};
169 static inline QMap<QString,uint> kSafeRendererPriority = {};
170 static inline QMap<QString,QString> kDecName = {};
171 static inline QMap<QString,QString> kRendName = {};
172 static inline QStringList kSafeDecoders = {};
std::strong_ordering operator<=>(const MythVideoProfileItem &o) const
~MythVideoProfileItem()=default
QMap< QString, QString > m_pref
MythVideoProfileItem()=default
bool operator==(const MythVideoProfileItem &o) const
void UpscalerChanged(const QString &Upscaler)
static QRecursiveMutex kSafeLock
QMap< QString, QString > m_currentPreferences
~MythVideoProfile() override=default
void DeinterlacersChanged(const QString &Single, const QString &Double)
std::vector< MythVideoProfileItem > m_allowedPreferences
static XRROutputInfo * GetOutput(XRRScreenResources *Resources, MythXDisplay *mDisplay, QScreen *qScreen, RROutput *Output=nullptr)
static constexpr const char * PREF_DEC
static constexpr const char * PREF_DEINT1X
static constexpr const char * DEINT_QUALITY_MEDIUM
static constexpr const char * DEINT_QUALITY_HIGH
static constexpr const char * DEINT_QUALITY_SHADER
static constexpr const char * PREF_LOOP
static constexpr const char * DEINT_QUALITY_LOW
static constexpr const char * PREF_PRIORITY
static constexpr const char * PREF_UPSCALE
static constexpr const char * COND_RATE
static constexpr const char * COND_CODECS
static constexpr const char * PREF_CPUS
static constexpr const char * DEINT_QUALITY_NONE
static constexpr const char * COND_HEIGHT
static constexpr const char * PREF_RENDER
static constexpr const char * PREF_DEINT2X
static constexpr uint VIDEO_MAX_CPUS
static constexpr const char * UPSCALE_DEFAULT
static constexpr const char * DEINT_QUALITY_DRIVER
static constexpr const char * COND_WIDTH
static constexpr const char * UPSCALE_HQ1
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
bool operator<(const ParentalLevel &lhs, const ParentalLevel &rhs)
QMap< QString, QStringList > * equiv_decoders
QMap< QString, QStringList > * safe_renderers
QMap< QString, uint > * priorities
QMap< QString, QStringList > * render_group