3 #ifndef _DVB_DESCRIPTORS_H_
4 #define _DVB_DESCRIPTORS_H_
39 const unsigned char *encoding_override,
40 uint encoding_override_length);
49 #define byteBCDH2int(i) (i >> 4)
50 #define byteBCDL2int(i) (i & 0x0f)
51 #define byteBCD2int(i) (byteBCDH2int(i) * 10 + byteBCDL2int(i))
52 #define byte2BCD2int(i, j) \
53 (byteBCDH2int(i) * 1000 + byteBCDL2int(i) * 100 + \
54 byteBCDH2int(j) * 10 + byteBCDL2int(j))
55 #define byte3BCD2int(i, j, k) \
56 (byteBCDH2int(i) * 100000 + byteBCDL2int(i) * 10000 + \
57 byteBCDH2int(j) * 1000 + byteBCDL2int(j) * 100 + \
58 byteBCDH2int(k) * 10 + byteBCDL2int(k))
59 #define byte4BCD2int(i, j, k, l) \
60 (byteBCDH2int(i) * 10000000LL + byteBCDL2int(i) * 1000000 + \
61 byteBCDH2int(j) * 100000 + byteBCDL2int(j) * 10000 + \
62 byteBCDH2int(k) * 1000 + byteBCDL2int(k) * 100 + \
63 byteBCDH2int(l) * 10 + byteBCDL2int(l))
80 {
return QString(
"NetworkNameDescriptor: ")+
Name(); }
216 return QString(
"AdaptationFieldDataDescriptor "
217 "adaptation_field_data_identifier(%1)")
235 return QString(
"AncillaryDataDescriptor "
236 "ancillary_data_identifier(%1)")
283 return QString(
"BouquetNameDescriptor: Bouquet Name(%1)")
302 {
return (
_data[2 + i*2] << 8) |
_data[3 + i*2]; }
418 case 0x2:
case 0x3:
case 0x4:
419 case 0x6:
case 0x7:
case 0x8:
424 case 0x0A:
case 0x0B:
case 0x0C:
425 case 0x0E:
case 0x0F:
case 0x10:
439 case 0x0B:
case 0x0C:
440 case 0x0F:
case 0x10:
442 case 0x80:
case 0x81:
443 case 0x82:
case 0x83:
544 case 0x10:
case 0x11:
case 0x12:
case 0x13:
546 case 0x20:
case 0x21:
case 0x22:
case 0x23:
555 return QString(
"ComponentDescriptor(stream_content: 0x%1, "
593 static void Init(
void);
621 QString countries=
"";
624 if (i!=0) countries.append(
" ");
625 countries.append(QString::fromLatin1(
626 (
const char *)
_data+(3*(i+1)), 3));
633 return QString(
"CountryAvailabilityDescriptor: Available(%1) in (%2)")
740 static QString ms[] =
741 {
"auto",
"qam_16",
"qam_32",
"qam_64",
"qam_128",
"qam_256" };
754 (byteBCDH2int(
_data[12]) * 100));
777 const unsigned char *
data,
int len = 300) :
799 return QString(
"%1.%2 %3").arg(num / 10).arg(num % 10)
800 .arg((
IsEast()) ?
"East" :
"West");
811 static QString ps[] = {
"h",
"v",
"l",
"r" };
818 {
return !((
_data[8]>>5)&0
x1); }
830 static QString ro[] = {
"0.35",
"0.20",
"0.25",
"auto" };
851 static QString ms[] = {
"qpsk",
"qpsk",
"8psk",
"qam_16" };
863 (byteBCDH2int(
_data[12]) * 100));
887 const unsigned char *
data,
int len = 300) :
913 static QString bs[] = {
"8",
"7",
"6",
"5" };
933 static QString cs[] = {
"qpsk",
"qam_16",
"qam_64" };
954 static QString hs[] = {
"n",
"1",
"2",
"4",
"a",
"a",
"a",
"a" };
961 return (0
x2 == i) ? 4 : i;
975 static QString cr[] = {
976 "1/2",
"2/3",
"3/4",
"5/6",
"7/8",
"auto",
"auto",
"auto"
984 static QString cr[] = {
985 "1/2",
"2/3",
"3/4",
"5/6",
"7/8",
"auto",
"auto",
"auto"
1000 static QString gi[] = {
"1/32",
"1/16",
"1/8",
"1/4" };
1013 static QString tm[] = {
"2",
"8",
"4",
"auto" };
1074 QString
Text(
const unsigned char *encoding_override,
1075 uint encoding_length)
const
1078 encoding_override, encoding_length);
1111 return ((
_data[3 + (i<<2)]<<24) | (
_data[4 + (i<<2)]<<16) |
1112 (
_data[5 + (i<<2)]<<8) | (
_data[6 + (i<<2)]));
1114 return byte4BCD2int(
_data[3 + (i<<2)],
_data[4 + (i<<2)],
1156 {
return _data[2 + i*13 + 3] & 0x01; }
1159 {
return (
_data[2 + i*13 + 4] << 8) |
_data[2 + i*13 + 5]; }
1166 {
return (
_data[2 + i*13 + 11]<<8) |
_data[2 + i*13 + 12]; }
1228 const unsigned char *
data,
int len = 300) :
1247 const unsigned char *
data,
int len = 300) :
1268 const unsigned char *
data,
int len = 300) :
1299 {
return (
_data[i * 6 + 2] << 8) |
_data[i * 6 + 3]; }
1302 {
return (
_data[i * 6 + 4] << 8) |
_data[i * 6 + 5]; }
1305 {
return (
_data[i * 6 + 6] << 8) |
_data[i * 6 + 7]; }
1344 return QString(
"PDCDescriptor program_id_label(%1)")
1376 return QString(
"ScramblingDescriptor scrambling_mode(%1)")
1512 return QString(
"ServiceDescriptor: %1 %2").arg(
ServiceName())
1550 {
return (
_data[2+i*3] << 8) |
_data[3+i*3]; }
1556 QString str = QString(
"ServiceListDescriptor: %1 Services\n")
1560 if (i!=0) str.append(
"\n");
1561 str.append(QString(
" Service (%1) Type%2").arg(
ServiceID(i))
1617 uint encoding_length)
const
1620 encoding_override, encoding_length);
1623 QString
Text(
const unsigned char *encoding_override,
1624 uint encoding_length)
const
1627 encoding_override, encoding_length);
1667 return QString(
"Stream Identifier Descriptor (0x52): ComponentTag=0x%1")
1684 return QString(
"Stuffing Descriptor (0x42) length(%1)")
1714 {
return _data[5 + (i<<3)]; }
1717 {
return (
_data[6 + (i<<3)] << 8) |
_data[7 + (i<<3)]; }
1720 {
return (
_data[8 + (i<<3)] << 8) |
_data[9 + (i<<3)]; }
1782 {
return _data[5 + (i*5)] >> 3; }
1785 {
return _data[5 + (i*5)] & 0x7; }
1788 {
return _data[6 + (i*5)]; }
1834 {
return QString(
"TransportStreamDescriptor data(%1)").arg(
Data()); }
1943 offset += (
HasBSID()) ? 1 : 0;
1944 return _data[offset];
1952 offset += (
HasBSID()) ? 1 : 0;
1954 return _data[offset];
1966 case 0x0:
return "auto";
1967 case 0x1:
return "1/2";
1968 case 0x2:
return "2/3";
1969 case 0x3:
return "3/4";
1970 case 0x4:
return "5/6";
1971 case 0x5:
return "7/8";
1972 case 0x8:
return "8/9";
1973 case 0xf:
return "none";
1974 default:
return "auto";
1990 {
return (
_data[2 + (i<<2)] << 8) |
_data[3 + (i<<2)]; }
1993 {
return ((
_data[4 + (i<<2)] << 8) |
_data[5 + (i<<2)]) & 0x3ff; }
2015 return QString::fromLatin1((
const char *)
_data+4,
_data[3]);
2031 return QString::fromLatin1((
const char *)
_data+2,
_data[1]);
2036 return QString(
"DefaultAuthorityDescriptor: Authority(%1)")