The C and C++ Include Header Files
/usr/include/linux/dvb/dmx.h
$ cat -n /usr/include/linux/dvb/dmx.h 1 /* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */ 2 /* 3 * dmx.h 4 * 5 * Copyright (C) 2000 Marcus Metzler
6 * & Ralph Metzler
7 * for convergence integrated media GmbH 8 */ 9 10 #ifndef _DVBDMX_H_ 11 #define _DVBDMX_H_ 12 13 #include
14 #include
15 16 17 #define DMX_FILTER_SIZE 16 18 19 /** 20 * enum dmx_output - Output for the demux. 21 * 22 * @DMX_OUT_DECODER: 23 * Streaming directly to decoder. 24 * @DMX_OUT_TAP: 25 * Output going to a memory buffer (to be retrieved via the read command). 26 * Delivers the stream output to the demux device on which the ioctl 27 * is called. 28 * @DMX_OUT_TS_TAP: 29 * Output multiplexed into a new TS (to be retrieved by reading from the 30 * logical DVR device). Routes output to the logical DVR device 31 * ``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from all 32 * filters for which @DMX_OUT_TS_TAP was specified. 33 * @DMX_OUT_TSDEMUX_TAP: 34 * Like @DMX_OUT_TS_TAP but retrieved from the DMX device. 35 */ 36 enum dmx_output { 37 DMX_OUT_DECODER, 38 DMX_OUT_TAP, 39 DMX_OUT_TS_TAP, 40 DMX_OUT_TSDEMUX_TAP 41 }; 42 43 44 /** 45 * enum dmx_input - Input from the demux. 46 * 47 * @DMX_IN_FRONTEND: Input from a front-end device. 48 * @DMX_IN_DVR: Input from the logical DVR device. 49 */ 50 enum dmx_input { 51 DMX_IN_FRONTEND, 52 DMX_IN_DVR 53 }; 54 55 /** 56 * enum dmx_ts_pes - type of the PES filter. 57 * 58 * @DMX_PES_AUDIO0: first audio PID. Also referred as @DMX_PES_AUDIO. 59 * @DMX_PES_VIDEO0: first video PID. Also referred as @DMX_PES_VIDEO. 60 * @DMX_PES_TELETEXT0: first teletext PID. Also referred as @DMX_PES_TELETEXT. 61 * @DMX_PES_SUBTITLE0: first subtitle PID. Also referred as @DMX_PES_SUBTITLE. 62 * @DMX_PES_PCR0: first Program Clock Reference PID. 63 * Also referred as @DMX_PES_PCR. 64 * 65 * @DMX_PES_AUDIO1: second audio PID. 66 * @DMX_PES_VIDEO1: second video PID. 67 * @DMX_PES_TELETEXT1: second teletext PID. 68 * @DMX_PES_SUBTITLE1: second subtitle PID. 69 * @DMX_PES_PCR1: second Program Clock Reference PID. 70 * 71 * @DMX_PES_AUDIO2: third audio PID. 72 * @DMX_PES_VIDEO2: third video PID. 73 * @DMX_PES_TELETEXT2: third teletext PID. 74 * @DMX_PES_SUBTITLE2: third subtitle PID. 75 * @DMX_PES_PCR2: third Program Clock Reference PID. 76 * 77 * @DMX_PES_AUDIO3: fourth audio PID. 78 * @DMX_PES_VIDEO3: fourth video PID. 79 * @DMX_PES_TELETEXT3: fourth teletext PID. 80 * @DMX_PES_SUBTITLE3: fourth subtitle PID. 81 * @DMX_PES_PCR3: fourth Program Clock Reference PID. 82 * 83 * @DMX_PES_OTHER: any other PID. 84 */ 85 86 enum dmx_ts_pes { 87 DMX_PES_AUDIO0, 88 DMX_PES_VIDEO0, 89 DMX_PES_TELETEXT0, 90 DMX_PES_SUBTITLE0, 91 DMX_PES_PCR0, 92 93 DMX_PES_AUDIO1, 94 DMX_PES_VIDEO1, 95 DMX_PES_TELETEXT1, 96 DMX_PES_SUBTITLE1, 97 DMX_PES_PCR1, 98 99 DMX_PES_AUDIO2, 100 DMX_PES_VIDEO2, 101 DMX_PES_TELETEXT2, 102 DMX_PES_SUBTITLE2, 103 DMX_PES_PCR2, 104 105 DMX_PES_AUDIO3, 106 DMX_PES_VIDEO3, 107 DMX_PES_TELETEXT3, 108 DMX_PES_SUBTITLE3, 109 DMX_PES_PCR3, 110 111 DMX_PES_OTHER 112 }; 113 114 #define DMX_PES_AUDIO DMX_PES_AUDIO0 115 #define DMX_PES_VIDEO DMX_PES_VIDEO0 116 #define DMX_PES_TELETEXT DMX_PES_TELETEXT0 117 #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 118 #define DMX_PES_PCR DMX_PES_PCR0 119 120 121 122 /** 123 * struct dmx_filter - Specifies a section header filter. 124 * 125 * @filter: bit array with bits to be matched at the section header. 126 * @mask: bits that are valid at the filter bit array. 127 * @mode: mode of match: if bit is zero, it will match if equal (positive 128 * match); if bit is one, it will match if the bit is negated. 129 * 130 * Note: All arrays in this struct have a size of DMX_FILTER_SIZE (16 bytes). 131 */ 132 struct dmx_filter { 133 __u8 filter[DMX_FILTER_SIZE]; 134 __u8 mask[DMX_FILTER_SIZE]; 135 __u8 mode[DMX_FILTER_SIZE]; 136 }; 137 138 /** 139 * struct dmx_sct_filter_params - Specifies a section filter. 140 * 141 * @pid: PID to be filtered. 142 * @filter: section header filter, as defined by &struct dmx_filter. 143 * @timeout: maximum time to filter, in milliseconds. 144 * @flags: extra flags for the section filter. 145 * 146 * Carries the configuration for a MPEG-TS section filter. 147 * 148 * The @flags can be: 149 * 150 * - %DMX_CHECK_CRC - only deliver sections where the CRC check succeeded; 151 * - %DMX_ONESHOT - disable the section filter after one section 152 * has been delivered; 153 * - %DMX_IMMEDIATE_START - Start filter immediately without requiring a 154 * :ref:`DMX_START`. 155 */ 156 struct dmx_sct_filter_params { 157 __u16 pid; 158 struct dmx_filter filter; 159 __u32 timeout; 160 __u32 flags; 161 #define DMX_CHECK_CRC 1 162 #define DMX_ONESHOT 2 163 #define DMX_IMMEDIATE_START 4 164 }; 165 166 /** 167 * struct dmx_pes_filter_params - Specifies Packetized Elementary Stream (PES) 168 * filter parameters. 169 * 170 * @pid: PID to be filtered. 171 * @input: Demux input, as specified by &enum dmx_input. 172 * @output: Demux output, as specified by &enum dmx_output. 173 * @pes_type: Type of the pes filter, as specified by &enum dmx_pes_type. 174 * @flags: Demux PES flags. 175 */ 176 struct dmx_pes_filter_params { 177 __u16 pid; 178 enum dmx_input input; 179 enum dmx_output output; 180 enum dmx_ts_pes pes_type; 181 __u32 flags; 182 }; 183 184 /** 185 * struct dmx_stc - Stores System Time Counter (STC) information. 186 * 187 * @num: input data: number of the STC, from 0 to N. 188 * @base: output: divisor for STC to get 90 kHz clock. 189 * @stc: output: stc in @base * 90 kHz units. 190 */ 191 struct dmx_stc { 192 unsigned int num; 193 unsigned int base; 194 __u64 stc; 195 }; 196 197 /** 198 * enum dmx_buffer_flags - DMX memory-mapped buffer flags 199 * 200 * @DMX_BUFFER_FLAG_HAD_CRC32_DISCARD: 201 * Indicates that the Kernel discarded one or more frames due to wrong 202 * CRC32 checksum. 203 * @DMX_BUFFER_FLAG_TEI: 204 * Indicates that the Kernel has detected a Transport Error indicator 205 * (TEI) on a filtered pid. 206 * @DMX_BUFFER_PKT_COUNTER_MISMATCH: 207 * Indicates that the Kernel has detected a packet counter mismatch 208 * on a filtered pid. 209 * @DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED: 210 * Indicates that the Kernel has detected one or more frame discontinuity. 211 * @DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR: 212 * Received at least one packet with a frame discontinuity indicator. 213 */ 214 215 enum dmx_buffer_flags { 216 DMX_BUFFER_FLAG_HAD_CRC32_DISCARD = 1 << 0, 217 DMX_BUFFER_FLAG_TEI = 1 << 1, 218 DMX_BUFFER_PKT_COUNTER_MISMATCH = 1 << 2, 219 DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED = 1 << 3, 220 DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR = 1 << 4, 221 }; 222 223 /** 224 * struct dmx_buffer - dmx buffer info 225 * 226 * @index: id number of the buffer 227 * @bytesused: number of bytes occupied by data in the buffer (payload); 228 * @offset: for buffers with memory == DMX_MEMORY_MMAP; 229 * offset from the start of the device memory for this plane, 230 * (or a "cookie" that should be passed to mmap() as offset) 231 * @length: size in bytes of the buffer 232 * @flags: bit array of buffer flags as defined by &enum dmx_buffer_flags. 233 * Filled only at &DMX_DQBUF. 234 * @count: monotonic counter for filled buffers. Helps to identify 235 * data stream loses. Filled only at &DMX_DQBUF. 236 * 237 * Contains data exchanged by application and driver using one of the streaming 238 * I/O methods. 239 * 240 * Please notice that, for &DMX_QBUF, only @index should be filled. 241 * On &DMX_DQBUF calls, all fields will be filled by the Kernel. 242 */ 243 struct dmx_buffer { 244 __u32 index; 245 __u32 bytesused; 246 __u32 offset; 247 __u32 length; 248 __u32 flags; 249 __u32 count; 250 }; 251 252 /** 253 * struct dmx_requestbuffers - request dmx buffer information 254 * 255 * @count: number of requested buffers, 256 * @size: size in bytes of the requested buffer 257 * 258 * Contains data used for requesting a dmx buffer. 259 * All reserved fields must be set to zero. 260 */ 261 struct dmx_requestbuffers { 262 __u32 count; 263 __u32 size; 264 }; 265 266 /** 267 * struct dmx_exportbuffer - export of dmx buffer as DMABUF file descriptor 268 * 269 * @index: id number of the buffer 270 * @flags: flags for newly created file, currently only O_CLOEXEC is 271 * supported, refer to manual of open syscall for more details 272 * @fd: file descriptor associated with DMABUF (set by driver) 273 * 274 * Contains data used for exporting a dmx buffer as DMABUF file descriptor. 275 * The buffer is identified by a 'cookie' returned by DMX_QUERYBUF 276 * (identical to the cookie used to mmap() the buffer to userspace). All 277 * reserved fields must be set to zero. The field reserved0 is expected to 278 * become a structure 'type' allowing an alternative layout of the structure 279 * content. Therefore this field should not be used for any other extensions. 280 */ 281 struct dmx_exportbuffer { 282 __u32 index; 283 __u32 flags; 284 __s32 fd; 285 }; 286 287 #define DMX_START _IO('o', 41) 288 #define DMX_STOP _IO('o', 42) 289 #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params) 290 #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params) 291 #define DMX_SET_BUFFER_SIZE _IO('o', 45) 292 #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) 293 #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) 294 #define DMX_ADD_PID _IOW('o', 51, __u16) 295 #define DMX_REMOVE_PID _IOW('o', 52, __u16) 296 297 298 /* This is needed for legacy userspace support */ 299 typedef enum dmx_output dmx_output_t; 300 typedef enum dmx_input dmx_input_t; 301 typedef enum dmx_ts_pes dmx_pes_type_t; 302 typedef struct dmx_filter dmx_filter_t; 303 304 305 #define DMX_REQBUFS _IOWR('o', 60, struct dmx_requestbuffers) 306 #define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer) 307 #define DMX_EXPBUF _IOWR('o', 62, struct dmx_exportbuffer) 308 #define DMX_QBUF _IOWR('o', 63, struct dmx_buffer) 309 #define DMX_DQBUF _IOWR('o', 64, struct dmx_buffer) 310 311 #endif /* _DVBDMX_H_ */
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2024 MyWebUniversity.com ™