diff --git a/mythtv/libs/libmythtv/mpeg/mpegtables.cpp b/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
index 8a0619c..189ca5e 100644
a
|
b
|
uint StreamID::Normalize(uint stream_id, const desc_list_t &desc, |
66 | 66 | return stream_id; |
67 | 67 | } |
68 | 68 | |
| 69 | bool PSIPTable::HasCRC(void) const |
| 70 | { |
| 71 | switch (TableID()) |
| 72 | { |
| 73 | case TableID::PAT: |
| 74 | case TableID::CAT: |
| 75 | case TableID::PMT: |
| 76 | return true; |
| 77 | // case TableID::TSDT |
| 78 | |
| 79 | // DVB manditory |
| 80 | case TableID::NIT: |
| 81 | case TableID::SDT: |
| 82 | case TableID::PF_EIT: |
| 83 | return true; |
| 84 | case TableID::TDT: |
| 85 | return false; |
| 86 | |
| 87 | // DVB optional |
| 88 | case TableID::NITo: |
| 89 | case TableID::SDTo: |
| 90 | case TableID::BAT: |
| 91 | case TableID::PF_EITo: |
| 92 | return true; |
| 93 | case TableID::RST: |
| 94 | case TableID::ST: |
| 95 | return false; |
| 96 | case TableID::TOT: |
| 97 | return true; |
| 98 | // case TableID::RNT: |
| 99 | // case TableID::CT: |
| 100 | // case TableID::RCT: |
| 101 | // case TableID::CIT: |
| 102 | // case TableID::MPEFEC: |
| 103 | case TableID::DIT: |
| 104 | return false; |
| 105 | case TableID::SIT: |
| 106 | return true; |
| 107 | |
| 108 | // ATSC |
| 109 | // case TableID::STUFFING: |
| 110 | // case TableID::CAPTION: |
| 111 | // case TableID::CENSOR: |
| 112 | |
| 113 | // case TableID::ECN: |
| 114 | // case TableID::SRVLOC: |
| 115 | // case TableID::TSS: |
| 116 | // case TableID::CMPNAME: |
| 117 | |
| 118 | // case TableID::MGT: |
| 119 | // case TableID::TVCT: |
| 120 | // case TableID::CVCT: |
| 121 | // case TableID::RRT: |
| 122 | // case TableID::EIT: |
| 123 | // case TableID::ETT: |
| 124 | // case TableID::STT: |
| 125 | |
| 126 | // case TableID::DCCT: |
| 127 | // case TableID::DCCSCT: |
| 128 | } |
| 129 | |
| 130 | // DVB Longterm EIT data |
| 131 | if (TableID::SC_EITbeg <= TableID() && TableID()<= TableID::SC_EITendo) |
| 132 | return true; |
| 133 | // Dishnet Longterm EIT data |
| 134 | if (TableID::DN_EITbego <= TableID() && TableID()<= TableID::DN_EITendo) |
| 135 | return true; |
| 136 | |
| 137 | return false; |
| 138 | } |
| 139 | |
69 | 140 | const bool PSIPTable::VerifyPSIP(bool verify_crc) const |
70 | 141 | { |
71 | 142 | if (verify_crc && (CalcCRC() != CRC())) |
diff --git a/mythtv/libs/libmythtv/mpeg/mpegtables.h b/mythtv/libs/libmythtv/mpeg/mpegtables.h
index b1feba5..44fd189 100644
a
|
b
|
class PSIPTable : public PESPacket |
359 | 359 | // only for real ATSC PSIP tables, not similar MPEG2 tables |
360 | 360 | void SetProtocolVersion(int ver) { pesdata()[8] = ver; } |
361 | 361 | |
| 362 | bool HasCRC(void) const; |
| 363 | |
362 | 364 | const bool VerifyPSIP(bool verify_crc) const; |
363 | 365 | |
364 | 366 | const QString toString(void) const; |
… |
… |
class ConditionalAccessTable : public PSIPTable |
627 | 629 | // for (i = 0; i < N; i++) 8.0 64 |
628 | 630 | // { descriptor() } |
629 | 631 | uint DescriptorsLength(void) const |
630 | | { return SectionLength() - PSIP_OFFSET - (HasCRC() ? 4 : 0); } |
| 632 | { return SectionLength() - PSIP_OFFSET;} |
631 | 633 | const unsigned char *Descriptors(void) const { return psipdata(); } |
632 | 634 | |
633 | 635 | // CRC_32 32 rpchof |
diff --git a/mythtv/libs/libmythtv/mpeg/pespacket.h b/mythtv/libs/libmythtv/mpeg/pespacket.h
index 4df91e3..1198b1b 100644
a
|
b
|
class PESPacket |
182 | 182 | /// 1 bit Additional Copy Info field is present |
183 | 183 | bool HasACI() const { return (_pesdata[4] & 0x4) >> 2; } |
184 | 184 | /// 1 bit Cyclic Redundancy Check present |
185 | | bool HasCRC() const { return (_pesdata[4] & 0x2) >> 1; } |
| 185 | virtual bool HasCRC() const { return (_pesdata[4] & 0x2) >> 1; } |
186 | 186 | /// 1 bit Extension flags are present |
187 | 187 | bool HasExtensionFlags() const { return _pesdata[4] & 0x1; } |
188 | 188 | |