1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef _UAPI_DVBDMX_H_ 7 #define _UAPI_DVBDMX_H_ 8 #include <linux/types.h> 9 #ifndef __KERNEL__ 10 #include <time.h> 11 #endif 12 #define DMX_FILTER_SIZE 16 13 enum dmx_output { 14 DMX_OUT_DECODER, 15 DMX_OUT_TAP, 16 DMX_OUT_TS_TAP, 17 DMX_OUT_TSDEMUX_TAP 18 }; 19 enum dmx_input { 20 DMX_IN_FRONTEND, 21 DMX_IN_DVR 22 }; 23 enum dmx_ts_pes { 24 DMX_PES_AUDIO0, 25 DMX_PES_VIDEO0, 26 DMX_PES_TELETEXT0, 27 DMX_PES_SUBTITLE0, 28 DMX_PES_PCR0, 29 DMX_PES_AUDIO1, 30 DMX_PES_VIDEO1, 31 DMX_PES_TELETEXT1, 32 DMX_PES_SUBTITLE1, 33 DMX_PES_PCR1, 34 DMX_PES_AUDIO2, 35 DMX_PES_VIDEO2, 36 DMX_PES_TELETEXT2, 37 DMX_PES_SUBTITLE2, 38 DMX_PES_PCR2, 39 DMX_PES_AUDIO3, 40 DMX_PES_VIDEO3, 41 DMX_PES_TELETEXT3, 42 DMX_PES_SUBTITLE3, 43 DMX_PES_PCR3, 44 DMX_PES_OTHER 45 }; 46 #define DMX_PES_AUDIO DMX_PES_AUDIO0 47 #define DMX_PES_VIDEO DMX_PES_VIDEO0 48 #define DMX_PES_TELETEXT DMX_PES_TELETEXT0 49 #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 50 #define DMX_PES_PCR DMX_PES_PCR0 51 struct dmx_filter { 52 __u8 filter[DMX_FILTER_SIZE]; 53 __u8 mask[DMX_FILTER_SIZE]; 54 __u8 mode[DMX_FILTER_SIZE]; 55 }; 56 struct dmx_sct_filter_params { 57 __u16 pid; 58 struct dmx_filter filter; 59 __u32 timeout; 60 __u32 flags; 61 #define DMX_CHECK_CRC 1 62 #define DMX_ONESHOT 2 63 #define DMX_IMMEDIATE_START 4 64 }; 65 struct dmx_pes_filter_params { 66 __u16 pid; 67 enum dmx_input input; 68 enum dmx_output output; 69 enum dmx_ts_pes pes_type; 70 __u32 flags; 71 }; 72 struct dmx_stc { 73 unsigned int num; 74 unsigned int base; 75 __u64 stc; 76 }; 77 enum dmx_buffer_flags { 78 DMX_BUFFER_FLAG_HAD_CRC32_DISCARD = 1 << 0, 79 DMX_BUFFER_FLAG_TEI = 1 << 1, 80 DMX_BUFFER_PKT_COUNTER_MISMATCH = 1 << 2, 81 DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED = 1 << 3, 82 DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR = 1 << 4, 83 }; 84 struct dmx_buffer { 85 __u32 index; 86 __u32 bytesused; 87 __u32 offset; 88 __u32 length; 89 __u32 flags; 90 __u32 count; 91 }; 92 struct dmx_requestbuffers { 93 __u32 count; 94 __u32 size; 95 }; 96 struct dmx_exportbuffer { 97 __u32 index; 98 __u32 flags; 99 __s32 fd; 100 }; 101 #define DMX_START _IO('o', 41) 102 #define DMX_STOP _IO('o', 42) 103 #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params) 104 #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params) 105 #define DMX_SET_BUFFER_SIZE _IO('o', 45) 106 #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) 107 #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) 108 #define DMX_ADD_PID _IOW('o', 51, __u16) 109 #define DMX_REMOVE_PID _IOW('o', 52, __u16) 110 #if !defined(__KERNEL__) 111 typedef enum dmx_output dmx_output_t; 112 typedef enum dmx_input dmx_input_t; 113 typedef enum dmx_ts_pes dmx_pes_type_t; 114 typedef struct dmx_filter dmx_filter_t; 115 #endif 116 #define DMX_REQBUFS _IOWR('o', 60, struct dmx_requestbuffers) 117 #define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer) 118 #define DMX_EXPBUF _IOWR('o', 62, struct dmx_exportbuffer) 119 #define DMX_QBUF _IOWR('o', 63, struct dmx_buffer) 120 #define DMX_DQBUF _IOWR('o', 64, struct dmx_buffer) 121 #endif 122