[linux-dvb] libdvbapi clarification

David Härdeman david at hardeman.nu
Tue Jul 10 10:47:30 CEST 2007

I'm trying to understand the dvbdemux_set_section_filter function in
dvp-apps/lib/libdvbapi/dvbdemux.c (lines 74 - 93).

It used to take 16 filter and 16 mask parameters, but then it was changed
15 months ago to take 18 filter and 18 mask parameters, then it throws
away 2 of each:

int dvbdemux_set_section_filter(int fd, int pid,
				uint8_t filter[18], uint8_t mask[18],
 				int start, int checkcrc)
	struct dmx_sct_filter_params sctfilter;

	memset(&sctfilter, 0, sizeof(sctfilter));
	sctfilter.pid = pid;
	memcpy(sctfilter.filter.filter, filter, 1);
	memcpy(sctfilter.filter.filter+1, filter+3, 15);
	memcpy(sctfilter.filter.mask, mask, 1);
	memcpy(sctfilter.filter.mask+1, mask+3, 15);

What is the purpose of this?

Second, how is the mask used? Would for example a filter value of 0x50 and
a mask of 0xf0 mean that all sections 0x50 - 0x5f would pass through the
section filter?

David Härdeman

More information about the linux-dvb mailing list