|
@@ -20,7 +20,6 @@
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
-
|
|
|
#ifndef _DVB_DEMUX_H_
|
|
|
#define _DVB_DEMUX_H_
|
|
|
|
|
@@ -44,98 +43,98 @@
|
|
|
#define DVB_DEMUX_MASK_MAX 18
|
|
|
|
|
|
struct dvb_demux_filter {
|
|
|
- struct dmx_section_filter filter;
|
|
|
- u8 maskandmode [DMX_MAX_FILTER_SIZE];
|
|
|
- u8 maskandnotmode [DMX_MAX_FILTER_SIZE];
|
|
|
+ struct dmx_section_filter filter;
|
|
|
+ u8 maskandmode[DMX_MAX_FILTER_SIZE];
|
|
|
+ u8 maskandnotmode[DMX_MAX_FILTER_SIZE];
|
|
|
int doneq;
|
|
|
|
|
|
- struct dvb_demux_filter *next;
|
|
|
- struct dvb_demux_feed *feed;
|
|
|
- int index;
|
|
|
- int state;
|
|
|
- int type;
|
|
|
+ struct dvb_demux_filter *next;
|
|
|
+ struct dvb_demux_feed *feed;
|
|
|
+ int index;
|
|
|
+ int state;
|
|
|
+ int type;
|
|
|
|
|
|
- u16 hw_handle;
|
|
|
- struct timer_list timer;
|
|
|
+ u16 hw_handle;
|
|
|
+ struct timer_list timer;
|
|
|
};
|
|
|
|
|
|
-
|
|
|
#define DMX_FEED_ENTRY(pos) list_entry(pos, struct dvb_demux_feed, list_head)
|
|
|
|
|
|
struct dvb_demux_feed {
|
|
|
- union {
|
|
|
- struct dmx_ts_feed ts;
|
|
|
- struct dmx_section_feed sec;
|
|
|
+ union {
|
|
|
+ struct dmx_ts_feed ts;
|
|
|
+ struct dmx_section_feed sec;
|
|
|
} feed;
|
|
|
|
|
|
- union {
|
|
|
- dmx_ts_cb ts;
|
|
|
- dmx_section_cb sec;
|
|
|
+ union {
|
|
|
+ dmx_ts_cb ts;
|
|
|
+ dmx_section_cb sec;
|
|
|
} cb;
|
|
|
|
|
|
- struct dvb_demux *demux;
|
|
|
+ struct dvb_demux *demux;
|
|
|
void *priv;
|
|
|
- int type;
|
|
|
- int state;
|
|
|
- u16 pid;
|
|
|
- u8 *buffer;
|
|
|
- int buffer_size;
|
|
|
+ int type;
|
|
|
+ int state;
|
|
|
+ u16 pid;
|
|
|
+ u8 *buffer;
|
|
|
+ int buffer_size;
|
|
|
|
|
|
- struct timespec timeout;
|
|
|
- struct dvb_demux_filter *filter;
|
|
|
+ struct timespec timeout;
|
|
|
+ struct dvb_demux_filter *filter;
|
|
|
|
|
|
- int ts_type;
|
|
|
- enum dmx_ts_pes pes_type;
|
|
|
+ int ts_type;
|
|
|
+ enum dmx_ts_pes pes_type;
|
|
|
|
|
|
- int cc;
|
|
|
- int pusi_seen; /* prevents feeding of garbage from previous section */
|
|
|
+ int cc;
|
|
|
+ int pusi_seen; /* prevents feeding of garbage from previous section */
|
|
|
|
|
|
- u16 peslen;
|
|
|
+ u16 peslen;
|
|
|
|
|
|
struct list_head list_head;
|
|
|
- unsigned int index; /* a unique index for each feed (can be used as hardware pid filter index) */
|
|
|
+ unsigned int index; /* a unique index for each feed (can be used as hardware pid filter index) */
|
|
|
};
|
|
|
|
|
|
struct dvb_demux {
|
|
|
- struct dmx_demux dmx;
|
|
|
- void *priv;
|
|
|
- int filternum;
|
|
|
- int feednum;
|
|
|
- int (*start_feed) (struct dvb_demux_feed *feed);
|
|
|
- int (*stop_feed) (struct dvb_demux_feed *feed);
|
|
|
- int (*write_to_decoder) (struct dvb_demux_feed *feed,
|
|
|
+ struct dmx_demux dmx;
|
|
|
+ void *priv;
|
|
|
+ int filternum;
|
|
|
+ int feednum;
|
|
|
+ int (*start_feed)(struct dvb_demux_feed *feed);
|
|
|
+ int (*stop_feed)(struct dvb_demux_feed *feed);
|
|
|
+ int (*write_to_decoder)(struct dvb_demux_feed *feed,
|
|
|
const u8 *buf, size_t len);
|
|
|
- u32 (*check_crc32) (struct dvb_demux_feed *feed,
|
|
|
+ u32 (*check_crc32)(struct dvb_demux_feed *feed,
|
|
|
const u8 *buf, size_t len);
|
|
|
- void (*memcopy) (struct dvb_demux_feed *feed, u8 *dst,
|
|
|
+ void (*memcopy)(struct dvb_demux_feed *feed, u8 *dst,
|
|
|
const u8 *src, size_t len);
|
|
|
|
|
|
- int users;
|
|
|
+ int users;
|
|
|
#define MAX_DVB_DEMUX_USERS 10
|
|
|
- struct dvb_demux_filter *filter;
|
|
|
- struct dvb_demux_feed *feed;
|
|
|
+ struct dvb_demux_filter *filter;
|
|
|
+ struct dvb_demux_feed *feed;
|
|
|
|
|
|
- struct list_head frontend_list;
|
|
|
+ struct list_head frontend_list;
|
|
|
|
|
|
- struct dvb_demux_feed *pesfilter[DMX_TS_PES_OTHER];
|
|
|
- u16 pids[DMX_TS_PES_OTHER];
|
|
|
- int playing;
|
|
|
- int recording;
|
|
|
+ struct dvb_demux_feed *pesfilter[DMX_TS_PES_OTHER];
|
|
|
+ u16 pids[DMX_TS_PES_OTHER];
|
|
|
+ int playing;
|
|
|
+ int recording;
|
|
|
|
|
|
#define DMX_MAX_PID 0x2000
|
|
|
struct list_head feed_list;
|
|
|
- u8 tsbuf[204];
|
|
|
- int tsbufp;
|
|
|
+ u8 tsbuf[204];
|
|
|
+ int tsbufp;
|
|
|
|
|
|
struct semaphore mutex;
|
|
|
spinlock_t lock;
|
|
|
};
|
|
|
|
|
|
-
|
|
|
int dvb_dmx_init(struct dvb_demux *dvbdemux);
|
|
|
void dvb_dmx_release(struct dvb_demux *dvbdemux);
|
|
|
-void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, size_t count);
|
|
|
+void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf,
|
|
|
+ size_t count);
|
|
|
void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count);
|
|
|
-void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count);
|
|
|
+void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf,
|
|
|
+ size_t count);
|
|
|
|
|
|
#endif /* _DVB_DEMUX_H_ */
|