Merge tag 'tegra-for-4.8-i2c' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra...
[cascardo/linux.git] / Documentation / media / uapi / dvb / dmx_types.rst
1 .. -*- coding: utf-8; mode: rst -*-
2
3 .. _dmx_types:
4
5 ****************
6 Demux Data Types
7 ****************
8
9 Output for the demux
10 ====================
11
12 .. c:type:: dmx_output
13
14 .. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
15
16 .. flat-table:: enum dmx_output
17     :header-rows:  1
18     :stub-columns: 0
19
20
21     -  .. row 1
22
23        -  ID
24
25        -  Description
26
27     -  .. row 2
28
29        -  .. _DMX-OUT-DECODER:
30
31           DMX_OUT_DECODER
32
33        -  Streaming directly to decoder.
34
35     -  .. row 3
36
37        -  .. _DMX-OUT-TAP:
38
39           DMX_OUT_TAP
40
41        -  Output going to a memory buffer (to be retrieved via the read
42           command). Delivers the stream output to the demux device on which
43           the ioctl is called.
44
45     -  .. row 4
46
47        -  .. _DMX-OUT-TS-TAP:
48
49           DMX_OUT_TS_TAP
50
51        -  Output multiplexed into a new TS (to be retrieved by reading from
52           the logical DVR device). Routes output to the logical DVR device
53           ``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
54           all filters for which ``DMX_OUT_TS_TAP`` was specified.
55
56     -  .. row 5
57
58        -  .. _DMX-OUT-TSDEMUX-TAP:
59
60           DMX_OUT_TSDEMUX_TAP
61
62        -  Like :ref:`DMX_OUT_TS_TAP <DMX-OUT-TS-TAP>` but retrieved
63           from the DMX device.
64
65
66 dmx_input_t
67 ===========
68
69 .. c:type:: dmx_input
70
71 .. code-block:: c
72
73     typedef enum
74     {
75         DMX_IN_FRONTEND, /* Input from a front-end device.  */
76         DMX_IN_DVR       /* Input from the logical DVR device.  */
77     } dmx_input_t;
78
79
80 dmx_pes_type_t
81 ==============
82
83 .. c:type:: dmx_pes_type
84
85
86 .. code-block:: c
87
88     typedef enum
89     {
90         DMX_PES_AUDIO0,
91         DMX_PES_VIDEO0,
92         DMX_PES_TELETEXT0,
93         DMX_PES_SUBTITLE0,
94         DMX_PES_PCR0,
95
96         DMX_PES_AUDIO1,
97         DMX_PES_VIDEO1,
98         DMX_PES_TELETEXT1,
99         DMX_PES_SUBTITLE1,
100         DMX_PES_PCR1,
101
102         DMX_PES_AUDIO2,
103         DMX_PES_VIDEO2,
104         DMX_PES_TELETEXT2,
105         DMX_PES_SUBTITLE2,
106         DMX_PES_PCR2,
107
108         DMX_PES_AUDIO3,
109         DMX_PES_VIDEO3,
110         DMX_PES_TELETEXT3,
111         DMX_PES_SUBTITLE3,
112         DMX_PES_PCR3,
113
114         DMX_PES_OTHER
115     } dmx_pes_type_t;
116
117
118 struct dmx_filter
119 =================
120
121 .. c:type:: dmx_filter
122
123 .. code-block:: c
124
125      typedef struct dmx_filter
126     {
127         __u8  filter[DMX_FILTER_SIZE];
128         __u8  mask[DMX_FILTER_SIZE];
129         __u8  mode[DMX_FILTER_SIZE];
130     } dmx_filter_t;
131
132
133 .. c:type:: dmx_sct_filter_params
134
135 struct dmx_sct_filter_params
136 ============================
137
138
139 .. code-block:: c
140
141     struct dmx_sct_filter_params
142     {
143         __u16          pid;
144         dmx_filter_t   filter;
145         __u32          timeout;
146         __u32          flags;
147     #define DMX_CHECK_CRC       1
148     #define DMX_ONESHOT         2
149     #define DMX_IMMEDIATE_START 4
150     #define DMX_KERNEL_CLIENT   0x8000
151     };
152
153
154 struct dmx_pes_filter_params
155 ============================
156
157 .. c:type:: dmx_pes_filter_params
158
159 .. code-block:: c
160
161     struct dmx_pes_filter_params
162     {
163         __u16          pid;
164         dmx_input_t    input;
165         dmx_output_t   output;
166         dmx_pes_type_t pes_type;
167         __u32          flags;
168     };
169
170
171 struct dmx_event
172 ================
173
174 .. c:type:: dmx_event
175
176 .. code-block:: c
177
178      struct dmx_event
179      {
180          dmx_event_t          event;
181          time_t               timeStamp;
182          union
183          {
184              dmx_scrambling_status_t scrambling;
185          } u;
186      };
187
188
189 struct dmx_stc
190 ==============
191
192 .. c:type:: dmx_stc
193
194 .. code-block:: c
195
196     struct dmx_stc {
197         unsigned int num;   /* input : which STC? 0..N */
198         unsigned int base;  /* output: divisor for stc to get 90 kHz clock */
199         __u64 stc;      /* output: stc in 'base'*90 kHz units */
200     };
201
202
203 struct dmx_caps
204 ===============
205
206 .. c:type:: dmx_caps
207
208 .. code-block:: c
209
210      typedef struct dmx_caps {
211         __u32 caps;
212         int num_decoders;
213     } dmx_caps_t;
214
215
216 enum dmx_source
217 ===============
218
219 .. c:type:: dmx_source
220
221 .. code-block:: c
222
223     typedef enum dmx_source {
224         DMX_SOURCE_FRONT0 = 0,
225         DMX_SOURCE_FRONT1,
226         DMX_SOURCE_FRONT2,
227         DMX_SOURCE_FRONT3,
228         DMX_SOURCE_DVR0   = 16,
229         DMX_SOURCE_DVR1,
230         DMX_SOURCE_DVR2,
231         DMX_SOURCE_DVR3
232     } dmx_source_t;