MythTV master
mythvideocolourspace.h
Go to the documentation of this file.
1#ifndef VIDEOCOLOURSPACE_H
2#define VIDEOCOLOURSPACE_H
3
4// Qt
5#include <QMap>
6#include <QObject>
7#include <QMatrix4x4>
8
9// FFmpeg
10#include "libavutil/pixfmt.h" // For AVCOL_xxx defines
11
12// MythTV
14#include "libmythtv/mythframe.h"
17
18class MythVideoColourSpace : public QObject, public QMatrix4x4, public ReferenceCounter
19{
20 Q_OBJECT
21
22 friend class MythVideoOutput;
23
24 public slots:
25 int ChangePictureAttribute(PictureAttribute Attribute, bool Direction, int Value);
27 void RefreshState();
28
29 signals:
30 void Updated(bool PrimariesChanged);
31 void PictureAttributeChanged(PictureAttribute Attribute, int Value);
33 void PictureAttributesUpdated(const std::map<PictureAttribute,int>& Values);
34
35 public:
41 void SetAlpha(int Value);
42 QMatrix4x4 GetPrimaryMatrix(void);
43 QStringList GetColourMappingDefines(void);
44 float GetColourGamma(void) const;
45 float GetDisplayGamma(void) const;
47 int GetRange() const;
48 int GetColourSpace() const;
49
50 protected:
51 ~MythVideoColourSpace() override;
52
53 private:
54 void SetFullRange(bool FullRange);
55 void SetBrightness(int Value);
56 void SetContrast(int Value);
57 void SetHue(int Value);
58 void SetSaturation(int Value);
59 void SaveValue(PictureAttribute Attribute, int Value);
60 void Update(void);
61 void Debug(void);
62 QMatrix4x4 GetPrimaryConversion(int Source, int Dest);
63 static MythColourSpace GetPrimaries(int Primary, float &Gamma);
64
65 private:
67 std::map<PictureAttribute,int> m_dbSettings;
68
69 bool m_fullRange { true };
70 float m_brightness { 0.0F };
71 float m_contrast { 1.0F };
72 float m_saturation { 1.0F };
73 float m_hue { 0.0F };
74 float m_alpha { 1.0F };
75 int m_colourSpace { AVCOL_SPC_UNSPECIFIED };
77 int m_range { AVCOL_RANGE_MPEG };
78 bool m_updatesDisabled { true };
79 bool m_colourShifted { false };
80 int m_colourTransfer { AVCOL_TRC_BT709 };
82 int m_colourPrimaries { AVCOL_PRI_BT709 };
83 int m_displayPrimaries { AVCOL_PRI_BT709 };
84 int m_chromaLocation { AVCHROMA_LOC_LEFT };
85 float m_colourGamma { 2.2F };
86 float m_displayGamma { 2.2F };
87 QMatrix4x4 m_primaryMatrix;
88 float m_customDisplayGamma { 0.0F };
90};
91
92#endif
MythVideoColourSpace contains a QMatrix4x4 that can convert YCbCr data to RGB.
PictureAttributeSupported m_supportedAttributes
float GetDisplayGamma(void) const
void Update(void)
Update the matrix for the current settings and colourspace.
void SetPrimariesMode(PrimariesMode Mode)
void PictureAttributeChanged(PictureAttribute Attribute, int Value)
void SetSupportedAttributes(PictureAttributeSupported Supported)
Enable the given set of picture attributes.
MythColourSpace * m_customDisplayPrimaries
int GetPictureAttribute(PictureAttribute Attribute)
void Updated(bool PrimariesChanged)
std::map< PictureAttribute, int > m_dbSettings
static MythColourSpace GetPrimaries(int Primary, float &Gamma)
PictureAttributeSupported SupportedAttributes(void) const
void SupportedAttributesChanged(PictureAttributeSupported Supported)
QStringList GetColourMappingDefines(void)
QMatrix4x4 GetPrimaryMatrix(void)
void PictureAttributesUpdated(const std::map< PictureAttribute, int > &Values)
PrimariesMode GetPrimariesMode(void)
bool UpdateColourSpace(const MythVideoFrame *Frame)
Set the current colourspace to use.
float GetColourGamma(void) const
int ChangePictureAttribute(PictureAttribute Attribute, bool Direction, int Value)
void SetFullRange(bool FullRange)
QMatrix4x4 GetPrimaryConversion(int Source, int Dest)
void SaveValue(PictureAttribute Attribute, int Value)
Save the PictureAttribute value to the database.
General purpose reference counter.
Mode
Definition: synaesthesia.h:23
PictureAttributeSupported
@ kPictureAttributeSupported_None
PictureAttribute
PrimariesMode
@ PrimariesRelaxed