diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dvb/audio.h | 125 | ||||
| -rw-r--r-- | include/linux/dvb/ca.h | 91 | ||||
| -rw-r--r-- | include/linux/dvb/dmx.h | 181 | ||||
| -rw-r--r-- | include/linux/dvb/frontend.h | 260 | ||||
| -rw-r--r-- | include/linux/dvb/net.h | 41 | ||||
| -rw-r--r-- | include/linux/dvb/osd.h | 111 | ||||
| -rw-r--r-- | include/linux/dvb/version.h | 29 | ||||
| -rw-r--r-- | include/linux/dvb/video.h | 199 | 
8 files changed, 1037 insertions, 0 deletions
| diff --git a/include/linux/dvb/audio.h b/include/linux/dvb/audio.h new file mode 100644 index 0000000..58956c3 --- /dev/null +++ b/include/linux/dvb/audio.h @@ -0,0 +1,125 @@ +/*  + * audio.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 _DVBAUDIO_H_ +#define _DVBAUDIO_H_ + +#ifdef __KERNEL__ +#include <linux/types.h> +#else +#include <stdint.h> +#endif + + +typedef enum { +        AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */  +	AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */  +} audio_stream_source_t; + + +typedef enum {  +	AUDIO_STOPPED,      /* Device is stopped */  +        AUDIO_PLAYING,      /* Device is currently playing */  +	AUDIO_PAUSED        /* Device is paused */  +} audio_play_state_t; + + +typedef enum { +        AUDIO_STEREO, +        AUDIO_MONO_LEFT,  +	AUDIO_MONO_RIGHT  +} audio_channel_select_t; + + +typedef struct audio_mixer {  +        unsigned int volume_left; +        unsigned int volume_right; +  // what else do we need? bass, pass-through, ... +} audio_mixer_t; + + +typedef struct audio_status {  +        int                    AV_sync_state;  /* sync audio and video? */ +        int                    mute_state;     /* audio is muted */  +        audio_play_state_t     play_state;     /* current playback state */ +        audio_stream_source_t  stream_source;  /* current stream source */ +        audio_channel_select_t channel_select; /* currently selected channel */ +        int                    bypass_mode;    /* pass on audio data to */ +	audio_mixer_t	       mixer_state;    /* current mixer state */ +} audio_status_t;                              /* separate decoder hardware */ + + +typedef +struct audio_karaoke{  /* if Vocal1 or Vocal2 are non-zero, they get mixed  */ +	int vocal1;    /* into left and right t at 70% each */ +	int vocal2;    /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/ +	int melody;    /* mixed into the left channel and */ +                       /* Vocal2 into the right channel at 100% each. */ +                       /* if Melody is non-zero, the melody channel gets mixed*/ +} audio_karaoke_t;     /* into left and right  */ + + +typedef uint16_t audio_attributes_t; +/*   bits: descr. */ +/*   15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */ +/*   12    multichannel extension */ +/*   11-10 audio type (0=not spec, 1=language included) */ +/*    9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) */ +/*    7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit,  */ +/*    5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */ +/*    2- 0 number of audio channels (n+1 channels) */ +  + +/* for GET_CAPABILITIES and SET_FORMAT, the latter should only set one bit */ +#define AUDIO_CAP_DTS    1 +#define AUDIO_CAP_LPCM   2 +#define AUDIO_CAP_MP1    4 +#define AUDIO_CAP_MP2    8 +#define AUDIO_CAP_MP3   16 +#define AUDIO_CAP_AAC   32 +#define AUDIO_CAP_OGG   64 +#define AUDIO_CAP_SDDS 128 +#define AUDIO_CAP_AC3  256 + +#define AUDIO_STOP                 _IO('o', 1)  +#define AUDIO_PLAY                 _IO('o', 2) +#define AUDIO_PAUSE                _IO('o', 3) +#define AUDIO_CONTINUE             _IO('o', 4) +#define AUDIO_SELECT_SOURCE        _IO('o', 5) +#define AUDIO_SET_MUTE             _IO('o', 6) +#define AUDIO_SET_AV_SYNC          _IO('o', 7) +#define AUDIO_SET_BYPASS_MODE      _IO('o', 8) +#define AUDIO_CHANNEL_SELECT       _IO('o', 9) +#define AUDIO_GET_STATUS           _IOR('o', 10, audio_status_t) + +#define AUDIO_GET_CAPABILITIES     _IOR('o', 11, unsigned int) +#define AUDIO_CLEAR_BUFFER         _IO('o',  12) +#define AUDIO_SET_ID               _IO('o', 13) +#define AUDIO_SET_MIXER            _IOW('o', 14, audio_mixer_t) +#define AUDIO_SET_STREAMTYPE       _IO('o', 15) +#define AUDIO_SET_EXT_ID           _IO('o', 16) +#define AUDIO_SET_ATTRIBUTES       _IOW('o', 17, audio_attributes_t) +#define AUDIO_SET_KARAOKE          _IOW('o', 18, audio_karaoke_t) + +#endif /* _DVBAUDIO_H_ */ + diff --git a/include/linux/dvb/ca.h b/include/linux/dvb/ca.h new file mode 100644 index 0000000..026e5c3 --- /dev/null +++ b/include/linux/dvb/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/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h new file mode 100644 index 0000000..62e6217 --- /dev/null +++ b/include/linux/dvb/dmx.h @@ -0,0 +1,181 @@ +/*  + * 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_ + +#include <asm/types.h> +#ifdef __KERNEL__ +#include <linux/time.h> +#else +#include <time.h> +#endif + + +#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/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h new file mode 100644 index 0000000..3fa118e --- /dev/null +++ b/include/linux/dvb/frontend.h @@ -0,0 +1,260 @@ +/* + * 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_ + +#include <asm/types.h> + + +typedef enum fe_type { +        FE_QPSK, +        FE_QAM, +        FE_OFDM +} 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_RECOVER                = 0x20000000, +	FE_CAN_CLEAN_SETUP            = 0x40000000, +	FE_CAN_MUTE_TS                = 0x80000000 +} 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;            /* ms */ +	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 +} 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_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 */ +                             /* 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; +	} 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) + + +#endif /*_DVBFRONTEND_H_*/ + diff --git a/include/linux/dvb/net.h b/include/linux/dvb/net.h new file mode 100644 index 0000000..4b8fa51 --- /dev/null +++ b/include/linux/dvb/net.h @@ -0,0 +1,41 @@ +/*  + * 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_ + +#include <asm/types.h> + + +struct dvb_net_if { +	__u16 pid; +	__u16 if_num; +}; + + +#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) + +#endif /*_DVBNET_H_*/ + diff --git a/include/linux/dvb/osd.h b/include/linux/dvb/osd.h new file mode 100644 index 0000000..0d81439 --- /dev/null +++ b/include/linux/dvb/osd.h @@ -0,0 +1,111 @@ +/*  + * osd.h + * + * Copyright (C) 2001 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 _DVBOSD_H_ +#define _DVBOSD_H_ + +typedef enum { +  // All functions return -2 on "not open" +  OSD_Close=1,    // () +  // Disables OSD and releases the buffers +  // returns 0 on success +  OSD_Open,       // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) +  // Opens OSD with this size and bit depth +  // returns 0 on success, -1 on DRAM allocation error, -2 on "already open" +  OSD_Show,       // () +  // enables OSD mode +  // returns 0 on success +  OSD_Hide,       // () +  // disables OSD mode +  // returns 0 on success +  OSD_Clear,      // () +  // Sets all pixel to color 0 +  // returns 0 on success +  OSD_Fill,       // (color) +  // Sets all pixel to color <col> +  // returns 0 on success +  OSD_SetColor,   // (color,R{x0},G{y0},B{x1},opacity{y1}) +  // set palette entry <num> to <r,g,b>, <mix> and <trans> apply +  // R,G,B: 0..255 +  // R=Red, G=Green, B=Blue +  // opacity=0:      pixel opacity 0% (only video pixel shows) +  // opacity=1..254: pixel opacity as specified in header +  // opacity=255:    pixel opacity 100% (only OSD pixel shows) +  // returns 0 on success, -1 on error +  OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data) +  // Set a number of entries in the palette +  // sets the entries "firstcolor" through "lastcolor" from the array "data" +  // data has 4 byte for each color: +  // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel +  OSD_SetTrans,   // (transparency{color}) +  // Sets transparency of mixed pixel (0..15) +  // returns 0 on success +  OSD_SetPixel,   // (x0,y0,color) +  // sets pixel <x>,<y> to color number <col> +  // returns 0 on success, -1 on error +  OSD_GetPixel,   // (x0,y0) +  // returns color number of pixel <x>,<y>,  or -1 +  OSD_SetRow,     // (x0,y0,x1,data) +  // fills pixels x0,y through  x1,y with the content of data[] +  // returns 0 on success, -1 on clipping all pixel (no pixel drawn) +  OSD_SetBlock,   // (x0,y0,x1,y1,increment{color},data) +  // fills pixels x0,y0 through  x1,y1 with the content of data[] +  // inc contains the width of one line in the data block, +  // inc<=0 uses blockwidth as linewidth +  // returns 0 on success, -1 on clipping all pixel +  OSD_FillRow,    // (x0,y0,x1,color) +  // fills pixels x0,y through  x1,y with the color <col> +  // returns 0 on success, -1 on clipping all pixel +  OSD_FillBlock,  // (x0,y0,x1,y1,color) +  // fills pixels x0,y0 through  x1,y1 with the color <col> +  // returns 0 on success, -1 on clipping all pixel +  OSD_Line,       // (x0,y0,x1,y1,color) +  // draw a line from x0,y0 to x1,y1 with the color <col> +  // returns 0 on success +  OSD_Query,      // (x0,y0,x1,y1,xasp{color}}), yasp=11 +  // fills parameters with the picture dimensions and the pixel aspect ratio +  // returns 0 on success +  OSD_Test,       // () +  // draws a test picture. for debugging purposes only +  // returns 0 on success +// TODO: remove "test" in final version +  OSD_Text,       // (x0,y0,size,color,text) +  OSD_SetWindow, //  (x0) set window with number 0<x0<8 as current +  OSD_MoveWindow, //  move current window to (x0, y0)   +} OSD_Command; + +typedef struct osd_cmd_s { +        OSD_Command cmd; +        int x0; +        int y0; +        int x1; +        int y1; +        int color; +        void *data; +} osd_cmd_t; + + +#define OSD_SEND_CMD       _IOW('o', 160, osd_cmd_t) + +#endif + diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h new file mode 100644 index 0000000..54e256e --- /dev/null +++ b/include/linux/dvb/version.h @@ -0,0 +1,29 @@ +/* + * version.h + * + * Copyright (C) 2000 Holger Waechtler <holger@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 _DVBVERSION_H_ +#define _DVBVERSION_H_ + +#define DVB_API_VERSION 3 + +#endif /*_DVBVERSION_H_*/ + diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h new file mode 100644 index 0000000..a8b6008 --- /dev/null +++ b/include/linux/dvb/video.h @@ -0,0 +1,199 @@ +/*  + * video.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 _DVBVIDEO_H_ +#define _DVBVIDEO_H_ + +#ifdef __KERNEL__ +#include <linux/types.h> +#else +#include <stdint.h> +#include <time.h> +#endif + + +typedef enum { +	VIDEO_FORMAT_4_3,     /* Select 4:3 format */ +        VIDEO_FORMAT_16_9,    /* Select 16:9 format. */ +	VIDEO_FORMAT_221_1    /* 2.21:1 */ +} video_format_t; + + +typedef enum { +	 VIDEO_SYSTEM_PAL,  +	 VIDEO_SYSTEM_NTSC,  +	 VIDEO_SYSTEM_PALN,  +	 VIDEO_SYSTEM_PALNc,  +	 VIDEO_SYSTEM_PALM,  +	 VIDEO_SYSTEM_NTSC60,  +	 VIDEO_SYSTEM_PAL60, +	 VIDEO_SYSTEM_PALM60 +} video_system_t; + + +typedef enum {    +        VIDEO_PAN_SCAN,       /* use pan and scan format */ +	VIDEO_LETTER_BOX,     /* use letterbox format */ +	VIDEO_CENTER_CUT_OUT  /* use center cut out format */ +} video_displayformat_t; + +typedef struct { +	int w; +	int h; +	video_format_t aspect_ratio; +} video_size_t; + +typedef enum { +        VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */  +	VIDEO_SOURCE_MEMORY /* If this source is selected, the stream  +			       comes from the user through the write  +			       system call */  +} video_stream_source_t; + + +typedef enum { +	VIDEO_STOPPED, /* Video is stopped */  +        VIDEO_PLAYING, /* Video is currently playing */  +	VIDEO_FREEZED  /* Video is freezed */  +} video_play_state_t;  + + +struct video_event {  +        int32_t type;  +#define VIDEO_EVENT_SIZE_CHANGED 1 +        time_t timestamp; +	union { +	        video_size_t size; +	} u; +}; + + +struct video_status {  +        int                   video_blank;   /* blank video on freeze? */ +        video_play_state_t    play_state;    /* current state of playback */   +        video_stream_source_t stream_source; /* current source (demux/memory) */ +        video_format_t        video_format;  /* current aspect ratio of stream*/ +        video_displayformat_t display_format;/* selected cropping mode */ +}; + + +struct video_still_picture { +        char *iFrame;        /* pointer to a single iframe in memory */ +        int32_t size;  +}; + + +typedef  +struct video_highlight { +	int     active;      /*    1=show highlight, 0=hide highlight */ +	uint8_t contrast1;   /*    7- 4  Pattern pixel contrast */ +                             /*    3- 0  Background pixel contrast */ +	uint8_t contrast2;   /*    7- 4  Emphasis pixel-2 contrast */ +                             /*    3- 0  Emphasis pixel-1 contrast */ +	uint8_t color1;      /*    7- 4  Pattern pixel color */ +                             /*    3- 0  Background pixel color */ +	uint8_t color2;      /*    7- 4  Emphasis pixel-2 color */ +                             /*    3- 0  Emphasis pixel-1 color */ + 	uint32_t ypos;       /*   23-22  auto action mode */ +                             /*   21-12  start y */ +                             /*    9- 0  end y */ +	uint32_t xpos;       /*   23-22  button color number */ +                             /*   21-12  start x */ +                             /*    9- 0  end x */ +} video_highlight_t; + + +typedef struct video_spu { +	int active; +	int stream_id; +} video_spu_t; + + +typedef struct video_spu_palette {      /* SPU Palette information */ +	int length; +	uint8_t *palette; +} video_spu_palette_t; + + +typedef struct video_navi_pack { +	int length;          /* 0 ... 1024 */ +	uint8_t data[1024]; +} video_navi_pack_t; + + +typedef uint16_t video_attributes_t; +/*   bits: descr. */ +/*   15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */ +/*   13-12 TV system (0=525/60, 1=625/50) */ +/*   11-10 Aspect ratio (0=4:3, 3=16:9) */ +/*    9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */ +/*    7    line 21-1 data present in GOP (1=yes, 0=no) */ +/*    6    line 21-2 data present in GOP (1=yes, 0=no) */ +/*    5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */ +/*    2    source letterboxed (1=yes, 0=no) */ +/*    0    film/camera mode (0=camera, 1=film (625/50 only)) */ + + +/* bit definitions for capabilities: */ +/* can the hardware decode MPEG1 and/or MPEG2? */ +#define VIDEO_CAP_MPEG1   1  +#define VIDEO_CAP_MPEG2   2 +/* can you send a system and/or program stream to video device? +   (you still have to open the video and the audio device but only  +    send the stream to the video device) */ +#define VIDEO_CAP_SYS     4 +#define VIDEO_CAP_PROG    8 +/* can the driver also handle SPU, NAVI and CSS encoded data?  +   (CSS API is not present yet) */ +#define VIDEO_CAP_SPU    16 +#define VIDEO_CAP_NAVI   32 +#define VIDEO_CAP_CSS    64 + + +#define VIDEO_STOP                 _IO('o', 21)  +#define VIDEO_PLAY                 _IO('o', 22) +#define VIDEO_FREEZE               _IO('o', 23) +#define VIDEO_CONTINUE             _IO('o', 24) +#define VIDEO_SELECT_SOURCE        _IO('o', 25) +#define VIDEO_SET_BLANK            _IO('o', 26) +#define VIDEO_GET_STATUS           _IOR('o', 27, struct video_status) +#define VIDEO_GET_EVENT            _IOR('o', 28, struct video_event) +#define VIDEO_SET_DISPLAY_FORMAT   _IO('o', 29) +#define VIDEO_STILLPICTURE         _IOW('o', 30, struct video_still_picture) +#define VIDEO_FAST_FORWARD         _IO('o', 31) +#define VIDEO_SLOWMOTION           _IO('o', 32) +#define VIDEO_GET_CAPABILITIES     _IOR('o', 33, unsigned int) +#define VIDEO_CLEAR_BUFFER         _IO('o',  34) +#define VIDEO_SET_ID               _IO('o', 35) +#define VIDEO_SET_STREAMTYPE       _IO('o', 36) +#define VIDEO_SET_FORMAT           _IO('o', 37) +#define VIDEO_SET_SYSTEM           _IO('o', 38) +#define VIDEO_SET_HIGHLIGHT        _IOW('o', 39, video_highlight_t) +#define VIDEO_SET_SPU              _IOW('o', 50, video_spu_t) +#define VIDEO_SET_SPU_PALETTE      _IOW('o', 51, video_spu_palette_t) +#define VIDEO_GET_NAVI             _IOR('o', 52, video_navi_pack_t) +#define VIDEO_SET_ATTRIBUTES       _IO('o', 53) +#define VIDEO_GET_SIZE             _IOR('o', 55, video_size_t) + +#endif /*_DVBVIDEO_H_*/ + | 
