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);
76 #if DEPRECATED_SECTIONSYNCER_SYNC_REPEAT
99 if (Number == LastNumber)
134 return pid == Pid &&
tid == Tid &&
mask == Mask;
204 if (fd->Matches(Pid, Tid))
213 Add(Pid, Tid, Mask,
true);
227 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.
bool Matches(u_short Pid, u_char Tid)
Indicates whether this filter wants to receive data from the given Pid/Tid.
void Del(cListObject *Object, bool DeleteObject=true)
void Add(cListObject *Object, cListObject *After=NULL)
const T * Next(const T *Object) const
< Returns the element immediately before Object in this list, or NULL if Object is the first element ...
const T * First(void) const
Returns the first element in this list, or NULL if the list is empty.
const cChannel * Channel(void)
void Del(const cFilterData *FilterData)
void Add(const cFilterData *FilterData)
void Detach(cFilter *Filter)
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 Sync(uchar Version, int Number, int LastNumber)
bool GetSectionFlag(uchar Section)