X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/7fd4f3d49a6d2f93cae4769cf8678358ebd1abce..be7160f4c15f23e853a3a0ad7b0ad54107ed9ca1:/lib/dvb/specs.h diff --git a/lib/dvb/specs.h b/lib/dvb/specs.h index 5c26bfad..6f30c7b2 100644 --- a/lib/dvb/specs.h +++ b/lib/dvb/specs.h @@ -3,12 +3,12 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include struct eDVBPMTSpec { @@ -17,9 +17,9 @@ public: eDVBPMTSpec(int pid, int sid) { m_spec.pid = pid; - m_spec.tid = ProgramMapTable::TID; + m_spec.tid = ProgramMapSection::TID; m_spec.tidext = sid; - m_spec.timeout = ProgramMapTable::TIMEOUT; + m_spec.timeout = 20000; // ProgramMapSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -36,13 +36,30 @@ struct eDVBSDTSpec public: eDVBSDTSpec() { - m_spec.pid = ServiceDescriptionTable::PID; - m_spec.tid = ServiceDescriptionTable::TID; - m_spec.timeout = 20000; // ServiceDescriptionTable::TIMEOUT; + m_spec.pid = ServiceDescriptionSection::PID; + m_spec.tid = ServiceDescriptionSection::TID; + m_spec.timeout = 20000; // ServiceDescriptionSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; } + eDVBSDTSpec(int tsid, bool other=false) + { + m_spec.pid = ServiceDescriptionSection::PID; + m_spec.tid = ServiceDescriptionSection::TID; + m_spec.tidext = tsid; + m_spec.timeout = 20000; // ServiceDescriptionSection::TIMEOUT; + m_spec.flags = eDVBTableSpec::tfAnyVersion | + eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | + eDVBTableSpec::tfHaveTIDExt | eDVBTableSpec::tfHaveTimeout; + if (other) + { + // SDT other transport stream have TID 0x46 (current is 0x42) + // so we mask out the third bit in table id mask.. + m_spec.flags |= eDVBTableSpec::tfHaveTIDMask; + m_spec.tid_mask = 0xFB; + } + } operator eDVBTableSpec &() { return m_spec; @@ -55,9 +72,9 @@ struct eDVBNITSpec public: eDVBNITSpec() { - m_spec.pid = NetworkInformationTable::PID; - m_spec.tid = NetworkInformationTable::TID; - m_spec.timeout = NetworkInformationTable::TIMEOUT; + m_spec.pid = NetworkInformationSection::PID; + m_spec.tid = NetworkInformationSection::TID; + m_spec.timeout = NetworkInformationSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -74,9 +91,9 @@ struct eDVBBATSpec public: eDVBBATSpec() { - m_spec.pid = BouquetAssociationTable::PID; - m_spec.tid = BouquetAssociationTable::TID; - m_spec.timeout = BouquetAssociationTable::TIMEOUT; + m_spec.pid = BouquetAssociationSection::PID; + m_spec.tid = BouquetAssociationSection::TID; + m_spec.timeout = BouquetAssociationSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -93,9 +110,9 @@ struct eDVBPATSpec public: eDVBPATSpec() { - m_spec.pid = ProgramAssociationTable::PID; - m_spec.tid = ProgramAssociationTable::TID; - m_spec.timeout = ProgramAssociationTable::TIMEOUT; + m_spec.pid = ProgramAssociationSection::PID; + m_spec.tid = ProgramAssociationSection::TID; + m_spec.timeout = 20000; // ProgramAssociationSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -113,10 +130,10 @@ public: /* this is for now&next on actual transponder. */ eDVBEITSpec(int sid) { - m_spec.pid = EventInformationTable::PID; - m_spec.tid = EventInformationTable::TID; + m_spec.pid = EventInformationSection::PID; + m_spec.tid = EventInformationSection::TID; m_spec.tidext = sid; - m_spec.timeout = EventInformationTable::TIMEOUT; + m_spec.timeout = EventInformationSection::TIMEOUT; m_spec.flags = eDVBTableSpec::tfAnyVersion | eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt | eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; @@ -127,4 +144,25 @@ public: } }; +class eDVBEITSpecOther +{ + eDVBTableSpec m_spec; +public: + /* this is for now&next on actual transponder. */ + eDVBEITSpecOther(int sid) + { + m_spec.pid = EventInformationSection::PID; + m_spec.tid = TID_EIT_OTHER; + m_spec.tidext = sid; + m_spec.timeout = EventInformationSection::TIMEOUT; + m_spec.flags = eDVBTableSpec::tfAnyVersion | + eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt | + eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout; + } + operator eDVBTableSpec &() + { + return m_spec; + } +}; + #endif