summaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authorTilman Keskinoz <arved@FreeBSD.org>2007-01-23 17:12:37 +0000
committerTilman Keskinoz <arved@FreeBSD.org>2007-01-23 17:12:37 +0000
commit65a9d28b8bbbf59e353d1ca4e9f075db03de88c4 (patch)
treebeef3c8b290a8bbf62c9095dc9505c045285398e /multimedia
parent- Update to 6-fa-0.11-0 (diff)
Add DVB support as a knob based on a patch from
http://raaf.atspace.org/dvbusb/ Since i don't have the hardware, it is not enabled by default.
Notes
Notes: svn path=/head/; revision=183102
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/kaffeine/Makefile12
-rw-r--r--multimedia/kaffeine/files/ca.h91
-rw-r--r--multimedia/kaffeine/files/dmx.h184
-rw-r--r--multimedia/kaffeine/files/frontend.h278
-rw-r--r--multimedia/kaffeine/files/net.h60
-rw-r--r--multimedia/kaffeine/files/patch-raaf-dvb88
-rw-r--r--multimedia/kaffeine/pkg-plist7
7 files changed, 719 insertions, 1 deletions
diff --git a/multimedia/kaffeine/Makefile b/multimedia/kaffeine/Makefile
index 8aced914f7f4..a3716c234042 100644
--- a/multimedia/kaffeine/Makefile
+++ b/multimedia/kaffeine/Makefile
@@ -23,8 +23,9 @@ USE_GMAKE= yes
USE_GETTEXT= yes
USE_LDCONFIG= yes
USE_AUTOTOOLS= libtool:15
-CONFIGURE_ENV= CXXFLAGS="${CFLAGS}"
+CONFIGURE_ENV= CXXFLAGS="${CFLAGS}" CFLAGS="${CFLAGS} -I${WRKSRC}"
CONFIGURE_TARGET=
+DVB_HEADERS= ca.h dmx.h frontend.h net.h
.ifndef (WITHOUT_GSTREAMER)
USE_GSTREAMER80= yes
@@ -39,6 +40,11 @@ PLIST_SUB+= NOLAME=""
CONFIGURE_ARGS+= --without-lame
PLIST_SUB+= NOLAME="@comment "
.endif
+.ifdef (WITH_DVB)
+PLIST_SUB+= NODVB=""
+.else
+PLIST_SUB+= NODVB="@comment "
+.endif
.include <bsd.port.pre.mk>
@@ -54,5 +60,9 @@ post-patch:
${REINPLACE_CMD} -e "s,xx,," ${WRKSRC}/po/Makefile.in
${REINPLACE_CMD} "s,#include <endian.h>,," \
${WRKSRC}/kaffeine/src/input/disc/paranoia.cpp
+.ifdef (WITH_DVB)
+ ${MKDIR} ${WRKSRC}/linux/dvb
+ cd ${FILESDIR}; ${CP} ${DVB_HEADERS} ${WRKSRC}/linux/dvb
+.endif
.include <bsd.port.post.mk>
diff --git a/multimedia/kaffeine/files/ca.h b/multimedia/kaffeine/files/ca.h
new file mode 100644
index 000000000000..026e5c35c0ab
--- /dev/null
+++ b/multimedia/kaffeine/files/ca.h
@@ -0,0 +1,91 @@
+/*
+ * ca.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 General Lesser 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 _DVBCA_H_
+#define _DVBCA_H_
+
+/* slot interface types and info */
+
+typedef struct ca_slot_info {
+ int num; /* slot number */
+
+ int type; /* CA interface this slot supports */
+#define CA_CI 1 /* CI high level interface */
+#define CA_CI_LINK 2 /* CI link layer level interface */
+#define CA_CI_PHYS 4 /* CI physical layer level interface */
+#define CA_DESCR 8 /* built-in descrambler */
+#define CA_SC 128 /* simple smart card interface */
+
+ unsigned int flags;
+#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
+#define CA_CI_MODULE_READY 2
+} ca_slot_info_t;
+
+
+/* descrambler types and info */
+
+typedef struct ca_descr_info {
+ unsigned int num; /* number of available descramblers (keys) */
+ unsigned int type; /* type of supported scrambling system */
+#define CA_ECD 1
+#define CA_NDS 2
+#define CA_DSS 4
+} ca_descr_info_t;
+
+typedef struct ca_caps {
+ unsigned int slot_num; /* total number of CA card and module slots */
+ unsigned int slot_type; /* OR of all supported types */
+ unsigned int descr_num; /* total number of descrambler slots (keys) */
+ unsigned int descr_type; /* OR of all supported types */
+} ca_caps_t;
+
+/* a message to/from a CI-CAM */
+typedef struct ca_msg {
+ unsigned int index;
+ unsigned int type;
+ unsigned int length;
+ unsigned char msg[256];
+} ca_msg_t;
+
+typedef struct ca_descr {
+ unsigned int index;
+ unsigned int parity; /* 0 == even, 1 == odd */
+ unsigned char cw[8];
+} ca_descr_t;
+
+typedef struct ca_pid {
+ unsigned int pid;
+ int index; /* -1 == disable*/
+} ca_pid_t;
+
+#define CA_RESET _IO('o', 128)
+#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
+#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
+#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
+#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
+#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
+#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
+#define CA_SET_PID _IOW('o', 135, ca_pid_t)
+
+#endif
+
diff --git a/multimedia/kaffeine/files/dmx.h b/multimedia/kaffeine/files/dmx.h
new file mode 100644
index 000000000000..f6e9f5c3b60c
--- /dev/null
+++ b/multimedia/kaffeine/files/dmx.h
@@ -0,0 +1,184 @@
+/*
+ * dmx.h
+ *
+ * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
+ * & Ralph Metzler <ralph@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 _DVBDMX_H_
+#define _DVBDMX_H_
+
+#ifndef LINUX_TYPES_ADDED
+#define LINUX_TYPES_ADDED
+#include <sys/types.h>
+typedef uint64_t __u64;
+typedef uint32_t __u32;
+typedef uint16_t __u16;
+typedef uint8_t __u8;
+#endif
+
+#include <time.h>
+
+#define DMX_FILTER_SIZE 16
+
+typedef enum
+{
+ DMX_OUT_DECODER, /* Streaming directly to decoder. */
+ DMX_OUT_TAP, /* Output going to a memory buffer */
+ /* (to be retrieved via the read command).*/
+ DMX_OUT_TS_TAP /* Output multiplexed into a new TS */
+ /* (to be retrieved by reading from the */
+ /* logical DVR device). */
+} dmx_output_t;
+
+
+typedef enum
+{
+ DMX_IN_FRONTEND, /* Input from a front-end device. */
+ DMX_IN_DVR /* Input from the logical DVR device. */
+} dmx_input_t;
+
+
+typedef enum
+{
+ DMX_PES_AUDIO0,
+ DMX_PES_VIDEO0,
+ DMX_PES_TELETEXT0,
+ DMX_PES_SUBTITLE0,
+ DMX_PES_PCR0,
+
+ DMX_PES_AUDIO1,
+ DMX_PES_VIDEO1,
+ DMX_PES_TELETEXT1,
+ DMX_PES_SUBTITLE1,
+ DMX_PES_PCR1,
+
+ DMX_PES_AUDIO2,
+ DMX_PES_VIDEO2,
+ DMX_PES_TELETEXT2,
+ DMX_PES_SUBTITLE2,
+ DMX_PES_PCR2,
+
+ DMX_PES_AUDIO3,
+ DMX_PES_VIDEO3,
+ DMX_PES_TELETEXT3,
+ DMX_PES_SUBTITLE3,
+ DMX_PES_PCR3,
+
+ DMX_PES_OTHER
+} dmx_pes_type_t;
+
+#define DMX_PES_AUDIO DMX_PES_AUDIO0
+#define DMX_PES_VIDEO DMX_PES_VIDEO0
+#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
+#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0
+#define DMX_PES_PCR DMX_PES_PCR0
+
+
+typedef enum
+{
+ DMX_SCRAMBLING_EV,
+ DMX_FRONTEND_EV
+} dmx_event_t;
+
+
+typedef enum
+{
+ DMX_SCRAMBLING_OFF,
+ DMX_SCRAMBLING_ON
+} dmx_scrambling_status_t;
+
+
+typedef struct dmx_filter
+{
+ __u8 filter[DMX_FILTER_SIZE];
+ __u8 mask[DMX_FILTER_SIZE];
+ __u8 mode[DMX_FILTER_SIZE];
+} dmx_filter_t;
+
+
+struct dmx_sct_filter_params
+{
+ __u16 pid;
+ dmx_filter_t filter;
+ __u32 timeout;
+ __u32 flags;
+#define DMX_CHECK_CRC 1
+#define DMX_ONESHOT 2
+#define DMX_IMMEDIATE_START 4
+#define DMX_KERNEL_CLIENT 0x8000
+};
+
+
+struct dmx_pes_filter_params
+{
+ __u16 pid;
+ dmx_input_t input;
+ dmx_output_t output;
+ dmx_pes_type_t pes_type;
+ __u32 flags;
+};
+
+
+struct dmx_event
+{
+ dmx_event_t event;
+ time_t timeStamp;
+ union
+ {
+ dmx_scrambling_status_t scrambling;
+ } u;
+};
+
+typedef struct dmx_caps {
+ __u32 caps;
+ int num_decoders;
+} dmx_caps_t;
+
+typedef enum {
+ DMX_SOURCE_FRONT0 = 0,
+ DMX_SOURCE_FRONT1,
+ DMX_SOURCE_FRONT2,
+ DMX_SOURCE_FRONT3,
+ DMX_SOURCE_DVR0 = 16,
+ DMX_SOURCE_DVR1,
+ DMX_SOURCE_DVR2,
+ DMX_SOURCE_DVR3
+} dmx_source_t;
+
+struct dmx_stc {
+ unsigned int num; /* input : which STC? 0..N */
+ unsigned int base; /* output: divisor for stc to get 90 kHz clock */
+ __u64 stc; /* output: stc in 'base'*90 kHz units */
+};
+
+
+#define DMX_START _IO('o',41)
+#define DMX_STOP _IO('o',42)
+#define DMX_SET_FILTER _IOW('o',43,struct dmx_sct_filter_params)
+#define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params)
+#define DMX_SET_BUFFER_SIZE _IO('o',45)
+#define DMX_GET_EVENT _IOR('o',46,struct dmx_event)
+#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
+#define DMX_GET_CAPS _IOR('o',48,dmx_caps_t)
+#define DMX_SET_SOURCE _IOW('o',49,dmx_source_t)
+#define DMX_GET_STC _IOWR('o',50,struct dmx_stc)
+
+#endif /*_DVBDMX_H_*/
+
diff --git a/multimedia/kaffeine/files/frontend.h b/multimedia/kaffeine/files/frontend.h
new file mode 100644
index 000000000000..f755a8ced702
--- /dev/null
+++ b/multimedia/kaffeine/files/frontend.h
@@ -0,0 +1,278 @@
+/*
+ * frontend.h
+ *
+ * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
+ * Ralph Metzler <ralph@convergence.de>
+ * Holger Waechtler <holger@convergence.de>
+ * Andre Draszik <ad@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 _DVBFRONTEND_H_
+#define _DVBFRONTEND_H_
+
+#ifndef LINUX_TYPES_ADDED
+#define LINUX_TYPES_ADDED
+#include <sys/types.h>
+typedef uint64_t __u64;
+typedef uint32_t __u32;
+typedef uint16_t __u16;
+typedef uint8_t __u8;
+#endif
+
+
+
+typedef enum fe_type {
+ FE_QPSK,
+ FE_QAM,
+ FE_OFDM,
+ FE_ATSC
+} fe_type_t;
+
+
+typedef enum fe_caps {
+ FE_IS_STUPID = 0,
+ FE_CAN_INVERSION_AUTO = 0x1,
+ FE_CAN_FEC_1_2 = 0x2,
+ FE_CAN_FEC_2_3 = 0x4,
+ FE_CAN_FEC_3_4 = 0x8,
+ FE_CAN_FEC_4_5 = 0x10,
+ FE_CAN_FEC_5_6 = 0x20,
+ FE_CAN_FEC_6_7 = 0x40,
+ FE_CAN_FEC_7_8 = 0x80,
+ FE_CAN_FEC_8_9 = 0x100,
+ FE_CAN_FEC_AUTO = 0x200,
+ FE_CAN_QPSK = 0x400,
+ FE_CAN_QAM_16 = 0x800,
+ FE_CAN_QAM_32 = 0x1000,
+ FE_CAN_QAM_64 = 0x2000,
+ FE_CAN_QAM_128 = 0x4000,
+ FE_CAN_QAM_256 = 0x8000,
+ FE_CAN_QAM_AUTO = 0x10000,
+ FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
+ FE_CAN_BANDWIDTH_AUTO = 0x40000,
+ FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
+ FE_CAN_HIERARCHY_AUTO = 0x100000,
+ FE_CAN_8VSB = 0x200000,
+ FE_CAN_16VSB = 0x400000,
+ FE_NEEDS_BENDING = 0x20000000, // not supported anymore, don't use (frontend requires frequency bending)
+ FE_CAN_RECOVER = 0x40000000, // frontend can recover from a cable unplug automatically
+ FE_CAN_MUTE_TS = 0x80000000 // frontend can stop spurious TS data output
+} fe_caps_t;
+
+
+struct dvb_frontend_info {
+ char name[128];
+ fe_type_t type;
+ __u32 frequency_min;
+ __u32 frequency_max;
+ __u32 frequency_stepsize;
+ __u32 frequency_tolerance;
+ __u32 symbol_rate_min;
+ __u32 symbol_rate_max;
+ __u32 symbol_rate_tolerance; /* ppm */
+ __u32 notifier_delay; /* DEPRECATED */
+ fe_caps_t caps;
+};
+
+
+/**
+ * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
+ * the meaning of this struct...
+ */
+struct dvb_diseqc_master_cmd {
+ __u8 msg [6]; /* { framing, address, command, data [3] } */
+ __u8 msg_len; /* valid values are 3...6 */
+};
+
+
+struct dvb_diseqc_slave_reply {
+ __u8 msg [4]; /* { framing, data [3] } */
+ __u8 msg_len; /* valid values are 0...4, 0 means no msg */
+ int timeout; /* return from ioctl after timeout ms with */
+}; /* errorcode when no message was received */
+
+
+typedef enum fe_sec_voltage {
+ SEC_VOLTAGE_13,
+ SEC_VOLTAGE_18,
+ SEC_VOLTAGE_OFF
+} fe_sec_voltage_t;
+
+
+typedef enum fe_sec_tone_mode {
+ SEC_TONE_ON,
+ SEC_TONE_OFF
+} fe_sec_tone_mode_t;
+
+
+typedef enum fe_sec_mini_cmd {
+ SEC_MINI_A,
+ SEC_MINI_B
+} fe_sec_mini_cmd_t;
+
+
+typedef enum fe_status {
+ FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
+ FE_HAS_CARRIER = 0x02, /* found a DVB signal */
+ FE_HAS_VITERBI = 0x04, /* FEC is stable */
+ FE_HAS_SYNC = 0x08, /* found sync bytes */
+ FE_HAS_LOCK = 0x10, /* everything's working... */
+ FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
+ FE_REINIT = 0x40 /* frontend was reinitialized, */
+} fe_status_t; /* application is recommended to reset */
+ /* DiSEqC, tone and parameters */
+
+typedef enum fe_spectral_inversion {
+ INVERSION_OFF,
+ INVERSION_ON,
+ INVERSION_AUTO
+} fe_spectral_inversion_t;
+
+
+typedef enum fe_code_rate {
+ FEC_NONE = 0,
+ FEC_1_2,
+ FEC_2_3,
+ FEC_3_4,
+ FEC_4_5,
+ FEC_5_6,
+ FEC_6_7,
+ FEC_7_8,
+ FEC_8_9,
+ FEC_AUTO
+} fe_code_rate_t;
+
+
+typedef enum fe_modulation {
+ QPSK,
+ QAM_16,
+ QAM_32,
+ QAM_64,
+ QAM_128,
+ QAM_256,
+ QAM_AUTO,
+ VSB_8,
+ VSB_16
+} fe_modulation_t;
+
+typedef enum fe_transmit_mode {
+ TRANSMISSION_MODE_2K,
+ TRANSMISSION_MODE_8K,
+ TRANSMISSION_MODE_AUTO
+} fe_transmit_mode_t;
+
+typedef enum fe_bandwidth {
+ BANDWIDTH_8_MHZ,
+ BANDWIDTH_7_MHZ,
+ BANDWIDTH_6_MHZ,
+ BANDWIDTH_AUTO
+} fe_bandwidth_t;
+
+
+typedef enum fe_guard_interval {
+ GUARD_INTERVAL_1_32,
+ GUARD_INTERVAL_1_16,
+ GUARD_INTERVAL_1_8,
+ GUARD_INTERVAL_1_4,
+ GUARD_INTERVAL_AUTO
+} fe_guard_interval_t;
+
+
+typedef enum fe_hierarchy {
+ HIERARCHY_NONE,
+ HIERARCHY_1,
+ HIERARCHY_2,
+ HIERARCHY_4,
+ HIERARCHY_AUTO
+} fe_hierarchy_t;
+
+
+struct dvb_qpsk_parameters {
+ __u32 symbol_rate; /* symbol rate in Symbols per second */
+ fe_code_rate_t fec_inner; /* forward error correction (see above) */
+};
+
+
+struct dvb_qam_parameters {
+ __u32 symbol_rate; /* symbol rate in Symbols per second */
+ fe_code_rate_t fec_inner; /* forward error correction (see above) */
+ fe_modulation_t modulation; /* modulation type (see above) */
+};
+
+struct dvb_vsb_parameters {
+ fe_modulation_t modulation; /* modulation type (see above) */
+};
+
+struct dvb_ofdm_parameters {
+ fe_bandwidth_t bandwidth;
+ fe_code_rate_t code_rate_HP; /* high priority stream code rate */
+ fe_code_rate_t code_rate_LP; /* low priority stream code rate */
+ fe_modulation_t constellation; /* modulation type (see above) */
+ fe_transmit_mode_t transmission_mode;
+ fe_guard_interval_t guard_interval;
+ fe_hierarchy_t hierarchy_information;
+};
+
+
+struct dvb_frontend_parameters {
+ __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
+ /* intermediate frequency in kHz for QPSK */
+ fe_spectral_inversion_t inversion;
+ union {
+ struct dvb_qpsk_parameters qpsk;
+ struct dvb_qam_parameters qam;
+ struct dvb_ofdm_parameters ofdm;
+ struct dvb_vsb_parameters vsb;
+ } u;
+};
+
+
+struct dvb_frontend_event {
+ fe_status_t status;
+ struct dvb_frontend_parameters parameters;
+};
+
+
+
+#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
+
+#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
+#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
+#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
+#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
+
+#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
+#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
+#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
+
+#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
+#define FE_READ_BER _IOR('o', 70, __u32)
+#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
+#define FE_READ_SNR _IOR('o', 72, __u16)
+#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
+
+#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
+#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
+#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
+
+#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
+
+
+#endif /*_DVBFRONTEND_H_*/
+
diff --git a/multimedia/kaffeine/files/net.h b/multimedia/kaffeine/files/net.h
new file mode 100644
index 000000000000..b538e38fc2ba
--- /dev/null
+++ b/multimedia/kaffeine/files/net.h
@@ -0,0 +1,60 @@
+/*
+ * net.h
+ *
+ * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
+ * & Ralph Metzler <ralph@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 _DVBNET_H_
+#define _DVBNET_H_
+
+#ifndef LINUX_TYPES_ADDED
+#define LINUX_TYPES_ADDED
+#include <sys/types.h>
+typedef uint64_t __u64;
+typedef uint32_t __u32;
+typedef uint16_t __u16;
+typedef uint8_t __u8;
+#endif
+
+
+struct dvb_net_if {
+ __u16 pid;
+ __u16 if_num;
+ __u8 feedtype;
+#define DVB_NET_FEEDTYPE_MPE 0 /* multi protocol encapsulation */
+#define DVB_NET_FEEDTYPE_ULE 1 /* ultra lightweight encapsulation */
+};
+
+
+#define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if)
+#define NET_REMOVE_IF _IO('o', 53)
+#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
+
+
+/* binary compatibility cruft: */
+struct __dvb_net_if_old {
+ __u16 pid;
+ __u16 if_num;
+};
+#define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old)
+#define __NET_GET_IF_OLD _IOWR('o', 54, struct __dvb_net_if_old)
+
+
+#endif /*_DVBNET_H_*/
diff --git a/multimedia/kaffeine/files/patch-raaf-dvb b/multimedia/kaffeine/files/patch-raaf-dvb
new file mode 100644
index 000000000000..85c9a8904838
--- /dev/null
+++ b/multimedia/kaffeine/files/patch-raaf-dvb
@@ -0,0 +1,88 @@
+--- kaffeine/src/input/dvb/dvbsection.cpp.orig Fri Dec 29 08:33:41 2006
++++ kaffeine/src/input/dvb/dvbsection.cpp Fri Dec 29 08:34:31 2006
+@@ -482,7 +482,8 @@
+ char c[4];
+ QString s;
+
+- memset( mempcpy( c, buf+2, 3 ), 0, 1 );
++ memcpy(c,buf+2,3);
++ c[3] = 0;
+ s = c;
+ return s;
+ }
+--- kaffeine/src/input/dvb/dvbstream.cpp.orig Fri Dec 29 08:36:14 2006
++++ kaffeine/src/input/dvb/dvbstream.cpp Fri Dec 29 08:36:51 2006
+@@ -24,14 +24,13 @@
+ #include <sys/ioctl.h>
+ #include <sys/time.h>
+ #include <sys/stat.h>
++#include <netinet/in.h>
+ #include <resolv.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <signal.h>
+-#include <values.h>
+ #include <string.h>
+ #include <sys/socket.h>
+-#include <netinet/in.h>
+ #include <netdb.h>
+ #include <errno.h>
+
+--- kaffeine/src/input/dvb/dvbout.cpp.orig Fri Dec 29 08:37:56 2006
++++ kaffeine/src/input/dvb/dvbout.cpp Fri Dec 29 08:40:09 2006
+@@ -527,12 +527,15 @@
+ if ( haveLive && fdPipe ) {
+ while ( haveLive && fdPipe ) {
+ if ( wDist>0 ) {
++ int i;
+ if ( wpatpmt ) {
+ write( fdPipe, tspat, TS_SIZE );
+ write( fdPipe, tspmt, TS_SIZE );
+ wpatpmt = false;
+ }
+- write( fdPipe, wBuf+(wRead*TS_SIZE*NTS), TS_SIZE*NTS );
++ for(i = 0; i < NTS; ++i)
++ write( fdPipe, wBuf+(wRead*TS_SIZE*NTS)
++ +(i * TS_SIZE), TS_SIZE);
+ --wDist;
+ ++wRead;
+ if ( wRead>99 )
+--- kaffeine/src/input/dvb/lib/libucsi/endianops.h.orig Sun Nov 26 20:12:16 2006
++++ kaffeine/src/input/dvb/lib/libucsi/endianops.h Fri Dec 29 08:56:47 2006
+@@ -27,15 +27,33 @@
+ #endif
+
+ #include <stdint.h>
+-#include <byteswap.h>
+-#include <endian.h>
+
+ #define __ucsi_packed __attribute__((packed))
+
+
++#define bswap_16(x) \
++ ((((x) & 0xff00) >> 8) | \
++ (((x) & 0x00ff) << 8))
+
++#define bswap_32(x) \
++ ((((x) & 0xff000000) >> 24) | \
++ (((x) & 0x00ff0000) >> 8) | \
++ (((x) & 0x0000ff00) << 8) | \
++ (((x) & 0x000000ff) << 24))
+
+-#if __BYTE_ORDER == __BIG_ENDIAN
++static inline uint64_t
++bswap_64(uint64_t _x)
++{
++
++ return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
++ ((_x >> 8) & 0xff000000) | ((_x << 8) & ((uint64_t)0xff << 32)) |
++ ((_x << 24) & ((uint64_t)0xff << 40)) |
++ ((_x << 40) & ((uint64_t)0xff << 48)) | ((_x << 56)));
++}
++
++
++
++#if BYTE_ORDER == BIG_ENDIAN
+ #define EBIT2(x1,x2) x1 x2
+ #define EBIT3(x1,x2,x3) x1 x2 x3
+ #define EBIT4(x1,x2,x3,x4) x1 x2 x3 x4
diff --git a/multimedia/kaffeine/pkg-plist b/multimedia/kaffeine/pkg-plist
index c4df63730804..e62b399ad856 100644
--- a/multimedia/kaffeine/pkg-plist
+++ b/multimedia/kaffeine/pkg-plist
@@ -4,6 +4,7 @@ include/kaffeine/mrl.h
include/kaffeine/kaffeinepart.h
include/kaffeine/xine_part.h
include/kaffeine/xine_part_iface.h
+%%NODVB%%include/kaffeine/kaffeinedvbplugin.h
%%NOGSTREAMER%%lib/kde3/libgstreamerpart.a
%%NOGSTREAMER%%lib/kde3/libgstreamerpart.so
%%NOGSTREAMER%%lib/kde3/libgstreamerpart.la
@@ -20,6 +21,10 @@ lib/libkaffeineaudioencoder.so.0
lib/libkaffeinepart.so
lib/libkaffeinepart.la
lib/libkaffeinepart.a
+%%NODVB%%lib/libkaffeinedvbplugin.so.0
+%%NODVB%%lib/libkaffeinedvbplugin.so
+%%NODVB%%lib/libkaffeinedvbplugin.la
+%%NODVB%%lib/libkaffeinedvbplugin.a
lib/kde3/libxinepart.so
lib/kde3/libxinepart.la
lib/kde3/libxinepart.a
@@ -36,6 +41,7 @@ share/apps/kaffeine/rtsp.protocol
share/apps/kaffeine/dvbdata.tar.gz
share/apps/kaffeine/xine_part.rc
share/apps/kaffeine/pics/playing.png
+%%NODVB%%share/apps/kaffeine/kaffeinedvb.rc
share/apps/konqueror/servicemenus/kaffeine_open_directory.desktop
share/apps/konqueror/servicemenus/kaffeine_append_file.desktop
share/apps/konqueror/servicemenus/kaffeine_play_audiocd.desktop
@@ -130,6 +136,7 @@ share/mimelnk/application/x-kaffeine.desktop
share/services/kaffeineoggvorbis.desktop
share/services/xine_part.desktop
share/servicetypes/kaffeineaudioencoder.desktop
+%%NODVB%%share/servicetypes/kaffeinedvbplugin.desktop
@dirrm include/kaffeine
@dirrm share/apps/kaffeine/pics
@dirrm share/apps/kaffeine