Commit c57fd0219292884aabe368cf811cd1911acf798e

Authored by David Howells
Committed by Mauro Carvalho Chehab
1 parent 214e2ca2b8

UAPI: (Scripted) Disintegrate include/linux/dvb

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

Showing 18 changed files with 1405 additions and 1351 deletions Side-by-side Diff

include/linux/dvb/Kbuild
1   -header-y += audio.h
2   -header-y += ca.h
3   -header-y += dmx.h
4   -header-y += frontend.h
5   -header-y += net.h
6   -header-y += osd.h
7   -header-y += version.h
8   -header-y += video.h
include/linux/dvb/audio.h
1   -/*
2   - * audio.h
3   - *
4   - * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
5   - * & Marcus Metzler <marcus@convergence.de>
6   - * for convergence integrated media GmbH
7   - *
8   - * This program is free software; you can redistribute it and/or
9   - * modify it under the terms of the GNU General Lesser Public License
10   - * as published by the Free Software Foundation; either version 2.1
11   - * of the License, or (at your option) any later version.
12   - *
13   - * This program is distributed in the hope that it will be useful,
14   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16   - * GNU General Public License for more details.
17   - *
18   - * You should have received a copy of the GNU Lesser General Public License
19   - * along with this program; if not, write to the Free Software
20   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21   - *
22   - */
23   -
24   -#ifndef _DVBAUDIO_H_
25   -#define _DVBAUDIO_H_
26   -
27   -#include <linux/types.h>
28   -
29   -typedef enum {
30   - AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
31   - AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */
32   -} audio_stream_source_t;
33   -
34   -
35   -typedef enum {
36   - AUDIO_STOPPED, /* Device is stopped */
37   - AUDIO_PLAYING, /* Device is currently playing */
38   - AUDIO_PAUSED /* Device is paused */
39   -} audio_play_state_t;
40   -
41   -
42   -typedef enum {
43   - AUDIO_STEREO,
44   - AUDIO_MONO_LEFT,
45   - AUDIO_MONO_RIGHT,
46   - AUDIO_MONO,
47   - AUDIO_STEREO_SWAPPED
48   -} audio_channel_select_t;
49   -
50   -
51   -typedef struct audio_mixer {
52   - unsigned int volume_left;
53   - unsigned int volume_right;
54   - // what else do we need? bass, pass-through, ...
55   -} audio_mixer_t;
56   -
57   -
58   -typedef struct audio_status {
59   - int AV_sync_state; /* sync audio and video? */
60   - int mute_state; /* audio is muted */
61   - audio_play_state_t play_state; /* current playback state */
62   - audio_stream_source_t stream_source; /* current stream source */
63   - audio_channel_select_t channel_select; /* currently selected channel */
64   - int bypass_mode; /* pass on audio data to */
65   - audio_mixer_t mixer_state; /* current mixer state */
66   -} audio_status_t; /* separate decoder hardware */
67   -
68   -
69   -typedef
70   -struct audio_karaoke { /* if Vocal1 or Vocal2 are non-zero, they get mixed */
71   - int vocal1; /* into left and right t at 70% each */
72   - int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
73   - int melody; /* mixed into the left channel and */
74   - /* Vocal2 into the right channel at 100% each. */
75   - /* if Melody is non-zero, the melody channel gets mixed*/
76   -} audio_karaoke_t; /* into left and right */
77   -
78   -
79   -typedef __u16 audio_attributes_t;
80   -/* bits: descr. */
81   -/* 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */
82   -/* 12 multichannel extension */
83   -/* 11-10 audio type (0=not spec, 1=language included) */
84   -/* 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) */
85   -/* 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, */
86   -/* 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */
87   -/* 2- 0 number of audio channels (n+1 channels) */
88   -
89   -
90   -/* for GET_CAPABILITIES and SET_FORMAT, the latter should only set one bit */
91   -#define AUDIO_CAP_DTS 1
92   -#define AUDIO_CAP_LPCM 2
93   -#define AUDIO_CAP_MP1 4
94   -#define AUDIO_CAP_MP2 8
95   -#define AUDIO_CAP_MP3 16
96   -#define AUDIO_CAP_AAC 32
97   -#define AUDIO_CAP_OGG 64
98   -#define AUDIO_CAP_SDDS 128
99   -#define AUDIO_CAP_AC3 256
100   -
101   -#define AUDIO_STOP _IO('o', 1)
102   -#define AUDIO_PLAY _IO('o', 2)
103   -#define AUDIO_PAUSE _IO('o', 3)
104   -#define AUDIO_CONTINUE _IO('o', 4)
105   -#define AUDIO_SELECT_SOURCE _IO('o', 5)
106   -#define AUDIO_SET_MUTE _IO('o', 6)
107   -#define AUDIO_SET_AV_SYNC _IO('o', 7)
108   -#define AUDIO_SET_BYPASS_MODE _IO('o', 8)
109   -#define AUDIO_CHANNEL_SELECT _IO('o', 9)
110   -#define AUDIO_GET_STATUS _IOR('o', 10, audio_status_t)
111   -
112   -#define AUDIO_GET_CAPABILITIES _IOR('o', 11, unsigned int)
113   -#define AUDIO_CLEAR_BUFFER _IO('o', 12)
114   -#define AUDIO_SET_ID _IO('o', 13)
115   -#define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t)
116   -#define AUDIO_SET_STREAMTYPE _IO('o', 15)
117   -#define AUDIO_SET_EXT_ID _IO('o', 16)
118   -#define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t)
119   -#define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t)
120   -
121   -/**
122   - * AUDIO_GET_PTS
123   - *
124   - * Read the 33 bit presentation time stamp as defined
125   - * in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
126   - *
127   - * The PTS should belong to the currently played
128   - * frame if possible, but may also be a value close to it
129   - * like the PTS of the last decoded frame or the last PTS
130   - * extracted by the PES parser.
131   - */
132   -#define AUDIO_GET_PTS _IOR('o', 19, __u64)
133   -#define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
134   -
135   -#endif /* _DVBAUDIO_H_ */
include/linux/dvb/ca.h
1   -/*
2   - * ca.h
3   - *
4   - * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
5   - * & Marcus Metzler <marcus@convergence.de>
6   - * for convergence integrated media GmbH
7   - *
8   - * This program is free software; you can redistribute it and/or
9   - * modify it under the terms of the GNU General Lesser Public License
10   - * as published by the Free Software Foundation; either version 2.1
11   - * of the License, or (at your option) any later version.
12   - *
13   - * This program is distributed in the hope that it will be useful,
14   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16   - * GNU General Public License for more details.
17   - *
18   - * You should have received a copy of the GNU Lesser General Public License
19   - * along with this program; if not, write to the Free Software
20   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21   - *
22   - */
23   -
24   -#ifndef _DVBCA_H_
25   -#define _DVBCA_H_
26   -
27   -/* slot interface types and info */
28   -
29   -typedef struct ca_slot_info {
30   - int num; /* slot number */
31   -
32   - int type; /* CA interface this slot supports */
33   -#define CA_CI 1 /* CI high level interface */
34   -#define CA_CI_LINK 2 /* CI link layer level interface */
35   -#define CA_CI_PHYS 4 /* CI physical layer level interface */
36   -#define CA_DESCR 8 /* built-in descrambler */
37   -#define CA_SC 128 /* simple smart card interface */
38   -
39   - unsigned int flags;
40   -#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
41   -#define CA_CI_MODULE_READY 2
42   -} ca_slot_info_t;
43   -
44   -
45   -/* descrambler types and info */
46   -
47   -typedef struct ca_descr_info {
48   - unsigned int num; /* number of available descramblers (keys) */
49   - unsigned int type; /* type of supported scrambling system */
50   -#define CA_ECD 1
51   -#define CA_NDS 2
52   -#define CA_DSS 4
53   -} ca_descr_info_t;
54   -
55   -typedef struct ca_caps {
56   - unsigned int slot_num; /* total number of CA card and module slots */
57   - unsigned int slot_type; /* OR of all supported types */
58   - unsigned int descr_num; /* total number of descrambler slots (keys) */
59   - unsigned int descr_type; /* OR of all supported types */
60   -} ca_caps_t;
61   -
62   -/* a message to/from a CI-CAM */
63   -typedef struct ca_msg {
64   - unsigned int index;
65   - unsigned int type;
66   - unsigned int length;
67   - unsigned char msg[256];
68   -} ca_msg_t;
69   -
70   -typedef struct ca_descr {
71   - unsigned int index;
72   - unsigned int parity; /* 0 == even, 1 == odd */
73   - unsigned char cw[8];
74   -} ca_descr_t;
75   -
76   -typedef struct ca_pid {
77   - unsigned int pid;
78   - int index; /* -1 == disable*/
79   -} ca_pid_t;
80   -
81   -#define CA_RESET _IO('o', 128)
82   -#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
83   -#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
84   -#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
85   -#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
86   -#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
87   -#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
88   -#define CA_SET_PID _IOW('o', 135, ca_pid_t)
89   -
90   -#endif
include/linux/dvb/dmx.h
... ... @@ -20,139 +20,11 @@
20 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 21 *
22 22 */
23   -
24 23 #ifndef _DVBDMX_H_
25 24 #define _DVBDMX_H_
26 25  
27   -#include <linux/types.h>
28   -#ifdef __KERNEL__
29 26 #include <linux/time.h>
30   -#else
31   -#include <time.h>
32   -#endif
33   -
34   -
35   -#define DMX_FILTER_SIZE 16
36   -
37   -typedef enum
38   -{
39   - DMX_OUT_DECODER, /* Streaming directly to decoder. */
40   - DMX_OUT_TAP, /* Output going to a memory buffer */
41   - /* (to be retrieved via the read command).*/
42   - DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
43   - /* (to be retrieved by reading from the */
44   - /* logical DVR device). */
45   - DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
46   -} dmx_output_t;
47   -
48   -
49   -typedef enum
50   -{
51   - DMX_IN_FRONTEND, /* Input from a front-end device. */
52   - DMX_IN_DVR /* Input from the logical DVR device. */
53   -} dmx_input_t;
54   -
55   -
56   -typedef enum
57   -{
58   - DMX_PES_AUDIO0,
59   - DMX_PES_VIDEO0,
60   - DMX_PES_TELETEXT0,
61   - DMX_PES_SUBTITLE0,
62   - DMX_PES_PCR0,
63   -
64   - DMX_PES_AUDIO1,
65   - DMX_PES_VIDEO1,
66   - DMX_PES_TELETEXT1,
67   - DMX_PES_SUBTITLE1,
68   - DMX_PES_PCR1,
69   -
70   - DMX_PES_AUDIO2,
71   - DMX_PES_VIDEO2,
72   - DMX_PES_TELETEXT2,
73   - DMX_PES_SUBTITLE2,
74   - DMX_PES_PCR2,
75   -
76   - DMX_PES_AUDIO3,
77   - DMX_PES_VIDEO3,
78   - DMX_PES_TELETEXT3,
79   - DMX_PES_SUBTITLE3,
80   - DMX_PES_PCR3,
81   -
82   - DMX_PES_OTHER
83   -} dmx_pes_type_t;
84   -
85   -#define DMX_PES_AUDIO DMX_PES_AUDIO0
86   -#define DMX_PES_VIDEO DMX_PES_VIDEO0
87   -#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
88   -#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0
89   -#define DMX_PES_PCR DMX_PES_PCR0
90   -
91   -
92   -typedef struct dmx_filter
93   -{
94   - __u8 filter[DMX_FILTER_SIZE];
95   - __u8 mask[DMX_FILTER_SIZE];
96   - __u8 mode[DMX_FILTER_SIZE];
97   -} dmx_filter_t;
98   -
99   -
100   -struct dmx_sct_filter_params
101   -{
102   - __u16 pid;
103   - dmx_filter_t filter;
104   - __u32 timeout;
105   - __u32 flags;
106   -#define DMX_CHECK_CRC 1
107   -#define DMX_ONESHOT 2
108   -#define DMX_IMMEDIATE_START 4
109   -#define DMX_KERNEL_CLIENT 0x8000
110   -};
111   -
112   -
113   -struct dmx_pes_filter_params
114   -{
115   - __u16 pid;
116   - dmx_input_t input;
117   - dmx_output_t output;
118   - dmx_pes_type_t pes_type;
119   - __u32 flags;
120   -};
121   -
122   -typedef struct dmx_caps {
123   - __u32 caps;
124   - int num_decoders;
125   -} dmx_caps_t;
126   -
127   -typedef enum {
128   - DMX_SOURCE_FRONT0 = 0,
129   - DMX_SOURCE_FRONT1,
130   - DMX_SOURCE_FRONT2,
131   - DMX_SOURCE_FRONT3,
132   - DMX_SOURCE_DVR0 = 16,
133   - DMX_SOURCE_DVR1,
134   - DMX_SOURCE_DVR2,
135   - DMX_SOURCE_DVR3
136   -} dmx_source_t;
137   -
138   -struct dmx_stc {
139   - unsigned int num; /* input : which STC? 0..N */
140   - unsigned int base; /* output: divisor for stc to get 90 kHz clock */
141   - __u64 stc; /* output: stc in 'base'*90 kHz units */
142   -};
143   -
144   -
145   -#define DMX_START _IO('o', 41)
146   -#define DMX_STOP _IO('o', 42)
147   -#define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params)
148   -#define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
149   -#define DMX_SET_BUFFER_SIZE _IO('o', 45)
150   -#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
151   -#define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
152   -#define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
153   -#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
154   -#define DMX_ADD_PID _IOW('o', 51, __u16)
155   -#define DMX_REMOVE_PID _IOW('o', 52, __u16)
  27 +#include <uapi/linux/dvb/dmx.h>
156 28  
157 29 #endif /*_DVBDMX_H_*/
include/linux/dvb/frontend.h
1   -/*
2   - * frontend.h
3   - *
4   - * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
5   - * Ralph Metzler <ralph@convergence.de>
6   - * Holger Waechtler <holger@convergence.de>
7   - * Andre Draszik <ad@convergence.de>
8   - * for convergence integrated media GmbH
9   - *
10   - * This program is free software; you can redistribute it and/or
11   - * modify it under the terms of the GNU Lesser General Public License
12   - * as published by the Free Software Foundation; either version 2.1
13   - * of the License, or (at your option) any later version.
14   - *
15   - * This program is distributed in the hope that it will be useful,
16   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
17   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18   - * GNU General Public License for more details.
19   - *
20   - * You should have received a copy of the GNU Lesser General Public License
21   - * along with this program; if not, write to the Free Software
22   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23   - *
24   - */
25   -
26   -#ifndef _DVBFRONTEND_H_
27   -#define _DVBFRONTEND_H_
28   -
29   -#include <linux/types.h>
30   -
31   -typedef enum fe_type {
32   - FE_QPSK,
33   - FE_QAM,
34   - FE_OFDM,
35   - FE_ATSC
36   -} fe_type_t;
37   -
38   -
39   -typedef enum fe_caps {
40   - FE_IS_STUPID = 0,
41   - FE_CAN_INVERSION_AUTO = 0x1,
42   - FE_CAN_FEC_1_2 = 0x2,
43   - FE_CAN_FEC_2_3 = 0x4,
44   - FE_CAN_FEC_3_4 = 0x8,
45   - FE_CAN_FEC_4_5 = 0x10,
46   - FE_CAN_FEC_5_6 = 0x20,
47   - FE_CAN_FEC_6_7 = 0x40,
48   - FE_CAN_FEC_7_8 = 0x80,
49   - FE_CAN_FEC_8_9 = 0x100,
50   - FE_CAN_FEC_AUTO = 0x200,
51   - FE_CAN_QPSK = 0x400,
52   - FE_CAN_QAM_16 = 0x800,
53   - FE_CAN_QAM_32 = 0x1000,
54   - FE_CAN_QAM_64 = 0x2000,
55   - FE_CAN_QAM_128 = 0x4000,
56   - FE_CAN_QAM_256 = 0x8000,
57   - FE_CAN_QAM_AUTO = 0x10000,
58   - FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
59   - FE_CAN_BANDWIDTH_AUTO = 0x40000,
60   - FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
61   - FE_CAN_HIERARCHY_AUTO = 0x100000,
62   - FE_CAN_8VSB = 0x200000,
63   - FE_CAN_16VSB = 0x400000,
64   - FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
65   - FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
66   - FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
67   - FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
68   - FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
69   - FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
70   - FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
71   -} fe_caps_t;
72   -
73   -
74   -struct dvb_frontend_info {
75   - char name[128];
76   - fe_type_t type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
77   - __u32 frequency_min;
78   - __u32 frequency_max;
79   - __u32 frequency_stepsize;
80   - __u32 frequency_tolerance;
81   - __u32 symbol_rate_min;
82   - __u32 symbol_rate_max;
83   - __u32 symbol_rate_tolerance; /* ppm */
84   - __u32 notifier_delay; /* DEPRECATED */
85   - fe_caps_t caps;
86   -};
87   -
88   -
89   -/**
90   - * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
91   - * the meaning of this struct...
92   - */
93   -struct dvb_diseqc_master_cmd {
94   - __u8 msg [6]; /* { framing, address, command, data [3] } */
95   - __u8 msg_len; /* valid values are 3...6 */
96   -};
97   -
98   -
99   -struct dvb_diseqc_slave_reply {
100   - __u8 msg [4]; /* { framing, data [3] } */
101   - __u8 msg_len; /* valid values are 0...4, 0 means no msg */
102   - int timeout; /* return from ioctl after timeout ms with */
103   -}; /* errorcode when no message was received */
104   -
105   -
106   -typedef enum fe_sec_voltage {
107   - SEC_VOLTAGE_13,
108   - SEC_VOLTAGE_18,
109   - SEC_VOLTAGE_OFF
110   -} fe_sec_voltage_t;
111   -
112   -
113   -typedef enum fe_sec_tone_mode {
114   - SEC_TONE_ON,
115   - SEC_TONE_OFF
116   -} fe_sec_tone_mode_t;
117   -
118   -
119   -typedef enum fe_sec_mini_cmd {
120   - SEC_MINI_A,
121   - SEC_MINI_B
122   -} fe_sec_mini_cmd_t;
123   -
124   -
125   -/**
126   - * enum fe_status - enumerates the possible frontend status
127   - * @FE_HAS_SIGNAL: found something above the noise level
128   - * @FE_HAS_CARRIER: found a DVB signal
129   - * @FE_HAS_VITERBI: FEC is stable
130   - * @FE_HAS_SYNC: found sync bytes
131   - * @FE_HAS_LOCK: everything's working
132   - * @FE_TIMEDOUT: no lock within the last ~2 seconds
133   - * @FE_REINIT: frontend was reinitialized, application is recommended
134   - * to reset DiSEqC, tone and parameters
135   - */
136   -
137   -typedef enum fe_status {
138   - FE_HAS_SIGNAL = 0x01,
139   - FE_HAS_CARRIER = 0x02,
140   - FE_HAS_VITERBI = 0x04,
141   - FE_HAS_SYNC = 0x08,
142   - FE_HAS_LOCK = 0x10,
143   - FE_TIMEDOUT = 0x20,
144   - FE_REINIT = 0x40,
145   -} fe_status_t;
146   -
147   -typedef enum fe_spectral_inversion {
148   - INVERSION_OFF,
149   - INVERSION_ON,
150   - INVERSION_AUTO
151   -} fe_spectral_inversion_t;
152   -
153   -
154   -typedef enum fe_code_rate {
155   - FEC_NONE = 0,
156   - FEC_1_2,
157   - FEC_2_3,
158   - FEC_3_4,
159   - FEC_4_5,
160   - FEC_5_6,
161   - FEC_6_7,
162   - FEC_7_8,
163   - FEC_8_9,
164   - FEC_AUTO,
165   - FEC_3_5,
166   - FEC_9_10,
167   - FEC_2_5,
168   -} fe_code_rate_t;
169   -
170   -
171   -typedef enum fe_modulation {
172   - QPSK,
173   - QAM_16,
174   - QAM_32,
175   - QAM_64,
176   - QAM_128,
177   - QAM_256,
178   - QAM_AUTO,
179   - VSB_8,
180   - VSB_16,
181   - PSK_8,
182   - APSK_16,
183   - APSK_32,
184   - DQPSK,
185   - QAM_4_NR,
186   -} fe_modulation_t;
187   -
188   -typedef enum fe_transmit_mode {
189   - TRANSMISSION_MODE_2K,
190   - TRANSMISSION_MODE_8K,
191   - TRANSMISSION_MODE_AUTO,
192   - TRANSMISSION_MODE_4K,
193   - TRANSMISSION_MODE_1K,
194   - TRANSMISSION_MODE_16K,
195   - TRANSMISSION_MODE_32K,
196   - TRANSMISSION_MODE_C1,
197   - TRANSMISSION_MODE_C3780,
198   -} fe_transmit_mode_t;
199   -
200   -#if defined(__DVB_CORE__) || !defined (__KERNEL__)
201   -typedef enum fe_bandwidth {
202   - BANDWIDTH_8_MHZ,
203   - BANDWIDTH_7_MHZ,
204   - BANDWIDTH_6_MHZ,
205   - BANDWIDTH_AUTO,
206   - BANDWIDTH_5_MHZ,
207   - BANDWIDTH_10_MHZ,
208   - BANDWIDTH_1_712_MHZ,
209   -} fe_bandwidth_t;
210   -#endif
211   -
212   -typedef enum fe_guard_interval {
213   - GUARD_INTERVAL_1_32,
214   - GUARD_INTERVAL_1_16,
215   - GUARD_INTERVAL_1_8,
216   - GUARD_INTERVAL_1_4,
217   - GUARD_INTERVAL_AUTO,
218   - GUARD_INTERVAL_1_128,
219   - GUARD_INTERVAL_19_128,
220   - GUARD_INTERVAL_19_256,
221   - GUARD_INTERVAL_PN420,
222   - GUARD_INTERVAL_PN595,
223   - GUARD_INTERVAL_PN945,
224   -} fe_guard_interval_t;
225   -
226   -
227   -typedef enum fe_hierarchy {
228   - HIERARCHY_NONE,
229   - HIERARCHY_1,
230   - HIERARCHY_2,
231   - HIERARCHY_4,
232   - HIERARCHY_AUTO
233   -} fe_hierarchy_t;
234   -
235   -enum fe_interleaving {
236   - INTERLEAVING_NONE,
237   - INTERLEAVING_AUTO,
238   - INTERLEAVING_240,
239   - INTERLEAVING_720,
240   -};
241   -
242   -#if defined(__DVB_CORE__) || !defined (__KERNEL__)
243   -struct dvb_qpsk_parameters {
244   - __u32 symbol_rate; /* symbol rate in Symbols per second */
245   - fe_code_rate_t fec_inner; /* forward error correction (see above) */
246   -};
247   -
248   -struct dvb_qam_parameters {
249   - __u32 symbol_rate; /* symbol rate in Symbols per second */
250   - fe_code_rate_t fec_inner; /* forward error correction (see above) */
251   - fe_modulation_t modulation; /* modulation type (see above) */
252   -};
253   -
254   -struct dvb_vsb_parameters {
255   - fe_modulation_t modulation; /* modulation type (see above) */
256   -};
257   -
258   -struct dvb_ofdm_parameters {
259   - fe_bandwidth_t bandwidth;
260   - fe_code_rate_t code_rate_HP; /* high priority stream code rate */
261   - fe_code_rate_t code_rate_LP; /* low priority stream code rate */
262   - fe_modulation_t constellation; /* modulation type (see above) */
263   - fe_transmit_mode_t transmission_mode;
264   - fe_guard_interval_t guard_interval;
265   - fe_hierarchy_t hierarchy_information;
266   -};
267   -
268   -
269   -struct dvb_frontend_parameters {
270   - __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
271   - /* intermediate frequency in kHz for QPSK */
272   - fe_spectral_inversion_t inversion;
273   - union {
274   - struct dvb_qpsk_parameters qpsk;
275   - struct dvb_qam_parameters qam;
276   - struct dvb_ofdm_parameters ofdm;
277   - struct dvb_vsb_parameters vsb;
278   - } u;
279   -};
280   -
281   -struct dvb_frontend_event {
282   - fe_status_t status;
283   - struct dvb_frontend_parameters parameters;
284   -};
285   -#endif
286   -
287   -/* S2API Commands */
288   -#define DTV_UNDEFINED 0
289   -#define DTV_TUNE 1
290   -#define DTV_CLEAR 2
291   -#define DTV_FREQUENCY 3
292   -#define DTV_MODULATION 4
293   -#define DTV_BANDWIDTH_HZ 5
294   -#define DTV_INVERSION 6
295   -#define DTV_DISEQC_MASTER 7
296   -#define DTV_SYMBOL_RATE 8
297   -#define DTV_INNER_FEC 9
298   -#define DTV_VOLTAGE 10
299   -#define DTV_TONE 11
300   -#define DTV_PILOT 12
301   -#define DTV_ROLLOFF 13
302   -#define DTV_DISEQC_SLAVE_REPLY 14
303   -
304   -/* Basic enumeration set for querying unlimited capabilities */
305   -#define DTV_FE_CAPABILITY_COUNT 15
306   -#define DTV_FE_CAPABILITY 16
307   -#define DTV_DELIVERY_SYSTEM 17
308   -
309   -/* ISDB-T and ISDB-Tsb */
310   -#define DTV_ISDBT_PARTIAL_RECEPTION 18
311   -#define DTV_ISDBT_SOUND_BROADCASTING 19
312   -
313   -#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
314   -#define DTV_ISDBT_SB_SEGMENT_IDX 21
315   -#define DTV_ISDBT_SB_SEGMENT_COUNT 22
316   -
317   -#define DTV_ISDBT_LAYERA_FEC 23
318   -#define DTV_ISDBT_LAYERA_MODULATION 24
319   -#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
320   -#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
321   -
322   -#define DTV_ISDBT_LAYERB_FEC 27
323   -#define DTV_ISDBT_LAYERB_MODULATION 28
324   -#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
325   -#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
326   -
327   -#define DTV_ISDBT_LAYERC_FEC 31
328   -#define DTV_ISDBT_LAYERC_MODULATION 32
329   -#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
330   -#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
331   -
332   -#define DTV_API_VERSION 35
333   -
334   -#define DTV_CODE_RATE_HP 36
335   -#define DTV_CODE_RATE_LP 37
336   -#define DTV_GUARD_INTERVAL 38
337   -#define DTV_TRANSMISSION_MODE 39
338   -#define DTV_HIERARCHY 40
339   -
340   -#define DTV_ISDBT_LAYER_ENABLED 41
341   -
342   -#define DTV_STREAM_ID 42
343   -#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID
344   -#define DTV_DVBT2_PLP_ID_LEGACY 43
345   -
346   -#define DTV_ENUM_DELSYS 44
347   -
348   -/* ATSC-MH */
349   -#define DTV_ATSCMH_FIC_VER 45
350   -#define DTV_ATSCMH_PARADE_ID 46
351   -#define DTV_ATSCMH_NOG 47
352   -#define DTV_ATSCMH_TNOG 48
353   -#define DTV_ATSCMH_SGN 49
354   -#define DTV_ATSCMH_PRC 50
355   -#define DTV_ATSCMH_RS_FRAME_MODE 51
356   -#define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52
357   -#define DTV_ATSCMH_RS_CODE_MODE_PRI 53
358   -#define DTV_ATSCMH_RS_CODE_MODE_SEC 54
359   -#define DTV_ATSCMH_SCCC_BLOCK_MODE 55
360   -#define DTV_ATSCMH_SCCC_CODE_MODE_A 56
361   -#define DTV_ATSCMH_SCCC_CODE_MODE_B 57
362   -#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
363   -#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
364   -
365   -#define DTV_INTERLEAVING 60
366   -#define DTV_LNA 61
367   -
368   -#define DTV_MAX_COMMAND DTV_LNA
369   -
370   -typedef enum fe_pilot {
371   - PILOT_ON,
372   - PILOT_OFF,
373   - PILOT_AUTO,
374   -} fe_pilot_t;
375   -
376   -typedef enum fe_rolloff {
377   - ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
378   - ROLLOFF_20,
379   - ROLLOFF_25,
380   - ROLLOFF_AUTO,
381   -} fe_rolloff_t;
382   -
383   -typedef enum fe_delivery_system {
384   - SYS_UNDEFINED,
385   - SYS_DVBC_ANNEX_A,
386   - SYS_DVBC_ANNEX_B,
387   - SYS_DVBT,
388   - SYS_DSS,
389   - SYS_DVBS,
390   - SYS_DVBS2,
391   - SYS_DVBH,
392   - SYS_ISDBT,
393   - SYS_ISDBS,
394   - SYS_ISDBC,
395   - SYS_ATSC,
396   - SYS_ATSCMH,
397   - SYS_DTMB,
398   - SYS_CMMB,
399   - SYS_DAB,
400   - SYS_DVBT2,
401   - SYS_TURBO,
402   - SYS_DVBC_ANNEX_C,
403   -} fe_delivery_system_t;
404   -
405   -/* backward compatibility */
406   -#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
407   -#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
408   -
409   -/* ATSC-MH */
410   -
411   -enum atscmh_sccc_block_mode {
412   - ATSCMH_SCCC_BLK_SEP = 0,
413   - ATSCMH_SCCC_BLK_COMB = 1,
414   - ATSCMH_SCCC_BLK_RES = 2,
415   -};
416   -
417   -enum atscmh_sccc_code_mode {
418   - ATSCMH_SCCC_CODE_HLF = 0,
419   - ATSCMH_SCCC_CODE_QTR = 1,
420   - ATSCMH_SCCC_CODE_RES = 2,
421   -};
422   -
423   -enum atscmh_rs_frame_ensemble {
424   - ATSCMH_RSFRAME_ENS_PRI = 0,
425   - ATSCMH_RSFRAME_ENS_SEC = 1,
426   -};
427   -
428   -enum atscmh_rs_frame_mode {
429   - ATSCMH_RSFRAME_PRI_ONLY = 0,
430   - ATSCMH_RSFRAME_PRI_SEC = 1,
431   - ATSCMH_RSFRAME_RES = 2,
432   -};
433   -
434   -enum atscmh_rs_code_mode {
435   - ATSCMH_RSCODE_211_187 = 0,
436   - ATSCMH_RSCODE_223_187 = 1,
437   - ATSCMH_RSCODE_235_187 = 2,
438   - ATSCMH_RSCODE_RES = 3,
439   -};
440   -
441   -#define NO_STREAM_ID_FILTER (~0U)
442   -#define LNA_AUTO (~0U)
443   -
444   -struct dtv_cmds_h {
445   - char *name; /* A display name for debugging purposes */
446   -
447   - __u32 cmd; /* A unique ID */
448   -
449   - /* Flags */
450   - __u32 set:1; /* Either a set or get property */
451   - __u32 buffer:1; /* Does this property use the buffer? */
452   - __u32 reserved:30; /* Align */
453   -};
454   -
455   -struct dtv_property {
456   - __u32 cmd;
457   - __u32 reserved[3];
458   - union {
459   - __u32 data;
460   - struct {
461   - __u8 data[32];
462   - __u32 len;
463   - __u32 reserved1[3];
464   - void *reserved2;
465   - } buffer;
466   - } u;
467   - int result;
468   -} __attribute__ ((packed));
469   -
470   -/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
471   -#define DTV_IOCTL_MAX_MSGS 64
472   -
473   -struct dtv_properties {
474   - __u32 num;
475   - struct dtv_property *props;
476   -};
477   -
478   -#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
479   -#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
480   -
481   -
482   -/**
483   - * When set, this flag will disable any zigzagging or other "normal" tuning
484   - * behaviour. Additionally, there will be no automatic monitoring of the lock
485   - * status, and hence no frontend events will be generated. If a frontend device
486   - * is closed, this flag will be automatically turned off when the device is
487   - * reopened read-write.
488   - */
489   -#define FE_TUNE_MODE_ONESHOT 0x01
490   -
491   -
492   -#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
493   -
494   -#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
495   -#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
496   -#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
497   -#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
498   -
499   -#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
500   -#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
501   -#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
502   -
503   -#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
504   -#define FE_READ_BER _IOR('o', 70, __u32)
505   -#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
506   -#define FE_READ_SNR _IOR('o', 72, __u16)
507   -#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
508   -
509   -#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
510   -#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
511   -#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
512   -#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
513   -
514   -#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
515   -
516   -#endif /*_DVBFRONTEND_H_*/
include/linux/dvb/net.h
1   -/*
2   - * net.h
3   - *
4   - * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
5   - * & Ralph Metzler <ralph@convergence.de>
6   - * for convergence integrated media GmbH
7   - *
8   - * This program is free software; you can redistribute it and/or
9   - * modify it under the terms of the GNU Lesser General Public License
10   - * as published by the Free Software Foundation; either version 2.1
11   - * of the License, or (at your option) any later version.
12   - *
13   - * This program is distributed in the hope that it will be useful,
14   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16   - * GNU General Public License for more details.
17   - *
18   - * You should have received a copy of the GNU Lesser General Public License
19   - * along with this program; if not, write to the Free Software
20   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21   - *
22   - */
23   -
24   -#ifndef _DVBNET_H_
25   -#define _DVBNET_H_
26   -
27   -#include <linux/types.h>
28   -
29   -struct dvb_net_if {
30   - __u16 pid;
31   - __u16 if_num;
32   - __u8 feedtype;
33   -#define DVB_NET_FEEDTYPE_MPE 0 /* multi protocol encapsulation */
34   -#define DVB_NET_FEEDTYPE_ULE 1 /* ultra lightweight encapsulation */
35   -};
36   -
37   -
38   -#define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if)
39   -#define NET_REMOVE_IF _IO('o', 53)
40   -#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
41   -
42   -
43   -/* binary compatibility cruft: */
44   -struct __dvb_net_if_old {
45   - __u16 pid;
46   - __u16 if_num;
47   -};
48   -#define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old)
49   -#define __NET_GET_IF_OLD _IOWR('o', 54, struct __dvb_net_if_old)
50   -
51   -
52   -#endif /*_DVBNET_H_*/
include/linux/dvb/osd.h
1   -/*
2   - * osd.h
3   - *
4   - * Copyright (C) 2001 Ralph Metzler <ralph@convergence.de>
5   - * & Marcus Metzler <marcus@convergence.de>
6   - * for convergence integrated media GmbH
7   - *
8   - * This program is free software; you can redistribute it and/or
9   - * modify it under the terms of the GNU General Lesser Public License
10   - * as published by the Free Software Foundation; either version 2.1
11   - * of the License, or (at your option) any later version.
12   - *
13   - * This program is distributed in the hope that it will be useful,
14   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16   - * GNU General Public License for more details.
17   - *
18   - * You should have received a copy of the GNU Lesser General Public License
19   - * along with this program; if not, write to the Free Software
20   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21   - *
22   - */
23   -
24   -#ifndef _DVBOSD_H_
25   -#define _DVBOSD_H_
26   -
27   -#include <linux/compiler.h>
28   -
29   -typedef enum {
30   - // All functions return -2 on "not open"
31   - OSD_Close=1, // ()
32   - // Disables OSD and releases the buffers
33   - // returns 0 on success
34   - OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0))
35   - // Opens OSD with this size and bit depth
36   - // returns 0 on success, -1 on DRAM allocation error, -2 on "already open"
37   - OSD_Show, // ()
38   - // enables OSD mode
39   - // returns 0 on success
40   - OSD_Hide, // ()
41   - // disables OSD mode
42   - // returns 0 on success
43   - OSD_Clear, // ()
44   - // Sets all pixel to color 0
45   - // returns 0 on success
46   - OSD_Fill, // (color)
47   - // Sets all pixel to color <col>
48   - // returns 0 on success
49   - OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1})
50   - // set palette entry <num> to <r,g,b>, <mix> and <trans> apply
51   - // R,G,B: 0..255
52   - // R=Red, G=Green, B=Blue
53   - // opacity=0: pixel opacity 0% (only video pixel shows)
54   - // opacity=1..254: pixel opacity as specified in header
55   - // opacity=255: pixel opacity 100% (only OSD pixel shows)
56   - // returns 0 on success, -1 on error
57   - OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data)
58   - // Set a number of entries in the palette
59   - // sets the entries "firstcolor" through "lastcolor" from the array "data"
60   - // data has 4 byte for each color:
61   - // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel
62   - OSD_SetTrans, // (transparency{color})
63   - // Sets transparency of mixed pixel (0..15)
64   - // returns 0 on success
65   - OSD_SetPixel, // (x0,y0,color)
66   - // sets pixel <x>,<y> to color number <col>
67   - // returns 0 on success, -1 on error
68   - OSD_GetPixel, // (x0,y0)
69   - // returns color number of pixel <x>,<y>, or -1
70   - OSD_SetRow, // (x0,y0,x1,data)
71   - // fills pixels x0,y through x1,y with the content of data[]
72   - // returns 0 on success, -1 on clipping all pixel (no pixel drawn)
73   - OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data)
74   - // fills pixels x0,y0 through x1,y1 with the content of data[]
75   - // inc contains the width of one line in the data block,
76   - // inc<=0 uses blockwidth as linewidth
77   - // returns 0 on success, -1 on clipping all pixel
78   - OSD_FillRow, // (x0,y0,x1,color)
79   - // fills pixels x0,y through x1,y with the color <col>
80   - // returns 0 on success, -1 on clipping all pixel
81   - OSD_FillBlock, // (x0,y0,x1,y1,color)
82   - // fills pixels x0,y0 through x1,y1 with the color <col>
83   - // returns 0 on success, -1 on clipping all pixel
84   - OSD_Line, // (x0,y0,x1,y1,color)
85   - // draw a line from x0,y0 to x1,y1 with the color <col>
86   - // returns 0 on success
87   - OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11
88   - // fills parameters with the picture dimensions and the pixel aspect ratio
89   - // returns 0 on success
90   - OSD_Test, // ()
91   - // draws a test picture. for debugging purposes only
92   - // returns 0 on success
93   -// TODO: remove "test" in final version
94   - OSD_Text, // (x0,y0,size,color,text)
95   - OSD_SetWindow, // (x0) set window with number 0<x0<8 as current
96   - OSD_MoveWindow, // move current window to (x0, y0)
97   - OSD_OpenRaw, // Open other types of OSD windows
98   -} OSD_Command;
99   -
100   -typedef struct osd_cmd_s {
101   - OSD_Command cmd;
102   - int x0;
103   - int y0;
104   - int x1;
105   - int y1;
106   - int color;
107   - void __user *data;
108   -} osd_cmd_t;
109   -
110   -/* OSD_OpenRaw: set 'color' to desired window type */
111   -typedef enum {
112   - OSD_BITMAP1, /* 1 bit bitmap */
113   - OSD_BITMAP2, /* 2 bit bitmap */
114   - OSD_BITMAP4, /* 4 bit bitmap */
115   - OSD_BITMAP8, /* 8 bit bitmap */
116   - OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */
117   - OSD_BITMAP2HR, /* 2 bit bitmap half resolution */
118   - OSD_BITMAP4HR, /* 4 bit bitmap half resolution */
119   - OSD_BITMAP8HR, /* 8 bit bitmap half resolution */
120   - OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */
121   - OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */
122   - OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */
123   - OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */
124   - OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */
125   - OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */
126   - OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */
127   - OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */
128   - OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/
129   - OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */
130   - OSD_VIDEONSIZE, /* Full Size MPEG Video Display */
131   - OSD_CURSOR /* Cursor */
132   -} osd_raw_window_t;
133   -
134   -typedef struct osd_cap_s {
135   - int cmd;
136   -#define OSD_CAP_MEMSIZE 1 /* memory size */
137   - long val;
138   -} osd_cap_t;
139   -
140   -
141   -#define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t)
142   -#define OSD_GET_CAPABILITY _IOR('o', 161, osd_cap_t)
143   -
144   -#endif
include/linux/dvb/version.h
1   -/*
2   - * version.h
3   - *
4   - * Copyright (C) 2000 Holger Waechtler <holger@convergence.de>
5   - * for convergence integrated media GmbH
6   - *
7   - * This program is free software; you can redistribute it and/or
8   - * modify it under the terms of the GNU Lesser General Public License
9   - * as published by the Free Software Foundation; either version 2.1
10   - * of the License, or (at your option) any later version.
11   - *
12   - * This program is distributed in the hope that it will be useful,
13   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15   - * GNU General Public License for more details.
16   - *
17   - * You should have received a copy of the GNU Lesser General Public License
18   - * along with this program; if not, write to the Free Software
19   - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20   - *
21   - */
22   -
23   -#ifndef _DVBVERSION_H_
24   -#define _DVBVERSION_H_
25   -
26   -#define DVB_API_VERSION 5
27   -#define DVB_API_VERSION_MINOR 9
28   -
29   -#endif /*_DVBVERSION_H_*/
include/linux/dvb/video.h
... ... @@ -20,258 +20,11 @@
20 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 21 *
22 22 */
23   -
24 23 #ifndef _DVBVIDEO_H_
25 24 #define _DVBVIDEO_H_
26 25  
27   -#include <linux/types.h>
28   -#ifdef __KERNEL__
29 26 #include <linux/compiler.h>
30   -#else
31   -#include <stdint.h>
32   -#include <time.h>
33   -#endif
34   -
35   -typedef enum {
36   - VIDEO_FORMAT_4_3, /* Select 4:3 format */
37   - VIDEO_FORMAT_16_9, /* Select 16:9 format. */
38   - VIDEO_FORMAT_221_1 /* 2.21:1 */
39   -} video_format_t;
40   -
41   -
42   -typedef enum {
43   - VIDEO_SYSTEM_PAL,
44   - VIDEO_SYSTEM_NTSC,
45   - VIDEO_SYSTEM_PALN,
46   - VIDEO_SYSTEM_PALNc,
47   - VIDEO_SYSTEM_PALM,
48   - VIDEO_SYSTEM_NTSC60,
49   - VIDEO_SYSTEM_PAL60,
50   - VIDEO_SYSTEM_PALM60
51   -} video_system_t;
52   -
53   -
54   -typedef enum {
55   - VIDEO_PAN_SCAN, /* use pan and scan format */
56   - VIDEO_LETTER_BOX, /* use letterbox format */
57   - VIDEO_CENTER_CUT_OUT /* use center cut out format */
58   -} video_displayformat_t;
59   -
60   -typedef struct {
61   - int w;
62   - int h;
63   - video_format_t aspect_ratio;
64   -} video_size_t;
65   -
66   -typedef enum {
67   - VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
68   - VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
69   - comes from the user through the write
70   - system call */
71   -} video_stream_source_t;
72   -
73   -
74   -typedef enum {
75   - VIDEO_STOPPED, /* Video is stopped */
76   - VIDEO_PLAYING, /* Video is currently playing */
77   - VIDEO_FREEZED /* Video is freezed */
78   -} video_play_state_t;
79   -
80   -
81   -/* Decoder commands */
82   -#define VIDEO_CMD_PLAY (0)
83   -#define VIDEO_CMD_STOP (1)
84   -#define VIDEO_CMD_FREEZE (2)
85   -#define VIDEO_CMD_CONTINUE (3)
86   -
87   -/* Flags for VIDEO_CMD_FREEZE */
88   -#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0)
89   -
90   -/* Flags for VIDEO_CMD_STOP */
91   -#define VIDEO_CMD_STOP_TO_BLACK (1 << 0)
92   -#define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1)
93   -
94   -/* Play input formats: */
95   -/* The decoder has no special format requirements */
96   -#define VIDEO_PLAY_FMT_NONE (0)
97   -/* The decoder requires full GOPs */
98   -#define VIDEO_PLAY_FMT_GOP (1)
99   -
100   -/* The structure must be zeroed before use by the application
101   - This ensures it can be extended safely in the future. */
102   -struct video_command {
103   - __u32 cmd;
104   - __u32 flags;
105   - union {
106   - struct {
107   - __u64 pts;
108   - } stop;
109   -
110   - struct {
111   - /* 0 or 1000 specifies normal speed,
112   - 1 specifies forward single stepping,
113   - -1 specifies backward single stepping,
114   - >1: playback at speed/1000 of the normal speed,
115   - <-1: reverse playback at (-speed/1000) of the normal speed. */
116   - __s32 speed;
117   - __u32 format;
118   - } play;
119   -
120   - struct {
121   - __u32 data[16];
122   - } raw;
123   - };
124   -};
125   -
126   -/* FIELD_UNKNOWN can be used if the hardware does not know whether
127   - the Vsync is for an odd, even or progressive (i.e. non-interlaced)
128   - field. */
129   -#define VIDEO_VSYNC_FIELD_UNKNOWN (0)
130   -#define VIDEO_VSYNC_FIELD_ODD (1)
131   -#define VIDEO_VSYNC_FIELD_EVEN (2)
132   -#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
133   -
134   -struct video_event {
135   - __s32 type;
136   -#define VIDEO_EVENT_SIZE_CHANGED 1
137   -#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
138   -#define VIDEO_EVENT_DECODER_STOPPED 3
139   -#define VIDEO_EVENT_VSYNC 4
140   - __kernel_time_t timestamp;
141   - union {
142   - video_size_t size;
143   - unsigned int frame_rate; /* in frames per 1000sec */
144   - unsigned char vsync_field; /* unknown/odd/even/progressive */
145   - } u;
146   -};
147   -
148   -
149   -struct video_status {
150   - int video_blank; /* blank video on freeze? */
151   - video_play_state_t play_state; /* current state of playback */
152   - video_stream_source_t stream_source; /* current source (demux/memory) */
153   - video_format_t video_format; /* current aspect ratio of stream*/
154   - video_displayformat_t display_format;/* selected cropping mode */
155   -};
156   -
157   -
158   -struct video_still_picture {
159   - char __user *iFrame; /* pointer to a single iframe in memory */
160   - __s32 size;
161   -};
162   -
163   -
164   -typedef
165   -struct video_highlight {
166   - int active; /* 1=show highlight, 0=hide highlight */
167   - __u8 contrast1; /* 7- 4 Pattern pixel contrast */
168   - /* 3- 0 Background pixel contrast */
169   - __u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */
170   - /* 3- 0 Emphasis pixel-1 contrast */
171   - __u8 color1; /* 7- 4 Pattern pixel color */
172   - /* 3- 0 Background pixel color */
173   - __u8 color2; /* 7- 4 Emphasis pixel-2 color */
174   - /* 3- 0 Emphasis pixel-1 color */
175   - __u32 ypos; /* 23-22 auto action mode */
176   - /* 21-12 start y */
177   - /* 9- 0 end y */
178   - __u32 xpos; /* 23-22 button color number */
179   - /* 21-12 start x */
180   - /* 9- 0 end x */
181   -} video_highlight_t;
182   -
183   -
184   -typedef struct video_spu {
185   - int active;
186   - int stream_id;
187   -} video_spu_t;
188   -
189   -
190   -typedef struct video_spu_palette { /* SPU Palette information */
191   - int length;
192   - __u8 __user *palette;
193   -} video_spu_palette_t;
194   -
195   -
196   -typedef struct video_navi_pack {
197   - int length; /* 0 ... 1024 */
198   - __u8 data[1024];
199   -} video_navi_pack_t;
200   -
201   -
202   -typedef __u16 video_attributes_t;
203   -/* bits: descr. */
204   -/* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */
205   -/* 13-12 TV system (0=525/60, 1=625/50) */
206   -/* 11-10 Aspect ratio (0=4:3, 3=16:9) */
207   -/* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */
208   -/* 7 line 21-1 data present in GOP (1=yes, 0=no) */
209   -/* 6 line 21-2 data present in GOP (1=yes, 0=no) */
210   -/* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */
211   -/* 2 source letterboxed (1=yes, 0=no) */
212   -/* 0 film/camera mode (0=camera, 1=film (625/50 only)) */
213   -
214   -
215   -/* bit definitions for capabilities: */
216   -/* can the hardware decode MPEG1 and/or MPEG2? */
217   -#define VIDEO_CAP_MPEG1 1
218   -#define VIDEO_CAP_MPEG2 2
219   -/* can you send a system and/or program stream to video device?
220   - (you still have to open the video and the audio device but only
221   - send the stream to the video device) */
222   -#define VIDEO_CAP_SYS 4
223   -#define VIDEO_CAP_PROG 8
224   -/* can the driver also handle SPU, NAVI and CSS encoded data?
225   - (CSS API is not present yet) */
226   -#define VIDEO_CAP_SPU 16
227   -#define VIDEO_CAP_NAVI 32
228   -#define VIDEO_CAP_CSS 64
229   -
230   -
231   -#define VIDEO_STOP _IO('o', 21)
232   -#define VIDEO_PLAY _IO('o', 22)
233   -#define VIDEO_FREEZE _IO('o', 23)
234   -#define VIDEO_CONTINUE _IO('o', 24)
235   -#define VIDEO_SELECT_SOURCE _IO('o', 25)
236   -#define VIDEO_SET_BLANK _IO('o', 26)
237   -#define VIDEO_GET_STATUS _IOR('o', 27, struct video_status)
238   -#define VIDEO_GET_EVENT _IOR('o', 28, struct video_event)
239   -#define VIDEO_SET_DISPLAY_FORMAT _IO('o', 29)
240   -#define VIDEO_STILLPICTURE _IOW('o', 30, struct video_still_picture)
241   -#define VIDEO_FAST_FORWARD _IO('o', 31)
242   -#define VIDEO_SLOWMOTION _IO('o', 32)
243   -#define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int)
244   -#define VIDEO_CLEAR_BUFFER _IO('o', 34)
245   -#define VIDEO_SET_ID _IO('o', 35)
246   -#define VIDEO_SET_STREAMTYPE _IO('o', 36)
247   -#define VIDEO_SET_FORMAT _IO('o', 37)
248   -#define VIDEO_SET_SYSTEM _IO('o', 38)
249   -#define VIDEO_SET_HIGHLIGHT _IOW('o', 39, video_highlight_t)
250   -#define VIDEO_SET_SPU _IOW('o', 50, video_spu_t)
251   -#define VIDEO_SET_SPU_PALETTE _IOW('o', 51, video_spu_palette_t)
252   -#define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t)
253   -#define VIDEO_SET_ATTRIBUTES _IO('o', 53)
254   -#define VIDEO_GET_SIZE _IOR('o', 55, video_size_t)
255   -#define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int)
256   -
257   -/**
258   - * VIDEO_GET_PTS
259   - *
260   - * Read the 33 bit presentation time stamp as defined
261   - * in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
262   - *
263   - * The PTS should belong to the currently played
264   - * frame if possible, but may also be a value close to it
265   - * like the PTS of the last decoded frame or the last PTS
266   - * extracted by the PES parser.
267   - */
268   -#define VIDEO_GET_PTS _IOR('o', 57, __u64)
269   -
270   -/* Read the number of displayed frames since the decoder was started */
271   -#define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
272   -
273   -#define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
274   -#define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command)
  27 +#include <uapi/linux/dvb/video.h>
275 28  
276 29 #endif /*_DVBVIDEO_H_*/
include/uapi/linux/dvb/Kbuild
1 1 # UAPI Header export list
  2 +header-y += audio.h
  3 +header-y += ca.h
  4 +header-y += dmx.h
  5 +header-y += frontend.h
  6 +header-y += net.h
  7 +header-y += osd.h
  8 +header-y += version.h
  9 +header-y += video.h
include/uapi/linux/dvb/audio.h
  1 +/*
  2 + * audio.h
  3 + *
  4 + * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
  5 + * & Marcus Metzler <marcus@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Lesser Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _DVBAUDIO_H_
  25 +#define _DVBAUDIO_H_
  26 +
  27 +#include <linux/types.h>
  28 +
  29 +typedef enum {
  30 + AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
  31 + AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */
  32 +} audio_stream_source_t;
  33 +
  34 +
  35 +typedef enum {
  36 + AUDIO_STOPPED, /* Device is stopped */
  37 + AUDIO_PLAYING, /* Device is currently playing */
  38 + AUDIO_PAUSED /* Device is paused */
  39 +} audio_play_state_t;
  40 +
  41 +
  42 +typedef enum {
  43 + AUDIO_STEREO,
  44 + AUDIO_MONO_LEFT,
  45 + AUDIO_MONO_RIGHT,
  46 + AUDIO_MONO,
  47 + AUDIO_STEREO_SWAPPED
  48 +} audio_channel_select_t;
  49 +
  50 +
  51 +typedef struct audio_mixer {
  52 + unsigned int volume_left;
  53 + unsigned int volume_right;
  54 + // what else do we need? bass, pass-through, ...
  55 +} audio_mixer_t;
  56 +
  57 +
  58 +typedef struct audio_status {
  59 + int AV_sync_state; /* sync audio and video? */
  60 + int mute_state; /* audio is muted */
  61 + audio_play_state_t play_state; /* current playback state */
  62 + audio_stream_source_t stream_source; /* current stream source */
  63 + audio_channel_select_t channel_select; /* currently selected channel */
  64 + int bypass_mode; /* pass on audio data to */
  65 + audio_mixer_t mixer_state; /* current mixer state */
  66 +} audio_status_t; /* separate decoder hardware */
  67 +
  68 +
  69 +typedef
  70 +struct audio_karaoke { /* if Vocal1 or Vocal2 are non-zero, they get mixed */
  71 + int vocal1; /* into left and right t at 70% each */
  72 + int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
  73 + int melody; /* mixed into the left channel and */
  74 + /* Vocal2 into the right channel at 100% each. */
  75 + /* if Melody is non-zero, the melody channel gets mixed*/
  76 +} audio_karaoke_t; /* into left and right */
  77 +
  78 +
  79 +typedef __u16 audio_attributes_t;
  80 +/* bits: descr. */
  81 +/* 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */
  82 +/* 12 multichannel extension */
  83 +/* 11-10 audio type (0=not spec, 1=language included) */
  84 +/* 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) */
  85 +/* 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, */
  86 +/* 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */
  87 +/* 2- 0 number of audio channels (n+1 channels) */
  88 +
  89 +
  90 +/* for GET_CAPABILITIES and SET_FORMAT, the latter should only set one bit */
  91 +#define AUDIO_CAP_DTS 1
  92 +#define AUDIO_CAP_LPCM 2
  93 +#define AUDIO_CAP_MP1 4
  94 +#define AUDIO_CAP_MP2 8
  95 +#define AUDIO_CAP_MP3 16
  96 +#define AUDIO_CAP_AAC 32
  97 +#define AUDIO_CAP_OGG 64
  98 +#define AUDIO_CAP_SDDS 128
  99 +#define AUDIO_CAP_AC3 256
  100 +
  101 +#define AUDIO_STOP _IO('o', 1)
  102 +#define AUDIO_PLAY _IO('o', 2)
  103 +#define AUDIO_PAUSE _IO('o', 3)
  104 +#define AUDIO_CONTINUE _IO('o', 4)
  105 +#define AUDIO_SELECT_SOURCE _IO('o', 5)
  106 +#define AUDIO_SET_MUTE _IO('o', 6)
  107 +#define AUDIO_SET_AV_SYNC _IO('o', 7)
  108 +#define AUDIO_SET_BYPASS_MODE _IO('o', 8)
  109 +#define AUDIO_CHANNEL_SELECT _IO('o', 9)
  110 +#define AUDIO_GET_STATUS _IOR('o', 10, audio_status_t)
  111 +
  112 +#define AUDIO_GET_CAPABILITIES _IOR('o', 11, unsigned int)
  113 +#define AUDIO_CLEAR_BUFFER _IO('o', 12)
  114 +#define AUDIO_SET_ID _IO('o', 13)
  115 +#define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t)
  116 +#define AUDIO_SET_STREAMTYPE _IO('o', 15)
  117 +#define AUDIO_SET_EXT_ID _IO('o', 16)
  118 +#define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t)
  119 +#define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t)
  120 +
  121 +/**
  122 + * AUDIO_GET_PTS
  123 + *
  124 + * Read the 33 bit presentation time stamp as defined
  125 + * in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
  126 + *
  127 + * The PTS should belong to the currently played
  128 + * frame if possible, but may also be a value close to it
  129 + * like the PTS of the last decoded frame or the last PTS
  130 + * extracted by the PES parser.
  131 + */
  132 +#define AUDIO_GET_PTS _IOR('o', 19, __u64)
  133 +#define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
  134 +
  135 +#endif /* _DVBAUDIO_H_ */
include/uapi/linux/dvb/ca.h
  1 +/*
  2 + * ca.h
  3 + *
  4 + * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de>
  5 + * & Marcus Metzler <marcus@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Lesser Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _DVBCA_H_
  25 +#define _DVBCA_H_
  26 +
  27 +/* slot interface types and info */
  28 +
  29 +typedef struct ca_slot_info {
  30 + int num; /* slot number */
  31 +
  32 + int type; /* CA interface this slot supports */
  33 +#define CA_CI 1 /* CI high level interface */
  34 +#define CA_CI_LINK 2 /* CI link layer level interface */
  35 +#define CA_CI_PHYS 4 /* CI physical layer level interface */
  36 +#define CA_DESCR 8 /* built-in descrambler */
  37 +#define CA_SC 128 /* simple smart card interface */
  38 +
  39 + unsigned int flags;
  40 +#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
  41 +#define CA_CI_MODULE_READY 2
  42 +} ca_slot_info_t;
  43 +
  44 +
  45 +/* descrambler types and info */
  46 +
  47 +typedef struct ca_descr_info {
  48 + unsigned int num; /* number of available descramblers (keys) */
  49 + unsigned int type; /* type of supported scrambling system */
  50 +#define CA_ECD 1
  51 +#define CA_NDS 2
  52 +#define CA_DSS 4
  53 +} ca_descr_info_t;
  54 +
  55 +typedef struct ca_caps {
  56 + unsigned int slot_num; /* total number of CA card and module slots */
  57 + unsigned int slot_type; /* OR of all supported types */
  58 + unsigned int descr_num; /* total number of descrambler slots (keys) */
  59 + unsigned int descr_type; /* OR of all supported types */
  60 +} ca_caps_t;
  61 +
  62 +/* a message to/from a CI-CAM */
  63 +typedef struct ca_msg {
  64 + unsigned int index;
  65 + unsigned int type;
  66 + unsigned int length;
  67 + unsigned char msg[256];
  68 +} ca_msg_t;
  69 +
  70 +typedef struct ca_descr {
  71 + unsigned int index;
  72 + unsigned int parity; /* 0 == even, 1 == odd */
  73 + unsigned char cw[8];
  74 +} ca_descr_t;
  75 +
  76 +typedef struct ca_pid {
  77 + unsigned int pid;
  78 + int index; /* -1 == disable*/
  79 +} ca_pid_t;
  80 +
  81 +#define CA_RESET _IO('o', 128)
  82 +#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
  83 +#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
  84 +#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
  85 +#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
  86 +#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
  87 +#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
  88 +#define CA_SET_PID _IOW('o', 135, ca_pid_t)
  89 +
  90 +#endif
include/uapi/linux/dvb/dmx.h
  1 +/*
  2 + * dmx.h
  3 + *
  4 + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
  5 + * & Ralph Metzler <ralph@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU Lesser General Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _UAPI_DVBDMX_H_
  25 +#define _UAPI_DVBDMX_H_
  26 +
  27 +#include <linux/types.h>
  28 +#ifndef __KERNEL__
  29 +#include <time.h>
  30 +#endif
  31 +
  32 +
  33 +#define DMX_FILTER_SIZE 16
  34 +
  35 +typedef enum
  36 +{
  37 + DMX_OUT_DECODER, /* Streaming directly to decoder. */
  38 + DMX_OUT_TAP, /* Output going to a memory buffer */
  39 + /* (to be retrieved via the read command).*/
  40 + DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
  41 + /* (to be retrieved by reading from the */
  42 + /* logical DVR device). */
  43 + DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
  44 +} dmx_output_t;
  45 +
  46 +
  47 +typedef enum
  48 +{
  49 + DMX_IN_FRONTEND, /* Input from a front-end device. */
  50 + DMX_IN_DVR /* Input from the logical DVR device. */
  51 +} dmx_input_t;
  52 +
  53 +
  54 +typedef enum
  55 +{
  56 + DMX_PES_AUDIO0,
  57 + DMX_PES_VIDEO0,
  58 + DMX_PES_TELETEXT0,
  59 + DMX_PES_SUBTITLE0,
  60 + DMX_PES_PCR0,
  61 +
  62 + DMX_PES_AUDIO1,
  63 + DMX_PES_VIDEO1,
  64 + DMX_PES_TELETEXT1,
  65 + DMX_PES_SUBTITLE1,
  66 + DMX_PES_PCR1,
  67 +
  68 + DMX_PES_AUDIO2,
  69 + DMX_PES_VIDEO2,
  70 + DMX_PES_TELETEXT2,
  71 + DMX_PES_SUBTITLE2,
  72 + DMX_PES_PCR2,
  73 +
  74 + DMX_PES_AUDIO3,
  75 + DMX_PES_VIDEO3,
  76 + DMX_PES_TELETEXT3,
  77 + DMX_PES_SUBTITLE3,
  78 + DMX_PES_PCR3,
  79 +
  80 + DMX_PES_OTHER
  81 +} dmx_pes_type_t;
  82 +
  83 +#define DMX_PES_AUDIO DMX_PES_AUDIO0
  84 +#define DMX_PES_VIDEO DMX_PES_VIDEO0
  85 +#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
  86 +#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0
  87 +#define DMX_PES_PCR DMX_PES_PCR0
  88 +
  89 +
  90 +typedef struct dmx_filter
  91 +{
  92 + __u8 filter[DMX_FILTER_SIZE];
  93 + __u8 mask[DMX_FILTER_SIZE];
  94 + __u8 mode[DMX_FILTER_SIZE];
  95 +} dmx_filter_t;
  96 +
  97 +
  98 +struct dmx_sct_filter_params
  99 +{
  100 + __u16 pid;
  101 + dmx_filter_t filter;
  102 + __u32 timeout;
  103 + __u32 flags;
  104 +#define DMX_CHECK_CRC 1
  105 +#define DMX_ONESHOT 2
  106 +#define DMX_IMMEDIATE_START 4
  107 +#define DMX_KERNEL_CLIENT 0x8000
  108 +};
  109 +
  110 +
  111 +struct dmx_pes_filter_params
  112 +{
  113 + __u16 pid;
  114 + dmx_input_t input;
  115 + dmx_output_t output;
  116 + dmx_pes_type_t pes_type;
  117 + __u32 flags;
  118 +};
  119 +
  120 +typedef struct dmx_caps {
  121 + __u32 caps;
  122 + int num_decoders;
  123 +} dmx_caps_t;
  124 +
  125 +typedef enum {
  126 + DMX_SOURCE_FRONT0 = 0,
  127 + DMX_SOURCE_FRONT1,
  128 + DMX_SOURCE_FRONT2,
  129 + DMX_SOURCE_FRONT3,
  130 + DMX_SOURCE_DVR0 = 16,
  131 + DMX_SOURCE_DVR1,
  132 + DMX_SOURCE_DVR2,
  133 + DMX_SOURCE_DVR3
  134 +} dmx_source_t;
  135 +
  136 +struct dmx_stc {
  137 + unsigned int num; /* input : which STC? 0..N */
  138 + unsigned int base; /* output: divisor for stc to get 90 kHz clock */
  139 + __u64 stc; /* output: stc in 'base'*90 kHz units */
  140 +};
  141 +
  142 +
  143 +#define DMX_START _IO('o', 41)
  144 +#define DMX_STOP _IO('o', 42)
  145 +#define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params)
  146 +#define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
  147 +#define DMX_SET_BUFFER_SIZE _IO('o', 45)
  148 +#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
  149 +#define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
  150 +#define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
  151 +#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
  152 +#define DMX_ADD_PID _IOW('o', 51, __u16)
  153 +#define DMX_REMOVE_PID _IOW('o', 52, __u16)
  154 +
  155 +#endif /* _UAPI_DVBDMX_H_ */
include/uapi/linux/dvb/frontend.h
  1 +/*
  2 + * frontend.h
  3 + *
  4 + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
  5 + * Ralph Metzler <ralph@convergence.de>
  6 + * Holger Waechtler <holger@convergence.de>
  7 + * Andre Draszik <ad@convergence.de>
  8 + * for convergence integrated media GmbH
  9 + *
  10 + * This program is free software; you can redistribute it and/or
  11 + * modify it under the terms of the GNU Lesser General Public License
  12 + * as published by the Free Software Foundation; either version 2.1
  13 + * of the License, or (at your option) any later version.
  14 + *
  15 + * This program is distributed in the hope that it will be useful,
  16 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18 + * GNU General Public License for more details.
  19 + *
  20 + * You should have received a copy of the GNU Lesser General Public License
  21 + * along with this program; if not, write to the Free Software
  22 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23 + *
  24 + */
  25 +
  26 +#ifndef _DVBFRONTEND_H_
  27 +#define _DVBFRONTEND_H_
  28 +
  29 +#include <linux/types.h>
  30 +
  31 +typedef enum fe_type {
  32 + FE_QPSK,
  33 + FE_QAM,
  34 + FE_OFDM,
  35 + FE_ATSC
  36 +} fe_type_t;
  37 +
  38 +
  39 +typedef enum fe_caps {
  40 + FE_IS_STUPID = 0,
  41 + FE_CAN_INVERSION_AUTO = 0x1,
  42 + FE_CAN_FEC_1_2 = 0x2,
  43 + FE_CAN_FEC_2_3 = 0x4,
  44 + FE_CAN_FEC_3_4 = 0x8,
  45 + FE_CAN_FEC_4_5 = 0x10,
  46 + FE_CAN_FEC_5_6 = 0x20,
  47 + FE_CAN_FEC_6_7 = 0x40,
  48 + FE_CAN_FEC_7_8 = 0x80,
  49 + FE_CAN_FEC_8_9 = 0x100,
  50 + FE_CAN_FEC_AUTO = 0x200,
  51 + FE_CAN_QPSK = 0x400,
  52 + FE_CAN_QAM_16 = 0x800,
  53 + FE_CAN_QAM_32 = 0x1000,
  54 + FE_CAN_QAM_64 = 0x2000,
  55 + FE_CAN_QAM_128 = 0x4000,
  56 + FE_CAN_QAM_256 = 0x8000,
  57 + FE_CAN_QAM_AUTO = 0x10000,
  58 + FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
  59 + FE_CAN_BANDWIDTH_AUTO = 0x40000,
  60 + FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
  61 + FE_CAN_HIERARCHY_AUTO = 0x100000,
  62 + FE_CAN_8VSB = 0x200000,
  63 + FE_CAN_16VSB = 0x400000,
  64 + FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
  65 + FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
  66 + FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
  67 + FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
  68 + FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
  69 + FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
  70 + FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
  71 +} fe_caps_t;
  72 +
  73 +
  74 +struct dvb_frontend_info {
  75 + char name[128];
  76 + fe_type_t type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
  77 + __u32 frequency_min;
  78 + __u32 frequency_max;
  79 + __u32 frequency_stepsize;
  80 + __u32 frequency_tolerance;
  81 + __u32 symbol_rate_min;
  82 + __u32 symbol_rate_max;
  83 + __u32 symbol_rate_tolerance; /* ppm */
  84 + __u32 notifier_delay; /* DEPRECATED */
  85 + fe_caps_t caps;
  86 +};
  87 +
  88 +
  89 +/**
  90 + * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
  91 + * the meaning of this struct...
  92 + */
  93 +struct dvb_diseqc_master_cmd {
  94 + __u8 msg [6]; /* { framing, address, command, data [3] } */
  95 + __u8 msg_len; /* valid values are 3...6 */
  96 +};
  97 +
  98 +
  99 +struct dvb_diseqc_slave_reply {
  100 + __u8 msg [4]; /* { framing, data [3] } */
  101 + __u8 msg_len; /* valid values are 0...4, 0 means no msg */
  102 + int timeout; /* return from ioctl after timeout ms with */
  103 +}; /* errorcode when no message was received */
  104 +
  105 +
  106 +typedef enum fe_sec_voltage {
  107 + SEC_VOLTAGE_13,
  108 + SEC_VOLTAGE_18,
  109 + SEC_VOLTAGE_OFF
  110 +} fe_sec_voltage_t;
  111 +
  112 +
  113 +typedef enum fe_sec_tone_mode {
  114 + SEC_TONE_ON,
  115 + SEC_TONE_OFF
  116 +} fe_sec_tone_mode_t;
  117 +
  118 +
  119 +typedef enum fe_sec_mini_cmd {
  120 + SEC_MINI_A,
  121 + SEC_MINI_B
  122 +} fe_sec_mini_cmd_t;
  123 +
  124 +
  125 +/**
  126 + * enum fe_status - enumerates the possible frontend status
  127 + * @FE_HAS_SIGNAL: found something above the noise level
  128 + * @FE_HAS_CARRIER: found a DVB signal
  129 + * @FE_HAS_VITERBI: FEC is stable
  130 + * @FE_HAS_SYNC: found sync bytes
  131 + * @FE_HAS_LOCK: everything's working
  132 + * @FE_TIMEDOUT: no lock within the last ~2 seconds
  133 + * @FE_REINIT: frontend was reinitialized, application is recommended
  134 + * to reset DiSEqC, tone and parameters
  135 + */
  136 +
  137 +typedef enum fe_status {
  138 + FE_HAS_SIGNAL = 0x01,
  139 + FE_HAS_CARRIER = 0x02,
  140 + FE_HAS_VITERBI = 0x04,
  141 + FE_HAS_SYNC = 0x08,
  142 + FE_HAS_LOCK = 0x10,
  143 + FE_TIMEDOUT = 0x20,
  144 + FE_REINIT = 0x40,
  145 +} fe_status_t;
  146 +
  147 +typedef enum fe_spectral_inversion {
  148 + INVERSION_OFF,
  149 + INVERSION_ON,
  150 + INVERSION_AUTO
  151 +} fe_spectral_inversion_t;
  152 +
  153 +
  154 +typedef enum fe_code_rate {
  155 + FEC_NONE = 0,
  156 + FEC_1_2,
  157 + FEC_2_3,
  158 + FEC_3_4,
  159 + FEC_4_5,
  160 + FEC_5_6,
  161 + FEC_6_7,
  162 + FEC_7_8,
  163 + FEC_8_9,
  164 + FEC_AUTO,
  165 + FEC_3_5,
  166 + FEC_9_10,
  167 + FEC_2_5,
  168 +} fe_code_rate_t;
  169 +
  170 +
  171 +typedef enum fe_modulation {
  172 + QPSK,
  173 + QAM_16,
  174 + QAM_32,
  175 + QAM_64,
  176 + QAM_128,
  177 + QAM_256,
  178 + QAM_AUTO,
  179 + VSB_8,
  180 + VSB_16,
  181 + PSK_8,
  182 + APSK_16,
  183 + APSK_32,
  184 + DQPSK,
  185 + QAM_4_NR,
  186 +} fe_modulation_t;
  187 +
  188 +typedef enum fe_transmit_mode {
  189 + TRANSMISSION_MODE_2K,
  190 + TRANSMISSION_MODE_8K,
  191 + TRANSMISSION_MODE_AUTO,
  192 + TRANSMISSION_MODE_4K,
  193 + TRANSMISSION_MODE_1K,
  194 + TRANSMISSION_MODE_16K,
  195 + TRANSMISSION_MODE_32K,
  196 + TRANSMISSION_MODE_C1,
  197 + TRANSMISSION_MODE_C3780,
  198 +} fe_transmit_mode_t;
  199 +
  200 +#if defined(__DVB_CORE__) || !defined (__KERNEL__)
  201 +typedef enum fe_bandwidth {
  202 + BANDWIDTH_8_MHZ,
  203 + BANDWIDTH_7_MHZ,
  204 + BANDWIDTH_6_MHZ,
  205 + BANDWIDTH_AUTO,
  206 + BANDWIDTH_5_MHZ,
  207 + BANDWIDTH_10_MHZ,
  208 + BANDWIDTH_1_712_MHZ,
  209 +} fe_bandwidth_t;
  210 +#endif
  211 +
  212 +typedef enum fe_guard_interval {
  213 + GUARD_INTERVAL_1_32,
  214 + GUARD_INTERVAL_1_16,
  215 + GUARD_INTERVAL_1_8,
  216 + GUARD_INTERVAL_1_4,
  217 + GUARD_INTERVAL_AUTO,
  218 + GUARD_INTERVAL_1_128,
  219 + GUARD_INTERVAL_19_128,
  220 + GUARD_INTERVAL_19_256,
  221 + GUARD_INTERVAL_PN420,
  222 + GUARD_INTERVAL_PN595,
  223 + GUARD_INTERVAL_PN945,
  224 +} fe_guard_interval_t;
  225 +
  226 +
  227 +typedef enum fe_hierarchy {
  228 + HIERARCHY_NONE,
  229 + HIERARCHY_1,
  230 + HIERARCHY_2,
  231 + HIERARCHY_4,
  232 + HIERARCHY_AUTO
  233 +} fe_hierarchy_t;
  234 +
  235 +enum fe_interleaving {
  236 + INTERLEAVING_NONE,
  237 + INTERLEAVING_AUTO,
  238 + INTERLEAVING_240,
  239 + INTERLEAVING_720,
  240 +};
  241 +
  242 +#if defined(__DVB_CORE__) || !defined (__KERNEL__)
  243 +struct dvb_qpsk_parameters {
  244 + __u32 symbol_rate; /* symbol rate in Symbols per second */
  245 + fe_code_rate_t fec_inner; /* forward error correction (see above) */
  246 +};
  247 +
  248 +struct dvb_qam_parameters {
  249 + __u32 symbol_rate; /* symbol rate in Symbols per second */
  250 + fe_code_rate_t fec_inner; /* forward error correction (see above) */
  251 + fe_modulation_t modulation; /* modulation type (see above) */
  252 +};
  253 +
  254 +struct dvb_vsb_parameters {
  255 + fe_modulation_t modulation; /* modulation type (see above) */
  256 +};
  257 +
  258 +struct dvb_ofdm_parameters {
  259 + fe_bandwidth_t bandwidth;
  260 + fe_code_rate_t code_rate_HP; /* high priority stream code rate */
  261 + fe_code_rate_t code_rate_LP; /* low priority stream code rate */
  262 + fe_modulation_t constellation; /* modulation type (see above) */
  263 + fe_transmit_mode_t transmission_mode;
  264 + fe_guard_interval_t guard_interval;
  265 + fe_hierarchy_t hierarchy_information;
  266 +};
  267 +
  268 +
  269 +struct dvb_frontend_parameters {
  270 + __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
  271 + /* intermediate frequency in kHz for QPSK */
  272 + fe_spectral_inversion_t inversion;
  273 + union {
  274 + struct dvb_qpsk_parameters qpsk;
  275 + struct dvb_qam_parameters qam;
  276 + struct dvb_ofdm_parameters ofdm;
  277 + struct dvb_vsb_parameters vsb;
  278 + } u;
  279 +};
  280 +
  281 +struct dvb_frontend_event {
  282 + fe_status_t status;
  283 + struct dvb_frontend_parameters parameters;
  284 +};
  285 +#endif
  286 +
  287 +/* S2API Commands */
  288 +#define DTV_UNDEFINED 0
  289 +#define DTV_TUNE 1
  290 +#define DTV_CLEAR 2
  291 +#define DTV_FREQUENCY 3
  292 +#define DTV_MODULATION 4
  293 +#define DTV_BANDWIDTH_HZ 5
  294 +#define DTV_INVERSION 6
  295 +#define DTV_DISEQC_MASTER 7
  296 +#define DTV_SYMBOL_RATE 8
  297 +#define DTV_INNER_FEC 9
  298 +#define DTV_VOLTAGE 10
  299 +#define DTV_TONE 11
  300 +#define DTV_PILOT 12
  301 +#define DTV_ROLLOFF 13
  302 +#define DTV_DISEQC_SLAVE_REPLY 14
  303 +
  304 +/* Basic enumeration set for querying unlimited capabilities */
  305 +#define DTV_FE_CAPABILITY_COUNT 15
  306 +#define DTV_FE_CAPABILITY 16
  307 +#define DTV_DELIVERY_SYSTEM 17
  308 +
  309 +/* ISDB-T and ISDB-Tsb */
  310 +#define DTV_ISDBT_PARTIAL_RECEPTION 18
  311 +#define DTV_ISDBT_SOUND_BROADCASTING 19
  312 +
  313 +#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
  314 +#define DTV_ISDBT_SB_SEGMENT_IDX 21
  315 +#define DTV_ISDBT_SB_SEGMENT_COUNT 22
  316 +
  317 +#define DTV_ISDBT_LAYERA_FEC 23
  318 +#define DTV_ISDBT_LAYERA_MODULATION 24
  319 +#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
  320 +#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
  321 +
  322 +#define DTV_ISDBT_LAYERB_FEC 27
  323 +#define DTV_ISDBT_LAYERB_MODULATION 28
  324 +#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
  325 +#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
  326 +
  327 +#define DTV_ISDBT_LAYERC_FEC 31
  328 +#define DTV_ISDBT_LAYERC_MODULATION 32
  329 +#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
  330 +#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
  331 +
  332 +#define DTV_API_VERSION 35
  333 +
  334 +#define DTV_CODE_RATE_HP 36
  335 +#define DTV_CODE_RATE_LP 37
  336 +#define DTV_GUARD_INTERVAL 38
  337 +#define DTV_TRANSMISSION_MODE 39
  338 +#define DTV_HIERARCHY 40
  339 +
  340 +#define DTV_ISDBT_LAYER_ENABLED 41
  341 +
  342 +#define DTV_STREAM_ID 42
  343 +#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID
  344 +#define DTV_DVBT2_PLP_ID_LEGACY 43
  345 +
  346 +#define DTV_ENUM_DELSYS 44
  347 +
  348 +/* ATSC-MH */
  349 +#define DTV_ATSCMH_FIC_VER 45
  350 +#define DTV_ATSCMH_PARADE_ID 46
  351 +#define DTV_ATSCMH_NOG 47
  352 +#define DTV_ATSCMH_TNOG 48
  353 +#define DTV_ATSCMH_SGN 49
  354 +#define DTV_ATSCMH_PRC 50
  355 +#define DTV_ATSCMH_RS_FRAME_MODE 51
  356 +#define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52
  357 +#define DTV_ATSCMH_RS_CODE_MODE_PRI 53
  358 +#define DTV_ATSCMH_RS_CODE_MODE_SEC 54
  359 +#define DTV_ATSCMH_SCCC_BLOCK_MODE 55
  360 +#define DTV_ATSCMH_SCCC_CODE_MODE_A 56
  361 +#define DTV_ATSCMH_SCCC_CODE_MODE_B 57
  362 +#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
  363 +#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
  364 +
  365 +#define DTV_INTERLEAVING 60
  366 +#define DTV_LNA 61
  367 +
  368 +#define DTV_MAX_COMMAND DTV_LNA
  369 +
  370 +typedef enum fe_pilot {
  371 + PILOT_ON,
  372 + PILOT_OFF,
  373 + PILOT_AUTO,
  374 +} fe_pilot_t;
  375 +
  376 +typedef enum fe_rolloff {
  377 + ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
  378 + ROLLOFF_20,
  379 + ROLLOFF_25,
  380 + ROLLOFF_AUTO,
  381 +} fe_rolloff_t;
  382 +
  383 +typedef enum fe_delivery_system {
  384 + SYS_UNDEFINED,
  385 + SYS_DVBC_ANNEX_A,
  386 + SYS_DVBC_ANNEX_B,
  387 + SYS_DVBT,
  388 + SYS_DSS,
  389 + SYS_DVBS,
  390 + SYS_DVBS2,
  391 + SYS_DVBH,
  392 + SYS_ISDBT,
  393 + SYS_ISDBS,
  394 + SYS_ISDBC,
  395 + SYS_ATSC,
  396 + SYS_ATSCMH,
  397 + SYS_DTMB,
  398 + SYS_CMMB,
  399 + SYS_DAB,
  400 + SYS_DVBT2,
  401 + SYS_TURBO,
  402 + SYS_DVBC_ANNEX_C,
  403 +} fe_delivery_system_t;
  404 +
  405 +/* backward compatibility */
  406 +#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
  407 +#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
  408 +
  409 +/* ATSC-MH */
  410 +
  411 +enum atscmh_sccc_block_mode {
  412 + ATSCMH_SCCC_BLK_SEP = 0,
  413 + ATSCMH_SCCC_BLK_COMB = 1,
  414 + ATSCMH_SCCC_BLK_RES = 2,
  415 +};
  416 +
  417 +enum atscmh_sccc_code_mode {
  418 + ATSCMH_SCCC_CODE_HLF = 0,
  419 + ATSCMH_SCCC_CODE_QTR = 1,
  420 + ATSCMH_SCCC_CODE_RES = 2,
  421 +};
  422 +
  423 +enum atscmh_rs_frame_ensemble {
  424 + ATSCMH_RSFRAME_ENS_PRI = 0,
  425 + ATSCMH_RSFRAME_ENS_SEC = 1,
  426 +};
  427 +
  428 +enum atscmh_rs_frame_mode {
  429 + ATSCMH_RSFRAME_PRI_ONLY = 0,
  430 + ATSCMH_RSFRAME_PRI_SEC = 1,
  431 + ATSCMH_RSFRAME_RES = 2,
  432 +};
  433 +
  434 +enum atscmh_rs_code_mode {
  435 + ATSCMH_RSCODE_211_187 = 0,
  436 + ATSCMH_RSCODE_223_187 = 1,
  437 + ATSCMH_RSCODE_235_187 = 2,
  438 + ATSCMH_RSCODE_RES = 3,
  439 +};
  440 +
  441 +#define NO_STREAM_ID_FILTER (~0U)
  442 +#define LNA_AUTO (~0U)
  443 +
  444 +struct dtv_cmds_h {
  445 + char *name; /* A display name for debugging purposes */
  446 +
  447 + __u32 cmd; /* A unique ID */
  448 +
  449 + /* Flags */
  450 + __u32 set:1; /* Either a set or get property */
  451 + __u32 buffer:1; /* Does this property use the buffer? */
  452 + __u32 reserved:30; /* Align */
  453 +};
  454 +
  455 +struct dtv_property {
  456 + __u32 cmd;
  457 + __u32 reserved[3];
  458 + union {
  459 + __u32 data;
  460 + struct {
  461 + __u8 data[32];
  462 + __u32 len;
  463 + __u32 reserved1[3];
  464 + void *reserved2;
  465 + } buffer;
  466 + } u;
  467 + int result;
  468 +} __attribute__ ((packed));
  469 +
  470 +/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
  471 +#define DTV_IOCTL_MAX_MSGS 64
  472 +
  473 +struct dtv_properties {
  474 + __u32 num;
  475 + struct dtv_property *props;
  476 +};
  477 +
  478 +#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
  479 +#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
  480 +
  481 +
  482 +/**
  483 + * When set, this flag will disable any zigzagging or other "normal" tuning
  484 + * behaviour. Additionally, there will be no automatic monitoring of the lock
  485 + * status, and hence no frontend events will be generated. If a frontend device
  486 + * is closed, this flag will be automatically turned off when the device is
  487 + * reopened read-write.
  488 + */
  489 +#define FE_TUNE_MODE_ONESHOT 0x01
  490 +
  491 +
  492 +#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
  493 +
  494 +#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
  495 +#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
  496 +#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
  497 +#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
  498 +
  499 +#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
  500 +#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
  501 +#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
  502 +
  503 +#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
  504 +#define FE_READ_BER _IOR('o', 70, __u32)
  505 +#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
  506 +#define FE_READ_SNR _IOR('o', 72, __u16)
  507 +#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
  508 +
  509 +#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
  510 +#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
  511 +#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
  512 +#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
  513 +
  514 +#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
  515 +
  516 +#endif /*_DVBFRONTEND_H_*/
include/uapi/linux/dvb/net.h
  1 +/*
  2 + * net.h
  3 + *
  4 + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
  5 + * & Ralph Metzler <ralph@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU Lesser General Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _DVBNET_H_
  25 +#define _DVBNET_H_
  26 +
  27 +#include <linux/types.h>
  28 +
  29 +struct dvb_net_if {
  30 + __u16 pid;
  31 + __u16 if_num;
  32 + __u8 feedtype;
  33 +#define DVB_NET_FEEDTYPE_MPE 0 /* multi protocol encapsulation */
  34 +#define DVB_NET_FEEDTYPE_ULE 1 /* ultra lightweight encapsulation */
  35 +};
  36 +
  37 +
  38 +#define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if)
  39 +#define NET_REMOVE_IF _IO('o', 53)
  40 +#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
  41 +
  42 +
  43 +/* binary compatibility cruft: */
  44 +struct __dvb_net_if_old {
  45 + __u16 pid;
  46 + __u16 if_num;
  47 +};
  48 +#define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old)
  49 +#define __NET_GET_IF_OLD _IOWR('o', 54, struct __dvb_net_if_old)
  50 +
  51 +
  52 +#endif /*_DVBNET_H_*/
include/uapi/linux/dvb/osd.h
  1 +/*
  2 + * osd.h
  3 + *
  4 + * Copyright (C) 2001 Ralph Metzler <ralph@convergence.de>
  5 + * & Marcus Metzler <marcus@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Lesser Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _DVBOSD_H_
  25 +#define _DVBOSD_H_
  26 +
  27 +#include <linux/compiler.h>
  28 +
  29 +typedef enum {
  30 + // All functions return -2 on "not open"
  31 + OSD_Close=1, // ()
  32 + // Disables OSD and releases the buffers
  33 + // returns 0 on success
  34 + OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0))
  35 + // Opens OSD with this size and bit depth
  36 + // returns 0 on success, -1 on DRAM allocation error, -2 on "already open"
  37 + OSD_Show, // ()
  38 + // enables OSD mode
  39 + // returns 0 on success
  40 + OSD_Hide, // ()
  41 + // disables OSD mode
  42 + // returns 0 on success
  43 + OSD_Clear, // ()
  44 + // Sets all pixel to color 0
  45 + // returns 0 on success
  46 + OSD_Fill, // (color)
  47 + // Sets all pixel to color <col>
  48 + // returns 0 on success
  49 + OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1})
  50 + // set palette entry <num> to <r,g,b>, <mix> and <trans> apply
  51 + // R,G,B: 0..255
  52 + // R=Red, G=Green, B=Blue
  53 + // opacity=0: pixel opacity 0% (only video pixel shows)
  54 + // opacity=1..254: pixel opacity as specified in header
  55 + // opacity=255: pixel opacity 100% (only OSD pixel shows)
  56 + // returns 0 on success, -1 on error
  57 + OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data)
  58 + // Set a number of entries in the palette
  59 + // sets the entries "firstcolor" through "lastcolor" from the array "data"
  60 + // data has 4 byte for each color:
  61 + // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel
  62 + OSD_SetTrans, // (transparency{color})
  63 + // Sets transparency of mixed pixel (0..15)
  64 + // returns 0 on success
  65 + OSD_SetPixel, // (x0,y0,color)
  66 + // sets pixel <x>,<y> to color number <col>
  67 + // returns 0 on success, -1 on error
  68 + OSD_GetPixel, // (x0,y0)
  69 + // returns color number of pixel <x>,<y>, or -1
  70 + OSD_SetRow, // (x0,y0,x1,data)
  71 + // fills pixels x0,y through x1,y with the content of data[]
  72 + // returns 0 on success, -1 on clipping all pixel (no pixel drawn)
  73 + OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data)
  74 + // fills pixels x0,y0 through x1,y1 with the content of data[]
  75 + // inc contains the width of one line in the data block,
  76 + // inc<=0 uses blockwidth as linewidth
  77 + // returns 0 on success, -1 on clipping all pixel
  78 + OSD_FillRow, // (x0,y0,x1,color)
  79 + // fills pixels x0,y through x1,y with the color <col>
  80 + // returns 0 on success, -1 on clipping all pixel
  81 + OSD_FillBlock, // (x0,y0,x1,y1,color)
  82 + // fills pixels x0,y0 through x1,y1 with the color <col>
  83 + // returns 0 on success, -1 on clipping all pixel
  84 + OSD_Line, // (x0,y0,x1,y1,color)
  85 + // draw a line from x0,y0 to x1,y1 with the color <col>
  86 + // returns 0 on success
  87 + OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11
  88 + // fills parameters with the picture dimensions and the pixel aspect ratio
  89 + // returns 0 on success
  90 + OSD_Test, // ()
  91 + // draws a test picture. for debugging purposes only
  92 + // returns 0 on success
  93 +// TODO: remove "test" in final version
  94 + OSD_Text, // (x0,y0,size,color,text)
  95 + OSD_SetWindow, // (x0) set window with number 0<x0<8 as current
  96 + OSD_MoveWindow, // move current window to (x0, y0)
  97 + OSD_OpenRaw, // Open other types of OSD windows
  98 +} OSD_Command;
  99 +
  100 +typedef struct osd_cmd_s {
  101 + OSD_Command cmd;
  102 + int x0;
  103 + int y0;
  104 + int x1;
  105 + int y1;
  106 + int color;
  107 + void __user *data;
  108 +} osd_cmd_t;
  109 +
  110 +/* OSD_OpenRaw: set 'color' to desired window type */
  111 +typedef enum {
  112 + OSD_BITMAP1, /* 1 bit bitmap */
  113 + OSD_BITMAP2, /* 2 bit bitmap */
  114 + OSD_BITMAP4, /* 4 bit bitmap */
  115 + OSD_BITMAP8, /* 8 bit bitmap */
  116 + OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */
  117 + OSD_BITMAP2HR, /* 2 bit bitmap half resolution */
  118 + OSD_BITMAP4HR, /* 4 bit bitmap half resolution */
  119 + OSD_BITMAP8HR, /* 8 bit bitmap half resolution */
  120 + OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */
  121 + OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */
  122 + OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */
  123 + OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */
  124 + OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */
  125 + OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */
  126 + OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */
  127 + OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */
  128 + OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/
  129 + OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */
  130 + OSD_VIDEONSIZE, /* Full Size MPEG Video Display */
  131 + OSD_CURSOR /* Cursor */
  132 +} osd_raw_window_t;
  133 +
  134 +typedef struct osd_cap_s {
  135 + int cmd;
  136 +#define OSD_CAP_MEMSIZE 1 /* memory size */
  137 + long val;
  138 +} osd_cap_t;
  139 +
  140 +
  141 +#define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t)
  142 +#define OSD_GET_CAPABILITY _IOR('o', 161, osd_cap_t)
  143 +
  144 +#endif
include/uapi/linux/dvb/version.h
  1 +/*
  2 + * version.h
  3 + *
  4 + * Copyright (C) 2000 Holger Waechtler <holger@convergence.de>
  5 + * for convergence integrated media GmbH
  6 + *
  7 + * This program is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License
  9 + * as published by the Free Software Foundation; either version 2.1
  10 + * of the License, or (at your option) any later version.
  11 + *
  12 + * This program is distributed in the hope that it will be useful,
  13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15 + * GNU General Public License for more details.
  16 + *
  17 + * You should have received a copy of the GNU Lesser General Public License
  18 + * along with this program; if not, write to the Free Software
  19 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20 + *
  21 + */
  22 +
  23 +#ifndef _DVBVERSION_H_
  24 +#define _DVBVERSION_H_
  25 +
  26 +#define DVB_API_VERSION 5
  27 +#define DVB_API_VERSION_MINOR 9
  28 +
  29 +#endif /*_DVBVERSION_H_*/
include/uapi/linux/dvb/video.h
  1 +/*
  2 + * video.h
  3 + *
  4 + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
  5 + * & Ralph Metzler <ralph@convergence.de>
  6 + * for convergence integrated media GmbH
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU Lesser General Public License
  10 + * as published by the Free Software Foundation; either version 2.1
  11 + * of the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU Lesser General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21 + *
  22 + */
  23 +
  24 +#ifndef _UAPI_DVBVIDEO_H_
  25 +#define _UAPI_DVBVIDEO_H_
  26 +
  27 +#include <linux/types.h>
  28 +#ifndef __KERNEL__
  29 +#include <stdint.h>
  30 +#include <time.h>
  31 +#endif
  32 +
  33 +typedef enum {
  34 + VIDEO_FORMAT_4_3, /* Select 4:3 format */
  35 + VIDEO_FORMAT_16_9, /* Select 16:9 format. */
  36 + VIDEO_FORMAT_221_1 /* 2.21:1 */
  37 +} video_format_t;
  38 +
  39 +
  40 +typedef enum {
  41 + VIDEO_SYSTEM_PAL,
  42 + VIDEO_SYSTEM_NTSC,
  43 + VIDEO_SYSTEM_PALN,
  44 + VIDEO_SYSTEM_PALNc,
  45 + VIDEO_SYSTEM_PALM,
  46 + VIDEO_SYSTEM_NTSC60,
  47 + VIDEO_SYSTEM_PAL60,
  48 + VIDEO_SYSTEM_PALM60
  49 +} video_system_t;
  50 +
  51 +
  52 +typedef enum {
  53 + VIDEO_PAN_SCAN, /* use pan and scan format */
  54 + VIDEO_LETTER_BOX, /* use letterbox format */
  55 + VIDEO_CENTER_CUT_OUT /* use center cut out format */
  56 +} video_displayformat_t;
  57 +
  58 +typedef struct {
  59 + int w;
  60 + int h;
  61 + video_format_t aspect_ratio;
  62 +} video_size_t;
  63 +
  64 +typedef enum {
  65 + VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
  66 + VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
  67 + comes from the user through the write
  68 + system call */
  69 +} video_stream_source_t;
  70 +
  71 +
  72 +typedef enum {
  73 + VIDEO_STOPPED, /* Video is stopped */
  74 + VIDEO_PLAYING, /* Video is currently playing */
  75 + VIDEO_FREEZED /* Video is freezed */
  76 +} video_play_state_t;
  77 +
  78 +
  79 +/* Decoder commands */
  80 +#define VIDEO_CMD_PLAY (0)
  81 +#define VIDEO_CMD_STOP (1)
  82 +#define VIDEO_CMD_FREEZE (2)
  83 +#define VIDEO_CMD_CONTINUE (3)
  84 +
  85 +/* Flags for VIDEO_CMD_FREEZE */
  86 +#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0)
  87 +
  88 +/* Flags for VIDEO_CMD_STOP */
  89 +#define VIDEO_CMD_STOP_TO_BLACK (1 << 0)
  90 +#define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1)
  91 +
  92 +/* Play input formats: */
  93 +/* The decoder has no special format requirements */
  94 +#define VIDEO_PLAY_FMT_NONE (0)
  95 +/* The decoder requires full GOPs */
  96 +#define VIDEO_PLAY_FMT_GOP (1)
  97 +
  98 +/* The structure must be zeroed before use by the application
  99 + This ensures it can be extended safely in the future. */
  100 +struct video_command {
  101 + __u32 cmd;
  102 + __u32 flags;
  103 + union {
  104 + struct {
  105 + __u64 pts;
  106 + } stop;
  107 +
  108 + struct {
  109 + /* 0 or 1000 specifies normal speed,
  110 + 1 specifies forward single stepping,
  111 + -1 specifies backward single stepping,
  112 + >1: playback at speed/1000 of the normal speed,
  113 + <-1: reverse playback at (-speed/1000) of the normal speed. */
  114 + __s32 speed;
  115 + __u32 format;
  116 + } play;
  117 +
  118 + struct {
  119 + __u32 data[16];
  120 + } raw;
  121 + };
  122 +};
  123 +
  124 +/* FIELD_UNKNOWN can be used if the hardware does not know whether
  125 + the Vsync is for an odd, even or progressive (i.e. non-interlaced)
  126 + field. */
  127 +#define VIDEO_VSYNC_FIELD_UNKNOWN (0)
  128 +#define VIDEO_VSYNC_FIELD_ODD (1)
  129 +#define VIDEO_VSYNC_FIELD_EVEN (2)
  130 +#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
  131 +
  132 +struct video_event {
  133 + __s32 type;
  134 +#define VIDEO_EVENT_SIZE_CHANGED 1
  135 +#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
  136 +#define VIDEO_EVENT_DECODER_STOPPED 3
  137 +#define VIDEO_EVENT_VSYNC 4
  138 + __kernel_time_t timestamp;
  139 + union {
  140 + video_size_t size;
  141 + unsigned int frame_rate; /* in frames per 1000sec */
  142 + unsigned char vsync_field; /* unknown/odd/even/progressive */
  143 + } u;
  144 +};
  145 +
  146 +
  147 +struct video_status {
  148 + int video_blank; /* blank video on freeze? */
  149 + video_play_state_t play_state; /* current state of playback */
  150 + video_stream_source_t stream_source; /* current source (demux/memory) */
  151 + video_format_t video_format; /* current aspect ratio of stream*/
  152 + video_displayformat_t display_format;/* selected cropping mode */
  153 +};
  154 +
  155 +
  156 +struct video_still_picture {
  157 + char __user *iFrame; /* pointer to a single iframe in memory */
  158 + __s32 size;
  159 +};
  160 +
  161 +
  162 +typedef
  163 +struct video_highlight {
  164 + int active; /* 1=show highlight, 0=hide highlight */
  165 + __u8 contrast1; /* 7- 4 Pattern pixel contrast */
  166 + /* 3- 0 Background pixel contrast */
  167 + __u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */
  168 + /* 3- 0 Emphasis pixel-1 contrast */
  169 + __u8 color1; /* 7- 4 Pattern pixel color */
  170 + /* 3- 0 Background pixel color */
  171 + __u8 color2; /* 7- 4 Emphasis pixel-2 color */
  172 + /* 3- 0 Emphasis pixel-1 color */
  173 + __u32 ypos; /* 23-22 auto action mode */
  174 + /* 21-12 start y */
  175 + /* 9- 0 end y */
  176 + __u32 xpos; /* 23-22 button color number */
  177 + /* 21-12 start x */
  178 + /* 9- 0 end x */
  179 +} video_highlight_t;
  180 +
  181 +
  182 +typedef struct video_spu {
  183 + int active;
  184 + int stream_id;
  185 +} video_spu_t;
  186 +
  187 +
  188 +typedef struct video_spu_palette { /* SPU Palette information */
  189 + int length;
  190 + __u8 __user *palette;
  191 +} video_spu_palette_t;
  192 +
  193 +
  194 +typedef struct video_navi_pack {
  195 + int length; /* 0 ... 1024 */
  196 + __u8 data[1024];
  197 +} video_navi_pack_t;
  198 +
  199 +
  200 +typedef __u16 video_attributes_t;
  201 +/* bits: descr. */
  202 +/* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */
  203 +/* 13-12 TV system (0=525/60, 1=625/50) */
  204 +/* 11-10 Aspect ratio (0=4:3, 3=16:9) */
  205 +/* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */
  206 +/* 7 line 21-1 data present in GOP (1=yes, 0=no) */
  207 +/* 6 line 21-2 data present in GOP (1=yes, 0=no) */
  208 +/* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */
  209 +/* 2 source letterboxed (1=yes, 0=no) */
  210 +/* 0 film/camera mode (0=camera, 1=film (625/50 only)) */
  211 +
  212 +
  213 +/* bit definitions for capabilities: */
  214 +/* can the hardware decode MPEG1 and/or MPEG2? */
  215 +#define VIDEO_CAP_MPEG1 1
  216 +#define VIDEO_CAP_MPEG2 2
  217 +/* can you send a system and/or program stream to video device?
  218 + (you still have to open the video and the audio device but only
  219 + send the stream to the video device) */
  220 +#define VIDEO_CAP_SYS 4
  221 +#define VIDEO_CAP_PROG 8
  222 +/* can the driver also handle SPU, NAVI and CSS encoded data?
  223 + (CSS API is not present yet) */
  224 +#define VIDEO_CAP_SPU 16
  225 +#define VIDEO_CAP_NAVI 32
  226 +#define VIDEO_CAP_CSS 64
  227 +
  228 +
  229 +#define VIDEO_STOP _IO('o', 21)
  230 +#define VIDEO_PLAY _IO('o', 22)
  231 +#define VIDEO_FREEZE _IO('o', 23)
  232 +#define VIDEO_CONTINUE _IO('o', 24)
  233 +#define VIDEO_SELECT_SOURCE _IO('o', 25)
  234 +#define VIDEO_SET_BLANK _IO('o', 26)
  235 +#define VIDEO_GET_STATUS _IOR('o', 27, struct video_status)
  236 +#define VIDEO_GET_EVENT _IOR('o', 28, struct video_event)
  237 +#define VIDEO_SET_DISPLAY_FORMAT _IO('o', 29)
  238 +#define VIDEO_STILLPICTURE _IOW('o', 30, struct video_still_picture)
  239 +#define VIDEO_FAST_FORWARD _IO('o', 31)
  240 +#define VIDEO_SLOWMOTION _IO('o', 32)
  241 +#define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int)
  242 +#define VIDEO_CLEAR_BUFFER _IO('o', 34)
  243 +#define VIDEO_SET_ID _IO('o', 35)
  244 +#define VIDEO_SET_STREAMTYPE _IO('o', 36)
  245 +#define VIDEO_SET_FORMAT _IO('o', 37)
  246 +#define VIDEO_SET_SYSTEM _IO('o', 38)
  247 +#define VIDEO_SET_HIGHLIGHT _IOW('o', 39, video_highlight_t)
  248 +#define VIDEO_SET_SPU _IOW('o', 50, video_spu_t)
  249 +#define VIDEO_SET_SPU_PALETTE _IOW('o', 51, video_spu_palette_t)
  250 +#define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t)
  251 +#define VIDEO_SET_ATTRIBUTES _IO('o', 53)
  252 +#define VIDEO_GET_SIZE _IOR('o', 55, video_size_t)
  253 +#define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int)
  254 +
  255 +/**
  256 + * VIDEO_GET_PTS
  257 + *
  258 + * Read the 33 bit presentation time stamp as defined
  259 + * in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
  260 + *
  261 + * The PTS should belong to the currently played
  262 + * frame if possible, but may also be a value close to it
  263 + * like the PTS of the last decoded frame or the last PTS
  264 + * extracted by the PES parser.
  265 + */
  266 +#define VIDEO_GET_PTS _IOR('o', 57, __u64)
  267 +
  268 +/* Read the number of displayed frames since the decoder was started */
  269 +#define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
  270 +
  271 +#define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
  272 +#define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command)
  273 +
  274 +#endif /* _UAPI_DVBVIDEO_H_ */