aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2012-10-09 04:48:42 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-10-17 09:00:29 -0400
commitc57fd0219292884aabe368cf811cd1911acf798e (patch)
treecc7a0e86d72e0c79dfe657168ec952cc549405de
parent214e2ca2b82d335935a861c253fe94c61ad77aad (diff)
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>
-rw-r--r--include/linux/dvb/Kbuild8
-rw-r--r--include/linux/dvb/dmx.h130
-rw-r--r--include/linux/dvb/video.h249
-rw-r--r--include/uapi/linux/dvb/Kbuild8
-rw-r--r--include/uapi/linux/dvb/audio.h (renamed from include/linux/dvb/audio.h)0
-rw-r--r--include/uapi/linux/dvb/ca.h (renamed from include/linux/dvb/ca.h)0
-rw-r--r--include/uapi/linux/dvb/dmx.h155
-rw-r--r--include/uapi/linux/dvb/frontend.h (renamed from include/linux/dvb/frontend.h)0
-rw-r--r--include/uapi/linux/dvb/net.h (renamed from include/linux/dvb/net.h)0
-rw-r--r--include/uapi/linux/dvb/osd.h (renamed from include/linux/dvb/osd.h)0
-rw-r--r--include/uapi/linux/dvb/version.h (renamed from include/linux/dvb/version.h)0
-rw-r--r--include/uapi/linux/dvb/video.h274
12 files changed, 439 insertions, 385 deletions
diff --git a/include/linux/dvb/Kbuild b/include/linux/dvb/Kbuild
index f4dba8637f98..e69de29bb2d1 100644
--- a/include/linux/dvb/Kbuild
+++ b/include/linux/dvb/Kbuild
@@ -1,8 +0,0 @@
1header-y += audio.h
2header-y += ca.h
3header-y += dmx.h
4header-y += frontend.h
5header-y += net.h
6header-y += osd.h
7header-y += version.h
8header-y += video.h
diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h
index f078f3ac82d4..0be6d8f2b52b 100644
--- a/include/linux/dvb/dmx.h
+++ b/include/linux/dvb/dmx.h
@@ -20,138 +20,10 @@
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 * 21 *
22 */ 22 */
23
24#ifndef _DVBDMX_H_ 23#ifndef _DVBDMX_H_
25#define _DVBDMX_H_ 24#define _DVBDMX_H_
26 25
27#include <linux/types.h>
28#ifdef __KERNEL__
29#include <linux/time.h> 26#include <linux/time.h>
30#else 27#include <uapi/linux/dvb/dmx.h>
31#include <time.h>
32#endif
33
34
35#define DMX_FILTER_SIZE 16
36
37typedef 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
49typedef 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
56typedef 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
92typedef 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
100struct 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
113struct 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
122typedef struct dmx_caps {
123 __u32 caps;
124 int num_decoders;
125} dmx_caps_t;
126
127typedef 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
138struct 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)
156 28
157#endif /*_DVBDMX_H_*/ 29#endif /*_DVBDMX_H_*/
diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h
index 1d750c0fd86e..85c20d925696 100644
--- a/include/linux/dvb/video.h
+++ b/include/linux/dvb/video.h
@@ -20,257 +20,10 @@
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 * 21 *
22 */ 22 */
23
24#ifndef _DVBVIDEO_H_ 23#ifndef _DVBVIDEO_H_
25#define _DVBVIDEO_H_ 24#define _DVBVIDEO_H_
26 25
27#include <linux/types.h>
28#ifdef __KERNEL__
29#include <linux/compiler.h> 26#include <linux/compiler.h>
30#else 27#include <uapi/linux/dvb/video.h>
31#include <stdint.h>
32#include <time.h>
33#endif
34
35typedef 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
42typedef 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
54typedef 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
60typedef struct {
61 int w;
62 int h;
63 video_format_t aspect_ratio;
64} video_size_t;
65
66typedef 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
74typedef 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. */
102struct 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
134struct 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
149struct 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
158struct video_still_picture {
159 char __user *iFrame; /* pointer to a single iframe in memory */
160 __s32 size;
161};
162
163
164typedef
165struct 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
184typedef struct video_spu {
185 int active;
186 int stream_id;
187} video_spu_t;
188
189
190typedef struct video_spu_palette { /* SPU Palette information */
191 int length;
192 __u8 __user *palette;
193} video_spu_palette_t;
194
195
196typedef struct video_navi_pack {
197 int length; /* 0 ... 1024 */
198 __u8 data[1024];
199} video_navi_pack_t;
200
201
202typedef __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)
275 28
276#endif /*_DVBVIDEO_H_*/ 29#endif /*_DVBVIDEO_H_*/
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/linux/dvb/audio.h b/include/uapi/linux/dvb/audio.h
index d47bccd604e4..d47bccd604e4 100644
--- a/include/linux/dvb/audio.h
+++ b/include/uapi/linux/dvb/audio.h
diff --git a/include/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
index c18537f3e449..c18537f3e449 100644
--- a/include/linux/dvb/ca.h
+++ b/include/uapi/linux/dvb/ca.h
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/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
index c12d452cb40d..c12d452cb40d 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/uapi/linux/dvb/frontend.h
diff --git a/include/linux/dvb/net.h b/include/uapi/linux/dvb/net.h
index f451e7eb0b0b..f451e7eb0b0b 100644
--- a/include/linux/dvb/net.h
+++ b/include/uapi/linux/dvb/net.h
diff --git a/include/linux/dvb/osd.h b/include/uapi/linux/dvb/osd.h
index 880e68435832..880e68435832 100644
--- a/include/linux/dvb/osd.h
+++ b/include/uapi/linux/dvb/osd.h
diff --git a/include/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
index 827cce7e33e3..827cce7e33e3 100644
--- a/include/linux/dvb/version.h
+++ b/include/uapi/linux/dvb/version.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_ */