12#include <QRecursiveMutex>
71 std::chrono::milliseconds timecode,
char type) = 0;
96 void FormatCC(std::chrono::milliseconds tc,
int code1,
int code2);
97 void FormatCCField(std::chrono::milliseconds tc,
size_t field,
int data);
98 bool FalseDup(std::chrono::milliseconds tc,
int field,
int data);
100 void DecodeVPS(
const unsigned char *buf);
101 void DecodeWSS(
const unsigned char *buf);
110 QString
GetXDS(
const QString &key)
const;
115 static QString
ToASCII(
const QString &cc608,
bool suppress_unknown);
120 void BufferCC(
size_t mode,
int len,
int clr);
123 void FormatTextCode(std::chrono::milliseconds tc,
size_t field,
size_t mode,
size_t len,
int b1,
int b2);
124 void FormatControlCode(std::chrono::milliseconds tc,
size_t field,
int b1,
int b2);
127 bool XDSDecode(
int field,
int b1,
int b2);
133 bool XDSPacketCRC(
const std::vector<unsigned char> &xds_buf);
std::array< bool, 4 > CC608Seen
std::array< std::chrono::milliseconds, 2 > CC608PerFieldTc
std::array< int, 8 > CC608PerMode
std::array< QString, 96 > CC608ProgramType
static constexpr uint8_t CC_LINE_CONT
std::array< std::chrono::milliseconds, 8 > CC608PerModeTc
std::array< int, 2 > CC608PerField
static constexpr uint8_t CC_MODE_MASK
static constexpr uint8_t CC_TXT_MASK
CC608PerFieldTc m_lastFormatTc
QString GetRatingString(uint i, bool future) const
void XDSPacketParse(const std::vector< unsigned char > &xds_buf)
QString GetProgramType(bool future) const
bool XDSDecode(int field, int b1, int b2)
static QString ToASCII(const QString &cc608, bool suppress_unknown)
std::array< uint, 2 > m_xdsRatingSystems
QString GetXDS(const QString &key) const
QString XDSDecodeString(const std::vector< unsigned char > &buf, uint start, uint end) const
std::array< QString, 2 > m_xdsProgramName
void DecodeWSS(const unsigned char *buf)
CC608PerField m_lastFormatData
CC608PerMode m_resumeText
std::array< QChar, 128 > m_stdChar
void FormatControlCode(std::chrono::milliseconds tc, size_t field, int b1, int b2)
void FormatTextCode(std::chrono::milliseconds tc, size_t field, size_t mode, size_t len, int b1, int b2)
QRecursiveMutex m_xdsLock
std::array< std::array< uint, 4 >, 2 > m_xdsRating
void FormatCC(std::chrono::milliseconds tc, int code1, int code2)
bool XDSPacketParseChannel(const std::vector< unsigned char > &xds_buf)
bool XDSPacketParseProgram(const std::vector< unsigned char > &xds_buf, bool future)
void DecodeVPS(const unsigned char *buf)
QChar CharCC(int code) const
bool FalseDup(std::chrono::milliseconds tc, int field, int data)
std::array< QString, 8 > m_ccBuf
QString GetProgramName(bool future) const
CC608ProgramType m_xdsProgramTypeString
uint GetRatingSystems(bool future) const
CC608PerFieldTc m_lastCodeTc
void GetServices(std::chrono::seconds seconds, CC608Seen &seen) const
void BufferCC(size_t mode, int len, int clr)
std::array< std::vector< unsigned char >, 7 > m_xdsBuf
void ResetCC(size_t mode)
bool XDSPacketCRC(const std::vector< unsigned char > &xds_buf)
std::array< std::vector< uint >, 2 > m_xdsProgramType
std::array< char, 20 > m_vpsLabel
CC608Decoder(CC608Input *ccr)
std::array< int, 4 > m_txtMode
std::array< SystemTime, 4 > m_lastSeen
void SetIgnoreTimecode(bool val)
uint GetRating(uint i, bool future) const
std::array< char, 20 > m_vpsPrLabel
CC608PerModeTc m_timeCode
CC608Decoder(const CC608Decoder &rhs)
int NewRowCC(size_t mode, int len)
void FormatCCField(std::chrono::milliseconds tc, size_t field, int data)
unsigned char resumedirect