[linux-dvb] unique IDs for struct dvb_demux_feed
Patrick Boettcher
patrick.boettcher at desy.de
Mon Feb 14 18:32:02 CET 2005
Hi list,
When rewriting the skystar2 driver I saw something, which maybe can be put
into an upper layer:
Every driver, which's hardware supports PID filtering (in the demod or
anywhere else), implements a similar mechanism: They hold a table or a
static list with at least an unique ID, a pid value and an active-switch.
Each time the start_feed-callback is called they look for a free entry in
this list and reserve it until it is freed by the stop_feed-callback. The
unique ID can be understood as the position in the pid-filter-table of the
hardware, just incrementing the feed_count is of course not enough and ID
can be reused. For examples, see dvb-dibusb-pid, skystar2, ttusb-budget.
The easiest solution would be to add a unique ID to struct dvb_demux_feed.
Some ugly code duplicates can then be removed.
Please have a look at the attached patch. Does this small change in
dvb_demux.[ch] is sufficient, or did I miss anything?
Thanks for your attention,
Patrick.
--
Mail: patrick.boettcher at desy.de
WWW: http://www.wi-bw.tfh-wildau.de/~pboettch/
-------------- next part --------------
? .built-in.o.cmd
? .dmxdev.o.cmd
? .dvb-core.ko.cmd
? .dvb-core.mod.o.cmd
? .dvb-core.o.cmd
? .dvb_ca_en50221.o.cmd
? .dvb_demux.o.cmd
? .dvb_filter.o.cmd
? .dvb_frontend.o.cmd
? .dvb_frontend.o.d
? .dvb_functions.o.cmd
? .dvb_i2c.o.cmd
? .dvb_ksyms.o.cmd
? .dvb_net.o.cmd
? .dvb_ringbuffer.o.cmd
? .dvbdev.o.cmd
? dvb-core.ko
? dvb-core.mod.c
Index: dvb_demux.c
===================================================================
RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_demux.c,v
retrieving revision 1.61
diff -u -3 -p -r1.61 dvb_demux.c
--- dvb_demux.c 12 Feb 2005 01:24:28 -0000 1.61
+++ dvb_demux.c 14 Feb 2005 17:29:46 -0000
@@ -1232,8 +1232,10 @@ int dvb_dmx_init(struct dvb_demux *dvbde
dvbdemux->filter[i].index = i;
}
- for (i=0; i<dvbdemux->feednum; i++)
+ for (i=0; i<dvbdemux->feednum; i++) {
dvbdemux->feed[i].state = DMX_STATE_FREE;
+ dvbdemux->feed[i].index = i;
+ }
dvbdemux->frontend_list.next=
dvbdemux->frontend_list.prev=
Index: dvb_demux.h
===================================================================
RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_demux.h,v
retrieving revision 1.22
diff -u -3 -p -r1.22 dvb_demux.h
--- dvb_demux.h 12 Feb 2005 01:24:28 -0000 1.22
+++ dvb_demux.h 14 Feb 2005 17:29:46 -0000
@@ -79,6 +79,7 @@ struct dvb_demux_feed {
struct dvb_demux *demux;
void *priv;
int type;
+ int index;
int state;
u16 pid;
u8 *buffer;
More information about the linux-dvb
mailing list