summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/dvb-core/dmxdev.h
diff options
context:
space:
mode:
authorHolger Waechtler <devnull@localhost>2002-10-16 16:52:27 +0000
committerHolger Waechtler <devnull@localhost>2002-10-16 16:52:27 +0000
commit4cdfc7177bcafe782e27dfa468b0aa5d33cc81b7 (patch)
tree23af98b0e1da37f97558e63953011e23d1e360a5 /linux/drivers/media/dvb/dvb-core/dmxdev.h
downloadmediapointer-dvb-s2-4cdfc7177bcafe782e27dfa468b0aa5d33cc81b7.tar.gz
mediapointer-dvb-s2-4cdfc7177bcafe782e27dfa468b0aa5d33cc81b7.tar.bz2
the 2.5 tree
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core/dmxdev.h')
-rw-r--r--linux/drivers/media/dvb/dvb-core/dmxdev.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dmxdev.h b/linux/drivers/media/dvb/dvb-core/dmxdev.h
new file mode 100644
index 000000000..c5fa89d51
--- /dev/null
+++ b/linux/drivers/media/dvb/dvb-core/dmxdev.h
@@ -0,0 +1,128 @@
+/*
+ * dmxdev.h
+ *
+ * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
+ * & Marcus Metzler <marcus@convergence.de>
+ for convergence integrated media GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef _DMXDEV_H_
+#define _DMXDEV_H_
+
+#ifndef __KERNEL__
+#define __KERNEL__
+#endif
+
+#include <linux/dvb/dmx.h>
+
+#include <linux/version.h>
+#include <linux/wait.h>
+#include <linux/types.h>
+#include <linux/fs.h>
+
+#include "dvbdev.h"
+#include "demux.h"
+
+typedef enum {
+ DMXDEV_TYPE_NONE,
+ DMXDEV_TYPE_SEC,
+ DMXDEV_TYPE_PES,
+} dmxdev_type_t;
+
+typedef enum {
+ DMXDEV_STATE_FREE,
+ DMXDEV_STATE_ALLOCATED,
+ DMXDEV_STATE_SET,
+ DMXDEV_STATE_GO,
+ DMXDEV_STATE_DONE,
+ DMXDEV_STATE_TIMEDOUT
+} dmxdev_state_t;
+
+typedef struct dmxdev_buffer_s {
+ uint8_t *data;
+ uint32_t size;
+ int32_t pread;
+ int32_t pwrite;
+ wait_queue_head_t queue;
+ int error;
+} dmxdev_buffer_t;
+
+
+typedef struct dmxdev_filter_s {
+ dvb_device_t *dvbdev;
+
+ union {
+ dmx_section_filter_t *sec;
+ } filter;
+
+ union {
+ dmx_ts_feed_t *ts;
+ dmx_section_feed_t *sec;
+ } feed;
+
+ union {
+ struct dmx_sct_filter_params sec;
+ struct dmx_pes_filter_params pes;
+ } params;
+
+ int type;
+ dmxdev_state_t state;
+ struct dmxdev_s *dev;
+ dmxdev_buffer_t buffer;
+
+ // only for sections
+ struct timer_list timer;
+ int todo;
+ uint8_t secheader[3];
+
+ u16 pid;
+} dmxdev_filter_t;
+
+
+typedef struct dmxdev_dvr_s {
+ int state;
+ struct dmxdev_s *dev;
+ dmxdev_buffer_t buffer;
+} dmxdev_dvr_t;
+
+
+typedef struct dmxdev_s {
+ dvb_device_t *dvbdev;
+ dvb_device_t *dvr_dvbdev;
+
+ dmxdev_filter_t *filter;
+ dmxdev_dvr_t *dvr;
+ dmx_demux_t *demux;
+
+ int filternum;
+ int capabilities;
+#define DMXDEV_CAP_DUPLEX 1
+ dmx_frontend_t *dvr_orig_fe;
+
+ dmxdev_buffer_t dvr_buffer;
+#define DVR_BUFFER_SIZE (10*188*1024)
+
+ struct semaphore mutex;
+ spinlock_t lock;
+} dmxdev_t;
+
+
+int DmxDevInit(dmxdev_t *dmxdev, dvb_adapter_t *);
+void DmxDevRelease(dmxdev_t *dmxdev);
+
+#endif /* _DMXDEV_H_ */