Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+487 -431
+38 -38
Documentation/DocBook/media/Makefile
··· 56 56 write \ 57 57 58 58 IOCTLS = \ 59 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/videodev2.h) \ 60 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/audio.h) \ 61 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/ca.h) \ 62 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/dmx.h) \ 63 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/frontend.h) \ 64 - $(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/net.h) \ 65 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/dvb/video.h) \ 66 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/media.h) \ 67 - $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/v4l2-subdev.h) \ 59 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/videodev2.h) \ 60 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/audio.h) \ 61 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/ca.h) \ 62 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/dmx.h) \ 63 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/frontend.h) \ 64 + $(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/net.h) \ 65 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \ 66 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \ 67 + $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \ 68 68 VIDIOC_SUBDEV_G_FRAME_INTERVAL \ 69 69 VIDIOC_SUBDEV_S_FRAME_INTERVAL \ 70 70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \ ··· 74 74 VIDIOC_SUBDEV_S_SELECTION \ 75 75 76 76 TYPES = \ 77 - $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ 78 - $(shell perl -ne 'print "$$1 " if /^}\s+([a-z0-9_]+_t)/' $(srctree)/include/linux/dvb/frontend.h) 77 + $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \ 78 + $(shell perl -ne 'print "$$1 " if /^}\s+([a-z0-9_]+_t)/' $(srctree)/include/uapi/linux/dvb/frontend.h) 79 79 80 80 ENUMS = \ 81 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \ 82 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/audio.h) \ 83 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/ca.h) \ 84 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/dmx.h) \ 85 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/frontend.h) \ 86 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/net.h) \ 87 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/video.h) \ 88 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \ 89 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) \ 90 - $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) 81 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \ 82 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/audio.h) \ 83 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/ca.h) \ 84 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/dmx.h) \ 85 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \ 86 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/net.h) \ 87 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/video.h) \ 88 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \ 89 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h) \ 90 + $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) 91 91 92 92 STRUCTS = \ 93 - $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \ 94 - $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/linux/dvb/audio.h) \ 95 - $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/ca.h) \ 96 - $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/dmx.h) \ 97 - $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/frontend.h) \ 98 - $(shell perl -ne 'print "$$1 " if (/^struct\s+([A-Z][^\s]+)\s+/)' $(srctree)/include/linux/dvb/net.h) \ 99 - $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/video.h) \ 100 - $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \ 101 - $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) \ 102 - $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) 93 + $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \ 94 + $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/uapi/linux/dvb/audio.h) \ 95 + $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \ 96 + $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \ 97 + $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \ 98 + $(shell perl -ne 'print "$$1 " if (/^struct\s+([A-Z][^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/net.h) \ 99 + $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \ 100 + $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \ 101 + $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \ 102 + $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h) 103 103 104 104 ERRORS = \ 105 105 E2BIG \ ··· 205 205 @(ln -sf $(MEDIA_SRC_DIR)/v4l/*xml $(MEDIA_OBJ_DIR)/) 206 206 @(ln -sf $(MEDIA_SRC_DIR)/dvb/*xml $(MEDIA_OBJ_DIR)/) 207 207 208 - $(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml 208 + $(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/uapi/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml 209 209 @$($(quiet)gen_xml) 210 210 @( \ 211 211 echo "<programlisting>") > $@ ··· 216 216 @( \ 217 217 echo "</programlisting>") >> $@ 218 218 219 - $(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml 219 + $(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/uapi/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml 220 220 @$($(quiet)gen_xml) 221 221 @( \ 222 222 echo "<programlisting>") > $@ ··· 227 227 @( \ 228 228 echo "</programlisting>") >> $@ 229 229 230 - $(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml 230 + $(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/uapi/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml 231 231 @$($(quiet)gen_xml) 232 232 @( \ 233 233 echo "<programlisting>") > $@ ··· 238 238 @( \ 239 239 echo "</programlisting>") >> $@ 240 240 241 - $(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml 241 + $(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml 242 242 @$($(quiet)gen_xml) 243 243 @( \ 244 244 echo "<programlisting>") > $@ ··· 249 249 @( \ 250 250 echo "</programlisting>") >> $@ 251 251 252 - $(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml 252 + $(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml 253 253 @$($(quiet)gen_xml) 254 254 @( \ 255 255 echo "<programlisting>") > $@ ··· 260 260 @( \ 261 261 echo "</programlisting>") >> $@ 262 262 263 - $(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml 263 + $(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/uapi/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml 264 264 @$($(quiet)gen_xml) 265 265 @( \ 266 266 echo "<programlisting>") > $@ ··· 271 271 @( \ 272 272 echo "</programlisting>") >> $@ 273 273 274 - $(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml 274 + $(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/uapi/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml 275 275 @$($(quiet)gen_xml) 276 276 @( \ 277 277 echo "<programlisting>") > $@
+10 -8
drivers/media/Kconfig
··· 163 163 # 164 164 165 165 config MEDIA_SUBDRV_AUTOSELECT 166 - bool "Autoselect analog and hybrid tuner modules to build" 167 - depends on MEDIA_TUNER 166 + bool "Autoselect tuners and i2c modules to build" 167 + depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_CAMERA_SUPPORT 168 168 default y 169 169 help 170 - By default, a TV driver auto-selects all possible tuners 171 - thar could be used by the driver. 170 + By default, a media driver auto-selects all possible i2c 171 + devices that are used by any of the supported devices. 172 172 173 173 This is generally the right thing to do, except when there 174 - are strict constraints with regards to the kernel size. 174 + are strict constraints with regards to the kernel size, 175 + like on embedded systems. 175 176 176 - Use this option with care, as deselecting tuner drivers which 177 - are in fact necessary will result in TV devices which cannot 178 - be tuned due to lack of the tuning driver. 177 + Use this option with care, as deselecting ancillary drivers which 178 + are, in fact, necessary will result in the lack of the needed 179 + functionality for your device (it may not tune or may not have 180 + the need demodulers). 179 181 180 182 If unsure say Y. 181 183
-8
include/linux/dvb/Kbuild
··· 1 - header-y += audio.h 2 - header-y += ca.h 3 - header-y += dmx.h 4 - header-y += frontend.h 5 - header-y += net.h 6 - header-y += osd.h 7 - header-y += version.h 8 - header-y += video.h
include/linux/dvb/audio.h include/uapi/linux/dvb/audio.h
include/linux/dvb/ca.h include/uapi/linux/dvb/ca.h
+1 -129
include/linux/dvb/dmx.h
··· 20 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 21 * 22 22 */ 23 - 24 23 #ifndef _DVBDMX_H_ 25 24 #define _DVBDMX_H_ 26 25 27 - #include <linux/types.h> 28 - #ifdef __KERNEL__ 29 26 #include <linux/time.h> 30 - #else 31 - #include <time.h> 32 - #endif 33 - 34 - 35 - #define DMX_FILTER_SIZE 16 36 - 37 - typedef 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 - 49 - typedef 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 - 56 - typedef 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 - 92 - typedef 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 - 100 - struct 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 - 113 - struct 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 - 122 - typedef struct dmx_caps { 123 - __u32 caps; 124 - int num_decoders; 125 - } dmx_caps_t; 126 - 127 - typedef 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 - 138 - struct 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) 27 + #include <uapi/linux/dvb/dmx.h> 156 28 157 29 #endif /*_DVBDMX_H_*/
include/linux/dvb/frontend.h include/uapi/linux/dvb/frontend.h
include/linux/dvb/net.h include/uapi/linux/dvb/net.h
include/linux/dvb/osd.h include/uapi/linux/dvb/osd.h
include/linux/dvb/version.h include/uapi/linux/dvb/version.h
+1 -248
include/linux/dvb/video.h
··· 20 20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 21 * 22 22 */ 23 - 24 23 #ifndef _DVBVIDEO_H_ 25 24 #define _DVBVIDEO_H_ 26 25 27 - #include <linux/types.h> 28 - #ifdef __KERNEL__ 29 26 #include <linux/compiler.h> 30 - #else 31 - #include <stdint.h> 32 - #include <time.h> 33 - #endif 34 - 35 - typedef 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 - 42 - typedef 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 - 54 - typedef 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 - 60 - typedef struct { 61 - int w; 62 - int h; 63 - video_format_t aspect_ratio; 64 - } video_size_t; 65 - 66 - typedef 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 - 74 - typedef 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. */ 102 - struct 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 - 134 - struct 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 - 149 - struct 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 - 158 - struct video_still_picture { 159 - char __user *iFrame; /* pointer to a single iframe in memory */ 160 - __s32 size; 161 - }; 162 - 163 - 164 - typedef 165 - struct 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 - 184 - typedef struct video_spu { 185 - int active; 186 - int stream_id; 187 - } video_spu_t; 188 - 189 - 190 - typedef struct video_spu_palette { /* SPU Palette information */ 191 - int length; 192 - __u8 __user *palette; 193 - } video_spu_palette_t; 194 - 195 - 196 - typedef struct video_navi_pack { 197 - int length; /* 0 ... 1024 */ 198 - __u8 data[1024]; 199 - } video_navi_pack_t; 200 - 201 - 202 - typedef __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) 27 + #include <uapi/linux/dvb/video.h> 275 28 276 29 #endif /*_DVBVIDEO_H_*/
+8
include/uapi/linux/dvb/Kbuild
··· 1 1 # UAPI Header export list 2 + header-y += audio.h 3 + header-y += ca.h 4 + header-y += dmx.h 5 + header-y += frontend.h 6 + header-y += net.h 7 + header-y += osd.h 8 + header-y += version.h 9 + header-y += video.h
+155
include/uapi/linux/dvb/dmx.h
··· 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 + 35 + typedef 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 + 47 + typedef 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 + 54 + typedef 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 + 90 + typedef 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 + 98 + struct 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 + 111 + struct 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 + 120 + typedef struct dmx_caps { 121 + __u32 caps; 122 + int num_decoders; 123 + } dmx_caps_t; 124 + 125 + typedef 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 + 136 + struct 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_ */
+274
include/uapi/linux/dvb/video.h
··· 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 + 33 + typedef 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 + 40 + typedef 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 + 52 + typedef 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 + 58 + typedef struct { 59 + int w; 60 + int h; 61 + video_format_t aspect_ratio; 62 + } video_size_t; 63 + 64 + typedef 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 + 72 + typedef 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. */ 100 + struct 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 + 132 + struct 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 + 147 + struct 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 + 156 + struct video_still_picture { 157 + char __user *iFrame; /* pointer to a single iframe in memory */ 158 + __s32 size; 159 + }; 160 + 161 + 162 + typedef 163 + struct 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 + 182 + typedef struct video_spu { 183 + int active; 184 + int stream_id; 185 + } video_spu_t; 186 + 187 + 188 + typedef struct video_spu_palette { /* SPU Palette information */ 189 + int length; 190 + __u8 __user *palette; 191 + } video_spu_palette_t; 192 + 193 + 194 + typedef struct video_navi_pack { 195 + int length; /* 0 ... 1024 */ 196 + __u8 data[1024]; 197 + } video_navi_pack_t; 198 + 199 + 200 + typedef __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_ */