aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-18 19:10:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-18 19:10:42 -0400
commitc9623de4fc2f8320fe94316b46171683be3b1d59 (patch)
tree83e064e152581b0d7e69cf3bf565955970f66505 /include/uapi
parent32bec973a8435afc0b032da22174701f836549b2 (diff)
parent2c76a12ae9f5e6e2afc400bfbdd8b326e7d36b2a (diff)
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media fixes from Mauro Carvalho Chehab: "Media fixes for: - one Kconfig fix patch; - one patch fixing DocBook breakage due to the drivers/media UAPI changes; - the remaining UAPI media changes (DVB API). I'm aware that is is a little late for the UAPI renames for the DVB API, but IMHO, it is better to merge it for 3.7, due to two reasons: 1) There is a major rename at 3.7 (not only uapi changes, but also the entire media drivers were reorganized on 3.7, in order to simplify the Kconfig logic, and easy drivers selection, especially for hybrid devices). By confining all those renames there at 3.7 it will cause all the harm at for media developers on just one shot. Stable backports upstream and at distros will likely welcome it as well, as they won't need to check what changed on 3.7 and what was postponed for on 3.8. 2) The V4L2 DocBook Makefile creates a cross-reference between the media API headers and the specs. This helps us _a_lot_ to be sure that all API improvements are properly documented. Every time a header changes from one place to another, DocBook/media/Makefile needs to be patched. Currently, the DocBook breakage patch depends on the DVB UAPI." * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] Kconfig: Fix dependencies for driver autoselect options DocBook/media/Makefile: Fix build due to uapi breakage UAPI: (Scripted) Disintegrate include/linux/dvb
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/dvb/Kbuild8
-rw-r--r--include/uapi/linux/dvb/audio.h135
-rw-r--r--include/uapi/linux/dvb/ca.h90
-rw-r--r--include/uapi/linux/dvb/dmx.h155
-rw-r--r--include/uapi/linux/dvb/frontend.h516
-rw-r--r--include/uapi/linux/dvb/net.h52
-rw-r--r--include/uapi/linux/dvb/osd.h144
-rw-r--r--include/uapi/linux/dvb/version.h29
-rw-r--r--include/uapi/linux/dvb/video.h274
9 files changed, 1403 insertions, 0 deletions
diff --git a/include/uapi/linux/dvb/Kbuild b/include/uapi/linux/dvb/Kbuild
index aafaa5aa54d4..d40942cfc627 100644
--- a/include/uapi/linux/dvb/Kbuild
+++ b/include/uapi/linux/dvb/Kbuild
@@ -1 +1,9 @@
1# UAPI Header export list 1# UAPI Header export list
2header-y += audio.h
3header-y += ca.h
4header-y += dmx.h
5header-y += frontend.h
6header-y += net.h
7header-y += osd.h
8header-y += version.h
9header-y += video.h
diff --git a/include/uapi/linux/dvb/audio.h b/include/uapi/linux/dvb/audio.h
new file mode 100644
index 000000000000..d47bccd604e4
--- /dev/null
+++ b/include/uapi/linux/dvb/audio.h
@@ -0,0 +1,135 @@
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
29typedef 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
35typedef 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
42typedef 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
51typedef 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
58typedef 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
69typedef
70struct 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
79typedef __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_ */
diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
new file mode 100644
index 000000000000..c18537f3e449
--- /dev/null
+++ b/include/uapi/linux/dvb/ca.h
@@ -0,0 +1,90 @@
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
29typedef 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
47typedef 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
55typedef 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 */
63typedef 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
70typedef 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
76typedef 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
diff --git a/include/uapi/linux/dvb/dmx.h b/include/uapi/linux/dvb/dmx.h
new file mode 100644
index 000000000000..b2a9ad8cafdc
--- /dev/null
+++ b/include/uapi/linux/dvb/dmx.h
@@ -0,0 +1,155 @@
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
35typedef 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
47typedef 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
54typedef 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
90typedef 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
98struct 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
111struct 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
120typedef struct dmx_caps {
121 __u32 caps;
122 int num_decoders;
123} dmx_caps_t;
124
125typedef 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
136struct 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_ */
diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
new file mode 100644
index 000000000000..c12d452cb40d
--- /dev/null
+++ b/include/uapi/linux/dvb/frontend.h
@@ -0,0 +1,516 @@
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
31typedef enum fe_type {
32 FE_QPSK,
33 FE_QAM,
34 FE_OFDM,
35 FE_ATSC
36} fe_type_t;
37
38
39typedef 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
74struct 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 */
93struct 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
99struct 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
106typedef enum fe_sec_voltage {
107 SEC_VOLTAGE_13,
108 SEC_VOLTAGE_18,
109 SEC_VOLTAGE_OFF
110} fe_sec_voltage_t;
111
112
113typedef enum fe_sec_tone_mode {
114 SEC_TONE_ON,
115 SEC_TONE_OFF
116} fe_sec_tone_mode_t;
117
118
119typedef 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
137typedef 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
147typedef enum fe_spectral_inversion {
148 INVERSION_OFF,
149 INVERSION_ON,
150 INVERSION_AUTO
151} fe_spectral_inversion_t;
152
153
154typedef 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
171typedef 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
188typedef 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__)
201typedef 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
212typedef 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
227typedef enum fe_hierarchy {
228 HIERARCHY_NONE,
229 HIERARCHY_1,
230 HIERARCHY_2,
231 HIERARCHY_4,
232 HIERARCHY_AUTO
233} fe_hierarchy_t;
234
235enum fe_interleaving {
236 INTERLEAVING_NONE,
237 INTERLEAVING_AUTO,
238 INTERLEAVING_240,
239 INTERLEAVING_720,
240};
241
242#if defined(__DVB_CORE__) || !defined (__KERNEL__)
243struct 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
248struct 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
254struct dvb_vsb_parameters {
255 fe_modulation_t modulation; /* modulation type (see above) */
256};
257
258struct 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
269struct 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
281struct 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
370typedef enum fe_pilot {
371 PILOT_ON,
372 PILOT_OFF,
373 PILOT_AUTO,
374} fe_pilot_t;
375
376typedef 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
383typedef 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
411enum atscmh_sccc_block_mode {
412 ATSCMH_SCCC_BLK_SEP = 0,
413 ATSCMH_SCCC_BLK_COMB = 1,
414 ATSCMH_SCCC_BLK_RES = 2,
415};
416
417enum atscmh_sccc_code_mode {
418 ATSCMH_SCCC_CODE_HLF = 0,
419 ATSCMH_SCCC_CODE_QTR = 1,
420 ATSCMH_SCCC_CODE_RES = 2,
421};
422
423enum atscmh_rs_frame_ensemble {
424 ATSCMH_RSFRAME_ENS_PRI = 0,
425 ATSCMH_RSFRAME_ENS_SEC = 1,
426};
427
428enum atscmh_rs_frame_mode {
429 ATSCMH_RSFRAME_PRI_ONLY = 0,
430 ATSCMH_RSFRAME_PRI_SEC = 1,
431 ATSCMH_RSFRAME_RES = 2,
432};
433
434enum 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
444struct 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
455struct 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
473struct 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_*/
diff --git a/include/uapi/linux/dvb/net.h b/include/uapi/linux/dvb/net.h
new file mode 100644
index 000000000000..f451e7eb0b0b
--- /dev/null
+++ b/include/uapi/linux/dvb/net.h
@@ -0,0 +1,52 @@
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
29struct 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: */
44struct __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_*/
diff --git a/include/uapi/linux/dvb/osd.h b/include/uapi/linux/dvb/osd.h
new file mode 100644
index 000000000000..880e68435832
--- /dev/null
+++ b/include/uapi/linux/dvb/osd.h
@@ -0,0 +1,144 @@
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
29typedef 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
100typedef 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 */
111typedef 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
134typedef 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
diff --git a/include/uapi/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
new file mode 100644
index 000000000000..827cce7e33e3
--- /dev/null
+++ b/include/uapi/linux/dvb/version.h
@@ -0,0 +1,29 @@
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_*/
diff --git a/include/uapi/linux/dvb/video.h b/include/uapi/linux/dvb/video.h
new file mode 100644
index 000000000000..d3d14a59d2d5
--- /dev/null
+++ b/include/uapi/linux/dvb/video.h
@@ -0,0 +1,274 @@
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
33typedef 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
40typedef 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
52typedef 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
58typedef struct {
59 int w;
60 int h;
61 video_format_t aspect_ratio;
62} video_size_t;
63
64typedef 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
72typedef 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. */
100struct 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
132struct 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
147struct 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
156struct video_still_picture {
157 char __user *iFrame; /* pointer to a single iframe in memory */
158 __s32 size;
159};
160
161
162typedef
163struct 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
182typedef struct video_spu {
183 int active;
184 int stream_id;
185} video_spu_t;
186
187
188typedef struct video_spu_palette { /* SPU Palette information */
189 int length;
190 __u8 __user *palette;
191} video_spu_palette_t;
192
193
194typedef struct video_navi_pack {
195 int length; /* 0 ... 1024 */
196 __u8 data[1024];
197} video_navi_pack_t;
198
199
200typedef __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_ */