Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PID/MAC filtering



Thomas 'Dent' Mirlacher writes:
 > hi list,
 > 
 > ... i know this reply coms a little bit late, but i still have some
 > problems ... :(
 > 
 > > The lower 8 bits are the filter mask, i.e. it specifies which bits are
 > > checked, the higher 8 bits specify which value those bits should have. 
 > > So, in the example from CyberLogin.c:
 > > 
 > > struct bitfilter filt = {
 > >   0x200,
 > >   { 0x3eff, 0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x00ff, 0x00ff,
 > >     0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
 > >   0x1c,0
 > > };
 > 
 > so if the hi-byte is the value and the lo-byte is the mask, there has
 > to be a problem somewhere (in my thoughts or in cyberlogin)
 > 
 > according to the standard the above would filter:
 > 
 > table_id
 > section_syntax_indicator
 > private_indicator
 > section_length
 > section_number
 > last_section_number
 > MACaddr[3]
 > MACaddr[2]

Sorry, I should have explained this earlier.
The second and third bytes (section_syntax_indicator ... section_length)
are not filtered.
I just left them out of the filter definition. So, the second byte 
is MACaddr[6] ...

One would have to cut them out anyway before giving the filter to the
firmware.
A general DVB filter API for Linux which also works for other cards will have to
be implemented later.

 > would appreciate any comments on this. another question is, if we can separate
 > pids from the bitmask - or can someone give me a good reason to have one
 > bitmask per pid - and not multiple pids and multiple bitmasks (applying to
 > the sum of filtered pids)

The hardware (TMX320AV7110) has a table of 32 PIDs and each of the
max. 32 filters a pointer to the table entry.
So, while more than one filter can point to the same PID, several PIDs
cannot point to the same filter. Itīs a hardware limitation.
Also consider that the max. hardware filter length is 12, software
(in firmware) filters go up to 16 bytes but take processing time from the 
ARM core.


Ralph


Home | Main Index | Thread Index