X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/44433f650cd3e5f9f66253b74d194fcb01578595..612e765ceb09fce886ffc02120f039f7d880048f:/lib/dvb/specs.h diff --git a/lib/dvb/specs.h b/lib/dvb/specs.h index 1a0353e5..6f30c7b2 100644 --- a/lib/dvb/specs.h +++ b/lib/dvb/specs.h @@ -2,13 +2,13 @@ #define __lib_dvb_specs_h #include -#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