3 #ifndef _ATSC_DESCRIPTORS_H_ 4 #define _ATSC_DESCRIPTORS_H_ 16 typedef QMap<int, const unsigned char*>
IntToBuf;
45 QString CompressionTypeString(
uint i,
uint j)
const;
47 int Mode(
int i,
int j)
const {
return *(Offset(i,j)+1); }
49 int Bytes(
int i,
int j)
const {
return *(Offset(i,j)+2); }
55 uint GetIndexOfBestMatch(QMap<uint,uint> &langPrefs)
const;
56 QString GetBestMatch(QMap<uint,uint> &langPrefs)
const;
58 QString GetSegment(
uint i,
uint j)
const;
59 QString GetFullString(
uint i)
const;
61 void Parse(
void)
const;
66 static QString Uncompressed(
const unsigned char *buf,
int len,
int mode);
67 static uint Index(
int i,
int j) {
return (i<<8)|(j&0xff); }
68 const unsigned char *
Offset(
int i,
int j)
const 69 {
return _ptrs[Index(i,j)]; }
82 if (_data && !
Parse())
103 {
return ((Offset(i,-1)[3])>>7) & 1; }
109 {
return bool(((Offset(i,-1)[3])) & 1); }
113 {
return ((Offset(i,-1)[3])) & 0x3f; }
116 {
return bool(((Offset(i,-1)[4])>>7) & 1); }
119 {
return bool(((Offset(i,-1)[4])>>6) & 1); }
126 int Index(
int i,
int j)
const {
return (i<<8) | (j & 0xff); }
127 const unsigned char *
Offset(
int i,
int j)
const 128 {
return _ptrs[Index(i,j)]; }
140 if (_data && !
Parse())
152 {
return *Offset(i,-1); }
155 {
return *(Offset(i,-1) + 1); }
159 {
return *Offset(i,j); }
163 {
return (*(Offset(i,j) + 1)) & 0xf; }
167 {
return (*(Offset(i,-1) + 2 + (RatedDimensions(i)<<1))); }
171 const unsigned char *data = Offset(i,-1) + 3 + (RatedDimensions(i)<<1);
179 int Index(
int i,
int j)
const {
return (i<<8)|(j&0xff); }
180 const unsigned char *
Offset(
int i,
int j)
const 182 IntToBuf::const_iterator it = _ptrs.find(Index(i,j));
183 return (it != _ptrs.end()) ? *it :
nullptr;
201 return QString(
"Component Name Descriptor %1")
202 .arg(ComponentNameStrings().
toString());
216 QString SampleRateCodeString(
void)
const;
221 QString BitRateCodeString(
void)
const;
224 QString SurroundModeString(
void)
const;
235 QString ChannelsString(
void)
const;
253 return _data[(Channels()==0)?7:6]>>5;
260 return _data[(Channels()==0)?7:6];
266 return _data[(Channels()==0)?8:7]>>1;
275 return bool(_data[(Channels()==0)?8:7]&1);
283 char *
tmp =
new char[TextLength()+2];
286 memcpy(
tmp, &_data[(Channels()==0)?9:8], TextLength());
288 for (
uint i=0; i<TextLength(); i++)
296 QString str;
int len = TextLength();
297 const unsigned char *buf = (&_data[(Channels()==0)?9:8]);
298 const unsigned short* ustr =
299 reinterpret_cast<const unsigned short*>(buf);
300 for (
int j=0; j<(len>>1); j++)
301 str.append( QChar( (ustr[j]<<8) | (ustr[j]>>8) ) );
305 return QString(
"TODO");
346 QString LongChannelNameString(
void)
const;
uint SampleRateCode(void) const
const unsigned char * Offset(int i, int j) const
int Mode(int i, int j) const
int CanonicalLanguageKey(int i) const
uint AServiceFlags(void) const
uint LanguageCode(void) const
uint RatingRegionCount(void) const
int Index(int i, int j) const
MultipleStringStructure(const unsigned char *data)
QString toString(MarkTypes type)
const MultipleStringStructure ComponentNameStrings() const
const unsigned char * Offset(int i, int j) const
uint RatingDimension(uint i, uint j) const
uint BitRateCode(void) const
uint SegmentCount(uint i) const
static int iso639_str3_to_key(const unsigned char *iso639_2)
ComponentNameDescriptor(const unsigned char *data, int len=300)
int iso639_key_to_canonical_key(int iso639_2)
int Index(int i, int j) const
ContentIdentifierDescriptor(const unsigned char *data, int len=300)
This is something like an ISBN for TV shows.
bool IsTextLatin1(void) const
uint TextLength(void) const
int CaptionServiceNumber(int i) const
AudioStreamDescriptor(const unsigned char *data, int len=300)
QMap< int, const unsigned char * > IntToBuf
int Bytes(int i, int j) const
ExtendedChannelNameDescriptor(const unsigned char *data, int len=300)
const unsigned char * _data
int LanguageKey(uint i) const
uint StringCount(void) const
uint BasicServiceMode(void) const
CaptionServiceDescriptor(const unsigned char *data, int len=300)
uint Channels(void) const
uint RatingValue(uint i, uint j) const
bool EasyReader(int i) const
int LanguageKey(int i) const
QString CanonicalLanguageString(uint i) const
const unsigned char * Offset(int i, int j) const
ContentAdvisoryDescriptor(const unsigned char *data, int len=300)
bool Line21Field(int i) const
Provides the long channel name for the virtual channel containing this descriptor.
QString LanguageString(int i) const
uint RatedDimensions(uint i) const
static QString iso639_key_to_str3(int code)
QString CanonicalLanguageString(int i) const
uint RatingRegion(uint i) const
uint SurroundMode(void) const
uint CompressionType(uint i, uint j) const
static uint Index(int i, int j)
bool FullService(void) const
QString toString() const override
QString LanguageString(uint i) const
uint RatingDescriptionLength(uint i) const
uint ServicesCount() const
bool WideAspectRatio(int i) const
uint LanguageCode2(void) const
int CanonicalLanguageKey(uint i) const
const MultipleStringStructure RatingDescription(uint i) const