41 if (SectionNumber == 0) {
59 int Index = SectionNumber / 8;
61 if (SegmentLastSectionNumber < 0 && Index == LastSectionNumber / 8)
62 SegmentLastSectionNumber = LastSectionNumber;
63 if (SegmentLastSectionNumber >= 0) {
64 b >>= 7 - (SegmentLastSectionNumber & 0x07);
65 if (!
random && SectionNumber == SegmentLastSectionNumber)
70 uint32_t s = 0xFFFFFFFF;
71 s >>= 31 - (LastSectionNumber / 8);
105 return pid == Pid &&
tid == Tid &&
mask == Mask;
175 if (fd->Matches(Pid, Tid))
184 Add(Pid, Tid, Mask,
true);
198 if (fd->Is(Pid, Tid, Mask)) {
cFilterData & operator=(const cFilterData &FilterData)
bool Matches(u_short Pid, u_char Tid)
bool Is(u_short Pid, u_char Tid, u_char Mask)
void Set(u_short Pid, u_char Tid, u_char Mask=0xFF)
Sets the given filter data by calling Add() with Sticky = true.
cSectionHandler * sectionHandler
int Transponder(void)
Returns the transponder of the data delivered to this filter.
virtual void SetStatus(bool On)
Turns this filter on or off, depending on the value of On.
int Source(void)
Returns the source of the data delivered to this filter.
const cChannel * Channel(void)
Returns the channel of the data delivered to this filter.
cList< cFilterData > data
void Del(u_short Pid, u_char Tid, u_char Mask=0xFF)
Deletes the given filter data from this filter.
void Add(u_short Pid, u_char Tid, u_char Mask=0xFF, bool Sticky=false)
Adds the given filter data to this filter.
virtual ~cFilter() override
bool Matches(u_short Pid, u_char Tid)
Indicates whether this filter wants to receive data from the given Pid/Tid.
void SetSectionFlag(uchar Section, bool On)
bool Check(uchar Version, int SectionNumber)
Returns true if Version is not the current version, or the given SectionNumber has not been marked as...
cSectionSyncer(bool Random=false)
Sets up a new section syncer.
bool Processed(int SectionNumber, int LastSectionNumber, int SegmentLastSectionNumber=-1)
Marks the given SectionNumber as processed.
bool GetSectionFlag(uchar Section)